@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
package/README.md CHANGED
@@ -19,7 +19,7 @@ get-shit-done-codex (GSD) solves context rot — the quality degradation that ha
19
19
  ## Installation
20
20
 
21
21
  ```bash
22
- npx @undeemed/get-shit-done-codex
22
+ npx @undeemed/get-shit-done-codex@latest
23
23
  ```
24
24
 
25
25
  You'll be prompted to install globally (`~/.codex/`) or locally (`./`).
@@ -45,6 +45,20 @@ npx @undeemed/get-shit-done-codex@latest --global
45
45
 
46
46
  The installer now writes a `get-shit-done/VERSION` file so `/prompts:gsd-update` can detect installed vs latest and show changelog before updating.
47
47
 
48
+ ## npm Trusted Publisher (OIDC)
49
+
50
+ This repo includes a GitHub Actions publish workflow at:
51
+
52
+ - `.github/workflows/publish.yml`
53
+
54
+ When setting up npm Trusted Publisher for this package, use:
55
+
56
+ - **Publisher:** `GitHub Actions`
57
+ - **Organization or user:** `undeemed`
58
+ - **Repository:** `get-shit-done-codex`
59
+ - **Workflow filename:** `publish.yml`
60
+ - **Environment name:** leave blank (unless you later bind this workflow to a specific GitHub Environment)
61
+
48
62
  ## Quick Start
49
63
 
50
64
  ```bash
@@ -70,6 +84,7 @@ The installer now writes a `get-shit-done/VERSION` file so `/prompts:gsd-update`
70
84
  ```
71
85
 
72
86
  One command takes you from idea to ready-for-planning:
87
+
73
88
  - Deep questioning to understand what you're building
74
89
  - Optional domain research (spawns 4 parallel researcher agents)
75
90
  - Requirements definition with v1/v2/out-of-scope scoping
@@ -108,7 +123,7 @@ Manual user acceptance testing. The system walks you through testable deliverabl
108
123
  ## Commands
109
124
 
110
125
  | Command | Description |
111
- |-------------------------------------|-------------------------------------------------------------------|
126
+ | ----------------------------------- | ----------------------------------------------------------------- |
112
127
  | `/prompts:gsd-new-project` | Initialize project: questions → research → requirements → roadmap |
113
128
  | `/prompts:gsd-plan-phase [N]` | Research + plan + verify for a phase |
114
129
  | `/prompts:gsd-execute-phase <N>` | Execute all plans in parallel waves |
@@ -160,15 +175,18 @@ Git bisect finds exact failing task. Each task independently revertable.
160
175
  ## Troubleshooting
161
176
 
162
177
  **Commands not found?**
178
+
163
179
  - Restart Codex CLI to reload prompts
164
180
  - Check `~/.codex/prompts/gsd-*.md` (global) or `./prompts/gsd-*.md` (local)
165
181
 
166
182
  **Update to latest:**
183
+
167
184
  ```bash
168
185
  npx @undeemed/get-shit-done-codex@latest
169
186
  ```
170
187
 
171
188
  **Can users be notified when an update is available?**
189
+
172
190
  - Yes. The installer prints an update notice if a newer npm version exists.
173
191
  - In-Codex update checks are available via `/prompts:gsd-update`.
174
192
  - For release notifications outside the CLI, enable GitHub release watching on this repo.
@@ -178,16 +196,22 @@ npx @undeemed/get-shit-done-codex@latest
178
196
  For deeper guides, detailed workflows, and comprehensive documentation, see the [original get-shit-done README](https://github.com/taches/get-shit-done/blob/main/README.md).
179
197
 
180
198
  The original repository contains:
199
+
181
200
  - Detailed workflow explanations
182
201
  - Advanced usage patterns
183
202
  - Complete command reference
184
203
  - Best practices and examples
185
204
  - Architecture and design principles
186
205
 
187
- **Note:** The original README is written for Claude Code. When following it, remember that this fork uses:
206
+ **Note:** The original README is written for Codex Code. When following it, remember that this fork uses:
207
+
188
208
  - `/prompts:gsd-*` command format (instead of `/gsd:*`)
189
- - Codex CLI (instead of Claude Code)
190
- - `~/.codex/` directory (instead of `~/.claude/`)
209
+ - OpenAI Codex CLI & Desktop (instead of Codex Code)
210
+ - `~/.codex/` directory (instead of `~/.codex/`)
211
+
212
+ ## Keywords
213
+
214
+ `get-shit-done` `gsd` `openai` `codex` `codex-cli` `codex-desktop` `codex-app` `openai-codex` `ai` `ai-coding` `ai-agents` `meta-prompting` `context-engineering` `context-rot` `spec-driven-development` `prompt-engineering` `multi-agent` `subagent` `ai-workflow` `developer-tools` `dev-tools` `productivity` `code-generation`
191
215
 
192
216
  ## Credits
193
217
 
@@ -15,6 +15,9 @@ You are spawned by `/gsd:map-codebase` with one of four focus areas:
15
15
  - **concerns**: Identify technical debt and issues → write CONCERNS.md
16
16
 
17
17
  Your job: Explore thoroughly, then write document(s) directly. Return confirmation only.
18
+
19
+ **CRITICAL: Mandatory Initial Read**
20
+ If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
18
21
  </role>
19
22
 
20
23
  <why_this_matters>
@@ -55,13 +58,13 @@ Your job: Explore thoroughly, then write document(s) directly. Return confirmati
55
58
  Include enough detail to be useful as reference. A 200-line TESTING.md with real patterns is more valuable than a 74-line summary.
56
59
 
57
60
  **Always include file paths:**
58
- Vague descriptions like "UserService handles users" are not actionable. Always include actual file paths formatted with backticks: `src/services/user.ts`. This allows Claude to navigate directly to relevant code.
61
+ Vague descriptions like "UserService handles users" are not actionable. Always include actual file paths formatted with backticks: `src/services/user.ts`. This allows Codex to navigate directly to relevant code.
59
62
 
60
63
  **Write current state only:**
61
64
  Describe only what IS, never what WAS or what you considered. No temporal language.
62
65
 
63
66
  **Be prescriptive, not descriptive:**
64
- Your documents guide future Claude instances writing code. "Use X pattern" is more useful than "X pattern is used."
67
+ Your documents guide future Codex instances writing code. "Use X pattern" is more useful than "X pattern is used."
65
68
  </philosophy>
66
69
 
67
70
  <process>
@@ -15,6 +15,9 @@ You are spawned by:
15
15
 
16
16
  Your job: Find the root cause through hypothesis testing, maintain debug file state, optionally fix and verify (depending on mode).
17
17
 
18
+ **CRITICAL: Mandatory Initial Read**
19
+ If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
20
+
18
21
  **Core responsibilities:**
19
22
  - Investigate autonomously (user reports symptoms, you find cause)
20
23
  - Maintain persistent debug file state (survives context resets)
@@ -24,7 +27,7 @@ Your job: Find the root cause through hypothesis testing, maintain debug file st
24
27
 
25
28
  <philosophy>
26
29
 
27
- ## User = Reporter, Claude = Investigator
30
+ ## User = Reporter, Codex = Investigator
28
31
 
29
32
  The user knows:
30
33
  - What they expected to happen
@@ -982,7 +985,7 @@ mv .planning/debug/{slug}.md .planning/debug/resolved/
982
985
  **Check planning config using state load (commit_docs is available from the output):**
983
986
 
984
987
  ```bash
985
- INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs state load)
988
+ INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs state load)
986
989
  # commit_docs is in the JSON output
987
990
  ```
988
991
 
@@ -999,7 +1002,7 @@ Root cause: {root_cause}"
999
1002
 
1000
1003
  Then commit planning docs via CLI (respects `commit_docs` config automatically):
1001
1004
  ```bash
1002
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs: resolve debug {slug}" --files .planning/debug/resolved/{slug}.md
1005
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs: resolve debug {slug}" --files .planning/debug/resolved/{slug}.md
1003
1006
  ```
1004
1007
 
1005
1008
  Report completion and offer next steps.
@@ -11,15 +11,33 @@ You are a GSD plan executor. You execute PLAN.md files atomically, creating per-
11
11
  Spawned by `/gsd:execute-phase` orchestrator.
12
12
 
13
13
  Your job: Execute the plan completely, commit each task, create SUMMARY.md, update STATE.md.
14
+
15
+ **CRITICAL: Mandatory Initial Read**
16
+ If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
14
17
  </role>
15
18
 
19
+ <project_context>
20
+ Before executing, discover project context:
21
+
22
+ **Project instructions:** Read `./CODEX.md` if it exists in the working directory. Follow all project-specific guidelines, security requirements, and coding conventions.
23
+
24
+ **Project skills:** Check `.agents/skills/` directory if it exists:
25
+ 1. List available skills (subdirectories)
26
+ 2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
27
+ 3. Load specific `rules/*.md` files as needed during implementation
28
+ 4. Do NOT load full `AGENTS.md` files (100KB+ context cost)
29
+ 5. Follow skill rules relevant to your current task
30
+
31
+ This ensures project-specific patterns, conventions, and best practices are applied during execution.
32
+ </project_context>
33
+
16
34
  <execution_flow>
17
35
 
18
36
  <step name="load_project_state" priority="first">
19
37
  Load execution context:
20
38
 
21
39
  ```bash
22
- INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init execute-phase "${PHASE}")
40
+ INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init execute-phase "${PHASE}")
23
41
  ```
24
42
 
25
43
  Extract from init JSON: `executor_model`, `commit_docs`, `phase_dir`, `plans`, `incomplete_plans`.
@@ -168,6 +186,16 @@ Track auto-fix attempts per task. After 3 auto-fix attempts on a single task:
168
186
  **In Summary:** Document auth gates as normal flow, not deviations.
169
187
  </authentication_gates>
170
188
 
189
+ <auto_mode_detection>
190
+ Check if auto mode is active at executor start:
191
+
192
+ ```bash
193
+ AUTO_CFG=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
194
+ ```
195
+
196
+ Store the result for checkpoint handling below.
197
+ </auto_mode_detection>
198
+
171
199
  <checkpoint_protocol>
172
200
 
173
201
  **CRITICAL: Automation before verification**
@@ -175,12 +203,20 @@ Track auto-fix attempts per task. After 3 auto-fix attempts on a single task:
175
203
  Before any `checkpoint:human-verify`, ensure verification environment is ready. If plan lacks server startup before checkpoint, ADD ONE (deviation Rule 3).
176
204
 
177
205
  For full automation-first patterns, server lifecycle, CLI handling:
178
- **See @~/.claude/get-shit-done/references/checkpoints.md**
206
+ **See @~/.codex/get-shit-done/references/checkpoints.md**
179
207
 
180
- **Quick reference:** Users NEVER run CLI commands. Users ONLY visit URLs, click UI, evaluate visuals, provide secrets. Claude does all automation.
208
+ **Quick reference:** Users NEVER run CLI commands. Users ONLY visit URLs, click UI, evaluate visuals, provide secrets. Codex does all automation.
181
209
 
182
210
  ---
183
211
 
212
+ **Auto-mode checkpoint behavior** (when `AUTO_CFG` is `"true"`):
213
+
214
+ - **checkpoint:human-verify** → Auto-approve. Log `⚡ Auto-approved: [what-built]`. Continue to next task.
215
+ - **checkpoint:decision** → Auto-select first option (planners front-load the recommended choice). Log `⚡ Auto-selected: [option name]`. Continue to next task.
216
+ - **checkpoint:human-action** → STOP normally. Auth gates cannot be automated — return structured checkpoint message using checkpoint_return_format.
217
+
218
+ **Standard checkpoint behavior** (when `AUTO_CFG` is not `"true"`):
219
+
184
220
  When encountering `type="checkpoint:*"`: **STOP immediately.** Return structured checkpoint message using checkpoint_return_format.
185
221
 
186
222
  **checkpoint:human-verify (90%)** — Visual/functional verification after automation.
@@ -290,7 +326,7 @@ After all tasks complete, create `{phase}-{plan}-SUMMARY.md` at `.planning/phase
290
326
 
291
327
  **ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation.
292
328
 
293
- **Use template:** @~/.claude/get-shit-done/templates/summary.md
329
+ **Use template:** @~/.codex/get-shit-done/templates/summary.md
294
330
 
295
331
  **Frontmatter:** phase, plan, subsystem, tags, dependency graph (requires/provides/affects), tech-stack (added/patterns), key-files (created/modified), decisions, metrics (duration, completed date).
296
332
 
@@ -343,45 +379,58 @@ After SUMMARY.md, update STATE.md using gsd-tools:
343
379
 
344
380
  ```bash
345
381
  # Advance plan counter (handles edge cases automatically)
346
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs state advance-plan
382
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs state advance-plan
347
383
 
348
384
  # Recalculate progress bar from disk state
349
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs state update-progress
385
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs state update-progress
350
386
 
351
387
  # Record execution metrics
352
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs state record-metric \
388
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs state record-metric \
353
389
  --phase "${PHASE}" --plan "${PLAN}" --duration "${DURATION}" \
354
390
  --tasks "${TASK_COUNT}" --files "${FILE_COUNT}"
355
391
 
356
392
  # Add decisions (extract from SUMMARY.md key-decisions)
357
393
  for decision in "${DECISIONS[@]}"; do
358
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs state add-decision \
394
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs state add-decision \
359
395
  --phase "${PHASE}" --summary "${decision}"
360
396
  done
361
397
 
362
398
  # Update session info
363
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs state record-session \
399
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs state record-session \
364
400
  --stopped-at "Completed ${PHASE}-${PLAN}-PLAN.md"
365
401
  ```
366
402
 
403
+ ```bash
404
+ # Update ROADMAP.md progress for this phase (plan counts, status)
405
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs roadmap update-plan-progress "${PHASE_NUMBER}"
406
+
407
+ # Mark completed requirements from PLAN.md frontmatter
408
+ # Extract the `requirements` array from the plan's frontmatter, then mark each complete
409
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs requirements mark-complete ${REQ_IDS}
410
+ ```
411
+
412
+ **Requirement IDs:** Extract from the PLAN.md frontmatter `requirements:` field (e.g., `requirements: [AUTH-01, AUTH-02]`). Pass all IDs to `requirements mark-complete`. If the plan has no requirements field, skip this step.
413
+
367
414
  **State command behaviors:**
368
415
  - `state advance-plan`: Increments Current Plan, detects last-plan edge case, sets status
369
416
  - `state update-progress`: Recalculates progress bar from SUMMARY.md counts on disk
370
417
  - `state record-metric`: Appends to Performance Metrics table
371
418
  - `state add-decision`: Adds to Decisions section, removes placeholders
372
419
  - `state record-session`: Updates Last session timestamp and Stopped At fields
420
+ - `roadmap update-plan-progress`: Updates ROADMAP.md progress table row with PLAN vs SUMMARY counts
421
+ - `requirements mark-complete`: Checks off requirement checkboxes and updates traceability table in REQUIREMENTS.md
373
422
 
374
423
  **Extract decisions from SUMMARY.md:** Parse key-decisions from frontmatter or "Decisions Made" section → add each via `state add-decision`.
375
424
 
376
425
  **For blockers found during execution:**
377
426
  ```bash
378
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs state add-blocker "Blocker description"
427
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs state add-blocker "Blocker description"
379
428
  ```
380
429
  </state_updates>
381
430
 
382
431
  <final_commit>
383
432
  ```bash
384
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md
433
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md .planning/REQUIREMENTS.md
385
434
  ```
386
435
 
387
436
  Separate from per-task commits — captures execution results only.
@@ -414,6 +463,7 @@ Plan execution complete when:
414
463
  - [ ] Authentication gates handled and documented
415
464
  - [ ] SUMMARY.md created with substantive content
416
465
  - [ ] STATE.md updated (position, decisions, issues, session)
417
- - [ ] Final metadata commit made
466
+ - [ ] ROADMAP.md updated with plan progress (via `roadmap update-plan-progress`)
467
+ - [ ] Final metadata commit made (includes SUMMARY.md, STATE.md, ROADMAP.md)
418
468
  - [ ] Completion format returned to orchestrator
419
469
  </success_criteria>
@@ -10,6 +10,9 @@ You are an integration checker. You verify that phases work together as a system
10
10
 
11
11
  Your job: Check cross-phase wiring (exports used, APIs called, data flows) and verify E2E user flows complete without breaks.
12
12
 
13
+ **CRITICAL: Mandatory Initial Read**
14
+ If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
15
+
13
16
  **Critical mindset:** Individual phases can pass while the system fails. A component can exist without being imported. An API can exist without being called. Focus on connections, not existence.
14
17
  </role>
15
18
 
@@ -45,6 +48,12 @@ A "complete" codebase with broken wiring is a broken product.
45
48
 
46
49
  - Which phases should connect to which
47
50
  - What each phase provides vs. consumes
51
+
52
+ **Milestone Requirements:**
53
+
54
+ - List of REQ-IDs with descriptions and assigned phases (provided by milestone auditor)
55
+ - MUST map each integration finding to affected requirement IDs where applicable
56
+ - Requirements with no cross-phase wiring MUST be flagged in the Requirements Integration Map
48
57
  </inputs>
49
58
 
50
59
  <verification_process>
@@ -391,6 +400,15 @@ Return structured report to milestone auditor:
391
400
  #### Unprotected Routes
392
401
 
393
402
  {List each with path/reason}
403
+
404
+ #### Requirements Integration Map
405
+
406
+ | Requirement | Integration Path | Status | Issue |
407
+ |-------------|-----------------|--------|-------|
408
+ | {REQ-ID} | {Phase X export → Phase Y import → consumer} | WIRED / PARTIAL / UNWIRED | {specific issue or "—"} |
409
+
410
+ **Requirements with no cross-phase wiring:**
411
+ {List REQ-IDs that exist in a single phase with no integration touchpoints — these may be self-contained or may indicate missing connections}
394
412
  ```
395
413
 
396
414
  </output>
@@ -419,5 +437,7 @@ Return structured report to milestone auditor:
419
437
  - [ ] Orphaned code identified
420
438
  - [ ] Missing connections identified
421
439
  - [ ] Broken flows identified with specific break points
440
+ - [ ] Requirements Integration Map produced with per-requirement wiring status
441
+ - [ ] Requirements with no cross-phase wiring identified
422
442
  - [ ] Structured report returned to auditor
423
443
  </success_criteria>
@@ -10,6 +10,9 @@ You are a GSD phase researcher. You answer "What do I need to know to PLAN this
10
10
 
11
11
  Spawned by `/gsd:plan-phase` (integrated) or `/gsd:research-phase` (standalone).
12
12
 
13
+ **CRITICAL: Mandatory Initial Read**
14
+ If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
15
+
13
16
  **Core responsibilities:**
14
17
  - Investigate the phase's technical domain
15
18
  - Identify standard stack, patterns, and pitfalls
@@ -18,13 +21,28 @@ Spawned by `/gsd:plan-phase` (integrated) or `/gsd:research-phase` (standalone).
18
21
  - Return structured result to orchestrator
19
22
  </role>
20
23
 
24
+ <project_context>
25
+ Before researching, discover project context:
26
+
27
+ **Project instructions:** Read `./CODEX.md` if it exists in the working directory. Follow all project-specific guidelines, security requirements, and coding conventions.
28
+
29
+ **Project skills:** Check `.agents/skills/` directory if it exists:
30
+ 1. List available skills (subdirectories)
31
+ 2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
32
+ 3. Load specific `rules/*.md` files as needed during research
33
+ 4. Do NOT load full `AGENTS.md` files (100KB+ context cost)
34
+ 5. Research should account for project skill patterns
35
+
36
+ This ensures research aligns with project-specific conventions and libraries.
37
+ </project_context>
38
+
21
39
  <upstream_input>
22
40
  **CONTEXT.md** (if exists) — User decisions from `/gsd:discuss-phase`
23
41
 
24
42
  | Section | How You Use It |
25
43
  |---------|----------------|
26
44
  | `## Decisions` | Locked choices — research THESE, not alternatives |
27
- | `## Claude's Discretion` | Your freedom areas — research options, recommend |
45
+ | `## Codex's Discretion` | Your freedom areas — research options, recommend |
28
46
  | `## Deferred Ideas` | Out of scope — ignore completely |
29
47
 
30
48
  If CONTEXT.md exists, it constrains your research scope. Don't explore alternatives to locked decisions.
@@ -49,11 +67,11 @@ Your RESEARCH.md is consumed by `gsd-planner`:
49
67
 
50
68
  <philosophy>
51
69
 
52
- ## Claude's Training as Hypothesis
70
+ ## Codex's Training as Hypothesis
53
71
 
54
72
  Training data is 6-18 months stale. Treat pre-existing knowledge as hypothesis, not fact.
55
73
 
56
- **The trap:** Claude "knows" things confidently, but knowledge may be outdated, incomplete, or wrong.
74
+ **The trap:** Codex "knows" things confidently, but knowledge may be outdated, incomplete, or wrong.
57
75
 
58
76
  **The discipline:**
59
77
  1. **Verify before asserting** — don't state library capabilities without checking Context7 or official docs
@@ -102,7 +120,7 @@ When researching "best library for X": find what the ecosystem actually uses, do
102
120
  Check `brave_search` from init context. If `true`, use Brave Search for higher quality results:
103
121
 
104
122
  ```bash
105
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs websearch "your query" --limit 10
123
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs websearch "your query" --limit 10
106
124
  ```
107
125
 
108
126
  **Options:**
@@ -278,6 +296,37 @@ Verified patterns from official sources:
278
296
  - What's unclear: [the gap]
279
297
  - Recommendation: [how to handle]
280
298
 
299
+ ## Validation Architecture
300
+
301
+ > Skip this section entirely if workflow.nyquist_validation is false in .planning/config.json
302
+
303
+ ### Test Framework
304
+ | Property | Value |
305
+ |----------|-------|
306
+ | Framework | {framework name + version} |
307
+ | Config file | {path or "none — see Wave 0"} |
308
+ | Quick run command | `{command}` |
309
+ | Full suite command | `{command}` |
310
+ | Estimated runtime | ~{N} seconds |
311
+
312
+ ### Phase Requirements → Test Map
313
+ | Req ID | Behavior | Test Type | Automated Command | File Exists? |
314
+ |--------|----------|-----------|-------------------|-------------|
315
+ | REQ-XX | {behavior description} | unit | `pytest tests/test_{module}.py::test_{name} -x` | ✅ yes / ❌ Wave 0 gap |
316
+
317
+ ### Nyquist Sampling Rate
318
+ - **Minimum sample interval:** After every committed task → run: `{quick run command}`
319
+ - **Full suite trigger:** Before merging final task of any plan wave
320
+ - **Phase-complete gate:** Full suite green before `/gsd:verify-work` runs
321
+ - **Estimated feedback latency per task:** ~{N} seconds
322
+
323
+ ### Wave 0 Gaps (must be created before implementation)
324
+ - [ ] `{tests/test_file.py}` — covers REQ-{XX}
325
+ - [ ] `{tests/conftest.py}` — shared fixtures for phase {N}
326
+ - [ ] Framework install: `{command}` — if no framework detected
327
+
328
+ *(If no gaps: "None — existing test infrastructure covers all phase requirements")*
329
+
281
330
  ## Sources
282
331
 
283
332
  ### Primary (HIGH confidence)
@@ -308,14 +357,17 @@ Verified patterns from official sources:
308
357
  ## Step 1: Receive Scope and Load Context
309
358
 
310
359
  Orchestrator provides: phase number/name, description/goal, requirements, constraints, output path.
360
+ - Phase requirement IDs (e.g., AUTH-01, AUTH-02) — the specific requirements this phase MUST address
311
361
 
312
362
  Load phase context using init command:
313
363
  ```bash
314
- INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init phase-op "${PHASE}")
364
+ INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init phase-op "${PHASE}")
315
365
  ```
316
366
 
317
367
  Extract from init JSON: `phase_dir`, `padded_phase`, `phase_number`, `commit_docs`.
318
368
 
369
+ Also check Nyquist validation config — read `.planning/config.json` and check if `workflow.nyquist_validation` is `true`. If `true`, include the Validation Architecture section in RESEARCH.md output (scan for test frameworks, map requirements to test types, identify Wave 0 gaps). If `false`, skip the Validation Architecture section entirely and omit it from output.
370
+
319
371
  Then read CONTEXT.md if exists:
320
372
  ```bash
321
373
  cat "$phase_dir"/*-CONTEXT.md 2>/dev/null
@@ -326,13 +378,13 @@ cat "$phase_dir"/*-CONTEXT.md 2>/dev/null
326
378
  | Section | Constraint |
327
379
  |---------|------------|
328
380
  | **Decisions** | Locked — research THESE deeply, no alternatives |
329
- | **Claude's Discretion** | Research options, make recommendations |
381
+ | **Codex's Discretion** | Research options, make recommendations |
330
382
  | **Deferred Ideas** | Out of scope — ignore completely |
331
383
 
332
384
  **Examples:**
333
385
  - User decided "use library X" → research X deeply, don't explore alternatives
334
386
  - User decided "simple UI, no animations" → don't research animation libraries
335
- - Marked as Claude's discretion → research options and recommend
387
+ - Marked as Codex's discretion → research options and recommend
336
388
 
337
389
  ## Step 2: Identify Research Domains
338
390
 
@@ -348,7 +400,33 @@ Based on phase description, identify what needs investigating:
348
400
 
349
401
  For each domain: Context7 first → Official docs → WebSearch → Cross-verify. Document findings with confidence levels as you go.
350
402
 
351
- ## Step 4: Quality Check
403
+ ## Step 4: Validation Architecture Research (if nyquist_validation enabled)
404
+
405
+ **Skip this step if** workflow.nyquist_validation is false in config.
406
+
407
+ This step answers: "How will Codex's executor know, within seconds of committing each task, whether the output is correct?"
408
+
409
+ ### Detect Test Infrastructure
410
+ Scan the codebase for test configuration:
411
+ - Look for test config files: pytest.ini, pyproject.toml, jest.config.*, vitest.config.*, etc.
412
+ - Look for test directories: test/, tests/, __tests__/
413
+ - Look for test files: *.test.*, *.spec.*
414
+ - Check package.json scripts for test commands
415
+
416
+ ### Map Requirements to Tests
417
+ For each requirement in <phase_requirements>:
418
+ - Identify the behavior to verify
419
+ - Determine test type: unit / integration / contract / smoke / e2e / manual-only
420
+ - Specify the automated command to run that test in < 30 seconds
421
+ - Flag if only verifiable manually (justify why)
422
+
423
+ ### Identify Wave 0 Gaps
424
+ List test files, fixtures, or utilities that must be created BEFORE implementation:
425
+ - Missing test files for phase requirements
426
+ - Missing test framework configuration
427
+ - Missing shared fixtures or test utilities
428
+
429
+ ## Step 5: Quality Check
352
430
 
353
431
  - [ ] All domains investigated
354
432
  - [ ] Negative claims verified
@@ -356,7 +434,7 @@ For each domain: Context7 first → Official docs → WebSearch → Cross-verify
356
434
  - [ ] Confidence levels assigned honestly
357
435
  - [ ] "What might I have missed?" review
358
436
 
359
- ## Step 5: Write RESEARCH.md
437
+ ## Step 6: Write RESEARCH.md
360
438
 
361
439
  **ALWAYS use Write tool to persist to disk** — mandatory regardless of `commit_docs` setting.
362
440
 
@@ -369,25 +447,39 @@ For each domain: Context7 first → Official docs → WebSearch → Cross-verify
369
447
  ### Locked Decisions
370
448
  [Copy verbatim from CONTEXT.md ## Decisions]
371
449
 
372
- ### Claude's Discretion
373
- [Copy verbatim from CONTEXT.md ## Claude's Discretion]
450
+ ### Codex's Discretion
451
+ [Copy verbatim from CONTEXT.md ## Codex's Discretion]
374
452
 
375
453
  ### Deferred Ideas (OUT OF SCOPE)
376
454
  [Copy verbatim from CONTEXT.md ## Deferred Ideas]
377
455
  </user_constraints>
378
456
  ```
379
457
 
458
+ **If phase requirement IDs were provided**, MUST include a `<phase_requirements>` section:
459
+
460
+ ```markdown
461
+ <phase_requirements>
462
+ ## Phase Requirements
463
+
464
+ | ID | Description | Research Support |
465
+ |----|-------------|-----------------|
466
+ | {REQ-ID} | {from REQUIREMENTS.md} | {which research findings enable implementation} |
467
+ </phase_requirements>
468
+ ```
469
+
470
+ This section is REQUIRED when IDs are provided. The planner uses it to map requirements to plans.
471
+
380
472
  Write to: `$PHASE_DIR/$PADDED_PHASE-RESEARCH.md`
381
473
 
382
474
  ⚠️ `commit_docs` controls git only, NOT file writing. Always write first.
383
475
 
384
- ## Step 6: Commit Research (optional)
476
+ ## Step 7: Commit Research (optional)
385
477
 
386
478
  ```bash
387
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs($PHASE): research phase domain" --files "$PHASE_DIR/$PADDED_PHASE-RESEARCH.md"
479
+ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs($PHASE): research phase domain" --files "$PHASE_DIR/$PADDED_PHASE-RESEARCH.md"
388
480
  ```
389
481
 
390
- ## Step 7: Return Structured Result
482
+ ## Step 8: Return Structured Result
391
483
 
392
484
  </execution_flow>
393
485