gsd-code-first 1.0.0

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 (238) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja-JP.md +834 -0
  3. package/README.ko-KR.md +823 -0
  4. package/README.md +937 -0
  5. package/README.pt-BR.md +452 -0
  6. package/README.zh-CN.md +800 -0
  7. package/agents/gsd-advisor-researcher.md +104 -0
  8. package/agents/gsd-annotator.md +148 -0
  9. package/agents/gsd-arc-executor.md +537 -0
  10. package/agents/gsd-arc-planner.md +374 -0
  11. package/agents/gsd-assumptions-analyzer.md +105 -0
  12. package/agents/gsd-code-planner.md +155 -0
  13. package/agents/gsd-codebase-mapper.md +770 -0
  14. package/agents/gsd-debugger.md +1373 -0
  15. package/agents/gsd-executor.md +509 -0
  16. package/agents/gsd-integration-checker.md +443 -0
  17. package/agents/gsd-nyquist-auditor.md +176 -0
  18. package/agents/gsd-phase-researcher.md +698 -0
  19. package/agents/gsd-plan-checker.md +773 -0
  20. package/agents/gsd-planner.md +1354 -0
  21. package/agents/gsd-project-researcher.md +654 -0
  22. package/agents/gsd-prototyper.md +161 -0
  23. package/agents/gsd-research-synthesizer.md +247 -0
  24. package/agents/gsd-roadmapper.md +679 -0
  25. package/agents/gsd-ui-auditor.md +439 -0
  26. package/agents/gsd-ui-checker.md +300 -0
  27. package/agents/gsd-ui-researcher.md +357 -0
  28. package/agents/gsd-user-profiler.md +171 -0
  29. package/agents/gsd-verifier.md +700 -0
  30. package/bin/install.js +5009 -0
  31. package/commands/gsd/add-backlog.md +76 -0
  32. package/commands/gsd/add-phase.md +43 -0
  33. package/commands/gsd/add-tests.md +41 -0
  34. package/commands/gsd/add-todo.md +47 -0
  35. package/commands/gsd/annotate.md +54 -0
  36. package/commands/gsd/audit-milestone.md +36 -0
  37. package/commands/gsd/audit-uat.md +24 -0
  38. package/commands/gsd/autonomous.md +41 -0
  39. package/commands/gsd/check-todos.md +45 -0
  40. package/commands/gsd/cleanup.md +18 -0
  41. package/commands/gsd/complete-milestone.md +136 -0
  42. package/commands/gsd/debug.md +173 -0
  43. package/commands/gsd/deep-plan.md +52 -0
  44. package/commands/gsd/discuss-phase.md +64 -0
  45. package/commands/gsd/do.md +30 -0
  46. package/commands/gsd/execute-phase.md +59 -0
  47. package/commands/gsd/extract-plan.md +35 -0
  48. package/commands/gsd/fast.md +30 -0
  49. package/commands/gsd/forensics.md +56 -0
  50. package/commands/gsd/health.md +22 -0
  51. package/commands/gsd/help.md +22 -0
  52. package/commands/gsd/insert-phase.md +32 -0
  53. package/commands/gsd/iterate.md +124 -0
  54. package/commands/gsd/join-discord.md +18 -0
  55. package/commands/gsd/list-phase-assumptions.md +46 -0
  56. package/commands/gsd/list-workspaces.md +19 -0
  57. package/commands/gsd/manager.md +39 -0
  58. package/commands/gsd/map-codebase.md +71 -0
  59. package/commands/gsd/milestone-summary.md +51 -0
  60. package/commands/gsd/new-milestone.md +44 -0
  61. package/commands/gsd/new-project.md +42 -0
  62. package/commands/gsd/new-workspace.md +44 -0
  63. package/commands/gsd/next.md +24 -0
  64. package/commands/gsd/note.md +34 -0
  65. package/commands/gsd/pause-work.md +38 -0
  66. package/commands/gsd/plan-milestone-gaps.md +34 -0
  67. package/commands/gsd/plan-phase.md +47 -0
  68. package/commands/gsd/plant-seed.md +28 -0
  69. package/commands/gsd/pr-branch.md +25 -0
  70. package/commands/gsd/profile-user.md +46 -0
  71. package/commands/gsd/progress.md +24 -0
  72. package/commands/gsd/prototype.md +56 -0
  73. package/commands/gsd/quick.md +47 -0
  74. package/commands/gsd/reapply-patches.md +123 -0
  75. package/commands/gsd/remove-phase.md +31 -0
  76. package/commands/gsd/remove-workspace.md +26 -0
  77. package/commands/gsd/research-phase.md +195 -0
  78. package/commands/gsd/resume-work.md +40 -0
  79. package/commands/gsd/review-backlog.md +61 -0
  80. package/commands/gsd/review.md +37 -0
  81. package/commands/gsd/session-report.md +19 -0
  82. package/commands/gsd/set-mode.md +41 -0
  83. package/commands/gsd/set-profile.md +12 -0
  84. package/commands/gsd/settings.md +36 -0
  85. package/commands/gsd/ship.md +23 -0
  86. package/commands/gsd/stats.md +18 -0
  87. package/commands/gsd/thread.md +127 -0
  88. package/commands/gsd/ui-phase.md +34 -0
  89. package/commands/gsd/ui-review.md +32 -0
  90. package/commands/gsd/update.md +37 -0
  91. package/commands/gsd/validate-phase.md +35 -0
  92. package/commands/gsd/verify-work.md +38 -0
  93. package/commands/gsd/workstreams.md +63 -0
  94. package/get-shit-done/bin/gsd-tools.cjs +946 -0
  95. package/get-shit-done/bin/lib/arc-scanner.cjs +341 -0
  96. package/get-shit-done/bin/lib/commands.cjs +959 -0
  97. package/get-shit-done/bin/lib/config.cjs +466 -0
  98. package/get-shit-done/bin/lib/core.cjs +1230 -0
  99. package/get-shit-done/bin/lib/frontmatter.cjs +336 -0
  100. package/get-shit-done/bin/lib/init.cjs +1442 -0
  101. package/get-shit-done/bin/lib/milestone.cjs +252 -0
  102. package/get-shit-done/bin/lib/model-profiles.cjs +68 -0
  103. package/get-shit-done/bin/lib/phase.cjs +888 -0
  104. package/get-shit-done/bin/lib/profile-output.cjs +952 -0
  105. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  106. package/get-shit-done/bin/lib/roadmap.cjs +329 -0
  107. package/get-shit-done/bin/lib/security.cjs +382 -0
  108. package/get-shit-done/bin/lib/state.cjs +1031 -0
  109. package/get-shit-done/bin/lib/template.cjs +222 -0
  110. package/get-shit-done/bin/lib/uat.cjs +282 -0
  111. package/get-shit-done/bin/lib/verify.cjs +888 -0
  112. package/get-shit-done/bin/lib/workstream.cjs +491 -0
  113. package/get-shit-done/commands/gsd/workstreams.md +63 -0
  114. package/get-shit-done/references/arc-standard.md +315 -0
  115. package/get-shit-done/references/checkpoints.md +778 -0
  116. package/get-shit-done/references/continuation-format.md +249 -0
  117. package/get-shit-done/references/decimal-phase-calculation.md +64 -0
  118. package/get-shit-done/references/git-integration.md +295 -0
  119. package/get-shit-done/references/git-planning-commit.md +38 -0
  120. package/get-shit-done/references/model-profile-resolution.md +36 -0
  121. package/get-shit-done/references/model-profiles.md +139 -0
  122. package/get-shit-done/references/phase-argument-parsing.md +61 -0
  123. package/get-shit-done/references/planning-config.md +202 -0
  124. package/get-shit-done/references/questioning.md +162 -0
  125. package/get-shit-done/references/tdd.md +263 -0
  126. package/get-shit-done/references/ui-brand.md +160 -0
  127. package/get-shit-done/references/user-profiling.md +681 -0
  128. package/get-shit-done/references/verification-patterns.md +612 -0
  129. package/get-shit-done/references/workstream-flag.md +58 -0
  130. package/get-shit-done/templates/DEBUG.md +164 -0
  131. package/get-shit-done/templates/UAT.md +265 -0
  132. package/get-shit-done/templates/UI-SPEC.md +100 -0
  133. package/get-shit-done/templates/VALIDATION.md +76 -0
  134. package/get-shit-done/templates/claude-md.md +122 -0
  135. package/get-shit-done/templates/codebase/architecture.md +255 -0
  136. package/get-shit-done/templates/codebase/concerns.md +310 -0
  137. package/get-shit-done/templates/codebase/conventions.md +307 -0
  138. package/get-shit-done/templates/codebase/integrations.md +280 -0
  139. package/get-shit-done/templates/codebase/stack.md +186 -0
  140. package/get-shit-done/templates/codebase/structure.md +285 -0
  141. package/get-shit-done/templates/codebase/testing.md +480 -0
  142. package/get-shit-done/templates/config.json +44 -0
  143. package/get-shit-done/templates/context.md +352 -0
  144. package/get-shit-done/templates/continue-here.md +78 -0
  145. package/get-shit-done/templates/copilot-instructions.md +7 -0
  146. package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  147. package/get-shit-done/templates/dev-preferences.md +21 -0
  148. package/get-shit-done/templates/discovery.md +146 -0
  149. package/get-shit-done/templates/discussion-log.md +63 -0
  150. package/get-shit-done/templates/milestone-archive.md +123 -0
  151. package/get-shit-done/templates/milestone.md +115 -0
  152. package/get-shit-done/templates/phase-prompt.md +610 -0
  153. package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  154. package/get-shit-done/templates/project.md +186 -0
  155. package/get-shit-done/templates/requirements.md +231 -0
  156. package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  157. package/get-shit-done/templates/research-project/FEATURES.md +147 -0
  158. package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  159. package/get-shit-done/templates/research-project/STACK.md +120 -0
  160. package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  161. package/get-shit-done/templates/research.md +552 -0
  162. package/get-shit-done/templates/retrospective.md +54 -0
  163. package/get-shit-done/templates/roadmap.md +202 -0
  164. package/get-shit-done/templates/state.md +176 -0
  165. package/get-shit-done/templates/summary-complex.md +59 -0
  166. package/get-shit-done/templates/summary-minimal.md +41 -0
  167. package/get-shit-done/templates/summary-standard.md +48 -0
  168. package/get-shit-done/templates/summary.md +248 -0
  169. package/get-shit-done/templates/user-profile.md +146 -0
  170. package/get-shit-done/templates/user-setup.md +311 -0
  171. package/get-shit-done/templates/verification-report.md +322 -0
  172. package/get-shit-done/workflows/add-phase.md +112 -0
  173. package/get-shit-done/workflows/add-tests.md +351 -0
  174. package/get-shit-done/workflows/add-todo.md +158 -0
  175. package/get-shit-done/workflows/audit-milestone.md +340 -0
  176. package/get-shit-done/workflows/audit-uat.md +109 -0
  177. package/get-shit-done/workflows/autonomous.md +891 -0
  178. package/get-shit-done/workflows/check-todos.md +177 -0
  179. package/get-shit-done/workflows/cleanup.md +152 -0
  180. package/get-shit-done/workflows/complete-milestone.md +767 -0
  181. package/get-shit-done/workflows/diagnose-issues.md +231 -0
  182. package/get-shit-done/workflows/discovery-phase.md +289 -0
  183. package/get-shit-done/workflows/discuss-phase-assumptions.md +653 -0
  184. package/get-shit-done/workflows/discuss-phase.md +1049 -0
  185. package/get-shit-done/workflows/do.md +104 -0
  186. package/get-shit-done/workflows/execute-phase.md +846 -0
  187. package/get-shit-done/workflows/execute-plan.md +514 -0
  188. package/get-shit-done/workflows/fast.md +105 -0
  189. package/get-shit-done/workflows/forensics.md +265 -0
  190. package/get-shit-done/workflows/health.md +181 -0
  191. package/get-shit-done/workflows/help.md +634 -0
  192. package/get-shit-done/workflows/insert-phase.md +130 -0
  193. package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  194. package/get-shit-done/workflows/list-workspaces.md +56 -0
  195. package/get-shit-done/workflows/manager.md +362 -0
  196. package/get-shit-done/workflows/map-codebase.md +377 -0
  197. package/get-shit-done/workflows/milestone-summary.md +223 -0
  198. package/get-shit-done/workflows/new-milestone.md +486 -0
  199. package/get-shit-done/workflows/new-project.md +1250 -0
  200. package/get-shit-done/workflows/new-workspace.md +237 -0
  201. package/get-shit-done/workflows/next.md +97 -0
  202. package/get-shit-done/workflows/node-repair.md +92 -0
  203. package/get-shit-done/workflows/note.md +156 -0
  204. package/get-shit-done/workflows/pause-work.md +176 -0
  205. package/get-shit-done/workflows/plan-milestone-gaps.md +273 -0
  206. package/get-shit-done/workflows/plan-phase.md +859 -0
  207. package/get-shit-done/workflows/plant-seed.md +169 -0
  208. package/get-shit-done/workflows/pr-branch.md +129 -0
  209. package/get-shit-done/workflows/profile-user.md +450 -0
  210. package/get-shit-done/workflows/progress.md +507 -0
  211. package/get-shit-done/workflows/quick.md +757 -0
  212. package/get-shit-done/workflows/remove-phase.md +155 -0
  213. package/get-shit-done/workflows/remove-workspace.md +90 -0
  214. package/get-shit-done/workflows/research-phase.md +82 -0
  215. package/get-shit-done/workflows/resume-project.md +326 -0
  216. package/get-shit-done/workflows/review.md +228 -0
  217. package/get-shit-done/workflows/session-report.md +146 -0
  218. package/get-shit-done/workflows/settings.md +283 -0
  219. package/get-shit-done/workflows/ship.md +228 -0
  220. package/get-shit-done/workflows/stats.md +60 -0
  221. package/get-shit-done/workflows/transition.md +671 -0
  222. package/get-shit-done/workflows/ui-phase.md +302 -0
  223. package/get-shit-done/workflows/ui-review.md +165 -0
  224. package/get-shit-done/workflows/update.md +323 -0
  225. package/get-shit-done/workflows/validate-phase.md +174 -0
  226. package/get-shit-done/workflows/verify-phase.md +254 -0
  227. package/get-shit-done/workflows/verify-work.md +637 -0
  228. package/hooks/dist/gsd-check-update.js +114 -0
  229. package/hooks/dist/gsd-context-monitor.js +156 -0
  230. package/hooks/dist/gsd-prompt-guard.js +96 -0
  231. package/hooks/dist/gsd-statusline.js +119 -0
  232. package/hooks/dist/gsd-workflow-guard.js +94 -0
  233. package/package.json +52 -0
  234. package/scripts/base64-scan.sh +262 -0
  235. package/scripts/build-hooks.js +82 -0
  236. package/scripts/prompt-injection-scan.sh +198 -0
  237. package/scripts/run-tests.cjs +29 -0
  238. package/scripts/secret-scan.sh +227 -0
@@ -0,0 +1,176 @@
1
+ <purpose>
2
+ Create structured `.planning/HANDOFF.json` and `.continue-here.md` handoff files to preserve complete work state across sessions. The JSON provides machine-readable state for `/gsd:resume-work`; the markdown provides human-readable 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="detect">
12
+ Find current phase directory from most recently modified files:
13
+
14
+ ```bash
15
+ # Find most recent phase directory with work
16
+ (ls -lt .planning/phases/*/PLAN.md 2>/dev/null || true) | head -1 | grep -oP 'phases/\K[^/]+' || true
17
+ ```
18
+
19
+ If no active phase detected, ask user which phase they're pausing work on.
20
+ </step>
21
+
22
+ <step name="gather">
23
+ **Collect complete state for handoff:**
24
+
25
+ 1. **Current position**: Which phase, which plan, which task
26
+ 2. **Work completed**: What got done this session
27
+ 3. **Work remaining**: What's left in current plan/phase
28
+ 4. **Decisions made**: Key decisions and rationale
29
+ 5. **Blockers/issues**: Anything stuck
30
+ 6. **Human actions pending**: Things that need manual intervention (MCP setup, API keys, approvals, manual testing)
31
+ 7. **Background processes**: Any running servers/watchers that were part of the workflow
32
+ 8. **Files modified**: What's changed but not committed
33
+
34
+ Ask user for clarifications if needed via conversational questions.
35
+
36
+ **Also inspect SUMMARY.md files for false completions:**
37
+ ```bash
38
+ # Check for placeholder content in existing summaries
39
+ grep -l "To be filled\|placeholder\|TBD" .planning/phases/*/*.md 2>/dev/null || true
40
+ ```
41
+ Report any summaries with placeholder content as incomplete items.
42
+ </step>
43
+
44
+ <step name="write_structured">
45
+ **Write structured handoff to `.planning/HANDOFF.json`:**
46
+
47
+ ```bash
48
+ timestamp=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" current-timestamp full --raw)
49
+ ```
50
+
51
+ ```json
52
+ {
53
+ "version": "1.0",
54
+ "timestamp": "{timestamp}",
55
+ "phase": "{phase_number}",
56
+ "phase_name": "{phase_name}",
57
+ "phase_dir": "{phase_dir}",
58
+ "plan": {current_plan_number},
59
+ "task": {current_task_number},
60
+ "total_tasks": {total_task_count},
61
+ "status": "paused",
62
+ "completed_tasks": [
63
+ {"id": 1, "name": "{task_name}", "status": "done", "commit": "{short_hash}"},
64
+ {"id": 2, "name": "{task_name}", "status": "done", "commit": "{short_hash}"},
65
+ {"id": 3, "name": "{task_name}", "status": "in_progress", "progress": "{what_done}"}
66
+ ],
67
+ "remaining_tasks": [
68
+ {"id": 4, "name": "{task_name}", "status": "not_started"},
69
+ {"id": 5, "name": "{task_name}", "status": "not_started"}
70
+ ],
71
+ "blockers": [
72
+ {"description": "{blocker}", "type": "technical|human_action|external", "workaround": "{if any}"}
73
+ ],
74
+ "human_actions_pending": [
75
+ {"action": "{what needs to be done}", "context": "{why}", "blocking": true}
76
+ ],
77
+ "decisions": [
78
+ {"decision": "{what}", "rationale": "{why}", "phase": "{phase_number}"}
79
+ ],
80
+ "uncommitted_files": [],
81
+ "next_action": "{specific first action when resuming}",
82
+ "context_notes": "{mental state, approach, what you were thinking}"
83
+ }
84
+ ```
85
+ </step>
86
+
87
+ <step name="write">
88
+ **Write handoff to `.planning/phases/XX-name/.continue-here.md`:**
89
+
90
+ ```markdown
91
+ ---
92
+ phase: XX-name
93
+ task: 3
94
+ total_tasks: 7
95
+ status: in_progress
96
+ last_updated: [timestamp from current-timestamp]
97
+ ---
98
+
99
+ <current_state>
100
+ [Where exactly are we? Immediate context]
101
+ </current_state>
102
+
103
+ <completed_work>
104
+
105
+ - Task 1: [name] - Done
106
+ - Task 2: [name] - Done
107
+ - Task 3: [name] - In progress, [what's done]
108
+ </completed_work>
109
+
110
+ <remaining_work>
111
+
112
+ - Task 3: [what's left]
113
+ - Task 4: Not started
114
+ - Task 5: Not started
115
+ </remaining_work>
116
+
117
+ <decisions_made>
118
+
119
+ - Decided to use [X] because [reason]
120
+ - Chose [approach] over [alternative] because [reason]
121
+ </decisions_made>
122
+
123
+ <blockers>
124
+ - [Blocker 1]: [status/workaround]
125
+ </blockers>
126
+
127
+ <context>
128
+ [Mental state, what were you thinking, the plan]
129
+ </context>
130
+
131
+ <next_action>
132
+ Start with: [specific first action when resuming]
133
+ </next_action>
134
+ ```
135
+
136
+ Be specific enough for a fresh Claude to understand immediately.
137
+
138
+ Use `current-timestamp` for last_updated field. You can use init todos (which provides timestamps) or call directly:
139
+ ```bash
140
+ timestamp=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" current-timestamp full --raw)
141
+ ```
142
+ </step>
143
+
144
+ <step name="commit">
145
+ ```bash
146
+ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/phases/*/.continue-here.md .planning/HANDOFF.json
147
+ ```
148
+ </step>
149
+
150
+ <step name="confirm">
151
+ ```
152
+ ✓ Handoff created:
153
+ - .planning/HANDOFF.json (structured, machine-readable)
154
+ - .planning/phases/[XX-name]/.continue-here.md (human-readable)
155
+
156
+ Current state:
157
+
158
+ - Phase: [XX-name]
159
+ - Task: [X] of [Y]
160
+ - Status: [in_progress/blocked]
161
+ - Blockers: [count] ({human_actions_pending count} need human action)
162
+ - Committed as WIP
163
+
164
+ To resume: /gsd:resume-work
165
+
166
+ ```
167
+ </step>
168
+
169
+ </process>
170
+
171
+ <success_criteria>
172
+ - [ ] .continue-here.md created in correct phase directory
173
+ - [ ] All sections filled with specific content
174
+ - [ ] Committed as WIP
175
+ - [ ] User knows location and how to resume
176
+ </success_criteria>
@@ -0,0 +1,273 @@
1
+ <purpose>
2
+ Create all phases necessary to close gaps identified by `/gsd:audit-milestone`. Reads MILESTONE-AUDIT.md, groups gaps into logical phases, creates phase entries in ROADMAP.md, and offers to plan each phase. One command creates all fix phases — no manual `/gsd:add-phase` per gap.
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
+ ## 1. Load Audit Results
12
+
13
+ ```bash
14
+ # Find the most recent audit file
15
+ (ls -t .planning/v*-MILESTONE-AUDIT.md 2>/dev/null || true) | head -1
16
+ ```
17
+
18
+ Parse YAML frontmatter to extract structured gaps:
19
+ - `gaps.requirements` — unsatisfied requirements
20
+ - `gaps.integration` — missing cross-phase connections
21
+ - `gaps.flows` — broken E2E flows
22
+
23
+ If no audit file exists or has no gaps, error:
24
+ ```
25
+ No audit gaps found. Run `/gsd:audit-milestone` first.
26
+ ```
27
+
28
+ ## 2. Prioritize Gaps
29
+
30
+ Group gaps by priority from REQUIREMENTS.md:
31
+
32
+ | Priority | Action |
33
+ |----------|--------|
34
+ | `must` | Create phase, blocks milestone |
35
+ | `should` | Create phase, recommended |
36
+ | `nice` | Ask user: include or defer? |
37
+
38
+ For integration/flow gaps, infer priority from affected requirements.
39
+
40
+ ## 3. Group Gaps into Phases
41
+
42
+ Cluster related gaps into logical phases:
43
+
44
+ **Grouping rules:**
45
+ - Same affected phase → combine into one fix phase
46
+ - Same subsystem (auth, API, UI) → combine
47
+ - Dependency order (fix stubs before wiring)
48
+ - Keep phases focused: 2-4 tasks each
49
+
50
+ **Example grouping:**
51
+ ```
52
+ Gap: DASH-01 unsatisfied (Dashboard doesn't fetch)
53
+ Gap: Integration Phase 1→3 (Auth not passed to API calls)
54
+ Gap: Flow "View dashboard" broken at data fetch
55
+
56
+ → Phase 6: "Wire Dashboard to API"
57
+ - Add fetch to Dashboard.tsx
58
+ - Include auth header in fetch
59
+ - Handle response, update state
60
+ - Render user data
61
+ ```
62
+
63
+ ## 4. Determine Phase Numbers
64
+
65
+ Find highest existing phase:
66
+ ```bash
67
+ # Get sorted phase list, extract last one
68
+ HIGHEST=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" phases list --pick directories[-1])
69
+ ```
70
+
71
+ New phases continue from there:
72
+ - If Phase 5 is highest, gaps become Phase 6, 7, 8...
73
+
74
+ ## 5. Present Gap Closure Plan
75
+
76
+ ```markdown
77
+ ## Gap Closure Plan
78
+
79
+ **Milestone:** {version}
80
+ **Gaps to close:** {N} requirements, {M} integration, {K} flows
81
+
82
+ ### Proposed Phases
83
+
84
+ **Phase {N}: {Name}**
85
+ Closes:
86
+ - {REQ-ID}: {description}
87
+ - Integration: {from} → {to}
88
+ Tasks: {count}
89
+
90
+ **Phase {N+1}: {Name}**
91
+ Closes:
92
+ - {REQ-ID}: {description}
93
+ - Flow: {flow name}
94
+ Tasks: {count}
95
+
96
+ {If nice-to-have gaps exist:}
97
+
98
+ ### Deferred (nice-to-have)
99
+
100
+ These gaps are optional. Include them?
101
+ - {gap description}
102
+ - {gap description}
103
+
104
+ ---
105
+
106
+ Create these {X} phases? (yes / adjust / defer all optional)
107
+ ```
108
+
109
+ Wait for user confirmation.
110
+
111
+ ## 6. Update ROADMAP.md
112
+
113
+ Add new phases to current milestone:
114
+
115
+ ```markdown
116
+ ### Phase {N}: {Name}
117
+ **Goal:** {derived from gaps being closed}
118
+ **Requirements:** {REQ-IDs being satisfied}
119
+ **Gap Closure:** Closes gaps from audit
120
+
121
+ ### Phase {N+1}: {Name}
122
+ ...
123
+ ```
124
+
125
+ ## 7. Update REQUIREMENTS.md Traceability Table (REQUIRED)
126
+
127
+ For each REQ-ID assigned to a gap closure phase:
128
+ - Update the Phase column to reflect the new gap closure phase
129
+ - Reset Status to `Pending`
130
+
131
+ Reset checked-off requirements the audit found unsatisfied:
132
+ - Change `[x]` → `[ ]` for any requirement marked unsatisfied in the audit
133
+ - Update coverage count at top of REQUIREMENTS.md
134
+
135
+ ```bash
136
+ # Verify traceability table reflects gap closure assignments
137
+ grep -c "Pending" .planning/REQUIREMENTS.md
138
+ ```
139
+
140
+ ## 8. Create Phase Directories
141
+
142
+ ```bash
143
+ mkdir -p ".planning/phases/{NN}-{name}"
144
+ ```
145
+
146
+ ## 9. Commit Roadmap and Requirements Update
147
+
148
+ ```bash
149
+ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs(roadmap): add gap closure phases {N}-{M}" --files .planning/ROADMAP.md .planning/REQUIREMENTS.md
150
+ ```
151
+
152
+ ## 10. Offer Next Steps
153
+
154
+ ```markdown
155
+ ## ✓ Gap Closure Phases Created
156
+
157
+ **Phases added:** {N} - {M}
158
+ **Gaps addressed:** {count} requirements, {count} integration, {count} flows
159
+
160
+ ---
161
+
162
+ ## ▶ Next Up
163
+
164
+ **Plan first gap closure phase**
165
+
166
+ `/gsd:plan-phase {N}`
167
+
168
+ <sub>`/clear` first → fresh context window</sub>
169
+
170
+ ---
171
+
172
+ **Also available:**
173
+ - `/gsd:execute-phase {N}` — if plans already exist
174
+ - `cat .planning/ROADMAP.md` — see updated roadmap
175
+
176
+ ---
177
+
178
+ **After all gap phases complete:**
179
+
180
+ `/gsd:audit-milestone` — re-audit to verify gaps closed
181
+ `/gsd:complete-milestone {version}` — archive when audit passes
182
+ ```
183
+
184
+ </process>
185
+
186
+ <gap_to_phase_mapping>
187
+
188
+ ## How Gaps Become Tasks
189
+
190
+ **Requirement gap → Tasks:**
191
+ ```yaml
192
+ gap:
193
+ id: DASH-01
194
+ description: "User sees their data"
195
+ reason: "Dashboard exists but doesn't fetch from API"
196
+ missing:
197
+ - "useEffect with fetch to /api/user/data"
198
+ - "State for user data"
199
+ - "Render user data in JSX"
200
+
201
+ becomes:
202
+
203
+ phase: "Wire Dashboard Data"
204
+ tasks:
205
+ - name: "Add data fetching"
206
+ files: [src/components/Dashboard.tsx]
207
+ action: "Add useEffect that fetches /api/user/data on mount"
208
+
209
+ - name: "Add state management"
210
+ files: [src/components/Dashboard.tsx]
211
+ action: "Add useState for userData, loading, error states"
212
+
213
+ - name: "Render user data"
214
+ files: [src/components/Dashboard.tsx]
215
+ action: "Replace placeholder with userData.map rendering"
216
+ ```
217
+
218
+ **Integration gap → Tasks:**
219
+ ```yaml
220
+ gap:
221
+ from_phase: 1
222
+ to_phase: 3
223
+ connection: "Auth token → API calls"
224
+ reason: "Dashboard API calls don't include auth header"
225
+ missing:
226
+ - "Auth header in fetch calls"
227
+ - "Token refresh on 401"
228
+
229
+ becomes:
230
+
231
+ phase: "Add Auth to Dashboard API Calls"
232
+ tasks:
233
+ - name: "Add auth header to fetches"
234
+ files: [src/components/Dashboard.tsx, src/lib/api.ts]
235
+ action: "Include Authorization header with token in all API calls"
236
+
237
+ - name: "Handle 401 responses"
238
+ files: [src/lib/api.ts]
239
+ action: "Add interceptor to refresh token or redirect to login on 401"
240
+ ```
241
+
242
+ **Flow gap → Tasks:**
243
+ ```yaml
244
+ gap:
245
+ name: "User views dashboard after login"
246
+ broken_at: "Dashboard data load"
247
+ reason: "No fetch call"
248
+ missing:
249
+ - "Fetch user data on mount"
250
+ - "Display loading state"
251
+ - "Render user data"
252
+
253
+ becomes:
254
+
255
+ # Usually same phase as requirement/integration gap
256
+ # Flow gaps often overlap with other gap types
257
+ ```
258
+
259
+ </gap_to_phase_mapping>
260
+
261
+ <success_criteria>
262
+ - [ ] MILESTONE-AUDIT.md loaded and gaps parsed
263
+ - [ ] Gaps prioritized (must/should/nice)
264
+ - [ ] Gaps grouped into logical phases
265
+ - [ ] User confirmed phase plan
266
+ - [ ] ROADMAP.md updated with new phases
267
+ - [ ] REQUIREMENTS.md traceability table updated with gap closure phase assignments
268
+ - [ ] Unsatisfied requirement checkboxes reset (`[x]` → `[ ]`)
269
+ - [ ] Coverage count updated in REQUIREMENTS.md
270
+ - [ ] Phase directories created
271
+ - [ ] Changes committed (includes REQUIREMENTS.md)
272
+ - [ ] User knows to run `/gsd:plan-phase` next
273
+ </success_criteria>