B. AskUserQuestion → request_user_input Mapping
GSD workflows use AskUserQuestion (Claude Code syntax). Translate to Codex request_user_input:
Parameter mapping:
header → header
question → question
- 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 (Execute mode), present a plain-text numbered list and pick a reasonable default.
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")
Task(model="...") → omit (Codex uses per-role config, not inline model selection)
fork_context: false by default — GSD agents load their own context via <files_to_read> blocks
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
Purpose: Create historical record of shipped version, archive milestone artifacts (roadmap + requirements), and prepare for next milestone.
Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tagged.
- @/Users/richardhightower/clients/spillwave/src/agent-brain/.codex/get-shit-done/workflows/complete-milestone.md (main workflow)
- @/Users/richardhightower/clients/spillwave/src/agent-brain/.codex/get-shit-done/templates/milestone-archive.md (archive template)
User input:
- Version: {{version}} (e.g., "1.0", "1.1", "2.0")
Follow complete-milestone.md workflow:
Check for audit:
- Look for
.planning/v{{version}}-MILESTONE-AUDIT.md
- If missing or stale: recommend
$gsd-audit-milestone first
- If audit status is
gaps_found: recommend $gsd-plan-milestone-gaps first
- If audit status is
passed: proceed to step 1
## Pre-flight Check
{If no v{{version}}-MILESTONE-AUDIT.md:}
⚠ No milestone audit found. Run `$gsd-audit-milestone` first to verify
requirements coverage, cross-phase integration, and E2E flows.
{If audit has gaps:}
⚠ Milestone audit found gaps. Run `$gsd-plan-milestone-gaps` to create
phases that close the gaps, or proceed anyway to accept as tech debt.
{If audit passed:}
✓ Milestone audit passed. Proceeding with completion.
Verify readiness:
- Check all phases in milestone have completed plans (SUMMARY.md exists)
- Present milestone scope and stats
- Wait for confirmation
Gather stats:
- Count phases, plans, tasks
- Calculate git range, file changes, LOC
- Extract timeline from git log
- Present summary, confirm
Extract accomplishments:
- Read all phase SUMMARY.md files in milestone range
- Extract 4-6 key accomplishments
- Present for approval
Archive milestone:
- Create
.planning/milestones/v{{version}}-ROADMAP.md
- Extract full phase details from ROADMAP.md
- Fill milestone-archive.md template
- Update ROADMAP.md to one-line summary with link
Archive requirements:
- Create
.planning/milestones/v{{version}}-REQUIREMENTS.md
- Mark all v1 requirements as complete (checkboxes checked)
- Note requirement outcomes (validated, adjusted, dropped)
- Delete
.planning/REQUIREMENTS.md (fresh one created for next milestone)
Update PROJECT.md:
- Add "Current State" section with shipped version
- Add "Next Milestone Goals" section
- Archive previous content in
<details> (if v1.1+)
Commit and tag:
- Stage: MILESTONES.md, PROJECT.md, ROADMAP.md, STATE.md, archive files
- Commit:
chore: archive v{{version}} milestone
- Tag:
git tag -a v{{version}} -m "[milestone summary]"
- Ask about pushing tag
Offer next steps:
$gsd-new-milestone — start next milestone (questioning → research → requirements → roadmap)
- Milestone archived to
.planning/milestones/v{{version}}-ROADMAP.md
- Requirements archived to
.planning/milestones/v{{version}}-REQUIREMENTS.md
.planning/REQUIREMENTS.md deleted (fresh for next milestone)
- ROADMAP.md collapsed to one-line entry
- PROJECT.md updated with current state
- Git tag v{{version}} created
- Commit successful
- User knows next steps (including need for fresh requirements)
- Load workflow first: Read complete-milestone.md before executing
- Verify completion: All phases must have SUMMARY.md files
- User confirmation: Wait for approval at verification gates
- Archive before deleting: Always create archive files before updating/deleting originals
- One-line summary: Collapsed milestone in ROADMAP.md should be single line with link
- Context efficiency: Archive keeps ROADMAP.md and REQUIREMENTS.md constant size per milestone
- Fresh requirements: Next milestone starts with
$gsd-new-milestone which includes requirements definition
1---2name: gsd-complete-milestone3description: Archive completed milestone and prepare for next version4---56<codex_skill_adapter>7## A. Skill Invocation8- This skill is invoked by mentioning `$gsd-complete-milestone`.9- Treat all user text after `$gsd-complete-milestone` as `{{GSD_ARGS}}`.10- If no arguments are present, treat `{{GSD_ARGS}}` as empty.1112## B. AskUserQuestion → request_user_input Mapping13GSD workflows use `AskUserQuestion` (Claude Code syntax). Translate to Codex `request_user_input`:1415Parameter mapping:16- `header` → `header`17- `question` → `question`18- Options formatted as `"Label" — description` → `{label: "Label", description: "description"}`19- Generate `id` from header: lowercase, replace spaces with underscores2021Batched calls:22- `AskUserQuestion([q1, q2])` → single `request_user_input` with multiple entries in `questions[]`2324Multi-select workaround:25- Codex has no `multiSelect`. Use sequential single-selects, or present a numbered freeform list asking the user to enter comma-separated numbers.2627Execute mode fallback:28- When `request_user_input` is rejected (Execute mode), present a plain-text numbered list and pick a reasonable default.2930## C. Task() → spawn_agent Mapping31GSD workflows use `Task(...)` (Claude Code syntax). Translate to Codex collaboration tools:3233Direct mapping:34- `Task(subagent_type="X", prompt="Y")` → `spawn_agent(agent_type="X", message="Y")`35- `Task(model="...")` → omit (Codex uses per-role config, not inline model selection)36- `fork_context: false` by default — GSD agents load their own context via `<files_to_read>` blocks3738Parallel fan-out:39- Spawn multiple agents → collect agent IDs → `wait(ids)` for all to complete4041Result parsing:42- Look for structured markers in agent output: `CHECKPOINT`, `PLAN COMPLETE`, `SUMMARY`, etc.43- `close_agent(id)` after collecting results from each agent44</codex_skill_adapter>4546<objective>47Mark milestone {{version}} complete, archive to milestones/, and update ROADMAP.md and REQUIREMENTS.md.4849Purpose: Create historical record of shipped version, archive milestone artifacts (roadmap + requirements), and prepare for next milestone.50Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tagged.51</objective>5253<execution_context>54**Load these files NOW (before proceeding):**5556- @/Users/richardhightower/clients/spillwave/src/agent-brain/.codex/get-shit-done/workflows/complete-milestone.md (main workflow)57- @/Users/richardhightower/clients/spillwave/src/agent-brain/.codex/get-shit-done/templates/milestone-archive.md (archive template)58 </execution_context>5960<context>61**Project files:**62- `.planning/ROADMAP.md`63- `.planning/REQUIREMENTS.md`64- `.planning/STATE.md`65- `.planning/PROJECT.md`6667**User input:**6869- Version: {{version}} (e.g., "1.0", "1.1", "2.0")70 </context>7172<process>7374**Follow complete-milestone.md workflow:**75760. **Check for audit:**7778 - Look for `.planning/v{{version}}-MILESTONE-AUDIT.md`79 - If missing or stale: recommend `$gsd-audit-milestone` first80 - If audit status is `gaps_found`: recommend `$gsd-plan-milestone-gaps` first81 - If audit status is `passed`: proceed to step 18283 ```markdown84 ## Pre-flight Check8586 {If no v{{version}}-MILESTONE-AUDIT.md:}87 ⚠ No milestone audit found. Run `$gsd-audit-milestone` first to verify88 requirements coverage, cross-phase integration, and E2E flows.8990 {If audit has gaps:}91 ⚠ Milestone audit found gaps. Run `$gsd-plan-milestone-gaps` to create92 phases that close the gaps, or proceed anyway to accept as tech debt.9394 {If audit passed:}95 ✓ Milestone audit passed. Proceeding with completion.96 ```97981. **Verify readiness:**99100 - Check all phases in milestone have completed plans (SUMMARY.md exists)101 - Present milestone scope and stats102 - Wait for confirmation1031042. **Gather stats:**105106 - Count phases, plans, tasks107 - Calculate git range, file changes, LOC108 - Extract timeline from git log109 - Present summary, confirm1101113. **Extract accomplishments:**112113 - Read all phase SUMMARY.md files in milestone range114 - Extract 4-6 key accomplishments115 - Present for approval1161174. **Archive milestone:**118119 - Create `.planning/milestones/v{{version}}-ROADMAP.md`120 - Extract full phase details from ROADMAP.md121 - Fill milestone-archive.md template122 - Update ROADMAP.md to one-line summary with link1231245. **Archive requirements:**125126 - Create `.planning/milestones/v{{version}}-REQUIREMENTS.md`127 - Mark all v1 requirements as complete (checkboxes checked)128 - Note requirement outcomes (validated, adjusted, dropped)129 - Delete `.planning/REQUIREMENTS.md` (fresh one created for next milestone)1301316. **Update PROJECT.md:**132133 - Add "Current State" section with shipped version134 - Add "Next Milestone Goals" section135 - Archive previous content in `<details>` (if v1.1+)1361377. **Commit and tag:**138139 - Stage: MILESTONES.md, PROJECT.md, ROADMAP.md, STATE.md, archive files140 - Commit: `chore: archive v{{version}} milestone`141 - Tag: `git tag -a v{{version}} -m "[milestone summary]"`142 - Ask about pushing tag1431448. **Offer next steps:**145 - `$gsd-new-milestone` — start next milestone (questioning → research → requirements → roadmap)146147</process>148149<success_criteria>150151- Milestone archived to `.planning/milestones/v{{version}}-ROADMAP.md`152- Requirements archived to `.planning/milestones/v{{version}}-REQUIREMENTS.md`153- `.planning/REQUIREMENTS.md` deleted (fresh for next milestone)154- ROADMAP.md collapsed to one-line entry155- PROJECT.md updated with current state156- Git tag v{{version}} created157- Commit successful158- User knows next steps (including need for fresh requirements)159 </success_criteria>160161<critical_rules>162163- **Load workflow first:** Read complete-milestone.md before executing164- **Verify completion:** All phases must have SUMMARY.md files165- **User confirmation:** Wait for approval at verification gates166- **Archive before deleting:** Always create archive files before updating/deleting originals167- **One-line summary:** Collapsed milestone in ROADMAP.md should be single line with link168- **Context efficiency:** Archive keeps ROADMAP.md and REQUIREMENTS.md constant size per milestone169- **Fresh requirements:** Next milestone starts with `$gsd-new-milestone` which includes requirements definition170 </critical_rules>