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-milestone"3description: "Archive completed milestone and prepare for next version"4metadata:5 short-description: "Archive completed milestone and prepare for next version"6---78<codex_skill_adapter>9## A. Skill Invocation10- This skill is invoked by mentioning `$gsd-complete-milestone`.11- Treat all user text after `$gsd-complete-milestone` as `{{GSD_ARGS}}`.12- If no arguments are present, treat `{{GSD_ARGS}}` as empty.1314## B. AskUserQuestion → request_user_input Mapping15GSD workflows use `AskUserQuestion` (Claude Code syntax). Translate to Codex `request_user_input`:1617Parameter mapping:18- `header` → `header`19- `question` → `question`20- Options formatted as `"Label" — description` → `{label: "Label", description: "description"}`21- Generate `id` from header: lowercase, replace spaces with underscores2223Batched calls:24- `AskUserQuestion([q1, q2])` → single `request_user_input` with multiple entries in `questions[]`2526Multi-select workaround:27- Codex has no `multiSelect`. Use sequential single-selects, or present a numbered freeform list asking the user to enter comma-separated numbers.2829Execute mode fallback:30- When `request_user_input` is rejected (Execute mode), present a plain-text numbered list and pick a reasonable default.3132## C. Task() → spawn_agent Mapping33GSD workflows use `Task(...)` (Claude Code syntax). Translate to Codex collaboration tools:3435Direct mapping:36- `Task(subagent_type="X", prompt="Y")` → `spawn_agent(agent_type="X", message="Y")`37- `Task(model="...")` → omit (Codex uses per-role config, not inline model selection)38- `fork_context: false` by default — GSD agents load their own context via `<files_to_read>` blocks3940Parallel fan-out:41- Spawn multiple agents → collect agent IDs → `wait(ids)` for all to complete4243Result parsing:44- Look for structured markers in agent output: `CHECKPOINT`, `PLAN COMPLETE`, `SUMMARY`, etc.45- `close_agent(id)` after collecting results from each agent46</codex_skill_adapter>4748<objective>49Mark milestone {{version}} complete, archive to milestones/, and update ROADMAP.md and REQUIREMENTS.md.5051Purpose: Create historical record of shipped version, archive milestone artifacts (roadmap + requirements), and prepare for next milestone.52Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tagged.53</objective>5455<execution_context>56**Load these files NOW (before proceeding):**5758- @/Users/richardhightower/clients/spillwave/src/agent-brain/.codex/get-shit-done/workflows/complete-milestone.md (main workflow)59- @/Users/richardhightower/clients/spillwave/src/agent-brain/.codex/get-shit-done/templates/milestone-archive.md (archive template)60 </execution_context>6162<context>63**Project files:**64- `.planning/ROADMAP.md`65- `.planning/REQUIREMENTS.md`66- `.planning/STATE.md`67- `.planning/PROJECT.md`6869**User input:**7071- Version: {{version}} (e.g., "1.0", "1.1", "2.0")72 </context>7374<process>7576**Follow complete-milestone.md workflow:**77780. **Check for audit:**7980 - Look for `.planning/v{{version}}-MILESTONE-AUDIT.md`81 - If missing or stale: recommend `$gsd-audit-milestone` first82 - If audit status is `gaps_found`: recommend `$gsd-plan-milestone-gaps` first83 - If audit status is `passed`: proceed to step 18485 ```markdown86 ## Pre-flight Check8788 {If no v{{version}}-MILESTONE-AUDIT.md:}89 ⚠ No milestone audit found. Run `$gsd-audit-milestone` first to verify90 requirements coverage, cross-phase integration, and E2E flows.9192 {If audit has gaps:}93 ⚠ Milestone audit found gaps. Run `$gsd-plan-milestone-gaps` to create94 phases that close the gaps, or proceed anyway to accept as tech debt.9596 {If audit passed:}97 ✓ Milestone audit passed. Proceeding with completion.98 ```991001. **Verify readiness:**101102 - Check all phases in milestone have completed plans (SUMMARY.md exists)103 - Present milestone scope and stats104 - Wait for confirmation1051062. **Gather stats:**107108 - Count phases, plans, tasks109 - Calculate git range, file changes, LOC110 - Extract timeline from git log111 - Present summary, confirm1121133. **Extract accomplishments:**114115 - Read all phase SUMMARY.md files in milestone range116 - Extract 4-6 key accomplishments117 - Present for approval1181194. **Archive milestone:**120121 - Create `.planning/milestones/v{{version}}-ROADMAP.md`122 - Extract full phase details from ROADMAP.md123 - Fill milestone-archive.md template124 - Update ROADMAP.md to one-line summary with link1251265. **Archive requirements:**127128 - Create `.planning/milestones/v{{version}}-REQUIREMENTS.md`129 - Mark all v1 requirements as complete (checkboxes checked)130 - Note requirement outcomes (validated, adjusted, dropped)131 - Delete `.planning/REQUIREMENTS.md` (fresh one created for next milestone)1321336. **Update PROJECT.md:**134135 - Add "Current State" section with shipped version136 - Add "Next Milestone Goals" section137 - Archive previous content in `<details>` (if v1.1+)1381397. **Commit and tag:**140141 - Stage: MILESTONES.md, PROJECT.md, ROADMAP.md, STATE.md, archive files142 - Commit: `chore: archive v{{version}} milestone`143 - Tag: `git tag -a v{{version}} -m "[milestone summary]"`144 - Ask about pushing tag1451468. **Offer next steps:**147 - `$gsd-new-milestone` — start next milestone (questioning → research → requirements → roadmap)148149</process>150151<success_criteria>152153- Milestone archived to `.planning/milestones/v{{version}}-ROADMAP.md`154- Requirements archived to `.planning/milestones/v{{version}}-REQUIREMENTS.md`155- `.planning/REQUIREMENTS.md` deleted (fresh for next milestone)156- ROADMAP.md collapsed to one-line entry157- PROJECT.md updated with current state158- Git tag v{{version}} created159- Commit successful160- User knows next steps (including need for fresh requirements)161 </success_criteria>162163<critical_rules>164165- **Load workflow first:** Read complete-milestone.md before executing166- **Verify completion:** All phases must have SUMMARY.md files167- **User confirmation:** Wait for approval at verification gates168- **Archive before deleting:** Always create archive files before updating/deleting originals169- **One-line summary:** Collapsed milestone in ROADMAP.md should be single line with link170- **Context efficiency:** Archive keeps ROADMAP.md and REQUIREMENTS.md constant size per milestone171- **Fresh requirements:** Next milestone starts with `$gsd-new-milestone` which includes requirements definition172 </critical_rules>