Tools to manage and isolate development workspaces within the GSD system.

Install

mkdir -p .claude/skills/gsd-workspace && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18621" && unzip -o skill.zip -d .claude/skills/gsd-workspace && rm skill.zip

Installs to .claude/skills/gsd-workspace

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Manage GSD workspaces — create, list, or remove isolated workspace environments
79 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Create isolated GSD workspace environments
  • List active GSD workspaces and their status
  • Remove GSD workspaces and clean up worktrees
  • Translate Task() to spawn_agent

How it works

The skill parses arguments to determine the desired workspace operation and executes the corresponding workflow for creation, listing, or removal.

Inputs & outputs

You give it
Arguments specifying --new, --list, or --remove for workspace management
You get back
A new workspace, a list of workspaces, or a removed workspace

When to use gsd-workspace

  • Create new workspace
  • Remove old workspaces
  • List active environments

About this skill

<codex_skill_adapter>

A. Skill Invocation

  • This skill is invoked by mentioning $gsd-workspace.
  • Treat all user text after $gsd-workspace as {{GSD_ARGS}}.
  • If no arguments are present, treat {{GSD_ARGS}} as empty.

B. AskUserQuestion → request_user_input Mapping

GSD workflows use AskUserQuestion (Claude Code syntax). Translate to Codex request_user_input:

Parameter mapping:

  • headerheader
  • questionquestion
  • Options formatted as "Label" — description{label: "Label", description: "description"}
  • Generate id from header: lowercase, replace spaces with underscores

Batched calls:

  • AskUserQuestion([q1, q2]) → single request_user_input with multiple entries in questions[]

Multi-select workaround:

  • Codex has no multiSelect. Use sequential single-selects, or present a numbered freeform list asking the user to enter comma-separated numbers.

Execute mode fallback:

  • When request_user_input is rejected or unavailable, activate TEXT_MODE: append --text to {{GSD_ARGS}} so the workflow's built-in text-mode branching takes over. Present every AskUserQuestion call as a plain-text numbered list, then stop and wait for the user's reply. Do NOT pick a default and continue (#3018 / #3808).
  • You may only proceed without a user answer when one of these is true: (a) the invocation included an explicit non-interactive flag (--auto or --all), (b) the user has explicitly approved a specific default for this question, or (c) the workflow's documented contract says defaults are safe (e.g. autonomous lifecycle paths).
  • Do NOT write workflow artifacts (CONTEXT.md, DISCUSSION-LOG.md, PLAN.md, checkpoint files) until the user has answered the plain-text questions or one of (a)-(c) above applies. Surfacing the questions and waiting is the correct response — silently defaulting and writing artifacts is the #3018 failure mode.

C. Task() → spawn_agent Mapping

GSD workflows use Task(...) (Claude Code syntax). Translate to Codex collaboration tools:

Direct mapping:

  • Task(subagent_type="X", prompt="Y")spawn_agent(agent_type="X", message="Y")
  • Agent(subagent_type="X", prompt="Y")spawn_agent(agent_type="X", message="Y")
  • Task(model="...") → omit. spawn_agent has no inline model parameter; GSD embeds the resolved per-agent model directly into each agent's .toml at install time so model_overrides from .planning/config.json and ~/.gsd/defaults.json are honored automatically by Codex's agent router.
  • Resolved reasoning_effort="low|medium|high|xhigh" (xhigh is a GSD/Codex tier, not a generic runtime enum) → pass reasoning_effort to spawn_agent when the runtime/tool supports it. Omit missing, empty, inherited, or unsupported values; do not invent one-off effort literals in workflow prose.
  • fork_context: false by default — GSD agents load their own context via <files_to_read> blocks
  • Task(isolation="worktree") / Agent(isolation="worktree") → no direct Codex mapping. Codex spawn_agent does not create or bind a git worktree automatically. Workflows that require this isolation must fail closed or use an explicit manual worktree protocol before spawning (#3360).

Spawn restriction:

  • Codex restricts spawn_agent to cases where the user has explicitly requested sub-agents. When automatic spawning is not permitted, do the work inline in the current agent rather than attempting to force a spawn.
  • In some Codex sessions, multi-agent tooling can be deferred. If spawn_agent is not currently visible, discover tools first via tool_search before defaulting to inline execution.

Parallel fan-out:

  • Spawn multiple agents → collect agent IDs → wait(ids) for all to complete

Result parsing:

  • Look for structured markers in agent output: CHECKPOINT, PLAN COMPLETE, SUMMARY, etc.
  • close_agent(id) after collecting results from each agent </codex_skill_adapter>
<objective> Manage GSD workspaces with a single consolidated command.

Mode routing:

  • --new: Create an isolated workspace with repo copies and independent .planning/ → new-workspace workflow
  • --list: List active GSD workspaces and their status → list-workspaces workflow
  • --remove: Remove a GSD workspace and clean up worktrees → remove-workspace workflow </objective>
<routing>
FlagActionWorkflow
--newCreate workspace with worktree/clone strategynew-workspace
--listScan ~$gsd-workspaces/, show summary tablelist-workspaces
--removeConfirm and remove workspace directoryremove-workspace
</routing>

<execution_context> @/Users/mali/Development/xai-bookkeeping/.codex/get-shit-done/workflows/new-workspace.md @/Users/mali/Development/xai-bookkeeping/.codex/get-shit-done/workflows/list-workspaces.md @/Users/mali/Development/xai-bookkeeping/.codex/get-shit-done/workflows/remove-workspace.md @/Users/mali/Development/xai-bookkeeping/.codex/get-shit-done/references/ui-brand.md </execution_context>

<context> Arguments: {{GSD_ARGS}}

Parse the first token of {{GSD_ARGS}}:

  • If it is --new: strip the flag, pass remainder (--name, --repos, --path, --strategy, --branch, --auto flags) to new-workspace workflow
  • If it is --list: execute list-workspaces workflow (no argument needed)
  • If it is --remove: strip the flag, pass remainder (workspace-name) to remove-workspace workflow
  • Otherwise (no flag): show usage — one of --new, --list, or --remove is required </context>
<process> 1. Parse the leading flag from {{GSD_ARGS}}. 2. Load and execute the appropriate workflow end-to-end based on the routing table above. 3. Preserve all workflow gates from the target workflow (validation, approvals, commits, routing). </process>

When not to use it

  • When `spawn_agent` is not currently visible and `tool_search` has not been used

Limitations

  • Codex `spawn_agent` does not create or bind a git worktree automatically
  • Requires explicit user confirmation for certain actions when `request_user_input` is rejected

How it compares

This skill provides a consolidated command for GSD workspace management, abstracting the underlying workflows for creating, listing, and removing environments.

Compared to similar skills

gsd-workspace side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
gsd-workspace (this skill)01moNo flagsIntermediate
setup121moNo flagsBeginner
tmux202moReviewIntermediate
macos-cleaner161moReviewBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry