@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
@@ -46,10 +46,10 @@ The document should describe what you want to build.
46
46
  **MANDATORY FIRST STEP — Execute these checks before ANY user interaction:**
47
47
 
48
48
  ```bash
49
- INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init new-project)
49
+ INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init new-project)
50
50
  ```
51
51
 
52
- Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`.
52
+ Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`, `project_path`.
53
53
 
54
54
  **If `project_exists` is true:** Error — project already initialized. Use `/gsd:progress`.
55
55
 
@@ -176,7 +176,8 @@ Create `.planning/config.json` with mode set to "yolo":
176
176
  "workflow": {
177
177
  "research": true|false,
178
178
  "plan_check": true|false,
179
- "verifier": true|false
179
+ "verifier": true|false,
180
+ "auto_advance": true
180
181
  }
181
182
  }
182
183
  ```
@@ -187,7 +188,13 @@ Create `.planning/config.json` with mode set to "yolo":
187
188
 
188
189
  ```bash
189
190
  mkdir -p .planning
190
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "chore: add project config" --files .planning/config.json
191
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "chore: add project config" --files .planning/config.json
192
+ ```
193
+
194
+ **Persist auto-advance to config (survives context compaction):**
195
+
196
+ ```bash
197
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-set workflow.auto_advance true
191
198
  ```
192
199
 
193
200
  Proceed to Step 4 (skip Steps 3 and 5).
@@ -331,7 +338,7 @@ Do not compress. Capture everything gathered.
331
338
 
332
339
  ```bash
333
340
  mkdir -p .planning
334
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs: initialize project" --files .planning/PROJECT.md
341
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs: initialize project" --files .planning/PROJECT.md
335
342
  ```
336
343
 
337
344
  ## 5. Workflow Preferences
@@ -483,7 +490,7 @@ Create `.planning/config.json` with all settings:
483
490
  **Commit config.json:**
484
491
 
485
492
  ```bash
486
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "chore: add project config" --files .planning/config.json
493
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "chore: add project config" --files .planning/config.json
487
494
  ```
488
495
 
489
496
  **Note:** Run `/gsd:settings` anytime to update these preferences.
@@ -534,10 +541,10 @@ Display spawning indicator:
534
541
  → Pitfalls research
535
542
  ```
536
543
 
537
- Spawn 4 parallel gsd-project-researcher agents with rich context:
544
+ Spawn 4 parallel gsd-project-researcher agents with path references:
538
545
 
539
546
  ```
540
- Task(prompt="First, read ~/.claude/agents/gsd-project-researcher.md for your role and instructions.
547
+ Task(prompt="First, read ~/.codex/agents/gsd-project-researcher.md for your role and instructions.
541
548
 
542
549
  <research_type>
543
550
  Project Research — Stack dimension for [domain].
@@ -554,9 +561,9 @@ Subsequent: Research what's needed to add [target features] to an existing [doma
554
561
  What's the standard 2025 stack for [domain]?
555
562
  </question>
556
563
 
557
- <project_context>
558
- [PROJECT.md summary - core value, constraints, what they're building]
559
- </project_context>
564
+ <files_to_read>
565
+ - {project_path} (Project context and goals)
566
+ </files_to_read>
560
567
 
561
568
  <downstream_consumer>
562
569
  Your STACK.md feeds into roadmap creation. Be prescriptive:
@@ -573,11 +580,11 @@ Your STACK.md feeds into roadmap creation. Be prescriptive:
573
580
 
574
581
  <output>
575
582
  Write to: .planning/research/STACK.md
576
- Use template: ~/.claude/get-shit-done/templates/research-project/STACK.md
583
+ Use template: ~/.codex/get-shit-done/templates/research-project/STACK.md
577
584
  </output>
578
585
  ", subagent_type="general-purpose", model="{researcher_model}", description="Stack research")
579
586
 
580
- Task(prompt="First, read ~/.claude/agents/gsd-project-researcher.md for your role and instructions.
587
+ Task(prompt="First, read ~/.codex/agents/gsd-project-researcher.md for your role and instructions.
581
588
 
582
589
  <research_type>
583
590
  Project Research — Features dimension for [domain].
@@ -594,9 +601,9 @@ Subsequent: How do [target features] typically work? What's expected behavior?
594
601
  What features do [domain] products have? What's table stakes vs differentiating?
595
602
  </question>
596
603
 
597
- <project_context>
598
- [PROJECT.md summary]
599
- </project_context>
604
+ <files_to_read>
605
+ - {project_path} (Project context)
606
+ </files_to_read>
600
607
 
601
608
  <downstream_consumer>
602
609
  Your FEATURES.md feeds into requirements definition. Categorize clearly:
@@ -613,11 +620,11 @@ Your FEATURES.md feeds into requirements definition. Categorize clearly:
613
620
 
614
621
  <output>
615
622
  Write to: .planning/research/FEATURES.md
616
- Use template: ~/.claude/get-shit-done/templates/research-project/FEATURES.md
623
+ Use template: ~/.codex/get-shit-done/templates/research-project/FEATURES.md
617
624
  </output>
618
625
  ", subagent_type="general-purpose", model="{researcher_model}", description="Features research")
619
626
 
620
- Task(prompt="First, read ~/.claude/agents/gsd-project-researcher.md for your role and instructions.
627
+ Task(prompt="First, read ~/.codex/agents/gsd-project-researcher.md for your role and instructions.
621
628
 
622
629
  <research_type>
623
630
  Project Research — Architecture dimension for [domain].
@@ -634,9 +641,9 @@ Subsequent: How do [target features] integrate with existing [domain] architectu
634
641
  How are [domain] systems typically structured? What are major components?
635
642
  </question>
636
643
 
637
- <project_context>
638
- [PROJECT.md summary]
639
- </project_context>
644
+ <files_to_read>
645
+ - {project_path} (Project context)
646
+ </files_to_read>
640
647
 
641
648
  <downstream_consumer>
642
649
  Your ARCHITECTURE.md informs phase structure in roadmap. Include:
@@ -653,11 +660,11 @@ Your ARCHITECTURE.md informs phase structure in roadmap. Include:
653
660
 
654
661
  <output>
655
662
  Write to: .planning/research/ARCHITECTURE.md
656
- Use template: ~/.claude/get-shit-done/templates/research-project/ARCHITECTURE.md
663
+ Use template: ~/.codex/get-shit-done/templates/research-project/ARCHITECTURE.md
657
664
  </output>
658
665
  ", subagent_type="general-purpose", model="{researcher_model}", description="Architecture research")
659
666
 
660
- Task(prompt="First, read ~/.claude/agents/gsd-project-researcher.md for your role and instructions.
667
+ Task(prompt="First, read ~/.codex/agents/gsd-project-researcher.md for your role and instructions.
661
668
 
662
669
  <research_type>
663
670
  Project Research — Pitfalls dimension for [domain].
@@ -674,9 +681,9 @@ Subsequent: What are common mistakes when adding [target features] to [domain]?
674
681
  What do [domain] projects commonly get wrong? Critical mistakes?
675
682
  </question>
676
683
 
677
- <project_context>
678
- [PROJECT.md summary]
679
- </project_context>
684
+ <files_to_read>
685
+ - {project_path} (Project context)
686
+ </files_to_read>
680
687
 
681
688
  <downstream_consumer>
682
689
  Your PITFALLS.md prevents mistakes in roadmap/planning. For each pitfall:
@@ -693,7 +700,7 @@ Your PITFALLS.md prevents mistakes in roadmap/planning. For each pitfall:
693
700
 
694
701
  <output>
695
702
  Write to: .planning/research/PITFALLS.md
696
- Use template: ~/.claude/get-shit-done/templates/research-project/PITFALLS.md
703
+ Use template: ~/.codex/get-shit-done/templates/research-project/PITFALLS.md
697
704
  </output>
698
705
  ", subagent_type="general-purpose", model="{researcher_model}", description="Pitfalls research")
699
706
  ```
@@ -706,17 +713,16 @@ Task(prompt="
706
713
  Synthesize research outputs into SUMMARY.md.
707
714
  </task>
708
715
 
709
- <research_files>
710
- Read these files:
716
+ <files_to_read>
711
717
  - .planning/research/STACK.md
712
718
  - .planning/research/FEATURES.md
713
719
  - .planning/research/ARCHITECTURE.md
714
720
  - .planning/research/PITFALLS.md
715
- </research_files>
721
+ </files_to_read>
716
722
 
717
723
  <output>
718
724
  Write to: .planning/research/SUMMARY.md
719
- Use template: ~/.claude/get-shit-done/templates/research-project/SUMMARY.md
725
+ Use template: ~/.codex/get-shit-done/templates/research-project/SUMMARY.md
720
726
  Commit after writing.
721
727
  </output>
722
728
  ", subagent_type="gsd-research-synthesizer", model="{synthesizer_model}", description="Synthesize research")
@@ -881,7 +887,7 @@ If "adjust": Return to scoping.
881
887
  **Commit requirements:**
882
888
 
883
889
  ```bash
884
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs: define v1 requirements" --files .planning/REQUIREMENTS.md
890
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs: define v1 requirements" --files .planning/REQUIREMENTS.md
885
891
  ```
886
892
 
887
893
  ## 8. Create Roadmap
@@ -895,23 +901,18 @@ Display stage banner:
895
901
  ◆ Spawning roadmapper...
896
902
  ```
897
903
 
898
- Spawn gsd-roadmapper agent with context:
904
+ Spawn gsd-roadmapper agent with path references:
899
905
 
900
906
  ```
901
907
  Task(prompt="
902
908
  <planning_context>
903
909
 
904
- **Project:**
905
- @.planning/PROJECT.md
906
-
907
- **Requirements:**
908
- @.planning/REQUIREMENTS.md
909
-
910
- **Research (if exists):**
911
- @.planning/research/SUMMARY.md
912
-
913
- **Config:**
914
- @.planning/config.json
910
+ <files_to_read>
911
+ - .planning/PROJECT.md (Project context)
912
+ - .planning/REQUIREMENTS.md (v1 Requirements)
913
+ - .planning/research/SUMMARY.md (Research findings - if exists)
914
+ - .planning/config.json (Depth and mode settings)
915
+ </files_to_read>
915
916
 
916
917
  </planning_context>
917
918
 
@@ -999,7 +1000,9 @@ Use AskUserQuestion:
999
1000
  User feedback on roadmap:
1000
1001
  [user's notes]
1001
1002
 
1002
- Current ROADMAP.md: @.planning/ROADMAP.md
1003
+ <files_to_read>
1004
+ - .planning/ROADMAP.md (Current roadmap to revise)
1005
+ </files_to_read>
1003
1006
 
1004
1007
  Update the roadmap based on feedback. Edit files in place.
1005
1008
  Return ROADMAP REVISED with changes made.
@@ -1014,7 +1017,7 @@ Use AskUserQuestion:
1014
1017
  **Commit roadmap (after approval or auto mode):**
1015
1018
 
1016
1019
  ```bash
1017
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs: create roadmap ([N] phases)" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md
1020
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs: create roadmap ([N] phases)" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md
1018
1021
  ```
1019
1022
 
1020
1023
  ## 9. Done
@@ -82,17 +82,17 @@ Start with: [specific first action when resuming]
82
82
  </next_action>
83
83
  ```
84
84
 
85
- Be specific enough for a fresh Claude to understand immediately.
85
+ Be specific enough for a fresh Codex to understand immediately.
86
86
 
87
87
  Use `current-timestamp` for last_updated field. You can use init todos (which provides timestamps) or call directly:
88
88
  ```bash
89
- timestamp=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs current-timestamp full --raw)
89
+ timestamp=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs current-timestamp full --raw)
90
90
  ```
91
91
  </step>
92
92
 
93
93
  <step name="commit">
94
94
  ```bash
95
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/phases/*/.continue-here.md
95
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/phases/*/.continue-here.md
96
96
  ```
97
97
  </step>
98
98
 
@@ -65,7 +65,7 @@ Gap: Flow "View dashboard" broken at data fetch
65
65
  Find highest existing phase:
66
66
  ```bash
67
67
  # Get sorted phase list, extract last one
68
- PHASES=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs phases list)
68
+ PHASES=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs phases list)
69
69
  HIGHEST=$(echo "$PHASES" | jq -r '.directories[-1]')
70
70
  ```
71
71
 
@@ -123,19 +123,34 @@ Add new phases to current milestone:
123
123
  ...
124
124
  ```
125
125
 
126
- ## 7. Create Phase Directories
126
+ ## 7. Update REQUIREMENTS.md Traceability Table (REQUIRED)
127
+
128
+ For each REQ-ID assigned to a gap closure phase:
129
+ - Update the Phase column to reflect the new gap closure phase
130
+ - Reset Status to `Pending`
131
+
132
+ Reset checked-off requirements the audit found unsatisfied:
133
+ - Change `[x]` → `[ ]` for any requirement marked unsatisfied in the audit
134
+ - Update coverage count at top of REQUIREMENTS.md
135
+
136
+ ```bash
137
+ # Verify traceability table reflects gap closure assignments
138
+ grep -c "Pending" .planning/REQUIREMENTS.md
139
+ ```
140
+
141
+ ## 8. Create Phase Directories
127
142
 
128
143
  ```bash
129
144
  mkdir -p ".planning/phases/{NN}-{name}"
130
145
  ```
131
146
 
132
- ## 8. Commit Roadmap Update
147
+ ## 9. Commit Roadmap and Requirements Update
133
148
 
134
149
  ```bash
135
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs(roadmap): add gap closure phases {N}-{M}" --files .planning/ROADMAP.md
150
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs(roadmap): add gap closure phases {N}-{M}" --files .planning/ROADMAP.md .planning/REQUIREMENTS.md
136
151
  ```
137
152
 
138
- ## 9. Offer Next Steps
153
+ ## 10. Offer Next Steps
139
154
 
140
155
  ```markdown
141
156
  ## ✓ Gap Closure Phases Created
@@ -250,7 +265,10 @@ becomes:
250
265
  - [ ] Gaps grouped into logical phases
251
266
  - [ ] User confirmed phase plan
252
267
  - [ ] ROADMAP.md updated with new phases
268
+ - [ ] REQUIREMENTS.md traceability table updated with gap closure phase assignments
269
+ - [ ] Unsatisfied requirement checkboxes reset (`[x]` → `[ ]`)
270
+ - [ ] Coverage count updated in REQUIREMENTS.md
253
271
  - [ ] Phase directories created
254
- - [ ] Changes committed
272
+ - [ ] Changes committed (includes REQUIREMENTS.md)
255
273
  - [ ] User knows to run `/gsd:plan-phase` next
256
274
  </success_criteria>
@@ -5,30 +5,22 @@ Create executable phase prompts (PLAN.md files) for a roadmap phase with integra
5
5
  <required_reading>
6
6
  Read all files referenced by the invoking prompt's execution_context before starting.
7
7
 
8
- @~/.claude/get-shit-done/references/ui-brand.md
8
+ @~/.codex/get-shit-done/references/ui-brand.md
9
9
  </required_reading>
10
10
 
11
11
  <process>
12
12
 
13
13
  ## 1. Initialize
14
14
 
15
- Load all context in one call (include file contents to avoid redundant reads):
15
+ Load all context in one call (paths only to minimize orchestrator context):
16
16
 
17
17
  ```bash
18
- INIT_RAW=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init plan-phase "$PHASE" --include state,roadmap,requirements,context,research,verification,uat)
19
- # Large payloads are written to a tmpfile — output starts with @file:/path
20
- if [[ "$INIT_RAW" == @file:* ]]; then
21
- INIT_FILE="${INIT_RAW#@file:}"
22
- INIT=$(cat "$INIT_FILE")
23
- rm -f "$INIT_FILE"
24
- else
25
- INIT="$INIT_RAW"
26
- fi
18
+ INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init plan-phase "$PHASE")
27
19
  ```
28
20
 
29
- Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `plan_count`, `planning_exists`, `roadmap_exists`.
21
+ Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `nyquist_validation_enabled`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `plan_count`, `planning_exists`, `roadmap_exists`.
30
22
 
31
- **File contents (from --include):** `state_content`, `roadmap_content`, `requirements_content`, `context_content`, `research_content`, `verification_content`, `uat_content`. These are null if files don't exist.
23
+ **File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path`. These are null if files don't exist.
32
24
 
33
25
  **If `planning_exists` is false:** Error — run `/gsd:new-project` first.
34
26
 
@@ -48,20 +40,18 @@ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
48
40
  ## 3. Validate Phase
49
41
 
50
42
  ```bash
51
- PHASE_INFO=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs roadmap get-phase "${PHASE}")
43
+ PHASE_INFO=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs roadmap get-phase "${PHASE}")
52
44
  ```
53
45
 
54
46
  **If `found` is false:** Error with available phases. **If `found` is true:** Extract `phase_number`, `phase_name`, `goal` from JSON.
55
47
 
56
48
  ## 4. Load CONTEXT.md
57
49
 
58
- Use `context_content` from init JSON (already loaded via `--include context`).
50
+ Check `context_path` from init JSON.
59
51
 
60
- **CRITICAL:** Use `context_content` from INIT pass to researcher, planner, checker, and revision agents.
52
+ If `context_path` is not null, display: `Using phase context from: ${context_path}`
61
53
 
62
- If `context_content` is not null, display: `Using phase context from: ${PHASE_DIR}/*-CONTEXT.md`
63
-
64
- **If `context_content` is null (no CONTEXT.md exists):**
54
+ **If `context_path` is null (no CONTEXT.md exists):**
65
55
 
66
56
  Use AskUserQuestion:
67
57
  - header: "No context"
@@ -93,11 +83,8 @@ Display banner:
93
83
  ### Spawn gsd-phase-researcher
94
84
 
95
85
  ```bash
96
- PHASE_DESC=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs roadmap get-phase "${PHASE}" | jq -r '.section')
97
- # Use requirements_content from INIT (already loaded via --include requirements)
98
- REQUIREMENTS=$(echo "$INIT" | jq -r '.requirements_content // empty' | grep -A100 "## Requirements" | head -50)
99
- STATE_SNAP=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs state-snapshot)
100
- # Extract decisions from state-snapshot JSON: jq '.decisions[] | "\(.phase): \(.summary) - \(.rationale)"'
86
+ PHASE_DESC=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs roadmap get-phase "${PHASE}" | jq -r '.section')
87
+ PHASE_REQ_IDS=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs roadmap get-phase "${PHASE}" | jq -r '.section // empty' | grep -i "Requirements:" | head -1 | sed 's/.*Requirements:\*\*\s*//' | sed 's/[\[\]]//g' | tr ',' '\n' | sed 's/^ *//;s/ *$//' | grep -v '^$' | tr '\n' ',' | sed 's/,$//')
101
88
  ```
102
89
 
103
90
  Research prompt:
@@ -108,19 +95,18 @@ Research how to implement Phase {phase_number}: {phase_name}
108
95
  Answer: "What do I need to know to PLAN this phase well?"
109
96
  </objective>
110
97
 
111
- <phase_context>
112
- IMPORTANT: If CONTEXT.md exists below, it contains user decisions from /gsd:discuss-phase.
113
- - **Decisions** = Locked — research THESE deeply, no alternatives
114
- - **Claude's Discretion** = Freedom areas — research options, recommend
115
- - **Deferred Ideas** = Out of scope — ignore
116
-
117
- {context_content}
118
- </phase_context>
98
+ <files_to_read>
99
+ - {context_path} (USER DECISIONS from /gsd:discuss-phase)
100
+ - {requirements_path} (Project requirements)
101
+ - {state_path} (Project decisions and history)
102
+ </files_to_read>
119
103
 
120
104
  <additional_context>
121
105
  **Phase description:** {phase_description}
122
- **Requirements:** {requirements}
123
- **Prior decisions:** {decisions}
106
+ **Phase requirement IDs (MUST address):** {phase_req_ids}
107
+
108
+ **Project instructions:** Read ./CODEX.md if exists — follow project-specific guidelines
109
+ **Project skills:** Check .agents/skills/ directory (if exists) — read SKILL.md files, research should account for project skill patterns
124
110
  </additional_context>
125
111
 
126
112
  <output>
@@ -130,7 +116,7 @@ Write to: {phase_dir}/{phase_num}-RESEARCH.md
130
116
 
131
117
  ```
132
118
  Task(
133
- prompt="First, read ~/.claude/agents/gsd-phase-researcher.md for your role and instructions.\n\n" + research_prompt,
119
+ prompt="First, read ~/.codex/agents/gsd-phase-researcher.md for your role and instructions.\n\n" + research_prompt,
134
120
  subagent_type="general-purpose",
135
121
  model="{researcher_model}",
136
122
  description="Research Phase {phase}"
@@ -142,6 +128,31 @@ Task(
142
128
  - **`## RESEARCH COMPLETE`:** Display confirmation, continue to step 6
143
129
  - **`## RESEARCH BLOCKED`:** Display blocker, offer: 1) Provide context, 2) Skip research, 3) Abort
144
130
 
131
+ ## 5.5. Create Validation Strategy (if Nyquist enabled)
132
+
133
+ **Skip if:** `nyquist_validation_enabled` is false from INIT JSON.
134
+
135
+ After researcher completes, check if RESEARCH.md contains a Validation Architecture section:
136
+
137
+ ```bash
138
+ grep -l "## Validation Architecture" "${PHASE_DIR}"/*-RESEARCH.md 2>/dev/null
139
+ ```
140
+
141
+ **If found:**
142
+ 1. Read validation template from `~/.codex/get-shit-done/templates/VALIDATION.md`
143
+ 2. Write to `${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md`
144
+ 3. Fill frontmatter: replace `{N}` with phase number, `{phase-slug}` with phase slug, `{date}` with current date
145
+ 4. If `commit_docs` is true:
146
+ ```bash
147
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit-docs "docs(phase-${PHASE}): add validation strategy"
148
+ ```
149
+
150
+ **If not found (and nyquist enabled):** Display warning:
151
+ ```
152
+ ⚠ Nyquist validation enabled but researcher did not produce a Validation Architecture section.
153
+ Continuing without validation strategy. Plans may fail Dimension 8 check.
154
+ ```
155
+
145
156
  ## 6. Check Existing Plans
146
157
 
147
158
  ```bash
@@ -150,19 +161,18 @@ ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null
150
161
 
151
162
  **If exists:** Offer: 1) Add more plans, 2) View existing, 3) Replan from scratch.
152
163
 
153
- ## 7. Use Context Files from INIT
164
+ ## 7. Use Context Paths from INIT
154
165
 
155
- All file contents are already loaded via `--include` in step 1 (`@` syntax doesn't work across Task() boundaries):
166
+ Extract from INIT JSON:
156
167
 
157
168
  ```bash
158
- # Extract from INIT JSON (no need to re-read files)
159
- STATE_CONTENT=$(echo "$INIT" | jq -r '.state_content // empty')
160
- ROADMAP_CONTENT=$(echo "$INIT" | jq -r '.roadmap_content // empty')
161
- REQUIREMENTS_CONTENT=$(echo "$INIT" | jq -r '.requirements_content // empty')
162
- RESEARCH_CONTENT=$(echo "$INIT" | jq -r '.research_content // empty')
163
- VERIFICATION_CONTENT=$(echo "$INIT" | jq -r '.verification_content // empty')
164
- UAT_CONTENT=$(echo "$INIT" | jq -r '.uat_content // empty')
165
- CONTEXT_CONTENT=$(echo "$INIT" | jq -r '.context_content // empty')
169
+ STATE_PATH=$(echo "$INIT" | jq -r '.state_path // empty')
170
+ ROADMAP_PATH=$(echo "$INIT" | jq -r '.roadmap_path // empty')
171
+ REQUIREMENTS_PATH=$(echo "$INIT" | jq -r '.requirements_path // empty')
172
+ RESEARCH_PATH=$(echo "$INIT" | jq -r '.research_path // empty')
173
+ VERIFICATION_PATH=$(echo "$INIT" | jq -r '.verification_path // empty')
174
+ UAT_PATH=$(echo "$INIT" | jq -r '.uat_path // empty')
175
+ CONTEXT_PATH=$(echo "$INIT" | jq -r '.context_path // empty')
166
176
  ```
167
177
 
168
178
  ## 8. Spawn gsd-planner Agent
@@ -183,20 +193,20 @@ Planner prompt:
183
193
  **Phase:** {phase_number}
184
194
  **Mode:** {standard | gap_closure}
185
195
 
186
- **Project State:** {state_content}
187
- **Roadmap:** {roadmap_content}
188
- **Requirements:** {requirements_content}
196
+ <files_to_read>
197
+ - {state_path} (Project State)
198
+ - {roadmap_path} (Roadmap)
199
+ - {requirements_path} (Requirements)
200
+ - {context_path} (USER DECISIONS from /gsd:discuss-phase)
201
+ - {research_path} (Technical Research)
202
+ - {verification_path} (Verification Gaps - if --gaps)
203
+ - {uat_path} (UAT Gaps - if --gaps)
204
+ </files_to_read>
189
205
 
190
- **Phase Context:**
191
- IMPORTANT: If context exists below, it contains USER DECISIONS from /gsd:discuss-phase.
192
- - **Decisions** = LOCKED — honor exactly, do not revisit
193
- - **Claude's Discretion** = Freedom — make implementation choices
194
- - **Deferred Ideas** = Out of scope — do NOT include
206
+ **Phase requirement IDs (every ID MUST appear in a plan's `requirements` field):** {phase_req_ids}
195
207
 
196
- {context_content}
197
-
198
- **Research:** {research_content}
199
- **Gap Closure (if --gaps):** {verification_content} {uat_content}
208
+ **Project instructions:** Read ./CODEX.md if exists — follow project-specific guidelines
209
+ **Project skills:** Check .agents/skills/ directory (if exists) — read SKILL.md files, plans should account for project skill rules
200
210
  </planning_context>
201
211
 
202
212
  <downstream_consumer>
@@ -219,7 +229,7 @@ Output consumed by /gsd:execute-phase. Plans need:
219
229
 
220
230
  ```
221
231
  Task(
222
- prompt="First, read ~/.claude/agents/gsd-planner.md for your role and instructions.\n\n" + filled_prompt,
232
+ prompt="First, read ~/.codex/agents/gsd-planner.md for your role and instructions.\n\n" + filled_prompt,
223
233
  subagent_type="general-purpose",
224
234
  model="{planner_model}",
225
235
  description="Plan Phase {phase}"
@@ -243,10 +253,6 @@ Display banner:
243
253
  ◆ Spawning plan checker...
244
254
  ```
245
255
 
246
- ```bash
247
- PLANS_CONTENT=$(cat "${PHASE_DIR}"/*-PLAN.md 2>/dev/null)
248
- ```
249
-
250
256
  Checker prompt:
251
257
 
252
258
  ```markdown
@@ -254,16 +260,18 @@ Checker prompt:
254
260
  **Phase:** {phase_number}
255
261
  **Phase Goal:** {goal from ROADMAP}
256
262
 
257
- **Plans to verify:** {plans_content}
258
- **Requirements:** {requirements_content}
263
+ <files_to_read>
264
+ - {PHASE_DIR}/*-PLAN.md (Plans to verify)
265
+ - {roadmap_path} (Roadmap)
266
+ - {requirements_path} (Requirements)
267
+ - {context_path} (USER DECISIONS from /gsd:discuss-phase)
268
+ - {research_path} (Technical Research — includes Validation Architecture)
269
+ </files_to_read>
259
270
 
260
- **Phase Context:**
261
- IMPORTANT: Plans MUST honor user decisions. Flag as issue if plans contradict.
262
- - **Decisions** = LOCKED — plans must implement exactly
263
- - **Claude's Discretion** = Freedom areas — plans can choose approach
264
- - **Deferred Ideas** = Out of scope — plans must NOT include
271
+ **Phase requirement IDs (MUST ALL be covered):** {phase_req_ids}
265
272
 
266
- {context_content}
273
+ **Project instructions:** Read ./CODEX.md if exists — verify plans honor project guidelines
274
+ **Project skills:** Check .agents/skills/ directory (if exists) — verify plans account for project skill rules
267
275
  </verification_context>
268
276
 
269
277
  <expected_output>
@@ -294,10 +302,6 @@ Track `iteration_count` (starts at 1 after initial plan + check).
294
302
 
295
303
  Display: `Sending back to planner for revision... (iteration {N}/3)`
296
304
 
297
- ```bash
298
- PLANS_CONTENT=$(cat "${PHASE_DIR}"/*-PLAN.md 2>/dev/null)
299
- ```
300
-
301
305
  Revision prompt:
302
306
 
303
307
  ```markdown
@@ -305,12 +309,12 @@ Revision prompt:
305
309
  **Phase:** {phase_number}
306
310
  **Mode:** revision
307
311
 
308
- **Existing plans:** {plans_content}
309
- **Checker issues:** {structured_issues_from_checker}
312
+ <files_to_read>
313
+ - {PHASE_DIR}/*-PLAN.md (Existing plans)
314
+ - {context_path} (USER DECISIONS from /gsd:discuss-phase)
315
+ </files_to_read>
310
316
 
311
- **Phase Context:**
312
- Revisions MUST still honor user decisions.
313
- {context_content}
317
+ **Checker issues:** {structured_issues_from_checker}
314
318
  </revision_context>
315
319
 
316
320
  <instructions>
@@ -322,7 +326,7 @@ Return what changed.
322
326
 
323
327
  ```
324
328
  Task(
325
- prompt="First, read ~/.claude/agents/gsd-planner.md for your role and instructions.\n\n" + revision_prompt,
329
+ prompt="First, read ~/.codex/agents/gsd-planner.md for your role and instructions.\n\n" + revision_prompt,
326
330
  subagent_type="general-purpose",
327
331
  model="{planner_model}",
328
332
  description="Revise Phase {phase} plans"
@@ -348,7 +352,7 @@ Check for auto-advance trigger:
348
352
  1. Parse `--auto` flag from $ARGUMENTS
349
353
  2. Read `workflow.auto_advance` from config:
350
354
  ```bash
351
- AUTO_CFG=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
355
+ AUTO_CFG=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
352
356
  ```
353
357
 
354
358
  **If `--auto` flag present OR `AUTO_CFG` is true:**
@@ -362,10 +366,36 @@ Display banner:
362
366
  Plans ready. Spawning execute-phase...
363
367
  ```
364
368
 
365
- Spawn execute-phase as Task:
369
+ Spawn execute-phase as Task with direct workflow file reference (do NOT use Skill tool — Skills don't resolve inside Task subagents):
366
370
  ```
367
371
  Task(
368
- prompt="Run /gsd:execute-phase ${PHASE}",
372
+ prompt="
373
+ <objective>
374
+ You are the execute-phase orchestrator. Execute all plans for Phase ${PHASE}: ${PHASE_NAME}.
375
+ </objective>
376
+
377
+ <execution_context>
378
+ @~/.codex/get-shit-done/workflows/execute-phase.md
379
+ @~/.codex/get-shit-done/references/checkpoints.md
380
+ @~/.codex/get-shit-done/references/tdd.md
381
+ @~/.codex/get-shit-done/references/model-profile-resolution.md
382
+ </execution_context>
383
+
384
+ <arguments>
385
+ PHASE=${PHASE}
386
+ ARGUMENTS='${PHASE} --auto --no-transition'
387
+ </arguments>
388
+
389
+ <instructions>
390
+ 1. Read execute-phase.md from execution_context for your complete workflow
391
+ 2. Follow ALL steps: initialize, handle_branching, validate_phase, discover_and_group_plans, execute_waves, aggregate_results, close_parent_artifacts, verify_phase_goal, update_roadmap
392
+ 3. The --no-transition flag means: after verification + roadmap update, STOP and return status. Do NOT run transition.md.
393
+ 4. When spawning executor agents, use subagent_type='gsd-executor' with the existing @file pattern from the workflow
394
+ 5. When spawning verifier agents, use subagent_type='gsd-verifier'
395
+ 6. Preserve the classifyHandoffIfNeeded workaround (spot-check on that specific error)
396
+ 7. Do NOT use the Skill tool or /gsd: commands
397
+ </instructions>
398
+ ",
369
399
  subagent_type="general-purpose",
370
400
  description="Execute Phase ${PHASE}"
371
401
  )