@undeemed/get-shit-done-codex 1.20.3 → 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 (68) hide show
  1. package/README.md +13 -3
  2. package/agents/gsd-codebase-mapper.md +3 -0
  3. package/agents/gsd-debugger.md +3 -0
  4. package/agents/gsd-executor.md +52 -2
  5. package/agents/gsd-integration-checker.md +20 -0
  6. package/agents/gsd-phase-researcher.md +96 -4
  7. package/agents/gsd-plan-checker.md +125 -3
  8. package/agents/gsd-planner.md +38 -3
  9. package/agents/gsd-project-researcher.md +3 -0
  10. package/agents/gsd-research-synthesizer.md +3 -0
  11. package/agents/gsd-roadmapper.md +3 -0
  12. package/agents/gsd-verifier.md +25 -8
  13. package/commands/gsd/add-phase.md +6 -2
  14. package/commands/gsd/add-todo.md +6 -1
  15. package/commands/gsd/audit-milestone.md +1 -7
  16. package/commands/gsd/check-todos.md +6 -2
  17. package/commands/gsd/debug.md +3 -1
  18. package/commands/gsd/discuss-phase.md +1 -5
  19. package/commands/gsd/execute-phase.md +1 -2
  20. package/commands/gsd/insert-phase.md +1 -2
  21. package/commands/gsd/list-phase-assumptions.md +1 -5
  22. package/commands/gsd/new-milestone.md +1 -8
  23. package/commands/gsd/pause-work.md +4 -1
  24. package/commands/gsd/plan-milestone-gaps.md +1 -7
  25. package/commands/gsd/quick.md +2 -1
  26. package/commands/gsd/remove-phase.md +1 -2
  27. package/commands/gsd/research-phase.md +17 -15
  28. package/commands/gsd/verify-work.md +1 -2
  29. package/get-shit-done/bin/gsd-tools.cjs +168 -4858
  30. package/get-shit-done/bin/lib/commands.cjs +556 -0
  31. package/get-shit-done/bin/lib/config.cjs +162 -0
  32. package/get-shit-done/bin/lib/core.cjs +398 -0
  33. package/get-shit-done/bin/lib/frontmatter.cjs +299 -0
  34. package/get-shit-done/bin/lib/init.cjs +694 -0
  35. package/get-shit-done/bin/lib/milestone.cjs +215 -0
  36. package/get-shit-done/bin/lib/phase.cjs +873 -0
  37. package/get-shit-done/bin/lib/roadmap.cjs +298 -0
  38. package/get-shit-done/bin/lib/state.cjs +490 -0
  39. package/get-shit-done/bin/lib/template.cjs +222 -0
  40. package/get-shit-done/bin/lib/verify.cjs +772 -0
  41. package/get-shit-done/references/checkpoints.md +1 -0
  42. package/get-shit-done/templates/VALIDATION.md +104 -0
  43. package/get-shit-done/templates/config.json +2 -1
  44. package/get-shit-done/templates/phase-prompt.md +2 -0
  45. package/get-shit-done/templates/roadmap.md +1 -1
  46. package/get-shit-done/templates/summary.md +2 -0
  47. package/get-shit-done/workflows/audit-milestone.md +63 -8
  48. package/get-shit-done/workflows/complete-milestone.md +26 -0
  49. package/get-shit-done/workflows/diagnose-issues.md +1 -1
  50. package/get-shit-done/workflows/discuss-phase.md +68 -13
  51. package/get-shit-done/workflows/execute-phase.md +54 -9
  52. package/get-shit-done/workflows/execute-plan.md +17 -13
  53. package/get-shit-done/workflows/map-codebase.md +32 -44
  54. package/get-shit-done/workflows/new-milestone.md +16 -7
  55. package/get-shit-done/workflows/new-project.md +34 -31
  56. package/get-shit-done/workflows/plan-milestone-gaps.md +23 -5
  57. package/get-shit-done/workflows/plan-phase.md +106 -76
  58. package/get-shit-done/workflows/progress.md +14 -26
  59. package/get-shit-done/workflows/quick.md +24 -15
  60. package/get-shit-done/workflows/research-phase.md +10 -11
  61. package/get-shit-done/workflows/settings.md +16 -3
  62. package/get-shit-done/workflows/transition.md +5 -0
  63. package/get-shit-done/workflows/verify-work.md +11 -12
  64. package/hooks/dist/gsd-context-monitor.js +122 -0
  65. package/hooks/dist/gsd-statusline.js +17 -0
  66. package/package.json +2 -2
  67. package/scripts/build-hooks.js +1 -0
  68. package/get-shit-done/bin/gsd-tools.test.cjs +0 -2273
@@ -90,17 +90,13 @@ Use Task tool with `subagent_type="gsd-codebase-mapper"`, `model="{mapper_model}
90
90
 
91
91
  **Agent 1: Tech Focus**
92
92
 
93
- Task tool parameters:
94
93
  ```
95
- subagent_type: "gsd-codebase-mapper"
96
- model: "{mapper_model}"
97
- run_in_background: true
98
- description: "Map codebase tech stack"
99
- ```
100
-
101
- Prompt:
102
- ```
103
- Focus: tech
94
+ Task(
95
+ subagent_type="gsd-codebase-mapper",
96
+ model="{mapper_model}",
97
+ run_in_background=true,
98
+ description="Map codebase tech stack",
99
+ prompt="Focus: tech
104
100
 
105
101
  Analyze this codebase for technology stack and external integrations.
106
102
 
@@ -108,22 +104,19 @@ Write these documents to .planning/codebase/:
108
104
  - STACK.md - Languages, runtime, frameworks, dependencies, configuration
109
105
  - INTEGRATIONS.md - External APIs, databases, auth providers, webhooks
110
106
 
111
- Explore thoroughly. Write documents directly using templates. Return confirmation only.
107
+ Explore thoroughly. Write documents directly using templates. Return confirmation only."
108
+ )
112
109
  ```
113
110
 
114
111
  **Agent 2: Architecture Focus**
115
112
 
116
- Task tool parameters:
117
- ```
118
- subagent_type: "gsd-codebase-mapper"
119
- model: "{mapper_model}"
120
- run_in_background: true
121
- description: "Map codebase architecture"
122
- ```
123
-
124
- Prompt:
125
113
  ```
126
- Focus: arch
114
+ Task(
115
+ subagent_type="gsd-codebase-mapper",
116
+ model="{mapper_model}",
117
+ run_in_background=true,
118
+ description="Map codebase architecture",
119
+ prompt="Focus: arch
127
120
 
128
121
  Analyze this codebase architecture and directory structure.
129
122
 
@@ -131,22 +124,19 @@ Write these documents to .planning/codebase/:
131
124
  - ARCHITECTURE.md - Pattern, layers, data flow, abstractions, entry points
132
125
  - STRUCTURE.md - Directory layout, key locations, naming conventions
133
126
 
134
- Explore thoroughly. Write documents directly using templates. Return confirmation only.
127
+ Explore thoroughly. Write documents directly using templates. Return confirmation only."
128
+ )
135
129
  ```
136
130
 
137
131
  **Agent 3: Quality Focus**
138
132
 
139
- Task tool parameters:
140
133
  ```
141
- subagent_type: "gsd-codebase-mapper"
142
- model: "{mapper_model}"
143
- run_in_background: true
144
- description: "Map codebase conventions"
145
- ```
146
-
147
- Prompt:
148
- ```
149
- Focus: quality
134
+ Task(
135
+ subagent_type="gsd-codebase-mapper",
136
+ model="{mapper_model}",
137
+ run_in_background=true,
138
+ description="Map codebase conventions",
139
+ prompt="Focus: quality
150
140
 
151
141
  Analyze this codebase for coding conventions and testing patterns.
152
142
 
@@ -154,29 +144,27 @@ Write these documents to .planning/codebase/:
154
144
  - CONVENTIONS.md - Code style, naming, patterns, error handling
155
145
  - TESTING.md - Framework, structure, mocking, coverage
156
146
 
157
- Explore thoroughly. Write documents directly using templates. Return confirmation only.
147
+ Explore thoroughly. Write documents directly using templates. Return confirmation only."
148
+ )
158
149
  ```
159
150
 
160
151
  **Agent 4: Concerns Focus**
161
152
 
162
- Task tool parameters:
163
- ```
164
- subagent_type: "gsd-codebase-mapper"
165
- model: "{mapper_model}"
166
- run_in_background: true
167
- description: "Map codebase concerns"
168
- ```
169
-
170
- Prompt:
171
153
  ```
172
- Focus: concerns
154
+ Task(
155
+ subagent_type="gsd-codebase-mapper",
156
+ model="{mapper_model}",
157
+ run_in_background=true,
158
+ description="Map codebase concerns",
159
+ prompt="Focus: concerns
173
160
 
174
161
  Analyze this codebase for technical debt, known issues, and areas of concern.
175
162
 
176
163
  Write this document to .planning/codebase/:
177
164
  - CONCERNS.md - Tech debt, bugs, security, performance, fragile areas
178
165
 
179
- Explore thoroughly. Write document directly using template. Return confirmation only.
166
+ Explore thoroughly. Write document directly using template. Return confirmation only."
167
+ )
180
168
  ```
181
169
 
182
170
  Continue to collect_confirmations.
@@ -128,7 +128,9 @@ Focus ONLY on what's needed for the NEW features.
128
128
 
129
129
  <question>{QUESTION}</question>
130
130
 
131
- <project_context>[PROJECT.md summary]</project_context>
131
+ <files_to_read>
132
+ - .planning/PROJECT.md (Project context)
133
+ </files_to_read>
132
134
 
133
135
  <downstream_consumer>{CONSUMER}</downstream_consumer>
134
136
 
@@ -157,7 +159,12 @@ After all 4 complete, spawn synthesizer:
157
159
  Task(prompt="
158
160
  Synthesize research outputs into SUMMARY.md.
159
161
 
160
- Read: .planning/research/STACK.md, FEATURES.md, ARCHITECTURE.md, PITFALLS.md
162
+ <files_to_read>
163
+ - .planning/research/STACK.md
164
+ - .planning/research/FEATURES.md
165
+ - .planning/research/ARCHITECTURE.md
166
+ - .planning/research/PITFALLS.md
167
+ </files_to_read>
161
168
 
162
169
  Write to: .planning/research/SUMMARY.md
163
170
  Use template: ~/.codex/get-shit-done/templates/research-project/SUMMARY.md
@@ -264,11 +271,13 @@ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs: define milestone v[X
264
271
  ```
265
272
  Task(prompt="
266
273
  <planning_context>
267
- @.planning/PROJECT.md
268
- @.planning/REQUIREMENTS.md
269
- @.planning/research/SUMMARY.md (if exists)
270
- @.planning/config.json
271
- @.planning/MILESTONES.md
274
+ <files_to_read>
275
+ - .planning/PROJECT.md
276
+ - .planning/REQUIREMENTS.md
277
+ - .planning/research/SUMMARY.md (if exists)
278
+ - .planning/config.json
279
+ - .planning/MILESTONES.md
280
+ </files_to_read>
272
281
  </planning_context>
273
282
 
274
283
  <instructions>
@@ -49,7 +49,7 @@ The document should describe what you want to build.
49
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
  ```
@@ -190,6 +191,12 @@ mkdir -p .planning
190
191
  node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "chore: add project config" --files .planning/config.json
191
192
  ```
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
198
+ ```
199
+
193
200
  Proceed to Step 4 (skip Steps 3 and 5).
194
201
 
195
202
  ## 3. Deep Questioning
@@ -534,7 +541,7 @@ 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
547
  Task(prompt="First, read ~/.codex/agents/gsd-project-researcher.md for your role and instructions.
@@ -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:
@@ -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:
@@ -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:
@@ -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:
@@ -706,13 +713,12 @@ 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
@@ -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.
@@ -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 ~/.codex/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>
@@ -12,23 +12,15 @@ Read all files referenced by the invoking prompt's execution_context before star
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 ~/.codex/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
 
@@ -55,13 +47,11 @@ PHASE_INFO=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs roadmap get-phase "${
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"
@@ -94,10 +84,7 @@ Display banner:
94
84
 
95
85
  ```bash
96
86
  PHASE_DESC=$(node ~/.codex/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 ~/.codex/get-shit-done/bin/gsd-tools.cjs state-snapshot)
100
- # Extract decisions from state-snapshot JSON: jq '.decisions[] | "\(.phase): \(.summary) - \(.rationale)"'
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
- - **Codex'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>
@@ -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
- - **Codex'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>
@@ -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
- - **Codex'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>
@@ -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
  )