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

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 (104) hide show
  1. package/README.md +22 -3
  2. package/agents/gsd-codebase-mapper.md +761 -0
  3. package/agents/gsd-debugger.md +1198 -0
  4. package/agents/gsd-executor.md +419 -0
  5. package/agents/gsd-integration-checker.md +423 -0
  6. package/agents/gsd-phase-researcher.md +469 -0
  7. package/agents/gsd-plan-checker.md +622 -0
  8. package/agents/gsd-planner.md +1159 -0
  9. package/agents/gsd-project-researcher.md +618 -0
  10. package/agents/gsd-research-synthesizer.md +236 -0
  11. package/agents/gsd-roadmapper.md +639 -0
  12. package/agents/gsd-verifier.md +541 -0
  13. package/bin/install.js +106 -100
  14. package/commands/gsd/add-phase.md +17 -185
  15. package/commands/gsd/add-todo.md +23 -163
  16. package/commands/gsd/audit-milestone.md +3 -219
  17. package/commands/gsd/check-todos.md +20 -196
  18. package/commands/gsd/cleanup.md +18 -0
  19. package/commands/gsd/debug.md +13 -0
  20. package/commands/gsd/discuss-phase.md +10 -3
  21. package/commands/gsd/execute-phase.md +3 -265
  22. package/commands/gsd/health.md +22 -0
  23. package/commands/gsd/help.md +8 -369
  24. package/commands/gsd/insert-phase.md +9 -203
  25. package/commands/gsd/join-discord.md +18 -0
  26. package/commands/gsd/new-milestone.md +12 -678
  27. package/commands/gsd/new-project.md +8 -862
  28. package/commands/gsd/new-project.md.bak +1041 -0
  29. package/commands/gsd/pause-work.md +17 -105
  30. package/commands/gsd/plan-milestone-gaps.md +3 -247
  31. package/commands/gsd/plan-phase.md +13 -444
  32. package/commands/gsd/progress.md +5 -337
  33. package/commands/gsd/quick.md +40 -0
  34. package/commands/gsd/reapply-patches.md +110 -0
  35. package/commands/gsd/remove-phase.md +9 -315
  36. package/commands/gsd/research-phase.md +26 -19
  37. package/commands/gsd/set-profile.md +34 -0
  38. package/commands/gsd/settings.md +36 -0
  39. package/commands/gsd/update.md +25 -160
  40. package/commands/gsd/verify-work.md +3 -183
  41. package/get-shit-done/bin/gsd-tools.cjs +5243 -0
  42. package/get-shit-done/bin/gsd-tools.test.cjs +2273 -0
  43. package/get-shit-done/references/checkpoints.md +254 -267
  44. package/get-shit-done/references/decimal-phase-calculation.md +65 -0
  45. package/get-shit-done/references/git-integration.md +3 -9
  46. package/get-shit-done/references/git-planning-commit.md +38 -0
  47. package/get-shit-done/references/model-profile-resolution.md +34 -0
  48. package/get-shit-done/references/model-profiles.md +92 -0
  49. package/get-shit-done/references/phase-argument-parsing.md +61 -0
  50. package/get-shit-done/references/planning-config.md +196 -0
  51. package/get-shit-done/references/questioning.md +4 -0
  52. package/get-shit-done/references/verification-patterns.md +17 -0
  53. package/get-shit-done/templates/UAT.md +1 -1
  54. package/get-shit-done/templates/codebase/structure.md +3 -3
  55. package/get-shit-done/templates/config.json +10 -0
  56. package/get-shit-done/templates/context.md +2 -10
  57. package/get-shit-done/templates/phase-prompt.md +18 -27
  58. package/get-shit-done/templates/planner-subagent-prompt.md +4 -4
  59. package/get-shit-done/templates/research-project/ARCHITECTURE.md +1 -1
  60. package/get-shit-done/templates/research.md +25 -2
  61. package/get-shit-done/templates/state.md +0 -30
  62. package/get-shit-done/templates/summary-complex.md +59 -0
  63. package/get-shit-done/templates/summary-minimal.md +41 -0
  64. package/get-shit-done/templates/summary-standard.md +48 -0
  65. package/get-shit-done/templates/summary.md +5 -28
  66. package/get-shit-done/templates/user-setup.md +1 -13
  67. package/get-shit-done/templates/verification-report.md +1 -1
  68. package/get-shit-done/workflows/add-phase.md +111 -0
  69. package/get-shit-done/workflows/add-todo.md +157 -0
  70. package/get-shit-done/workflows/audit-milestone.md +242 -0
  71. package/get-shit-done/workflows/check-todos.md +176 -0
  72. package/get-shit-done/workflows/cleanup.md +152 -0
  73. package/get-shit-done/workflows/complete-milestone.md +225 -301
  74. package/get-shit-done/workflows/diagnose-issues.md +3 -17
  75. package/get-shit-done/workflows/discovery-phase.md +6 -10
  76. package/get-shit-done/workflows/discuss-phase.md +99 -36
  77. package/get-shit-done/workflows/execute-phase.md +205 -349
  78. package/get-shit-done/workflows/execute-plan.md +179 -1569
  79. package/get-shit-done/workflows/health.md +156 -0
  80. package/get-shit-done/workflows/help.md +486 -0
  81. package/get-shit-done/workflows/insert-phase.md +129 -0
  82. package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
  83. package/get-shit-done/workflows/map-codebase.md +55 -17
  84. package/get-shit-done/workflows/new-milestone.md +373 -0
  85. package/get-shit-done/workflows/new-project.md +1113 -0
  86. package/get-shit-done/workflows/pause-work.md +122 -0
  87. package/get-shit-done/workflows/plan-milestone-gaps.md +256 -0
  88. package/get-shit-done/workflows/plan-phase.md +448 -0
  89. package/get-shit-done/workflows/progress.md +393 -0
  90. package/get-shit-done/workflows/quick.md +444 -0
  91. package/get-shit-done/workflows/remove-phase.md +154 -0
  92. package/get-shit-done/workflows/research-phase.md +74 -0
  93. package/get-shit-done/workflows/resume-project.md +18 -23
  94. package/get-shit-done/workflows/set-profile.md +80 -0
  95. package/get-shit-done/workflows/settings.md +200 -0
  96. package/get-shit-done/workflows/transition.md +78 -103
  97. package/get-shit-done/workflows/update.md +214 -0
  98. package/get-shit-done/workflows/verify-phase.md +107 -494
  99. package/get-shit-done/workflows/verify-work.md +18 -11
  100. package/hooks/dist/gsd-check-update.js +66 -0
  101. package/hooks/dist/gsd-statusline.js +91 -0
  102. package/package.json +19 -3
  103. package/scripts/build-hooks.js +42 -0
  104. package/commands/gsd/whats-new.md +0 -124
@@ -75,33 +75,23 @@ Output: [What artifacts will be created]
75
75
  <done>[Acceptance criteria]</done>
76
76
  </task>
77
77
 
78
+ <!-- For checkpoint task examples and patterns, see @~/.claude/get-shit-done/references/checkpoints.md -->
79
+ <!-- Key rule: Claude starts dev server BEFORE human-verify checkpoints. User only visits URLs. -->
80
+
78
81
  <task type="checkpoint:decision" gate="blocking">
79
82
  <decision>[What needs deciding]</decision>
80
83
  <context>[Why this decision matters]</context>
81
84
  <options>
82
- <option id="option-a">
83
- <name>[Option name]</name>
84
- <pros>[Benefits and advantages]</pros>
85
- <cons>[Tradeoffs and limitations]</cons>
86
- </option>
87
- <option id="option-b">
88
- <name>[Option name]</name>
89
- <pros>[Benefits and advantages]</pros>
90
- <cons>[Tradeoffs and limitations]</cons>
91
- </option>
85
+ <option id="option-a"><name>[Name]</name><pros>[Benefits]</pros><cons>[Tradeoffs]</cons></option>
86
+ <option id="option-b"><name>[Name]</name><pros>[Benefits]</pros><cons>[Tradeoffs]</cons></option>
92
87
  </options>
93
- <resume-signal>[How to indicate choice - "Select: option-a or option-b"]</resume-signal>
88
+ <resume-signal>Select: option-a or option-b</resume-signal>
94
89
  </task>
95
90
 
96
91
  <task type="checkpoint:human-verify" gate="blocking">
97
- <what-built>[What Claude just built that needs verification]</what-built>
98
- <how-to-verify>
99
- 1. Run: [command to start dev server/app]
100
- 2. Visit: [URL to check]
101
- 3. Test: [Specific interactions]
102
- 4. Confirm: [Expected behaviors]
103
- </how-to-verify>
104
- <resume-signal>Type "approved" to continue, or describe issues to fix</resume-signal>
92
+ <what-built>[What Claude built] - server running at [URL]</what-built>
93
+ <how-to-verify>Visit [URL] and verify: [visual checks only, NO CLI commands]</how-to-verify>
94
+ <resume-signal>Type "approved" or describe issues</resume-signal>
105
95
  </task>
106
96
 
107
97
  </tasks>
@@ -403,15 +393,16 @@ Output: Working dashboard component.
403
393
  <done>Dashboard renders without errors</done>
404
394
  </task>
405
395
 
396
+ <!-- Checkpoint pattern: Claude starts server, user visits URL. See checkpoints.md for full patterns. -->
397
+ <task type="auto">
398
+ <name>Start dev server</name>
399
+ <action>Run `npm run dev` in background, wait for ready</action>
400
+ <verify>curl localhost:3000 returns 200</verify>
401
+ </task>
402
+
406
403
  <task type="checkpoint:human-verify" gate="blocking">
407
- <what-built>Responsive dashboard with user and product sections</what-built>
408
- <how-to-verify>
409
- 1. Run: npm run dev
410
- 2. Visit: http://localhost:3000/dashboard
411
- 3. Desktop: Verify two-column grid
412
- 4. Mobile: Verify stacked layout
413
- 5. Check: No layout shift, no scroll issues
414
- </how-to-verify>
404
+ <what-built>Dashboard - server at http://localhost:3000</what-built>
405
+ <how-to-verify>Visit localhost:3000/dashboard. Check: desktop grid, mobile stack, no scroll issues.</how-to-verify>
415
406
  <resume-signal>Type "approved" or describe issues</resume-signal>
416
407
  </task>
417
408
  </tasks>
@@ -22,14 +22,14 @@ Template for spawning gsd-planner agent. The agent contains all planning experti
22
22
  @.planning/REQUIREMENTS.md
23
23
 
24
24
  **Phase Context (if exists):**
25
- @.planning/phases/{phase_dir}/{phase}-CONTEXT.md
25
+ @.planning/phases/{phase_dir}/{phase_num}-CONTEXT.md
26
26
 
27
27
  **Research (if exists):**
28
- @.planning/phases/{phase_dir}/{phase}-RESEARCH.md
28
+ @.planning/phases/{phase_dir}/{phase_num}-RESEARCH.md
29
29
 
30
30
  **Gap Closure (if --gaps mode):**
31
- @.planning/phases/{phase_dir}/{phase}-VERIFICATION.md
32
- @.planning/phases/{phase_dir}/{phase}-UAT.md
31
+ @.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md
32
+ @.planning/phases/{phase_dir}/{phase_num}-UAT.md
33
33
 
34
34
  </planning_context>
35
35
 
@@ -177,7 +177,7 @@ src/
177
177
  <guidelines>
178
178
 
179
179
  **System Overview:**
180
- - Use ASCII diagrams for clarity
180
+ - Use ASCII box-drawing diagrams for clarity (├── └── │ ─ for structure visualization only)
181
181
  - Show major components and their relationships
182
182
  - Don't over-detail — this is conceptual, not implementation
183
183
 
@@ -1,6 +1,6 @@
1
1
  # Research Template
2
2
 
3
- Template for `.planning/phases/XX-name/{phase}-RESEARCH.md` - comprehensive ecosystem research before planning.
3
+ Template for `.planning/phases/XX-name/{phase_num}-RESEARCH.md` - comprehensive ecosystem research before planning.
4
4
 
5
5
  **Purpose:** Document what Claude needs to know to implement a phase well - not just "which library" but "how do experts build this."
6
6
 
@@ -15,6 +15,29 @@ Template for `.planning/phases/XX-name/{phase}-RESEARCH.md` - comprehensive ecos
15
15
  **Domain:** [primary technology/problem domain]
16
16
  **Confidence:** [HIGH/MEDIUM/LOW]
17
17
 
18
+ <user_constraints>
19
+ ## User Constraints (from CONTEXT.md)
20
+
21
+ **CRITICAL:** If CONTEXT.md exists from /gsd:discuss-phase, copy locked decisions here verbatim. These MUST be honored by the planner.
22
+
23
+ ### Locked Decisions
24
+ [Copy from CONTEXT.md `## Decisions` section - these are NON-NEGOTIABLE]
25
+ - [Decision 1]
26
+ - [Decision 2]
27
+
28
+ ### Claude's Discretion
29
+ [Copy from CONTEXT.md - areas where researcher/planner can choose]
30
+ - [Area 1]
31
+ - [Area 2]
32
+
33
+ ### Deferred Ideas (OUT OF SCOPE)
34
+ [Copy from CONTEXT.md - do NOT research or plan these]
35
+ - [Deferred 1]
36
+ - [Deferred 2]
37
+
38
+ **If no CONTEXT.md exists:** Write "No user constraints - all decisions at Claude's discretion"
39
+ </user_constraints>
40
+
18
41
  <research_summary>
19
42
  ## Summary
20
43
 
@@ -524,6 +547,6 @@ function useVehicleControls(rigidBodyRef) {
524
547
  - Code examples can be referenced in task actions
525
548
 
526
549
  **After creation:**
527
- - File lives in phase directory: `.planning/phases/XX-name/{phase}-RESEARCH.md`
550
+ - File lives in phase directory: `.planning/phases/XX-name/{phase_num}-RESEARCH.md`
528
551
  - Referenced during planning workflow
529
552
  - plan-phase loads it automatically when present
@@ -174,33 +174,3 @@ It's a DIGEST, not an archive. If accumulated context grows too large:
174
174
  The goal is "read once, know where we are" — if it's too long, that fails.
175
175
 
176
176
  </size_constraint>
177
-
178
- <guidelines>
179
-
180
- **When created:**
181
- - During project initialization (after ROADMAP.md)
182
- - Reference PROJECT.md (extract core value and current focus)
183
- - Initialize empty sections
184
-
185
- **When read:**
186
- - Every workflow starts by reading STATE.md
187
- - Then read PROJECT.md for full context
188
- - Provides instant context restoration
189
-
190
- **When updated:**
191
- - After each plan execution (update position, note decisions, update issues/blockers)
192
- - After phase transitions (update progress bar, clear resolved blockers, refresh project reference)
193
-
194
- **Size management:**
195
- - Keep under 100 lines total
196
- - Recent decisions only in STATE.md (full log in PROJECT.md)
197
- - Keep only active blockers
198
-
199
- **Sections:**
200
- - Project Reference: Pointer to PROJECT.md with core value
201
- - Current Position: Where we are now (phase, plan, status)
202
- - Performance Metrics: Velocity tracking
203
- - Accumulated Context: Recent decisions, pending todos, blockers
204
- - Session Continuity: Resume information
205
-
206
- </guidelines>
@@ -0,0 +1,59 @@
1
+ ---
2
+ phase: XX-name
3
+ plan: YY
4
+ subsystem: [primary category]
5
+ tags: [searchable tech]
6
+ requires:
7
+ - phase: [prior phase]
8
+ provides: [what that phase built]
9
+ provides:
10
+ - [bullet list of what was built/delivered]
11
+ affects: [list of phase names or keywords]
12
+ tech-stack:
13
+ added: [libraries/tools]
14
+ patterns: [architectural/code patterns]
15
+ key-files:
16
+ created: [important files created]
17
+ modified: [important files modified]
18
+ key-decisions:
19
+ - "Decision 1"
20
+ patterns-established:
21
+ - "Pattern 1: description"
22
+ duration: Xmin
23
+ completed: YYYY-MM-DD
24
+ ---
25
+
26
+ # Phase [X]: [Name] Summary (Complex)
27
+
28
+ **[Substantive one-liner describing outcome]**
29
+
30
+ ## Performance
31
+ - **Duration:** [time]
32
+ - **Tasks:** [count completed]
33
+ - **Files modified:** [count]
34
+
35
+ ## Accomplishments
36
+ - [Key outcome 1]
37
+ - [Key outcome 2]
38
+
39
+ ## Task Commits
40
+ 1. **Task 1: [task name]** - `hash`
41
+ 2. **Task 2: [task name]** - `hash`
42
+ 3. **Task 3: [task name]** - `hash`
43
+
44
+ ## Files Created/Modified
45
+ - `path/to/file.ts` - What it does
46
+ - `path/to/another.ts` - What it does
47
+
48
+ ## Decisions Made
49
+ [Key decisions with brief rationale]
50
+
51
+ ## Deviations from Plan (Auto-fixed)
52
+ [Detailed auto-fix records per GSD deviation rules]
53
+
54
+ ## Issues Encountered
55
+ [Problems during planned work and resolutions]
56
+
57
+ ## Next Phase Readiness
58
+ [What's ready for next phase]
59
+ [Blockers or concerns]
@@ -0,0 +1,41 @@
1
+ ---
2
+ phase: XX-name
3
+ plan: YY
4
+ subsystem: [primary category]
5
+ tags: [searchable tech]
6
+ provides:
7
+ - [bullet list of what was built/delivered]
8
+ affects: [list of phase names or keywords]
9
+ tech-stack:
10
+ added: [libraries/tools]
11
+ patterns: [architectural/code patterns]
12
+ key-files:
13
+ created: [important files created]
14
+ modified: [important files modified]
15
+ key-decisions: []
16
+ duration: Xmin
17
+ completed: YYYY-MM-DD
18
+ ---
19
+
20
+ # Phase [X]: [Name] Summary (Minimal)
21
+
22
+ **[Substantive one-liner describing outcome]**
23
+
24
+ ## Performance
25
+ - **Duration:** [time]
26
+ - **Tasks:** [count]
27
+ - **Files modified:** [count]
28
+
29
+ ## Accomplishments
30
+ - [Most important outcome]
31
+ - [Second key accomplishment]
32
+
33
+ ## Task Commits
34
+ 1. **Task 1: [task name]** - `hash`
35
+ 2. **Task 2: [task name]** - `hash`
36
+
37
+ ## Files Created/Modified
38
+ - `path/to/file.ts` - What it does
39
+
40
+ ## Next Phase Readiness
41
+ [Ready for next phase]
@@ -0,0 +1,48 @@
1
+ ---
2
+ phase: XX-name
3
+ plan: YY
4
+ subsystem: [primary category]
5
+ tags: [searchable tech]
6
+ provides:
7
+ - [bullet list of what was built/delivered]
8
+ affects: [list of phase names or keywords]
9
+ tech-stack:
10
+ added: [libraries/tools]
11
+ patterns: [architectural/code patterns]
12
+ key-files:
13
+ created: [important files created]
14
+ modified: [important files modified]
15
+ key-decisions:
16
+ - "Decision 1"
17
+ duration: Xmin
18
+ completed: YYYY-MM-DD
19
+ ---
20
+
21
+ # Phase [X]: [Name] Summary
22
+
23
+ **[Substantive one-liner describing outcome]**
24
+
25
+ ## Performance
26
+ - **Duration:** [time]
27
+ - **Tasks:** [count completed]
28
+ - **Files modified:** [count]
29
+
30
+ ## Accomplishments
31
+ - [Key outcome 1]
32
+ - [Key outcome 2]
33
+
34
+ ## Task Commits
35
+ 1. **Task 1: [task name]** - `hash`
36
+ 2. **Task 2: [task name]** - `hash`
37
+ 3. **Task 3: [task name]** - `hash`
38
+
39
+ ## Files Created/Modified
40
+ - `path/to/file.ts` - What it does
41
+ - `path/to/another.ts` - What it does
42
+
43
+ ## Decisions & Deviations
44
+ [Key decisions or "None - followed plan as specified"]
45
+ [Minor deviations if any, or "None"]
46
+
47
+ ## Next Phase Readiness
48
+ [What's ready for next phase]
@@ -233,37 +233,14 @@ The one-liner should tell someone what actually shipped.
233
233
  </example>
234
234
 
235
235
  <guidelines>
236
- **When to create:**
237
- - After completing each phase plan
238
- - Required output from execute-plan workflow
239
- - Documents what actually happened vs what was planned
240
-
241
- **Frontmatter completion:**
242
- - MANDATORY: Complete all frontmatter fields during summary creation
243
- - See <frontmatter_guidance> for field purposes
244
- - Frontmatter enables automatic context assembly for future planning
245
-
246
- **One-liner requirements:**
247
- - Must be substantive (describe what shipped, not "phase complete")
248
- - Should tell someone what was accomplished
249
- - Examples: "JWT auth with refresh rotation using jose library" not "Authentication implemented"
250
-
251
- **Performance tracking:**
252
- - Include duration, start/end timestamps
253
- - Used for velocity metrics in STATE.md
254
-
255
- **Deviations section:**
256
- - Documents unplanned work handled via deviation rules
257
- - Separate from "Issues Encountered" (which is planned work problems)
258
- - Auto-fixed issues: What was wrong, how fixed, verification
236
+ **Frontmatter:** MANDATORY - complete all fields. Enables automatic context assembly for future planning.
237
+
238
+ **One-liner:** Must be substantive. "JWT auth with refresh rotation using jose library" not "Authentication implemented".
259
239
 
260
240
  **Decisions section:**
261
- - Key decisions made during execution
262
- - Include rationale (why this choice)
241
+ - Key decisions made during execution with rationale
263
242
  - Extracted to STATE.md accumulated context
264
243
  - Use "None - followed plan as specified" if no deviations
265
244
 
266
- **After creation:**
267
- - STATE.md updated with position, decisions, issues
268
- - Next plan can reference decisions made
245
+ **After creation:** STATE.md updated with position, decisions, issues.
269
246
  </guidelines>
@@ -304,20 +304,8 @@ curl -X POST http://localhost:3000/api/test-email \
304
304
 
305
305
  ## Guidelines
306
306
 
307
- **Include in USER-SETUP.md:**
308
- - Environment variable names and where to find values
309
- - Account creation URLs (if new service)
310
- - Dashboard configuration steps
311
- - Verification commands to confirm setup works
312
- - Local development alternatives (e.g., `stripe listen`)
313
-
314
- **Do NOT include:**
315
- - Actual secret values (never)
316
- - Steps Claude can automate (package installs, code changes, file creation)
317
- - Generic instructions ("set up your environment")
307
+ **Never include:** Actual secret values. Steps Claude can automate (package installs, code changes).
318
308
 
319
309
  **Naming:** `{phase}-USER-SETUP.md` matches the phase number pattern.
320
-
321
310
  **Status tracking:** User marks checkboxes and updates status line when complete.
322
-
323
311
  **Searchability:** `grep -r "USER-SETUP" .planning/` finds all phases with user requirements.
@@ -1,6 +1,6 @@
1
1
  # Verification Report Template
2
2
 
3
- Template for `.planning/phases/XX-name/{phase}-VERIFICATION.md` — phase goal verification results.
3
+ Template for `.planning/phases/XX-name/{phase_num}-VERIFICATION.md` — phase goal verification results.
4
4
 
5
5
  ---
6
6
 
@@ -0,0 +1,111 @@
1
+ <purpose>
2
+ Add a new integer phase to the end of the current milestone in the roadmap. Automatically calculates next phase number, creates phase directory, and updates roadmap structure.
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ Read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
8
+
9
+ <process>
10
+
11
+ <step name="parse_arguments">
12
+ Parse the command arguments:
13
+ - All arguments become the phase description
14
+ - Example: `/gsd:add-phase Add authentication` → description = "Add authentication"
15
+ - Example: `/gsd:add-phase Fix critical performance issues` → description = "Fix critical performance issues"
16
+
17
+ If no arguments provided:
18
+
19
+ ```
20
+ ERROR: Phase description required
21
+ Usage: /gsd:add-phase <description>
22
+ Example: /gsd:add-phase Add authentication system
23
+ ```
24
+
25
+ Exit.
26
+ </step>
27
+
28
+ <step name="init_context">
29
+ Load phase operation context:
30
+
31
+ ```bash
32
+ INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init phase-op "0")
33
+ ```
34
+
35
+ Check `roadmap_exists` from init JSON. If false:
36
+ ```
37
+ ERROR: No roadmap found (.planning/ROADMAP.md)
38
+ Run /gsd:new-project to initialize.
39
+ ```
40
+ Exit.
41
+ </step>
42
+
43
+ <step name="add_phase">
44
+ **Delegate the phase addition to gsd-tools:**
45
+
46
+ ```bash
47
+ RESULT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs phase add "${description}")
48
+ ```
49
+
50
+ The CLI handles:
51
+ - Finding the highest existing integer phase number
52
+ - Calculating next phase number (max + 1)
53
+ - Generating slug from description
54
+ - Creating the phase directory (`.planning/phases/{NN}-{slug}/`)
55
+ - Inserting the phase entry into ROADMAP.md with Goal, Depends on, and Plans sections
56
+
57
+ Extract from result: `phase_number`, `padded`, `name`, `slug`, `directory`.
58
+ </step>
59
+
60
+ <step name="update_project_state">
61
+ Update STATE.md to reflect the new phase:
62
+
63
+ 1. Read `.planning/STATE.md`
64
+ 2. Under "## Accumulated Context" → "### Roadmap Evolution" add entry:
65
+ ```
66
+ - Phase {N} added: {description}
67
+ ```
68
+
69
+ If "Roadmap Evolution" section doesn't exist, create it.
70
+ </step>
71
+
72
+ <step name="completion">
73
+ Present completion summary:
74
+
75
+ ```
76
+ Phase {N} added to current milestone:
77
+ - Description: {description}
78
+ - Directory: .planning/phases/{phase-num}-{slug}/
79
+ - Status: Not planned yet
80
+
81
+ Roadmap updated: .planning/ROADMAP.md
82
+
83
+ ---
84
+
85
+ ## ▶ Next Up
86
+
87
+ **Phase {N}: {description}**
88
+
89
+ `/gsd:plan-phase {N}`
90
+
91
+ <sub>`/clear` first → fresh context window</sub>
92
+
93
+ ---
94
+
95
+ **Also available:**
96
+ - `/gsd:add-phase <description>` — add another phase
97
+ - Review roadmap
98
+
99
+ ---
100
+ ```
101
+ </step>
102
+
103
+ </process>
104
+
105
+ <success_criteria>
106
+ - [ ] `gsd-tools phase add` executed successfully
107
+ - [ ] Phase directory created
108
+ - [ ] Roadmap updated with new phase entry
109
+ - [ ] STATE.md updated with roadmap evolution note
110
+ - [ ] User informed of next steps
111
+ </success_criteria>
@@ -0,0 +1,157 @@
1
+ <purpose>
2
+ Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work. Enables "thought → capture → continue" flow without losing context.
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ Read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
8
+
9
+ <process>
10
+
11
+ <step name="init_context">
12
+ Load todo context:
13
+
14
+ ```bash
15
+ INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init todos)
16
+ ```
17
+
18
+ Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`.
19
+
20
+ Ensure directories exist:
21
+ ```bash
22
+ mkdir -p .planning/todos/pending .planning/todos/done
23
+ ```
24
+
25
+ Note existing areas from the todos array for consistency in infer_area step.
26
+ </step>
27
+
28
+ <step name="extract_content">
29
+ **With arguments:** Use as the title/focus.
30
+ - `/gsd:add-todo Add auth token refresh` → title = "Add auth token refresh"
31
+
32
+ **Without arguments:** Analyze recent conversation to extract:
33
+ - The specific problem, idea, or task discussed
34
+ - Relevant file paths mentioned
35
+ - Technical details (error messages, line numbers, constraints)
36
+
37
+ Formulate:
38
+ - `title`: 3-10 word descriptive title (action verb preferred)
39
+ - `problem`: What's wrong or why this is needed
40
+ - `solution`: Approach hints or "TBD" if just an idea
41
+ - `files`: Relevant paths with line numbers from conversation
42
+ </step>
43
+
44
+ <step name="infer_area">
45
+ Infer area from file paths:
46
+
47
+ | Path pattern | Area |
48
+ |--------------|------|
49
+ | `src/api/*`, `api/*` | `api` |
50
+ | `src/components/*`, `src/ui/*` | `ui` |
51
+ | `src/auth/*`, `auth/*` | `auth` |
52
+ | `src/db/*`, `database/*` | `database` |
53
+ | `tests/*`, `__tests__/*` | `testing` |
54
+ | `docs/*` | `docs` |
55
+ | `.planning/*` | `planning` |
56
+ | `scripts/*`, `bin/*` | `tooling` |
57
+ | No files or unclear | `general` |
58
+
59
+ Use existing area from step 2 if similar match exists.
60
+ </step>
61
+
62
+ <step name="check_duplicates">
63
+ ```bash
64
+ # Search for key words from title in existing todos
65
+ grep -l -i "[key words from title]" .planning/todos/pending/*.md 2>/dev/null
66
+ ```
67
+
68
+ If potential duplicate found:
69
+ 1. Read the existing todo
70
+ 2. Compare scope
71
+
72
+ If overlapping, use AskUserQuestion:
73
+ - header: "Duplicate?"
74
+ - question: "Similar todo exists: [title]. What would you like to do?"
75
+ - options:
76
+ - "Skip" — keep existing todo
77
+ - "Replace" — update existing with new context
78
+ - "Add anyway" — create as separate todo
79
+ </step>
80
+
81
+ <step name="create_file">
82
+ Use values from init context: `timestamp` and `date` are already available.
83
+
84
+ Generate slug for the title:
85
+ ```bash
86
+ slug=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs generate-slug "$title" --raw)
87
+ ```
88
+
89
+ Write to `.planning/todos/pending/${date}-${slug}.md`:
90
+
91
+ ```markdown
92
+ ---
93
+ created: [timestamp]
94
+ title: [title]
95
+ area: [area]
96
+ files:
97
+ - [file:lines]
98
+ ---
99
+
100
+ ## Problem
101
+
102
+ [problem description - enough context for future Claude to understand weeks later]
103
+
104
+ ## Solution
105
+
106
+ [approach hints or "TBD"]
107
+ ```
108
+ </step>
109
+
110
+ <step name="update_state">
111
+ If `.planning/STATE.md` exists:
112
+
113
+ 1. Use `todo_count` from init context (or re-run `init todos` if count changed)
114
+ 2. Update "### Pending Todos" under "## Accumulated Context"
115
+ </step>
116
+
117
+ <step name="git_commit">
118
+ Commit the todo and any updated state:
119
+
120
+ ```bash
121
+ node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
122
+ ```
123
+
124
+ Tool respects `commit_docs` config and gitignore automatically.
125
+
126
+ Confirm: "Committed: docs: capture todo - [title]"
127
+ </step>
128
+
129
+ <step name="confirm">
130
+ ```
131
+ Todo saved: .planning/todos/pending/[filename]
132
+
133
+ [title]
134
+ Area: [area]
135
+ Files: [count] referenced
136
+
137
+ ---
138
+
139
+ Would you like to:
140
+
141
+ 1. Continue with current work
142
+ 2. Add another todo
143
+ 3. View all todos (/gsd:check-todos)
144
+ ```
145
+ </step>
146
+
147
+ </process>
148
+
149
+ <success_criteria>
150
+ - [ ] Directory structure exists
151
+ - [ ] Todo file created with valid frontmatter
152
+ - [ ] Problem section has enough context for future Claude
153
+ - [ ] No duplicates (checked and resolved)
154
+ - [ ] Area consistent with existing todos
155
+ - [ ] STATE.md updated if exists
156
+ - [ ] Todo and state committed to git
157
+ </success_criteria>