gsd-opencode 1.22.1 → 1.33.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 (188) hide show
  1. package/agents/gsd-advisor-researcher.md +112 -0
  2. package/agents/gsd-assumptions-analyzer.md +110 -0
  3. package/agents/gsd-codebase-mapper.md +0 -2
  4. package/agents/gsd-debugger.md +117 -2
  5. package/agents/gsd-doc-verifier.md +207 -0
  6. package/agents/gsd-doc-writer.md +608 -0
  7. package/agents/gsd-executor.md +45 -4
  8. package/agents/gsd-integration-checker.md +0 -2
  9. package/agents/gsd-nyquist-auditor.md +0 -2
  10. package/agents/gsd-phase-researcher.md +191 -5
  11. package/agents/gsd-plan-checker.md +152 -5
  12. package/agents/gsd-planner.md +131 -157
  13. package/agents/gsd-project-researcher.md +28 -3
  14. package/agents/gsd-research-synthesizer.md +0 -2
  15. package/agents/gsd-roadmapper.md +29 -2
  16. package/agents/gsd-security-auditor.md +129 -0
  17. package/agents/gsd-ui-auditor.md +485 -0
  18. package/agents/gsd-ui-checker.md +305 -0
  19. package/agents/gsd-ui-researcher.md +368 -0
  20. package/agents/gsd-user-profiler.md +173 -0
  21. package/agents/gsd-verifier.md +207 -22
  22. package/commands/gsd/gsd-add-backlog.md +76 -0
  23. package/commands/gsd/gsd-analyze-dependencies.md +34 -0
  24. package/commands/gsd/gsd-audit-uat.md +24 -0
  25. package/commands/gsd/gsd-autonomous.md +45 -0
  26. package/commands/gsd/gsd-cleanup.md +5 -0
  27. package/commands/gsd/gsd-debug.md +29 -21
  28. package/commands/gsd/gsd-discuss-phase.md +15 -36
  29. package/commands/gsd/gsd-do.md +30 -0
  30. package/commands/gsd/gsd-docs-update.md +48 -0
  31. package/commands/gsd/gsd-execute-phase.md +24 -2
  32. package/commands/gsd/gsd-fast.md +30 -0
  33. package/commands/gsd/gsd-forensics.md +56 -0
  34. package/commands/gsd/gsd-help.md +2 -0
  35. package/commands/gsd/gsd-join-discord.md +2 -1
  36. package/commands/gsd/gsd-list-workspaces.md +19 -0
  37. package/commands/gsd/gsd-manager.md +40 -0
  38. package/commands/gsd/gsd-milestone-summary.md +51 -0
  39. package/commands/gsd/gsd-new-project.md +4 -0
  40. package/commands/gsd/gsd-new-workspace.md +44 -0
  41. package/commands/gsd/gsd-next.md +24 -0
  42. package/commands/gsd/gsd-note.md +34 -0
  43. package/commands/gsd/gsd-plan-phase.md +8 -1
  44. package/commands/gsd/gsd-plant-seed.md +28 -0
  45. package/commands/gsd/gsd-pr-branch.md +25 -0
  46. package/commands/gsd/gsd-profile-user.md +46 -0
  47. package/commands/gsd/gsd-quick.md +7 -3
  48. package/commands/gsd/gsd-reapply-patches.md +178 -45
  49. package/commands/gsd/gsd-remove-workspace.md +26 -0
  50. package/commands/gsd/gsd-research-phase.md +7 -12
  51. package/commands/gsd/gsd-review-backlog.md +62 -0
  52. package/commands/gsd/gsd-review.md +38 -0
  53. package/commands/gsd/gsd-secure-phase.md +35 -0
  54. package/commands/gsd/gsd-session-report.md +19 -0
  55. package/commands/gsd/gsd-set-profile.md +24 -23
  56. package/commands/gsd/gsd-ship.md +23 -0
  57. package/commands/gsd/gsd-stats.md +18 -0
  58. package/commands/gsd/gsd-thread.md +127 -0
  59. package/commands/gsd/gsd-ui-phase.md +34 -0
  60. package/commands/gsd/gsd-ui-review.md +32 -0
  61. package/commands/gsd/gsd-workstreams.md +71 -0
  62. package/get-shit-done/bin/gsd-tools.cjs +450 -90
  63. package/get-shit-done/bin/lib/commands.cjs +489 -24
  64. package/get-shit-done/bin/lib/config.cjs +329 -48
  65. package/get-shit-done/bin/lib/core.cjs +1143 -102
  66. package/get-shit-done/bin/lib/docs.cjs +267 -0
  67. package/get-shit-done/bin/lib/frontmatter.cjs +125 -43
  68. package/get-shit-done/bin/lib/init.cjs +918 -106
  69. package/get-shit-done/bin/lib/milestone.cjs +65 -33
  70. package/get-shit-done/bin/lib/model-profiles.cjs +70 -0
  71. package/get-shit-done/bin/lib/phase.cjs +434 -404
  72. package/get-shit-done/bin/lib/profile-output.cjs +1048 -0
  73. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  74. package/get-shit-done/bin/lib/roadmap.cjs +156 -101
  75. package/get-shit-done/bin/lib/schema-detect.cjs +238 -0
  76. package/get-shit-done/bin/lib/security.cjs +384 -0
  77. package/get-shit-done/bin/lib/state.cjs +711 -79
  78. package/get-shit-done/bin/lib/template.cjs +2 -2
  79. package/get-shit-done/bin/lib/uat.cjs +282 -0
  80. package/get-shit-done/bin/lib/verify.cjs +254 -42
  81. package/get-shit-done/bin/lib/workstream.cjs +495 -0
  82. package/get-shit-done/references/agent-contracts.md +79 -0
  83. package/get-shit-done/references/artifact-types.md +113 -0
  84. package/get-shit-done/references/checkpoints.md +12 -10
  85. package/get-shit-done/references/context-budget.md +49 -0
  86. package/get-shit-done/references/continuation-format.md +15 -15
  87. package/get-shit-done/references/decimal-phase-calculation.md +2 -3
  88. package/get-shit-done/references/domain-probes.md +125 -0
  89. package/get-shit-done/references/gate-prompts.md +100 -0
  90. package/get-shit-done/references/git-integration.md +47 -0
  91. package/get-shit-done/references/model-profile-resolution.md +2 -0
  92. package/get-shit-done/references/model-profiles.md +62 -16
  93. package/get-shit-done/references/phase-argument-parsing.md +2 -2
  94. package/get-shit-done/references/planner-gap-closure.md +62 -0
  95. package/get-shit-done/references/planner-reviews.md +39 -0
  96. package/get-shit-done/references/planner-revision.md +87 -0
  97. package/get-shit-done/references/planning-config.md +18 -1
  98. package/get-shit-done/references/revision-loop.md +97 -0
  99. package/get-shit-done/references/ui-brand.md +2 -2
  100. package/get-shit-done/references/universal-anti-patterns.md +58 -0
  101. package/get-shit-done/references/user-profiling.md +681 -0
  102. package/get-shit-done/references/workstream-flag.md +111 -0
  103. package/get-shit-done/templates/SECURITY.md +61 -0
  104. package/get-shit-done/templates/UAT.md +21 -3
  105. package/get-shit-done/templates/UI-SPEC.md +100 -0
  106. package/get-shit-done/templates/VALIDATION.md +3 -3
  107. package/get-shit-done/templates/claude-md.md +145 -0
  108. package/get-shit-done/templates/config.json +14 -3
  109. package/get-shit-done/templates/context.md +61 -6
  110. package/get-shit-done/templates/debug-subagent-prompt.md +2 -6
  111. package/get-shit-done/templates/dev-preferences.md +21 -0
  112. package/get-shit-done/templates/discussion-log.md +63 -0
  113. package/get-shit-done/templates/phase-prompt.md +46 -5
  114. package/get-shit-done/templates/planner-subagent-prompt.md +2 -10
  115. package/get-shit-done/templates/project.md +2 -0
  116. package/get-shit-done/templates/state.md +2 -2
  117. package/get-shit-done/templates/user-profile.md +146 -0
  118. package/get-shit-done/workflows/add-phase.md +4 -4
  119. package/get-shit-done/workflows/add-tests.md +4 -4
  120. package/get-shit-done/workflows/add-todo.md +4 -4
  121. package/get-shit-done/workflows/analyze-dependencies.md +96 -0
  122. package/get-shit-done/workflows/audit-milestone.md +20 -16
  123. package/get-shit-done/workflows/audit-uat.md +109 -0
  124. package/get-shit-done/workflows/autonomous.md +1036 -0
  125. package/get-shit-done/workflows/check-todos.md +4 -4
  126. package/get-shit-done/workflows/cleanup.md +4 -4
  127. package/get-shit-done/workflows/complete-milestone.md +22 -10
  128. package/get-shit-done/workflows/diagnose-issues.md +21 -7
  129. package/get-shit-done/workflows/discovery-phase.md +2 -2
  130. package/get-shit-done/workflows/discuss-phase-assumptions.md +671 -0
  131. package/get-shit-done/workflows/discuss-phase-power.md +291 -0
  132. package/get-shit-done/workflows/discuss-phase.md +558 -47
  133. package/get-shit-done/workflows/do.md +104 -0
  134. package/get-shit-done/workflows/docs-update.md +1093 -0
  135. package/get-shit-done/workflows/execute-phase.md +741 -58
  136. package/get-shit-done/workflows/execute-plan.md +77 -12
  137. package/get-shit-done/workflows/fast.md +105 -0
  138. package/get-shit-done/workflows/forensics.md +265 -0
  139. package/get-shit-done/workflows/health.md +28 -6
  140. package/get-shit-done/workflows/help.md +127 -7
  141. package/get-shit-done/workflows/insert-phase.md +4 -4
  142. package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
  143. package/get-shit-done/workflows/list-workspaces.md +56 -0
  144. package/get-shit-done/workflows/manager.md +363 -0
  145. package/get-shit-done/workflows/map-codebase.md +83 -44
  146. package/get-shit-done/workflows/milestone-summary.md +223 -0
  147. package/get-shit-done/workflows/new-milestone.md +133 -25
  148. package/get-shit-done/workflows/new-project.md +216 -54
  149. package/get-shit-done/workflows/new-workspace.md +237 -0
  150. package/get-shit-done/workflows/next.md +97 -0
  151. package/get-shit-done/workflows/node-repair.md +92 -0
  152. package/get-shit-done/workflows/note.md +156 -0
  153. package/get-shit-done/workflows/pause-work.md +132 -15
  154. package/get-shit-done/workflows/plan-milestone-gaps.md +6 -7
  155. package/get-shit-done/workflows/plan-phase.md +513 -62
  156. package/get-shit-done/workflows/plant-seed.md +169 -0
  157. package/get-shit-done/workflows/pr-branch.md +129 -0
  158. package/get-shit-done/workflows/profile-user.md +450 -0
  159. package/get-shit-done/workflows/progress.md +154 -29
  160. package/get-shit-done/workflows/quick.md +285 -111
  161. package/get-shit-done/workflows/remove-phase.md +2 -2
  162. package/get-shit-done/workflows/remove-workspace.md +90 -0
  163. package/get-shit-done/workflows/research-phase.md +13 -9
  164. package/get-shit-done/workflows/resume-project.md +37 -18
  165. package/get-shit-done/workflows/review.md +281 -0
  166. package/get-shit-done/workflows/secure-phase.md +154 -0
  167. package/get-shit-done/workflows/session-report.md +146 -0
  168. package/get-shit-done/workflows/set-profile.md +2 -2
  169. package/get-shit-done/workflows/settings.md +91 -11
  170. package/get-shit-done/workflows/ship.md +237 -0
  171. package/get-shit-done/workflows/stats.md +60 -0
  172. package/get-shit-done/workflows/transition.md +150 -23
  173. package/get-shit-done/workflows/ui-phase.md +292 -0
  174. package/get-shit-done/workflows/ui-review.md +183 -0
  175. package/get-shit-done/workflows/update.md +262 -30
  176. package/get-shit-done/workflows/validate-phase.md +14 -17
  177. package/get-shit-done/workflows/verify-phase.md +143 -11
  178. package/get-shit-done/workflows/verify-work.md +141 -39
  179. package/package.json +1 -1
  180. package/skills/gsd-audit-milestone/SKILL.md +29 -0
  181. package/skills/gsd-cleanup/SKILL.md +19 -0
  182. package/skills/gsd-complete-milestone/SKILL.md +131 -0
  183. package/skills/gsd-discuss-phase/SKILL.md +54 -0
  184. package/skills/gsd-execute-phase/SKILL.md +49 -0
  185. package/skills/gsd-plan-phase/SKILL.md +37 -0
  186. package/skills/gsd-ui-phase/SKILL.md +24 -0
  187. package/skills/gsd-ui-review/SKILL.md +24 -0
  188. package/skills/gsd-verify-work/SKILL.md +30 -0
@@ -1,6 +1,6 @@
1
- <purpose>
2
- Create `.continue-here.md` handoff file to preserve complete work state across sessions. Enables seamless resumption with full context restoration.
3
- </purpose>
1
+ <objective>
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
+ </objective>
4
4
 
5
5
  <required_reading>
6
6
  read all files referenced by the invoking prompt's execution_context before starting.
@@ -9,14 +9,28 @@ read all files referenced by the invoking prompt's execution_context before star
9
9
  <process>
10
10
 
11
11
  <step name="detect">
12
- Find current phase directory from most recently modified files:
12
+ ## Context Detection
13
+
14
+ Determine what kind of work is being paused and set the handoff destination accordingly:
13
15
 
14
16
  ```bash
15
- # Find most recent phase directory with work
16
- ls -lt .planning/phases/*/PLAN.md 2>/dev/null | head -1 | grep -oP 'phases/\K[^/]+'
17
+ # Check for active phase
18
+ phase=$(( ls -lt .planning/phases/*/PLAN.md 2>/dev/null || true ) | head -1 | grep -oP 'phases/\K[^/]+' || true)
19
+
20
+ # Check for active spike
21
+ spike=$(( ls -lt .planning/spikes/*/SPIKE.md .planning/spikes/*/DESIGN.md 2>/dev/null || true ) | head -1 | grep -oP 'spikes/\K[^/]+' || true)
22
+
23
+ # Check for active deliberation
24
+ deliberation=$(ls .planning/deliberations/*.md 2>/dev/null | head -1 || true)
17
25
  ```
18
26
 
19
- If no active phase detected, ask user which phase they're pausing work on.
27
+ - **Phase work**: active phase directory handoff to `.planning/phases/XX-name/.continue-here.md`
28
+ - **Spike work**: active spike directory or spike-related files (no active phase) → handoff to `.planning/spikes/SPIKE-NNN/.continue-here.md` (create directory if needed)
29
+ - **Deliberation work**: active deliberation file (no phase/spike) → handoff to `.planning/deliberations/.continue-here.md`
30
+ - **Research work**: research notes exist but no phase/spike/deliberation → handoff to `.planning/.continue-here.md`
31
+ - **Default**: no detectable context → handoff to `.planning/.continue-here.md`, note the ambiguity in `<current_state>`
32
+
33
+ If phase is detected, proceed with phase handoff path. Otherwise use the first matching non-phase path above.
20
34
  </step>
21
35
 
22
36
  <step name="gather">
@@ -27,17 +41,72 @@ If no active phase detected, ask user which phase they're pausing work on.
27
41
  3. **Work remaining**: What's left in current plan/phase
28
42
  4. **Decisions made**: Key decisions and rationale
29
43
  5. **Blockers/issues**: Anything stuck
30
- 6. **Mental context**: The approach, next steps, "vibe"
31
- 7. **Files modified**: What's changed but not committed
44
+ 6. **Human actions pending**: Things that need manual intervention (MCP setup, API keys, approvals, manual testing)
45
+ 7. **Background processes**: Any running servers/watchers that were part of the workflow
46
+ 8. **Files modified**: What's changed but not committed
47
+ 9. **Blocking constraints**: Anti-patterns or methodological failures encountered during this session that a resuming agent MUST be aware of before proceeding. Only include items discovered through actual failure — not warnings or predictions. Assign each constraint a `severity`:
48
+ - `blocking` — The resuming agent MUST demonstrate understanding before proceeding. The discuss-phase and execute-phase workflows will enforce a mandatory understanding check.
49
+ - `advisory` — Important context but does not gate resumption.
32
50
 
33
51
  Ask user for clarifications if needed via conversational questions.
52
+
53
+ **Also inspect SUMMARY.md files for false completions:**
54
+ ```bash
55
+ # Check for placeholder content in existing summaries
56
+ grep -l "To be filled\|placeholder\|TBD" .planning/phases/*/*.md 2>/dev/null || true
57
+ ```
58
+ Report any summaries with placeholder content as incomplete items.
59
+ </step>
60
+
61
+ <step name="write_structured">
62
+ **write structured handoff to `.planning/HANDOFF.json`:**
63
+
64
+ ```bash
65
+ timestamp=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" current-timestamp full --raw)
66
+ ```
67
+
68
+ ```json
69
+ {
70
+ "version": "1.0",
71
+ "timestamp": "{timestamp}",
72
+ "phase": "{phase_number}",
73
+ "phase_name": "{phase_name}",
74
+ "phase_dir": "{phase_dir}",
75
+ "plan": {current_plan_number},
76
+ "task": {current_task_number},
77
+ "total_tasks": {total_task_count},
78
+ "status": "paused",
79
+ "completed_tasks": [
80
+ {"id": 1, "name": "{task_name}", "status": "done", "commit": "{short_hash}"},
81
+ {"id": 2, "name": "{task_name}", "status": "done", "commit": "{short_hash}"},
82
+ {"id": 3, "name": "{task_name}", "status": "in_progress", "progress": "{what_done}"}
83
+ ],
84
+ "remaining_tasks": [
85
+ {"id": 4, "name": "{task_name}", "status": "not_started"},
86
+ {"id": 5, "name": "{task_name}", "status": "not_started"}
87
+ ],
88
+ "blockers": [
89
+ {"description": "{blocker}", "type": "technical|human_action|external", "workaround": "{if any}"}
90
+ ],
91
+ "human_actions_pending": [
92
+ {"action": "{what needs to be done}", "context": "{why}", "blocking": true}
93
+ ],
94
+ "decisions": [
95
+ {"decision": "{what}", "rationale": "{why}", "phase": "{phase_number}"}
96
+ ],
97
+ "uncommitted_files": [],
98
+ "next_action": "{specific first action when resuming}",
99
+ "context_notes": "{mental state, approach, what you were thinking}"
100
+ }
101
+ ```
34
102
  </step>
35
103
 
36
104
  <step name="write">
37
- **write handoff to `.planning/phases/XX-name/.continue-here.md`:**
105
+ **write handoff to the path determined in the detect step** (e.g. `.planning/phases/XX-name/.continue-here.md`, `.planning/spikes/SPIKE-NNN/.continue-here.md`, or `.planning/.continue-here.md`):
38
106
 
39
107
  ```markdown
40
108
  ---
109
+ context: [phase|spike|deliberation|research|default]
41
110
  phase: XX-name
42
111
  task: 3
43
112
  total_tasks: 7
@@ -45,12 +114,35 @@ status: in_progress
45
114
  last_updated: [timestamp from current-timestamp]
46
115
  ---
47
116
 
117
+ # BLOCKING CONSTRAINTS — read Before Anything Else
118
+
119
+ > These are not suggestions. Each constraint below was discovered through failure.
120
+ > Acknowledge each one explicitly before proceeding.
121
+
122
+ - [ ] CONSTRAINT: [name] — [what it is] — [structural mitigation required]
123
+
124
+ **Do not proceed until all boxes are checked.**
125
+
126
+ _If no constraints have been identified yet, remove this section._
127
+
128
+ ## Critical Anti-Patterns
129
+
130
+ | Pattern | Description | Severity | Prevention Mechanism |
131
+ |---------|-------------|----------|---------------------|
132
+ | [pattern name] | [what it is and how it manifested] | blocking | [structural step that prevents recurrence — not acknowledgment] |
133
+ | [pattern name] | [what it is and how it manifested] | advisory | [guidance for avoiding it] |
134
+
135
+ **Severity values:** `blocking` — resuming agent must pass understanding check before proceeding. `advisory` — important context, does not gate resumption.
136
+
137
+ _Remove rows that do not apply. The discuss-phase and execute-phase workflows parse this table and enforce a mandatory understanding check for any `blocking` rows._
138
+
48
139
  <current_state>
49
140
  [Where exactly are we? Immediate context]
50
141
  </current_state>
51
142
 
52
143
  <completed_work>
53
144
 
145
+ Completed Tasks:
54
146
  - task 1: [name] - Done
55
147
  - task 2: [name] - Done
56
148
  - task 3: [name] - In progress, [what's done]
@@ -73,6 +165,25 @@ last_updated: [timestamp from current-timestamp]
73
165
  - [Blocker 1]: [status/workaround]
74
166
  </blockers>
75
167
 
168
+ ## Required Reading (in order)
169
+ <!-- List documents the resuming agent must read before acting -->
170
+ 1. [document] — [why it matters]
171
+ 1. `.planning/METHODOLOGY.md` (if it exists) — project analytical lenses; apply before any assumption analysis
172
+
173
+ ## Critical Anti-Patterns (do NOT repeat these)
174
+ <!-- Mistakes discovered this session that must be structurally avoided -->
175
+ - [ANTI-PATTERN]: [what it is] → [structural mitigation]
176
+
177
+ ## Infrastructure State
178
+ <!-- Running services, external state, environment specifics -->
179
+ - [service/env]: [current state]
180
+
181
+ ## Pre-Execution Critique Required
182
+ <!-- Fill in ONLY if pausing between design and execution (e.g. spike design done, not yet run) -->
183
+ - Design artifact: [path]
184
+ - Critique focus: [key questions the critic should probe]
185
+ - Gate: Do NOT begin execution until critique is complete and design is revised
186
+
76
187
  <context>
77
188
  [Mental state, what were you thinking, the plan]
78
189
  </context>
@@ -92,19 +203,23 @@ timestamp=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" curren
92
203
 
93
204
  <step name="commit">
94
205
  ```bash
95
- node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/phases/*/.continue-here.md
206
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "wip: [context-name] paused at [X]/[Y]" --files [handoff-path] .planning/HANDOFF.json
96
207
  ```
97
208
  </step>
98
209
 
99
210
  <step name="confirm">
100
211
  ```
101
- ✓ Handoff created: .planning/phases/[XX-name]/.continue-here.md
212
+ ✓ Handoff created:
213
+ - .planning/HANDOFF.json (structured, machine-readable)
214
+ - [handoff-path] (human-readable)
102
215
 
103
216
  Current state:
104
217
 
105
- - Phase: [XX-name]
218
+ - Context: [phase|spike|deliberation|research]
219
+ - Location: [XX-name or SPIKE-NNN]
106
220
  - task: [X] of [Y]
107
221
  - Status: [in_progress/blocked]
222
+ - Blockers: [count] ({human_actions_pending count} need human action)
108
223
  - Committed as WIP
109
224
 
110
225
  To resume: /gsd-resume-work
@@ -115,8 +230,10 @@ To resume: /gsd-resume-work
115
230
  </process>
116
231
 
117
232
  <success_criteria>
118
- - [ ] .continue-here.md created in correct phase directory
119
- - [ ] All sections filled with specific content
233
+ - [ ] Context detected (phase/spike/deliberation/research/default)
234
+ - [ ] .continue-here.md created at correct path for detected context
235
+ - [ ] Required Reading, Anti-Patterns, and Infrastructure State sections filled
236
+ - [ ] Pre-Execution Critique section filled if pausing between design and execution
120
237
  - [ ] Committed as WIP
121
238
  - [ ] User knows location and how to resume
122
239
  </success_criteria>
@@ -1,6 +1,6 @@
1
- <purpose>
1
+ <objective>
2
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>
3
+ </objective>
4
4
 
5
5
  <required_reading>
6
6
  read all files referenced by the invoking prompt's execution_context before starting.
@@ -12,7 +12,7 @@ read all files referenced by the invoking prompt's execution_context before star
12
12
 
13
13
  ```bash
14
14
  # Find the most recent audit file
15
- ls -t .planning/v*-MILESTONE-AUDIT.md 2>/dev/null | head -1
15
+ (ls -t .planning/v*-MILESTONE-AUDIT.md 2>/dev/null || true) | head -1
16
16
  ```
17
17
 
18
18
  Parse YAML frontmatter to extract structured gaps:
@@ -65,8 +65,7 @@ Gap: Flow "View dashboard" broken at data fetch
65
65
  Find highest existing phase:
66
66
  ```bash
67
67
  # Get sorted phase list, extract last one
68
- PHASES=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" phases list)
69
- HIGHEST=$(printf '%s\n' "$PHASES" | jq -r '.directories[-1]')
68
+ HIGHEST=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" phases list --pick directories[-1])
70
69
  ```
71
70
 
72
71
  New phases continue from there:
@@ -164,9 +163,9 @@ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs(roadm
164
163
 
165
164
  **Plan first gap closure phase**
166
165
 
167
- `/gsd-plan-phase {N}`
166
+ `/new` then:
168
167
 
169
- *`/new` first → fresh context window*
168
+ `/gsd-plan-phase {N}`
170
169
 
171
170
  ---
172
171