@undeemed/get-shit-done-codex 1.20.2 → 1.20.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +29 -5
  2. package/agents/gsd-codebase-mapper.md +5 -2
  3. package/agents/gsd-debugger.md +6 -3
  4. package/agents/gsd-executor.md +62 -12
  5. package/agents/gsd-integration-checker.md +20 -0
  6. package/agents/gsd-phase-researcher.md +106 -14
  7. package/agents/gsd-plan-checker.md +132 -10
  8. package/agents/gsd-planner.md +64 -29
  9. package/agents/gsd-project-researcher.md +5 -2
  10. package/agents/gsd-research-synthesizer.md +6 -3
  11. package/agents/gsd-roadmapper.md +8 -5
  12. package/agents/gsd-verifier.md +33 -16
  13. package/bin/install.js +6 -6
  14. package/commands/gsd/add-phase.md +8 -4
  15. package/commands/gsd/add-todo.md +8 -3
  16. package/commands/gsd/audit-milestone.md +3 -9
  17. package/commands/gsd/check-todos.md +8 -4
  18. package/commands/gsd/cleanup.md +2 -2
  19. package/commands/gsd/complete-milestone.md +2 -2
  20. package/commands/gsd/debug.md +5 -3
  21. package/commands/gsd/discuss-phase.md +4 -8
  22. package/commands/gsd/execute-phase.md +4 -5
  23. package/commands/gsd/health.md +2 -2
  24. package/commands/gsd/help.md +2 -2
  25. package/commands/gsd/insert-phase.md +3 -4
  26. package/commands/gsd/list-phase-assumptions.md +5 -9
  27. package/commands/gsd/map-codebase.md +1 -1
  28. package/commands/gsd/new-milestone.md +7 -14
  29. package/commands/gsd/new-project.md +6 -6
  30. package/commands/gsd/new-project.md.bak +13 -13
  31. package/commands/gsd/pause-work.md +6 -3
  32. package/commands/gsd/plan-milestone-gaps.md +3 -9
  33. package/commands/gsd/plan-phase.md +3 -3
  34. package/commands/gsd/progress.md +2 -2
  35. package/commands/gsd/quick.md +4 -3
  36. package/commands/gsd/reapply-patches.md +2 -2
  37. package/commands/gsd/remove-phase.md +3 -4
  38. package/commands/gsd/research-phase.md +23 -21
  39. package/commands/gsd/resume-work.md +2 -2
  40. package/commands/gsd/set-profile.md +3 -3
  41. package/commands/gsd/settings.md +2 -2
  42. package/commands/gsd/update.md +2 -2
  43. package/commands/gsd/verify-work.md +5 -6
  44. package/get-shit-done/bin/gsd-tools.cjs +168 -4858
  45. package/get-shit-done/bin/lib/commands.cjs +556 -0
  46. package/get-shit-done/bin/lib/config.cjs +162 -0
  47. package/get-shit-done/bin/lib/core.cjs +398 -0
  48. package/get-shit-done/bin/lib/frontmatter.cjs +299 -0
  49. package/get-shit-done/bin/lib/init.cjs +694 -0
  50. package/get-shit-done/bin/lib/milestone.cjs +215 -0
  51. package/get-shit-done/bin/lib/phase.cjs +873 -0
  52. package/get-shit-done/bin/lib/roadmap.cjs +298 -0
  53. package/get-shit-done/bin/lib/state.cjs +490 -0
  54. package/get-shit-done/bin/lib/template.cjs +222 -0
  55. package/get-shit-done/bin/lib/verify.cjs +772 -0
  56. package/get-shit-done/references/checkpoints.md +36 -35
  57. package/get-shit-done/references/decimal-phase-calculation.md +4 -4
  58. package/get-shit-done/references/git-integration.md +7 -7
  59. package/get-shit-done/references/git-planning-commit.md +2 -2
  60. package/get-shit-done/references/model-profile-resolution.md +1 -1
  61. package/get-shit-done/references/model-profiles.md +2 -2
  62. package/get-shit-done/references/phase-argument-parsing.md +3 -3
  63. package/get-shit-done/references/planning-config.md +6 -6
  64. package/get-shit-done/references/questioning.md +1 -1
  65. package/get-shit-done/references/verification-patterns.md +2 -2
  66. package/get-shit-done/templates/DEBUG.md +4 -4
  67. package/get-shit-done/templates/VALIDATION.md +104 -0
  68. package/get-shit-done/templates/codebase/architecture.md +1 -1
  69. package/get-shit-done/templates/codebase/concerns.md +1 -1
  70. package/get-shit-done/templates/codebase/conventions.md +1 -1
  71. package/get-shit-done/templates/codebase/structure.md +6 -6
  72. package/get-shit-done/templates/config.json +2 -1
  73. package/get-shit-done/templates/context.md +5 -5
  74. package/get-shit-done/templates/continue-here.md +1 -1
  75. package/get-shit-done/templates/phase-prompt.md +20 -18
  76. package/get-shit-done/templates/project.md +1 -1
  77. package/get-shit-done/templates/research.md +4 -4
  78. package/get-shit-done/templates/roadmap.md +1 -1
  79. package/get-shit-done/templates/state.md +1 -1
  80. package/get-shit-done/templates/summary.md +2 -0
  81. package/get-shit-done/templates/user-setup.md +8 -8
  82. package/get-shit-done/templates/verification-report.md +2 -2
  83. package/get-shit-done/workflows/add-phase.md +2 -2
  84. package/get-shit-done/workflows/add-todo.md +5 -5
  85. package/get-shit-done/workflows/audit-milestone.md +67 -12
  86. package/get-shit-done/workflows/check-todos.md +2 -2
  87. package/get-shit-done/workflows/cleanup.md +1 -1
  88. package/get-shit-done/workflows/complete-milestone.md +31 -5
  89. package/get-shit-done/workflows/diagnose-issues.md +2 -2
  90. package/get-shit-done/workflows/discovery-phase.md +6 -6
  91. package/get-shit-done/workflows/discuss-phase.md +79 -24
  92. package/get-shit-done/workflows/execute-phase.md +65 -20
  93. package/get-shit-done/workflows/execute-plan.md +31 -27
  94. package/get-shit-done/workflows/health.md +2 -2
  95. package/get-shit-done/workflows/help.md +4 -4
  96. package/get-shit-done/workflows/insert-phase.md +2 -2
  97. package/get-shit-done/workflows/list-phase-assumptions.md +7 -7
  98. package/get-shit-done/workflows/map-codebase.md +36 -48
  99. package/get-shit-done/workflows/new-milestone.md +24 -15
  100. package/get-shit-done/workflows/new-project.md +49 -46
  101. package/get-shit-done/workflows/pause-work.md +3 -3
  102. package/get-shit-done/workflows/plan-milestone-gaps.md +24 -6
  103. package/get-shit-done/workflows/plan-phase.md +113 -83
  104. package/get-shit-done/workflows/progress.md +18 -30
  105. package/get-shit-done/workflows/quick.md +28 -19
  106. package/get-shit-done/workflows/remove-phase.md +4 -4
  107. package/get-shit-done/workflows/research-phase.md +13 -14
  108. package/get-shit-done/workflows/resume-project.md +2 -2
  109. package/get-shit-done/workflows/set-profile.md +3 -3
  110. package/get-shit-done/workflows/settings.md +18 -5
  111. package/get-shit-done/workflows/transition.md +8 -3
  112. package/get-shit-done/workflows/update.md +9 -9
  113. package/get-shit-done/workflows/verify-phase.md +9 -9
  114. package/get-shit-done/workflows/verify-work.md +17 -18
  115. package/hooks/dist/gsd-context-monitor.js +122 -0
  116. package/hooks/dist/gsd-statusline.js +17 -0
  117. package/package.json +2 -2
  118. package/scripts/build-hooks.js +1 -0
  119. package/get-shit-done/bin/gsd-tools.test.cjs +0 -2273
@@ -40,7 +40,7 @@ When a milestone completes:
40
40
  **Use `roadmap analyze` for comprehensive readiness check:**
41
41
 
42
42
  ```bash
43
- ROADMAP=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs roadmap analyze)
43
+ ROADMAP=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs roadmap analyze)
44
44
  ```
45
45
 
46
46
  This returns all phases with plan/summary counts and disk status. Use this to verify:
@@ -48,6 +48,12 @@ This returns all phases with plan/summary counts and disk status. Use this to ve
48
48
  - All phases complete (all plans have summaries)? Check `disk_status === 'complete'` for each.
49
49
  - `progress_percent` should be 100%.
50
50
 
51
+ **Requirements completion check (REQUIRED before presenting):**
52
+
53
+ Parse REQUIREMENTS.md traceability table:
54
+ - Count total v1 requirements vs checked-off (`[x]`) requirements
55
+ - Identify any non-Complete rows in the traceability table
56
+
51
57
  Present:
52
58
 
53
59
  ```
@@ -60,7 +66,24 @@ Includes:
60
66
  - Phase 4: Polish (1/1 plan complete)
61
67
 
62
68
  Total: {phase_count} phases, {total_plans} plans, all complete
69
+ Requirements: {N}/{M} v1 requirements checked off
70
+ ```
71
+
72
+ **If requirements incomplete** (N < M):
73
+
63
74
  ```
75
+ ⚠ Unchecked Requirements:
76
+
77
+ - [ ] {REQ-ID}: {description} (Phase {X})
78
+ - [ ] {REQ-ID}: {description} (Phase {Y})
79
+ ```
80
+
81
+ MUST present 3 options:
82
+ 1. **Proceed anyway** — mark milestone complete with known gaps
83
+ 2. **Run audit first** — `/gsd:audit-milestone` to assess gap severity
84
+ 3. **Abort** — return to development
85
+
86
+ If user selects "Proceed anyway": note incomplete requirements in MILESTONES.md under `### Known Gaps` with REQ-IDs and descriptions.
64
87
 
65
88
  <config-check>
66
89
 
@@ -131,7 +154,7 @@ Extract one-liners from SUMMARY.md files using summary-extract:
131
154
  ```bash
132
155
  # For each phase in milestone, extract one-liner
133
156
  for summary in .planning/phases/*-*/*-SUMMARY.md; do
134
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs summary-extract "$summary" --fields one_liner | jq -r '.one_liner'
157
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs summary-extract "$summary" --fields one_liner | jq -r '.one_liner'
135
158
  done
136
159
  ```
137
160
 
@@ -344,7 +367,7 @@ Update `.planning/ROADMAP.md` — group completed milestone phases:
344
367
  **Delegate archival to gsd-tools:**
345
368
 
346
369
  ```bash
347
- ARCHIVE=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs milestone complete "v[X.Y]" --name "[Milestone Name]")
370
+ ARCHIVE=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs milestone complete "v[X.Y]" --name "[Milestone Name]")
348
371
  ```
349
372
 
350
373
  The CLI handles:
@@ -444,7 +467,7 @@ Check branching strategy and offer merge options.
444
467
  Use `init milestone-op` for context, or load config directly:
445
468
 
446
469
  ```bash
447
- INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init execute-phase "1")
470
+ INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init execute-phase "1")
448
471
  ```
449
472
 
450
473
  Extract `branching_strategy`, `phase_branch_template`, `milestone_branch_template`, and `commit_docs` from init JSON.
@@ -592,7 +615,7 @@ git push origin v[X.Y]
592
615
  Commit milestone completion.
593
616
 
594
617
  ```bash
595
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "chore: complete v[X.Y] milestone" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md
618
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "chore: complete v[X.Y] milestone" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md
596
619
  ```
597
620
  ```
598
621
 
@@ -669,6 +692,9 @@ Milestone completion is successful when:
669
692
  - [ ] STATE.md updated with fresh project reference
670
693
  - [ ] Git tag created (v[X.Y])
671
694
  - [ ] Milestone commit made (includes archive files and deletion)
695
+ - [ ] Requirements completion checked against REQUIREMENTS.md traceability table
696
+ - [ ] Incomplete requirements surfaced with proceed/audit/abort options
697
+ - [ ] Known gaps recorded in MILESTONES.md if user proceeded with incomplete requirements
672
698
  - [ ] User knows next step (/gsd:new-milestone)
673
699
 
674
700
  </success_criteria>
@@ -79,7 +79,7 @@ For each gap, fill the debug-subagent-prompt template and spawn:
79
79
 
80
80
  ```
81
81
  Task(
82
- prompt=filled_debug_subagent_prompt,
82
+ prompt=filled_debug_subagent_prompt + "\n\n<files_to_read>\n- {phase_dir}/{phase_num}-UAT.md\n- .planning/STATE.md\n</files_to_read>",
83
83
  subagent_type="general-purpose",
84
84
  description="Debug: {truth_short}"
85
85
  )
@@ -158,7 +158,7 @@ Update status in frontmatter to "diagnosed".
158
158
 
159
159
  Commit the updated UAT.md:
160
160
  ```bash
161
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs({phase_num}): add root causes from diagnosis" --files ".planning/phases/XX-name/{phase_num}-UAT.md"
161
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs({phase_num}): add root causes from diagnosis" --files ".planning/phases/XX-name/{phase_num}-UAT.md"
162
162
  ```
163
163
  </step>
164
164
 
@@ -22,13 +22,13 @@ NOTE: For comprehensive ecosystem research ("how do experts build this"), use /g
22
22
  <source_hierarchy>
23
23
  **MANDATORY: Context7 BEFORE WebSearch**
24
24
 
25
- Claude's training data is 6-18 months stale. Always verify.
25
+ Codex's training data is 6-18 months stale. Always verify.
26
26
 
27
27
  1. **Context7 MCP FIRST** - Current docs, no hallucination
28
28
  2. **Official docs** - When Context7 lacks coverage
29
29
  3. **WebSearch LAST** - For comparisons and trends only
30
30
 
31
- See ~/.claude/get-shit-done/templates/discovery.md `<discovery_protocol>` for full protocol.
31
+ See ~/.codex/get-shit-done/templates/discovery.md `<discovery_protocol>` for full protocol.
32
32
  </source_hierarchy>
33
33
 
34
34
  <process>
@@ -107,7 +107,7 @@ For: Choosing between options, new external integration.
107
107
 
108
108
  5. **Cross-verify:** Any WebSearch finding → confirm with Context7/official docs.
109
109
 
110
- 6. **Create DISCOVERY.md** using ~/.claude/get-shit-done/templates/discovery.md structure:
110
+ 6. **Create DISCOVERY.md** using ~/.codex/get-shit-done/templates/discovery.md structure:
111
111
 
112
112
  - Summary with recommendation
113
113
  - Key findings per option
@@ -126,7 +126,7 @@ For: Architectural decisions, novel problems, high-risk choices.
126
126
 
127
127
  **Process:**
128
128
 
129
- 1. **Scope the discovery** using ~/.claude/get-shit-done/templates/discovery.md:
129
+ 1. **Scope the discovery** using ~/.codex/get-shit-done/templates/discovery.md:
130
130
 
131
131
  - Define clear scope
132
132
  - Define include/exclude boundaries
@@ -160,7 +160,7 @@ For: Architectural decisions, novel problems, high-risk choices.
160
160
 
161
161
  6. **Create comprehensive DISCOVERY.md:**
162
162
 
163
- - Full structure from ~/.claude/get-shit-done/templates/discovery.md
163
+ - Full structure from ~/.codex/get-shit-done/templates/discovery.md
164
164
  - Quality report with source attribution
165
165
  - Confidence by finding
166
166
  - If LOW confidence on any critical finding → add validation checkpoints
@@ -184,7 +184,7 @@ Ask: What do we need to learn before we can plan this phase?
184
184
  </step>
185
185
 
186
186
  <step name="create_discovery_scope">
187
- Use ~/.claude/get-shit-done/templates/discovery.md.
187
+ Use ~/.codex/get-shit-done/templates/discovery.md.
188
188
 
189
189
  Include:
190
190
 
@@ -13,7 +13,7 @@ You are a thinking partner, not an interviewer. The user is the visionary — yo
13
13
 
14
14
  2. **gsd-planner** — Reads CONTEXT.md to know WHAT decisions are locked
15
15
  - "Pull-to-refresh on mobile" → planner includes that in task specs
16
- - "Claude's Discretion: loading skeleton" → planner can decide approach
16
+ - "Codex's Discretion: loading skeleton" → planner can decide approach
17
17
 
18
18
  **Your job:** Capture decisions clearly enough that downstream agents can act on them without asking the user again.
19
19
 
@@ -21,7 +21,7 @@ You are a thinking partner, not an interviewer. The user is the visionary — yo
21
21
  </downstream_awareness>
22
22
 
23
23
  <philosophy>
24
- **User = founder/visionary. Claude = builder.**
24
+ **User = founder/visionary. Codex = builder.**
25
25
 
26
26
  The user knows:
27
27
  - How they imagine it working
@@ -98,7 +98,7 @@ Phase: "API documentation"
98
98
 
99
99
  **The key question:** What decisions would change the outcome that the user should weigh in on?
100
100
 
101
- **Claude handles these (don't ask):**
101
+ **Codex handles these (don't ask):**
102
102
  - Technical implementation details
103
103
  - Architecture patterns
104
104
  - Performance optimization
@@ -111,7 +111,7 @@ Phase: "API documentation"
111
111
  Phase number from argument (required).
112
112
 
113
113
  ```bash
114
- INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init phase-op "${PHASE}")
114
+ INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init phase-op "${PHASE}")
115
115
  ```
116
116
 
117
117
  Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `has_verification`, `plan_count`, `roadmap_exists`, `planning_exists`.
@@ -206,9 +206,10 @@ We'll clarify HOW to implement this.
206
206
  **Then use AskUserQuestion (multiSelect: true):**
207
207
  - header: "Discuss"
208
208
  - question: "Which areas do you want to discuss for [phase name]?"
209
- - options: Generate 3-4 phase-specific gray areas, each formatted as:
209
+ - options: Generate 3-4 phase-specific gray areas, each with:
210
210
  - "[Specific area]" (label) — concrete, not generic
211
211
  - [1-2 questions this covers] (description)
212
+ - **Highlight the recommended choice with brief explanation why**
212
213
 
213
214
  **Do NOT include a "skip" or "you decide" option.** User ran this command to discuss — give them real choices.
214
215
 
@@ -258,8 +259,8 @@ Ask 4 questions per area before offering to continue or move on. Each answer oft
258
259
  2. **Ask 4 questions using AskUserQuestion:**
259
260
  - header: "[Area]" (max 12 chars — abbreviate if needed)
260
261
  - question: Specific decision for this area
261
- - options: 2-3 concrete choices (AskUserQuestion adds "Other" automatically)
262
- - Include "You decide" as an option when reasonable — captures Claude discretion
262
+ - options: 2-3 concrete choices (AskUserQuestion adds "Other" automatically), with the recommended choice highlighted and brief explanation why
263
+ - Include "You decide" as an option when reasonable — captures Codex discretion
263
264
 
264
265
  3. **After 4 questions, check:**
265
266
  - header: "[Area]" (max 12 chars)
@@ -270,10 +271,17 @@ Ask 4 questions per area before offering to continue or move on. Each answer oft
270
271
  If "Next area" → proceed to next selected area
271
272
  If "Other" (free text) → interpret intent: continuation phrases ("chat more", "keep going", "yes", "more") map to "More questions"; advancement phrases ("done", "move on", "next", "skip") map to "Next area". If ambiguous, ask: "Continue with more questions about [area], or move to the next area?"
272
273
 
273
- 4. **After all areas complete:**
274
- - header: "Done"
275
- - question: "That covers [list areas]. Ready to create context?"
276
- - options: "Create context" / "Revisit an area"
274
+ 4. **After all initially-selected areas complete:**
275
+ - Summarize what was captured from the discussion so far
276
+ - AskUserQuestion:
277
+ - header: "Done"
278
+ - question: "We've discussed [list areas]. Which gray areas remain unclear?"
279
+ - options: "Explore more gray areas" / "I'm ready for context"
280
+ - If "Explore more gray areas":
281
+ - Identify 2-4 additional gray areas based on what was learned
282
+ - Return to present_gray_areas logic with these new areas
283
+ - Loop: discuss new areas, then prompt again
284
+ - If "I'm ready for context": Proceed to write_context
277
285
 
278
286
  **Question design:**
279
287
  - Options should be concrete, not abstract ("Cards" not "Option A")
@@ -331,8 +339,8 @@ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
331
339
  ### [Category 2 that was discussed]
332
340
  - [Decision or preference captured]
333
341
 
334
- ### Claude's Discretion
335
- [Areas where user said "you decide" — note that Claude has flexibility here]
342
+ ### Codex's Discretion
343
+ [Areas where user said "you decide" — note that Codex has flexibility here]
336
344
 
337
345
  </decisions>
338
346
 
@@ -405,7 +413,7 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
405
413
  Commit phase context (uses `commit_docs` from init internally):
406
414
 
407
415
  ```bash
408
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs(${padded_phase}): capture phase context" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
416
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs(${padded_phase}): capture phase context" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
409
417
  ```
410
418
 
411
419
  Confirm: "Committed: docs(${padded_phase}): capture phase context"
@@ -415,7 +423,7 @@ Confirm: "Committed: docs(${padded_phase}): capture phase context"
415
423
  Update STATE.md with session info:
416
424
 
417
425
  ```bash
418
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs state record-session \
426
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs state record-session \
419
427
  --stopped-at "Phase ${PHASE} context gathered" \
420
428
  --resume-file "${phase_dir}/${padded_phase}-CONTEXT.md"
421
429
  ```
@@ -423,7 +431,7 @@ node ~/.claude/get-shit-done/bin/gsd-tools.cjs state record-session \
423
431
  Commit STATE.md:
424
432
 
425
433
  ```bash
426
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
434
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
427
435
  ```
428
436
  </step>
429
437
 
@@ -433,9 +441,14 @@ Check for auto-advance trigger:
433
441
  1. Parse `--auto` flag from $ARGUMENTS
434
442
  2. Read `workflow.auto_advance` from config:
435
443
  ```bash
436
- AUTO_CFG=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
444
+ AUTO_CFG=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
437
445
  ```
438
446
 
447
+ **If `--auto` flag present AND `AUTO_CFG` is not true:** Persist auto-advance to config (handles direct `--auto` usage without new-project):
448
+ ```bash
449
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-set workflow.auto_advance true
450
+ ```
451
+
439
452
  **If `--auto` flag present OR `AUTO_CFG` is true:**
440
453
 
441
454
  Display banner:
@@ -447,23 +460,65 @@ Display banner:
447
460
  Context captured. Spawning plan-phase...
448
461
  ```
449
462
 
450
- Spawn plan-phase as Task:
463
+ Spawn plan-phase as Task with direct workflow file reference (do NOT use Skill tool — Skills don't resolve inside Task subagents):
451
464
  ```
452
465
  Task(
453
- prompt="Run /gsd:plan-phase ${PHASE} --auto",
466
+ prompt="
467
+ <objective>
468
+ You are the plan-phase orchestrator. Create executable plans for Phase ${PHASE}: ${PHASE_NAME}, then auto-advance to execution.
469
+ </objective>
470
+
471
+ <execution_context>
472
+ @~/.codex/get-shit-done/workflows/plan-phase.md
473
+ @~/.codex/get-shit-done/references/ui-brand.md
474
+ @~/.codex/get-shit-done/references/model-profile-resolution.md
475
+ </execution_context>
476
+
477
+ <arguments>
478
+ PHASE=${PHASE}
479
+ ARGUMENTS='${PHASE} --auto'
480
+ </arguments>
481
+
482
+ <instructions>
483
+ 1. Read plan-phase.md from execution_context for your complete workflow
484
+ 2. Follow ALL steps: initialize, validate, load context, research, plan, verify, auto-advance
485
+ 3. When spawning agents (gsd-phase-researcher, gsd-planner, gsd-plan-checker), use Task with specified subagent_type and model
486
+ 4. For step 14 (auto-advance to execute): spawn execute-phase as a Task with DIRECT file reference — tell it to read execute-phase.md. Include @file refs to execute-phase.md, checkpoints.md, tdd.md, model-profile-resolution.md. Pass --no-transition flag so execute-phase returns results instead of chaining further.
487
+ 5. Do NOT use the Skill tool or /gsd: commands. Read workflow .md files directly.
488
+ 6. Return: PHASE COMPLETE (full pipeline success), PLANNING COMPLETE (planning done but execute failed/skipped), PLANNING INCONCLUSIVE, or GAPS FOUND
489
+ </instructions>
490
+ ",
454
491
  subagent_type="general-purpose",
455
492
  description="Plan Phase ${PHASE}"
456
493
  )
457
494
  ```
458
495
 
459
496
  **Handle plan-phase return:**
460
- - **PLANNING COMPLETE** → Plan-phase handles chaining to execute-phase (via its own auto_advance step)
461
- - **PLANNING INCONCLUSIVE / CHECKPOINT** → Display result, stop chain:
497
+ - **PHASE COMPLETE** → Full chain succeeded. Display:
462
498
  ```
463
- Auto-advance stopped: Planning needs input.
499
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
500
+ GSD ► PHASE ${PHASE} COMPLETE
501
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
502
+
503
+ Auto-advance pipeline finished: discuss → plan → execute
464
504
 
465
- Review the output above and continue manually:
466
- /gsd:plan-phase ${PHASE}
505
+ Next: /gsd:discuss-phase ${NEXT_PHASE} --auto
506
+ <sub>/clear first → fresh context window</sub>
507
+ ```
508
+ - **PLANNING COMPLETE** → Planning done, execution didn't complete:
509
+ ```
510
+ Auto-advance partial: Planning complete, execution did not finish.
511
+ Continue: /gsd:execute-phase ${PHASE}
512
+ ```
513
+ - **PLANNING INCONCLUSIVE / CHECKPOINT** → Stop chain:
514
+ ```
515
+ Auto-advance stopped: Planning needs input.
516
+ Continue: /gsd:plan-phase ${PHASE}
517
+ ```
518
+ - **GAPS FOUND** → Stop chain:
519
+ ```
520
+ Auto-advance stopped: Gaps found during execution.
521
+ Continue: /gsd:plan-phase ${PHASE} --gaps
467
522
  ```
468
523
 
469
524
  **If neither `--auto` nor config enabled:**
@@ -16,7 +16,7 @@ Read STATE.md before any operation to load project context.
16
16
  Load all context in one call:
17
17
 
18
18
  ```bash
19
- INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init execute-phase "${PHASE_ARG}")
19
+ INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init execute-phase "${PHASE_ARG}")
20
20
  ```
21
21
 
22
22
  Parse JSON for: `executor_model`, `verifier_model`, `commit_docs`, `parallelization`, `branching_strategy`, `branch_name`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `plans`, `incomplete_plans`, `plan_count`, `incomplete_count`, `state_exists`, `roadmap_exists`.
@@ -51,7 +51,7 @@ Report: "Found {plan_count} plans in {phase_dir} ({incomplete_count} incomplete)
51
51
  Load plan inventory with wave grouping in one call:
52
52
 
53
53
  ```bash
54
- PLAN_INDEX=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs phase-plan-index "${PHASE_NUMBER}")
54
+ PLAN_INDEX=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs phase-plan-index "${PHASE_NUMBER}")
55
55
  ```
56
56
 
57
57
  Parse JSON for: `phase`, `plans[]` (each with `id`, `wave`, `autonomous`, `objective`, `files_modified`, `task_count`, `has_summary`), `waves` (map of wave number → plan IDs), `incomplete`, `has_checkpoints`.
@@ -106,21 +106,23 @@ Execute each wave in sequence. Within a wave: parallel if `PARALLELIZATION=true`
106
106
  prompt="
107
107
  <objective>
108
108
  Execute plan {plan_number} of phase {phase_number}-{phase_name}.
109
- Commit each task atomically. Create SUMMARY.md. Update STATE.md.
109
+ Commit each task atomically. Create SUMMARY.md. Update STATE.md and ROADMAP.md.
110
110
  </objective>
111
111
 
112
112
  <execution_context>
113
- @~/.claude/get-shit-done/workflows/execute-plan.md
114
- @~/.claude/get-shit-done/templates/summary.md
115
- @~/.claude/get-shit-done/references/checkpoints.md
116
- @~/.claude/get-shit-done/references/tdd.md
113
+ @~/.codex/get-shit-done/workflows/execute-plan.md
114
+ @~/.codex/get-shit-done/templates/summary.md
115
+ @~/.codex/get-shit-done/references/checkpoints.md
116
+ @~/.codex/get-shit-done/references/tdd.md
117
117
  </execution_context>
118
118
 
119
119
  <files_to_read>
120
120
  Read these files at execution start using the Read tool:
121
- - Plan: {phase_dir}/{plan_file}
122
- - State: .planning/STATE.md
123
- - Config: .planning/config.json (if exists)
121
+ - {phase_dir}/{plan_file} (Plan)
122
+ - .planning/STATE.md (State)
123
+ - .planning/config.json (Config, if exists)
124
+ - ./CODEX.md (Project instructions, if exists — follow project-specific guidelines and coding conventions)
125
+ - .agents/skills/ (Project skills, if exists — list skills, read SKILL.md for each, follow relevant rules during implementation)
124
126
  </files_to_read>
125
127
 
126
128
  <success_criteria>
@@ -128,6 +130,7 @@ Execute each wave in sequence. Within a wave: parallel if `PARALLELIZATION=true`
128
130
  - [ ] Each task committed individually
129
131
  - [ ] SUMMARY.md created in plan directory
130
132
  - [ ] STATE.md updated with position and decisions
133
+ - [ ] ROADMAP.md updated with plan progress (via `roadmap update-plan-progress`)
131
134
  </success_criteria>
132
135
  "
133
136
  )
@@ -162,7 +165,7 @@ Execute each wave in sequence. Within a wave: parallel if `PARALLELIZATION=true`
162
165
 
163
166
  5. **Handle failures:**
164
167
 
165
- **Known Claude Code bug (classifyHandoffIfNeeded):** If an agent reports "failed" with error containing `classifyHandoffIfNeeded is not defined`, this is a Claude Code runtime bug — not a GSD or agent issue. The error fires in the completion handler AFTER all tool calls finish. In this case: run the same spot-checks as step 4 (SUMMARY.md exists, git commits present, no Self-Check: FAILED). If spot-checks PASS → treat as **successful**. If spot-checks FAIL → treat as real failure below.
168
+ **Known Codex Code bug (classifyHandoffIfNeeded):** If an agent reports "failed" with error containing `classifyHandoffIfNeeded is not defined`, this is a Codex Code runtime bug — not a GSD or agent issue. The error fires in the completion handler AFTER all tool calls finish. In this case: run the same spot-checks as step 4 (SUMMARY.md exists, git commits present, no Self-Check: FAILED). If spot-checks PASS → treat as **successful**. If spot-checks FAIL → treat as real failure below.
166
169
 
167
170
  For real failures: report which plan failed → ask "Continue?" or "Stop?" → if continue, dependent plans may also fail. If stop, partial completion report.
168
171
 
@@ -174,7 +177,19 @@ Execute each wave in sequence. Within a wave: parallel if `PARALLELIZATION=true`
174
177
  <step name="checkpoint_handling">
175
178
  Plans with `autonomous: false` require user interaction.
176
179
 
177
- **Flow:**
180
+ **Auto-mode checkpoint handling:**
181
+
182
+ Read auto-advance config:
183
+ ```bash
184
+ AUTO_CFG=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
185
+ ```
186
+
187
+ When executor returns a checkpoint AND `AUTO_CFG` is `"true"`:
188
+ - **human-verify** → Auto-spawn continuation agent with `{user_response}` = `"approved"`. Log `⚡ Auto-approved checkpoint`.
189
+ - **decision** → Auto-spawn continuation agent with `{user_response}` = first option from checkpoint details. Log `⚡ Auto-selected: [option]`.
190
+ - **human-action** → Present to user (existing behavior below). Auth gates cannot be automated.
191
+
192
+ **Standard flow (not auto-mode, or human-action type):**
178
193
 
179
194
  1. Spawn agent for checkpoint plan
180
195
  2. Agent runs until checkpoint task or auth gate → returns structured state
@@ -241,7 +256,7 @@ fi
241
256
 
242
257
  **2. Find parent UAT file:**
243
258
  ```bash
244
- PARENT_INFO=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs find-phase "${PARENT_PHASE}" --raw)
259
+ PARENT_INFO=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs find-phase "${PARENT_PHASE}" --raw)
245
260
  # Extract directory from PARENT_INFO JSON, then find UAT file in that directory
246
261
  ```
247
262
 
@@ -272,19 +287,26 @@ mv .planning/debug/{slug}.md .planning/debug/resolved/
272
287
 
273
288
  **6. Commit updated artifacts:**
274
289
  ```bash
275
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs(phase-${PARENT_PHASE}): resolve UAT gaps and debug sessions after ${PHASE_NUMBER} gap closure" --files .planning/phases/*${PARENT_PHASE}*/*-UAT.md .planning/debug/resolved/*.md
290
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs(phase-${PARENT_PHASE}): resolve UAT gaps and debug sessions after ${PHASE_NUMBER} gap closure" --files .planning/phases/*${PARENT_PHASE}*/*-UAT.md .planning/debug/resolved/*.md
276
291
  ```
277
292
  </step>
278
293
 
279
294
  <step name="verify_phase_goal">
280
295
  Verify phase achieved its GOAL, not just completed tasks.
281
296
 
297
+ ```bash
298
+ PHASE_REQ_IDS=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs roadmap get-phase "${PHASE_NUMBER}" | jq -r '.section' | grep -i "Requirements:" | sed 's/.*Requirements:\*\*\s*//' | sed 's/[\[\]]//g')
299
+ ```
300
+
282
301
  ```
283
302
  Task(
284
303
  prompt="Verify phase {phase_number} goal achievement.
285
304
  Phase directory: {phase_dir}
286
305
  Phase goal: {goal from ROADMAP.md}
287
- Check must_haves against actual codebase. Create VERIFICATION.md.",
306
+ Phase requirement IDs: {phase_req_ids}
307
+ Check must_haves against actual codebase.
308
+ Cross-reference requirement IDs from PLAN frontmatter against REQUIREMENTS.md — every ID MUST be accounted for.
309
+ Create VERIFICATION.md.",
288
310
  subagent_type="gsd-verifier",
289
311
  model="{verifier_model}"
290
312
  )
@@ -340,7 +362,7 @@ Gap closure cycle: `/gsd:plan-phase {X} --gaps` reads VERIFICATION.md → create
340
362
  **Mark phase complete and update all tracking files:**
341
363
 
342
364
  ```bash
343
- COMPLETION=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs phase complete "${PHASE_NUMBER}")
365
+ COMPLETION=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs phase complete "${PHASE_NUMBER}")
344
366
  ```
345
367
 
346
368
  The CLI handles:
@@ -353,7 +375,7 @@ The CLI handles:
353
375
  Extract from result: `next_phase`, `next_phase_name`, `is_last_phase`.
354
376
 
355
377
  ```bash
356
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md .planning/phases/{phase_dir}/*-VERIFICATION.md
378
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md {phase_dir}/*-VERIFICATION.md
357
379
  ```
358
380
  </step>
359
381
 
@@ -361,12 +383,35 @@ node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs(phase-{X}): complete
361
383
 
362
384
  **Exception:** If `gaps_found`, the `verify_phase_goal` step already presents the gap-closure path (`/gsd:plan-phase {X} --gaps`). No additional routing needed — skip auto-advance.
363
385
 
386
+ **No-transition check (spawned by auto-advance chain):**
387
+
388
+ Parse `--no-transition` flag from $ARGUMENTS.
389
+
390
+ **If `--no-transition` flag present:**
391
+
392
+ Execute-phase was spawned by plan-phase's auto-advance. Do NOT run transition.md.
393
+ After verification passes and roadmap is updated, return completion status to parent:
394
+
395
+ ```
396
+ ## PHASE COMPLETE
397
+
398
+ Phase: ${PHASE_NUMBER} - ${PHASE_NAME}
399
+ Plans: ${completed_count}/${total_count}
400
+ Verification: {Passed | Gaps Found}
401
+
402
+ [Include aggregate_results output]
403
+ ```
404
+
405
+ STOP. Do not proceed to auto-advance or transition.
406
+
407
+ **If `--no-transition` flag is NOT present:**
408
+
364
409
  **Auto-advance detection:**
365
410
 
366
411
  1. Parse `--auto` flag from $ARGUMENTS
367
412
  2. Read `workflow.auto_advance` from config:
368
413
  ```bash
369
- AUTO_CFG=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
414
+ AUTO_CFG=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
370
415
  ```
371
416
 
372
417
  **If `--auto` flag present OR `AUTO_CFG` is true (AND verification passed with no gaps):**
@@ -380,7 +425,7 @@ node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs(phase-{X}): complete
380
425
 
381
426
  Execute the transition workflow inline (do NOT use Task — orchestrator context is ~10-15%, transition needs phase completion data already in context):
382
427
 
383
- Read and follow `~/.claude/get-shit-done/workflows/transition.md`, passing through the `--auto` flag so it propagates to the next phase invocation.
428
+ Read and follow `~/.codex/get-shit-done/workflows/transition.md`, passing through the `--auto` flag so it propagates to the next phase invocation.
384
429
 
385
430
  **If neither `--auto` nor `AUTO_CFG` is true:**
386
431
 
@@ -394,7 +439,7 @@ Orchestrator: ~10-15% context. Subagents: fresh 200k each. No polling (Task bloc
394
439
  </context_efficiency>
395
440
 
396
441
  <failure_handling>
397
- - **classifyHandoffIfNeeded false failure:** Agent reports "failed" but error is `classifyHandoffIfNeeded is not defined` → Claude Code bug, not GSD. Spot-check (SUMMARY exists, commits present) → if pass, treat as success
442
+ - **classifyHandoffIfNeeded false failure:** Agent reports "failed" but error is `classifyHandoffIfNeeded is not defined` → Codex Code bug, not GSD. Spot-check (SUMMARY exists, commits present) → if pass, treat as success
398
443
  - **Agent fails mid-plan:** Missing SUMMARY.md → report, ask user how to proceed
399
444
  - **Dependency chain breaks:** Wave 1 fails → Wave 2 dependents likely fail → user chooses attempt or skip
400
445
  - **All agents in wave fail:** Systemic issue → stop, report for investigation