gsd-opencode 1.22.1 → 1.30.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 (156) 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 +118 -2
  5. package/agents/gsd-executor.md +24 -4
  6. package/agents/gsd-integration-checker.md +0 -2
  7. package/agents/gsd-nyquist-auditor.md +0 -2
  8. package/agents/gsd-phase-researcher.md +150 -5
  9. package/agents/gsd-plan-checker.md +70 -5
  10. package/agents/gsd-planner.md +49 -4
  11. package/agents/gsd-project-researcher.md +28 -3
  12. package/agents/gsd-research-synthesizer.md +0 -2
  13. package/agents/gsd-roadmapper.md +29 -2
  14. package/agents/gsd-ui-auditor.md +445 -0
  15. package/agents/gsd-ui-checker.md +305 -0
  16. package/agents/gsd-ui-researcher.md +368 -0
  17. package/agents/gsd-user-profiler.md +173 -0
  18. package/agents/gsd-verifier.md +123 -4
  19. package/commands/gsd/gsd-add-backlog.md +76 -0
  20. package/commands/gsd/gsd-audit-uat.md +24 -0
  21. package/commands/gsd/gsd-autonomous.md +41 -0
  22. package/commands/gsd/gsd-debug.md +5 -0
  23. package/commands/gsd/gsd-discuss-phase.md +10 -36
  24. package/commands/gsd/gsd-do.md +30 -0
  25. package/commands/gsd/gsd-execute-phase.md +20 -2
  26. package/commands/gsd/gsd-fast.md +30 -0
  27. package/commands/gsd/gsd-forensics.md +56 -0
  28. package/commands/gsd/gsd-list-workspaces.md +19 -0
  29. package/commands/gsd/gsd-manager.md +39 -0
  30. package/commands/gsd/gsd-milestone-summary.md +51 -0
  31. package/commands/gsd/gsd-new-workspace.md +44 -0
  32. package/commands/gsd/gsd-next.md +24 -0
  33. package/commands/gsd/gsd-note.md +34 -0
  34. package/commands/gsd/gsd-plan-phase.md +3 -1
  35. package/commands/gsd/gsd-plant-seed.md +28 -0
  36. package/commands/gsd/gsd-pr-branch.md +25 -0
  37. package/commands/gsd/gsd-profile-user.md +46 -0
  38. package/commands/gsd/gsd-quick.md +4 -2
  39. package/commands/gsd/gsd-reapply-patches.md +9 -8
  40. package/commands/gsd/gsd-remove-workspace.md +26 -0
  41. package/commands/gsd/gsd-research-phase.md +5 -0
  42. package/commands/gsd/gsd-review-backlog.md +61 -0
  43. package/commands/gsd/gsd-review.md +37 -0
  44. package/commands/gsd/gsd-session-report.md +19 -0
  45. package/commands/gsd/gsd-set-profile.md +24 -23
  46. package/commands/gsd/gsd-ship.md +23 -0
  47. package/commands/gsd/gsd-stats.md +18 -0
  48. package/commands/gsd/gsd-thread.md +127 -0
  49. package/commands/gsd/gsd-ui-phase.md +34 -0
  50. package/commands/gsd/gsd-ui-review.md +32 -0
  51. package/commands/gsd/gsd-workstreams.md +66 -0
  52. package/get-shit-done/bin/gsd-tools.cjs +410 -84
  53. package/get-shit-done/bin/lib/commands.cjs +429 -18
  54. package/get-shit-done/bin/lib/config.cjs +318 -45
  55. package/get-shit-done/bin/lib/core.cjs +822 -84
  56. package/get-shit-done/bin/lib/frontmatter.cjs +78 -41
  57. package/get-shit-done/bin/lib/init.cjs +836 -104
  58. package/get-shit-done/bin/lib/milestone.cjs +44 -33
  59. package/get-shit-done/bin/lib/model-profiles.cjs +68 -0
  60. package/get-shit-done/bin/lib/phase.cjs +293 -306
  61. package/get-shit-done/bin/lib/profile-output.cjs +952 -0
  62. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  63. package/get-shit-done/bin/lib/roadmap.cjs +55 -24
  64. package/get-shit-done/bin/lib/security.cjs +382 -0
  65. package/get-shit-done/bin/lib/state.cjs +363 -53
  66. package/get-shit-done/bin/lib/template.cjs +2 -2
  67. package/get-shit-done/bin/lib/uat.cjs +282 -0
  68. package/get-shit-done/bin/lib/verify.cjs +104 -36
  69. package/get-shit-done/bin/lib/workstream.cjs +491 -0
  70. package/get-shit-done/references/checkpoints.md +12 -10
  71. package/get-shit-done/references/decimal-phase-calculation.md +2 -3
  72. package/get-shit-done/references/git-integration.md +47 -0
  73. package/get-shit-done/references/model-profile-resolution.md +2 -0
  74. package/get-shit-done/references/model-profiles.md +62 -16
  75. package/get-shit-done/references/phase-argument-parsing.md +2 -2
  76. package/get-shit-done/references/planning-config.md +3 -1
  77. package/get-shit-done/references/user-profiling.md +681 -0
  78. package/get-shit-done/references/workstream-flag.md +58 -0
  79. package/get-shit-done/templates/UAT.md +21 -3
  80. package/get-shit-done/templates/UI-SPEC.md +100 -0
  81. package/get-shit-done/templates/claude-md.md +122 -0
  82. package/get-shit-done/templates/config.json +10 -3
  83. package/get-shit-done/templates/context.md +61 -6
  84. package/get-shit-done/templates/dev-preferences.md +21 -0
  85. package/get-shit-done/templates/discussion-log.md +63 -0
  86. package/get-shit-done/templates/phase-prompt.md +46 -5
  87. package/get-shit-done/templates/project.md +2 -0
  88. package/get-shit-done/templates/state.md +2 -2
  89. package/get-shit-done/templates/user-profile.md +146 -0
  90. package/get-shit-done/workflows/add-phase.md +2 -2
  91. package/get-shit-done/workflows/add-tests.md +4 -4
  92. package/get-shit-done/workflows/add-todo.md +3 -3
  93. package/get-shit-done/workflows/audit-milestone.md +13 -5
  94. package/get-shit-done/workflows/audit-uat.md +109 -0
  95. package/get-shit-done/workflows/autonomous.md +891 -0
  96. package/get-shit-done/workflows/check-todos.md +2 -2
  97. package/get-shit-done/workflows/cleanup.md +4 -4
  98. package/get-shit-done/workflows/complete-milestone.md +9 -6
  99. package/get-shit-done/workflows/diagnose-issues.md +15 -3
  100. package/get-shit-done/workflows/discovery-phase.md +3 -3
  101. package/get-shit-done/workflows/discuss-phase-assumptions.md +653 -0
  102. package/get-shit-done/workflows/discuss-phase.md +411 -38
  103. package/get-shit-done/workflows/do.md +104 -0
  104. package/get-shit-done/workflows/execute-phase.md +405 -18
  105. package/get-shit-done/workflows/execute-plan.md +77 -12
  106. package/get-shit-done/workflows/fast.md +105 -0
  107. package/get-shit-done/workflows/forensics.md +265 -0
  108. package/get-shit-done/workflows/health.md +28 -6
  109. package/get-shit-done/workflows/help.md +124 -7
  110. package/get-shit-done/workflows/insert-phase.md +2 -2
  111. package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
  112. package/get-shit-done/workflows/list-workspaces.md +56 -0
  113. package/get-shit-done/workflows/manager.md +362 -0
  114. package/get-shit-done/workflows/map-codebase.md +74 -13
  115. package/get-shit-done/workflows/milestone-summary.md +223 -0
  116. package/get-shit-done/workflows/new-milestone.md +120 -18
  117. package/get-shit-done/workflows/new-project.md +178 -39
  118. package/get-shit-done/workflows/new-workspace.md +237 -0
  119. package/get-shit-done/workflows/next.md +97 -0
  120. package/get-shit-done/workflows/node-repair.md +92 -0
  121. package/get-shit-done/workflows/note.md +156 -0
  122. package/get-shit-done/workflows/pause-work.md +62 -8
  123. package/get-shit-done/workflows/plan-milestone-gaps.md +4 -5
  124. package/get-shit-done/workflows/plan-phase.md +332 -33
  125. package/get-shit-done/workflows/plant-seed.md +169 -0
  126. package/get-shit-done/workflows/pr-branch.md +129 -0
  127. package/get-shit-done/workflows/profile-user.md +450 -0
  128. package/get-shit-done/workflows/progress.md +145 -20
  129. package/get-shit-done/workflows/quick.md +205 -49
  130. package/get-shit-done/workflows/remove-phase.md +2 -2
  131. package/get-shit-done/workflows/remove-workspace.md +90 -0
  132. package/get-shit-done/workflows/research-phase.md +11 -3
  133. package/get-shit-done/workflows/resume-project.md +35 -16
  134. package/get-shit-done/workflows/review.md +228 -0
  135. package/get-shit-done/workflows/session-report.md +146 -0
  136. package/get-shit-done/workflows/set-profile.md +2 -2
  137. package/get-shit-done/workflows/settings.md +79 -10
  138. package/get-shit-done/workflows/ship.md +228 -0
  139. package/get-shit-done/workflows/stats.md +60 -0
  140. package/get-shit-done/workflows/transition.md +147 -20
  141. package/get-shit-done/workflows/ui-phase.md +302 -0
  142. package/get-shit-done/workflows/ui-review.md +165 -0
  143. package/get-shit-done/workflows/update.md +108 -25
  144. package/get-shit-done/workflows/validate-phase.md +15 -8
  145. package/get-shit-done/workflows/verify-phase.md +16 -5
  146. package/get-shit-done/workflows/verify-work.md +72 -18
  147. package/package.json +1 -1
  148. package/skills/gsd-audit-milestone/SKILL.md +29 -0
  149. package/skills/gsd-cleanup/SKILL.md +19 -0
  150. package/skills/gsd-complete-milestone/SKILL.md +131 -0
  151. package/skills/gsd-discuss-phase/SKILL.md +54 -0
  152. package/skills/gsd-execute-phase/SKILL.md +49 -0
  153. package/skills/gsd-plan-phase/SKILL.md +37 -0
  154. package/skills/gsd-ui-phase/SKILL.md +24 -0
  155. package/skills/gsd-ui-review/SKILL.md +24 -0
  156. package/skills/gsd-verify-work/SKILL.md +30 -0
@@ -1,11 +1,16 @@
1
- <purpose>
1
+ <objective>
2
2
  Audit Nyquist validation gaps for a completed phase. Generate missing tests. Update VALIDATION.md.
3
- </purpose>
3
+ </objective>
4
4
 
5
5
  <required_reading>
6
6
  @$HOME/.config/opencode/get-shit-done/references/ui-brand.md
7
7
  </required_reading>
8
8
 
9
+ <available_agent_types>
10
+ Valid GSD subagent types (use exact names — do not fall back to 'general'):
11
+ - gsd-nyquist-auditor — Validates verification coverage
12
+ </available_agent_types>
13
+
9
14
  <process>
10
15
 
11
16
  ## 0. Initialize
@@ -13,13 +18,14 @@ Audit Nyquist validation gaps for a completed phase. Generate missing tests. Upd
13
18
  ```bash
14
19
  INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init phase-op "${PHASE_ARG}")
15
20
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
21
+ AGENT_SKILLS_AUDITOR=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-nyquist-auditor 2>/dev/null)
16
22
  ```
17
23
 
18
24
  Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`.
19
25
 
20
26
  ```bash
21
27
  AUDITOR_MODEL=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" resolve-model gsd-nyquist-auditor --raw)
22
- NYQUIST_CFG=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config get workflow.nyquist_validation --raw)
28
+ NYQUIST_CFG=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-get workflow.nyquist_validation --raw)
23
29
  ```
24
30
 
25
31
  If `NYQUIST_CFG` is `false`: exit with "Nyquist validation is disabled. Enable via /gsd-settings."
@@ -35,7 +41,7 @@ SUMMARY_FILES=$(ls "${PHASE_DIR}"/*-SUMMARY.md 2>/dev/null)
35
41
 
36
42
  - **State A** (`VALIDATION_FILE` non-empty): Audit existing
37
43
  - **State B** (`VALIDATION_FILE` empty, `SUMMARY_FILES` non-empty): Reconstruct from artifacts
38
- - **State C** (`SUMMARY_FILES` empty): Exit — "Phase {N} not executed. Run /gsd-execute-phase {N} first."
44
+ - **State C** (`SUMMARY_FILES` empty): Exit — "Phase {N} not executed. Run /gsd-execute-phase {N} ${GSD_WS} first."
39
45
 
40
46
  ## 2. Discovery
41
47
 
@@ -90,7 +96,8 @@ task(
90
96
  "<files_to_read>{PLAN, SUMMARY, impl files, VALIDATION.md}</files_to_read>" +
91
97
  "<gaps>{gap list}</gaps>" +
92
98
  "<test_infrastructure>{framework, config, commands}</test_infrastructure>" +
93
- "<constraints>Never modify impl files. Max 3 debug iterations. Escalate impl bugs.</constraints>",
99
+ "<constraints>Never modify impl files. Max 3 debug iterations. Escalate impl bugs.</constraints>" +
100
+ "${AGENT_SKILLS_AUDITOR}",
94
101
  subagent_type="gsd-nyquist-auditor",
95
102
  model="{AUDITOR_MODEL}",
96
103
  description="Fill validation gaps for Phase {N}"
@@ -128,7 +135,7 @@ Handle return:
128
135
  git add {test_files}
129
136
  git commit -m "test(phase-${PHASE}): add Nyquist validation tests"
130
137
 
131
- node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit-docs "docs(phase-${PHASE}): add/update validation strategy"
138
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs(phase-${PHASE}): add/update validation strategy"
132
139
  ```
133
140
 
134
141
  ## 8. Results + Routing
@@ -137,14 +144,14 @@ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit-docs "docs(
137
144
  ```
138
145
  GSD > PHASE {N} IS NYQUIST-COMPLIANT
139
146
  All requirements have automated verification.
140
- ▶ Next: /gsd-audit-milestone
147
+ ▶ Next: /gsd-audit-milestone ${GSD_WS}
141
148
  ```
142
149
 
143
150
  **Partial:**
144
151
  ```
145
152
  GSD > PHASE {N} VALIDATED (PARTIAL)
146
153
  {M} automated, {K} manual-only.
147
- ▶ Retry: /gsd-validate-phase {N}
154
+ ▶ Retry: /gsd-validate-phase {N} ${GSD_WS}
148
155
  ```
149
156
 
150
157
  Display `/new` reminder.
@@ -1,8 +1,8 @@
1
- <purpose>
1
+ <objective>
2
2
  Verify phase goal achievement through goal-backward analysis. Check that the codebase delivers what the phase promised, not just that tasks completed.
3
3
 
4
4
  Executed by a verification subagent spawned from execute-phase.md.
5
- </purpose>
5
+ </objective>
6
6
 
7
7
  <core_principle>
8
8
  **task completion ≠ Goal achievement**
@@ -37,8 +37,8 @@ Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`, `has_plans`,
37
37
  Then load phase details and list plans/summaries:
38
38
  ```bash
39
39
  node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase "${phase_number}"
40
- grep -E "^| ${phase_number}" .planning/REQUIREMENTS.md 2>/dev/null
41
- ls "$phase_dir"/*-SUMMARY.md "$phase_dir"/*-PLAN.md 2>/dev/null
40
+ grep -E "^| ${phase_number}" .planning/REQUIREMENTS.md 2>/dev/null || true
41
+ ls "$phase_dir"/*-SUMMARY.md "$phase_dir"/*-PLAN.md 2>/dev/null || true
42
42
  ```
43
43
 
44
44
  Extract **phase goal** from ROADMAP.md (the outcome to verify, not tasks) and **requirements** from REQUIREMENTS.md if it exists.
@@ -126,6 +126,17 @@ WIRED = imported AND used. ORPHANED = exists but not imported/used.
126
126
  | ✓ | ✓ | ✗ | ⚠️ ORPHANED |
127
127
  | ✓ | ✗ | - | ✗ STUB |
128
128
  | ✗ | - | - | ✗ MISSING |
129
+
130
+ **Export-level spot check (WARNING severity):**
131
+
132
+ For artifacts that pass Level 3, spot-check individual exports:
133
+ - Extract key exported symbols (functions, constants, classes — skip types/interfaces)
134
+ - For each, grep for usage outside the defining file
135
+ - Flag exports with zero external call sites as "exported but unused"
136
+
137
+ This catches dead stores like `setPlan()` that exist in a wired file but are
138
+ never actually called. Report as WARNING — may indicate incomplete cross-plan
139
+ wiring or leftover code from plan revisions.
129
140
  </step>
130
141
 
131
142
  <step name="verify_wiring">
@@ -160,7 +171,7 @@ Record status and evidence for each key link.
160
171
  <step name="verify_requirements">
161
172
  If REQUIREMENTS.md exists:
162
173
  ```bash
163
- grep -E "Phase ${PHASE_NUM}" .planning/REQUIREMENTS.md 2>/dev/null
174
+ grep -E "Phase ${PHASE_NUM}" .planning/REQUIREMENTS.md 2>/dev/null || true
164
175
  ```
165
176
 
166
177
  For each requirement: parse description → identify supporting truths/artifacts → status: ✓ SATISFIED / ✗ BLOCKED / ? NEEDS HUMAN.
@@ -1,8 +1,14 @@
1
- <purpose>
1
+ <objective>
2
2
  Validate built features through conversational testing with persistent state. Creates UAT.md that tracks test progress, survives /new, and feeds gaps into /gsd-plan-phase --gaps.
3
3
 
4
4
  User tests, OpenCode records. One test at a time. Plain text responses.
5
- </purpose>
5
+ </objective>
6
+
7
+ <available_agent_types>
8
+ Valid GSD subagent types (use exact names — do not fall back to 'general'):
9
+ - gsd-planner — Creates detailed plans from phase scope
10
+ - gsd-plan-checker — Reviews plan quality before execution
11
+ </available_agent_types>
6
12
 
7
13
  <philosophy>
8
14
  **Show expected, ask if reality matches.**
@@ -26,16 +32,18 @@ If $ARGUMENTS contains a phase number, load context:
26
32
  ```bash
27
33
  INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init verify-work "${PHASE_ARG}")
28
34
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
35
+ AGENT_SKILLS_PLANNER=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-planner 2>/dev/null)
36
+ AGENT_SKILLS_CHECKER=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-checker 2>/dev/null)
29
37
  ```
30
38
 
31
- Parse JSON for: `planner_model`, `checker_model`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `has_verification`.
39
+ Parse JSON for: `planner_model`, `checker_model`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `has_verification`, `uat_path`.
32
40
  </step>
33
41
 
34
42
  <step name="check_active_session">
35
43
  **First: Check for active UAT sessions**
36
44
 
37
45
  ```bash
38
- find .planning/phases -name "*-UAT.md" -type f 2>/dev/null | head -5
46
+ (find .planning/phases -name "*-UAT.md" -type f 2>/dev/null || true) | head -5
39
47
  ```
40
48
 
41
49
  **If active sessions exist AND no $ARGUMENTS provided:**
@@ -84,7 +92,7 @@ Continue to `create_uat_file`.
84
92
  Use `phase_dir` from init (or run init if not already done).
85
93
 
86
94
  ```bash
87
- ls "$phase_dir"/*-SUMMARY.md 2>/dev/null
95
+ ls "$phase_dir"/*-SUMMARY.md 2>/dev/null || true
88
96
  ```
89
97
 
90
98
  read each SUMMARY.md to extract testable deliverables.
@@ -186,23 +194,23 @@ Proceed to `present_test`.
186
194
  <step name="present_test">
187
195
  **Present current test to user:**
188
196
 
189
- read Current Test section from UAT file.
190
-
191
- Display using checkpoint box format:
197
+ Render the checkpoint from the structured UAT file instead of composing it freehand:
192
198
 
199
+ ```bash
200
+ CHECKPOINT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" uat render-checkpoint --file "$uat_path" --raw)
201
+ if [[ "$CHECKPOINT" == @file:* ]]; then CHECKPOINT=$(cat "${CHECKPOINT#@file:}"); fi
193
202
  ```
194
- ╔══════════════════════════════════════════════════════════════╗
195
- ║ CHECKPOINT: Verification Required ║
196
- ╚══════════════════════════════════════════════════════════════╝
197
203
 
198
- **Test {number}: {name}**
204
+ Display the returned checkpoint EXACTLY as-is:
199
205
 
200
- {expected}
201
-
202
- ──────────────────────────────────────────────────────────────
203
- → Type "pass" or describe what's wrong
204
- ──────────────────────────────────────────────────────────────
205
206
  ```
207
+ {CHECKPOINT}
208
+ ```
209
+
210
+ **Critical response hygiene:**
211
+ - Your entire response MUST equal `{CHECKPOINT}` byte-for-byte.
212
+ - Do NOT add commentary before or after the block.
213
+ - If you notice protocol/meta markers such as `to=all:`, role-routing text, XML system tags, hidden instruction markers, ad copy, or any unrelated suffix, discard the draft and output `{CHECKPOINT}` only.
206
214
 
207
215
  Wait for user response (plain text, no question).
208
216
  </step>
@@ -231,6 +239,29 @@ result: skipped
231
239
  reason: [user's reason if provided]
232
240
  ```
233
241
 
242
+ **If response indicates blocked:**
243
+ - "blocked", "can't test - server not running", "need physical device", "need release build"
244
+ - Or any response containing: "server", "blocked", "not running", "physical device", "release build"
245
+
246
+ Infer blocked_by tag from response:
247
+ - Contains: server, not running, gateway, API → `server`
248
+ - Contains: physical, device, hardware, real phone → `physical-device`
249
+ - Contains: release, preview, build, EAS → `release-build`
250
+ - Contains: stripe, twilio, third-party, configure → `third-party`
251
+ - Contains: depends on, prior phase, prerequisite → `prior-phase`
252
+ - Default: `other`
253
+
254
+ Update Tests section:
255
+ ```
256
+ ### {N}. {name}
257
+ expected: {expected}
258
+ result: blocked
259
+ blocked_by: {inferred tag}
260
+ reason: "{verbatim user response}"
261
+ ```
262
+
263
+ Note: Blocked tests do NOT go into the Gaps section (they aren't code issues — they're prerequisite gates).
264
+
234
265
  **If response is anything else:**
235
266
  - Treat as issue description
236
267
 
@@ -293,8 +324,24 @@ Proceed to `present_test`.
293
324
  <step name="complete_session">
294
325
  **Complete testing and commit:**
295
326
 
327
+ **Determine final status:**
328
+
329
+ Count results:
330
+ - `pending_count`: tests with `result: [pending]`
331
+ - `blocked_count`: tests with `result: blocked`
332
+ - `skipped_no_reason`: tests with `result: skipped` and no `reason` field
333
+
334
+ ```
335
+ if pending_count > 0 OR blocked_count > 0 OR skipped_no_reason > 0:
336
+ status: partial
337
+ # Session ended but not all tests resolved
338
+ else:
339
+ status: complete
340
+ # All tests have a definitive result (pass, issue, or skipped-with-reason)
341
+ ```
342
+
296
343
  Update frontmatter:
297
- - status: complete
344
+ - status: {computed status}
298
345
  - updated: [now]
299
346
 
300
347
  Clear Current Test section:
@@ -333,6 +380,7 @@ All tests passed. Ready to continue.
333
380
 
334
381
  - `/gsd-plan-phase {next}` — Plan next phase
335
382
  - `/gsd-execute-phase {next}` — Execute next phase
383
+ - `/gsd-ui-review {phase}` — visual quality audit (if frontend files were modified)
336
384
  ```
337
385
  </step>
338
386
 
@@ -385,6 +433,8 @@ task(
385
433
  - .planning/ROADMAP.md (Roadmap)
386
434
  </files_to_read>
387
435
 
436
+ ${AGENT_SKILLS_PLANNER}
437
+
388
438
  </planning_context>
389
439
 
390
440
  <downstream_consumer>
@@ -431,6 +481,8 @@ task(
431
481
  - {phase_dir}/*-PLAN.md (Plans to verify)
432
482
  </files_to_read>
433
483
 
484
+ ${AGENT_SKILLS_CHECKER}
485
+
434
486
  </verification_context>
435
487
 
436
488
  <expected_output>
@@ -471,6 +523,8 @@ task(
471
523
  - {phase_dir}/*-PLAN.md (Existing plans)
472
524
  </files_to_read>
473
525
 
526
+ ${AGENT_SKILLS_PLANNER}
527
+
474
528
  **Checker issues:**
475
529
  {structured_issues_from_checker}
476
530
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-opencode",
3
- "version": "1.22.1",
3
+ "version": "1.30.0",
4
4
  "description": "GSD-OpenCode distribution manager - install, verify, and maintain your GSD-OpenCode installation",
5
5
  "type": "module",
6
6
  "main": "bin/gsd.js",
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: gsd-audit-milestone
3
+ description: Implementation of gsd-audit-milestone command
4
+ ---
5
+
6
+ <objective>
7
+ Verify milestone achieved its definition of done. Check requirements coverage, cross-phase integration, and end-to-end flows.
8
+
9
+ **This command IS the orchestrator.** Reads existing VERIFICATION.md files (phases already verified during execute-phase), aggregates tech debt and deferred gaps, then spawns integration checker for cross-phase wiring.
10
+ </objective>
11
+
12
+ <execution_context>
13
+ @$HOME/.config/opencode/get-shit-done/workflows/audit-milestone.md
14
+ </execution_context>
15
+
16
+ <context>
17
+ Version: $ARGUMENTS (optional — defaults to current milestone)
18
+
19
+ Core planning files are resolved in-workflow (`init milestone-op`) and loaded only as needed.
20
+
21
+ **Completed Work:**
22
+ glob: .planning/phases/*/*-SUMMARY.md
23
+ glob: .planning/phases/*/*-VERIFICATION.md
24
+ </context>
25
+
26
+ <process>
27
+ Execute the audit-milestone workflow from @$HOME/.config/opencode/get-shit-done/workflows/audit-milestone.md end-to-end.
28
+ Preserve all workflow gates (scope determination, verification reading, integration check, requirements coverage, routing).
29
+ </process>
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: gsd-cleanup
3
+ description: Implementation of gsd-cleanup command
4
+ ---
5
+
6
+ <objective>
7
+ Archive phase directories from completed milestones into `.planning/milestones/v{X.Y}-phases/`.
8
+
9
+ Use when `.planning/phases/` has accumulated directories from past milestones.
10
+ </objective>
11
+
12
+ <execution_context>
13
+ @$HOME/.config/opencode/get-shit-done/workflows/cleanup.md
14
+ </execution_context>
15
+
16
+ <process>
17
+ Follow the cleanup workflow at @$HOME/.config/opencode/get-shit-done/workflows/cleanup.md.
18
+ Identify completed milestones, show a dry-run summary, and archive on confirmation.
19
+ </process>
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: gsd-complete-milestone
3
+ description: Implementation of gsd-complete-milestone command
4
+ ---
5
+
6
+
7
+ <objective>
8
+ Mark milestone {{version}} complete, archive to milestones/, and update ROADMAP.md and REQUIREMENTS.md.
9
+
10
+ Purpose: Create historical record of shipped version, archive milestone artifacts (roadmap + requirements), and prepare for next milestone.
11
+ Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tagged.
12
+ </objective>
13
+
14
+ <execution_context>
15
+ **Load these files NOW (before proceeding):**
16
+
17
+ - @$HOME/.config/opencode/get-shit-done/workflows/complete-milestone.md (main workflow)
18
+ - @$HOME/.config/opencode/get-shit-done/templates/milestone-archive.md (archive template)
19
+ </execution_context>
20
+
21
+ <context>
22
+ **Project files:**
23
+ - `.planning/ROADMAP.md`
24
+ - `.planning/REQUIREMENTS.md`
25
+ - `.planning/STATE.md`
26
+ - `.planning/PROJECT.md`
27
+
28
+ **User input:**
29
+
30
+ - Version: {{version}} (e.g., "1.0", "1.1", "2.0")
31
+ </context>
32
+
33
+ <process>
34
+
35
+ **Follow complete-milestone.md workflow:**
36
+
37
+ 0. **Check for audit:**
38
+
39
+ - Look for `.planning/v{{version}}-MILESTONE-AUDIT.md`
40
+ - If missing or stale: recommend `/gsd-audit-milestone` first
41
+ - If audit status is `gaps_found`: recommend `/gsd-plan-milestone-gaps` first
42
+ - If audit status is `passed`: proceed to step 1
43
+
44
+ ```markdown
45
+ ## Pre-flight Check
46
+
47
+ {If no v{{version}}-MILESTONE-AUDIT.md:}
48
+ ⚠ No milestone audit found. Run `/gsd-audit-milestone` first to verify
49
+ requirements coverage, cross-phase integration, and E2E flows.
50
+
51
+ {If audit has gaps:}
52
+ ⚠ Milestone audit found gaps. Run `/gsd-plan-milestone-gaps` to create
53
+ phases that close the gaps, or proceed anyway to accept as tech debt.
54
+
55
+ {If audit passed:}
56
+ ✓ Milestone audit passed. Proceeding with completion.
57
+ ```
58
+
59
+ 1. **Verify readiness:**
60
+
61
+ - Check all phases in milestone have completed plans (SUMMARY.md exists)
62
+ - Present milestone scope and stats
63
+ - Wait for confirmation
64
+
65
+ 2. **Gather stats:**
66
+
67
+ - Count phases, plans, tasks
68
+ - Calculate git range, file changes, LOC
69
+ - Extract timeline from git log
70
+ - Present summary, confirm
71
+
72
+ 3. **Extract accomplishments:**
73
+
74
+ - read all phase SUMMARY.md files in milestone range
75
+ - Extract 4-6 key accomplishments
76
+ - Present for approval
77
+
78
+ 4. **Archive milestone:**
79
+
80
+ - Create `.planning/milestones/v{{version}}-ROADMAP.md`
81
+ - Extract full phase details from ROADMAP.md
82
+ - Fill milestone-archive.md template
83
+ - Update ROADMAP.md to one-line summary with link
84
+
85
+ 5. **Archive requirements:**
86
+
87
+ - Create `.planning/milestones/v{{version}}-REQUIREMENTS.md`
88
+ - Mark all v1 requirements as complete (checkboxes checked)
89
+ - Note requirement outcomes (validated, adjusted, dropped)
90
+ - Delete `.planning/REQUIREMENTS.md` (fresh one created for next milestone)
91
+
92
+ 6. **Update PROJECT.md:**
93
+
94
+ - Add "Current State" section with shipped version
95
+ - Add "Next Milestone Goals" section
96
+ - Archive previous content in `<details>` (if v1.1+)
97
+
98
+ 7. **Commit and tag:**
99
+
100
+ - Stage: MILESTONES.md, PROJECT.md, ROADMAP.md, STATE.md, archive files
101
+ - Commit: `chore: archive v{{version}} milestone`
102
+ - Tag: `git tag -a v{{version}} -m "[milestone summary]"`
103
+ - Ask about pushing tag
104
+
105
+ 8. **Offer next steps:**
106
+ - `/gsd-new-milestone` — start next milestone (questioning → research → requirements → roadmap)
107
+
108
+ </process>
109
+
110
+ <success_criteria>
111
+
112
+ - Milestone archived to `.planning/milestones/v{{version}}-ROADMAP.md`
113
+ - Requirements archived to `.planning/milestones/v{{version}}-REQUIREMENTS.md`
114
+ - `.planning/REQUIREMENTS.md` deleted (fresh for next milestone)
115
+ - ROADMAP.md collapsed to one-line entry
116
+ - PROJECT.md updated with current state
117
+ - Git tag v{{version}} created
118
+ - Commit successful
119
+ - User knows next steps (including need for fresh requirements)
120
+ </success_criteria>
121
+
122
+ <critical_rules>
123
+
124
+ - **Load workflow first:** read complete-milestone.md before executing
125
+ - **Verify completion:** All phases must have SUMMARY.md files
126
+ - **User confirmation:** Wait for approval at verification gates
127
+ - **Archive before deleting:** Always create archive files before updating/deleting originals
128
+ - **One-line summary:** Collapsed milestone in ROADMAP.md should be single line with link
129
+ - **Context efficiency:** Archive keeps ROADMAP.md and REQUIREMENTS.md constant size per milestone
130
+ - **Fresh requirements:** Next milestone starts with `/gsd-new-milestone` which includes requirements definition
131
+ </critical_rules>
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: gsd-discuss-phase
3
+ description: Implementation of gsd-discuss-phase command
4
+ ---
5
+
6
+
7
+ <objective>
8
+ Extract implementation decisions that downstream agents need — researcher and planner will use CONTEXT.md to know what to investigate and what choices are locked.
9
+
10
+ **How it works:**
11
+ 1. Load prior context (PROJECT.md, REQUIREMENTS.md, STATE.md, prior CONTEXT.md files)
12
+ 2. Scout codebase for reusable assets and patterns
13
+ 3. Analyze phase — skip gray areas already decided in prior phases
14
+ 4. Present remaining gray areas — user selects which to discuss
15
+ 5. Deep-dive each selected area until satisfied
16
+ 6. Create CONTEXT.md with decisions that guide research and planning
17
+
18
+ **Output:** `{phase_num}-CONTEXT.md` — decisions clear enough that downstream agents can act without asking the user again
19
+ </objective>
20
+
21
+ <execution_context>
22
+ @$HOME/.config/opencode/get-shit-done/workflows/discuss-phase.md
23
+ @$HOME/.config/opencode/get-shit-done/workflows/discuss-phase-assumptions.md
24
+ @$HOME/.config/opencode/get-shit-done/templates/context.md
25
+ </execution_context>
26
+
27
+ <context>
28
+ Phase number: $ARGUMENTS (required)
29
+
30
+ Context files are resolved in-workflow using `init phase-op` and roadmap/state tool calls.
31
+ </context>
32
+
33
+ <process>
34
+ **Mode routing:**
35
+ ```bash
36
+ DISCUSS_MODE=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-get workflow.discuss_mode 2>/dev/null || echo "discuss")
37
+ ```
38
+
39
+ If `DISCUSS_MODE` is `"assumptions"`: read and execute @$HOME/.config/opencode/get-shit-done/workflows/discuss-phase-assumptions.md end-to-end.
40
+
41
+ If `DISCUSS_MODE` is `"discuss"` (or unset, or any other value): read and execute @$HOME/.config/opencode/get-shit-done/workflows/discuss-phase.md end-to-end.
42
+
43
+ **MANDATORY:** The execution_context files listed above ARE the instructions. read the workflow file BEFORE taking any action. The objective and success_criteria sections in this command file are summaries — the workflow file contains the complete step-by-step process with all required behaviors, config checks, and interaction patterns. Do not improvise from the summary.
44
+ </process>
45
+
46
+ <success_criteria>
47
+ - Prior context loaded and applied (no re-asking decided questions)
48
+ - Gray areas identified through intelligent analysis
49
+ - User chose which areas to discuss
50
+ - Each selected area explored until satisfied
51
+ - Scope creep redirected to deferred ideas
52
+ - CONTEXT.md captures decisions, not vague vision
53
+ - User knows next steps
54
+ </success_criteria>
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: gsd-execute-phase
3
+ description: Implementation of gsd-execute-phase command
4
+ ---
5
+
6
+ <objective>
7
+ Execute all plans in a phase using wave-based parallel execution.
8
+
9
+ Orchestrator stays lean: discover plans, analyze dependencies, group into waves, spawn subagents, collect results. Each subagent loads the full execute-plan context and handles its own plan.
10
+
11
+ Optional wave filter:
12
+ - `--wave N` executes only Wave `N` for pacing, quota management, or staged rollout
13
+ - phase verification/completion still only happens when no incomplete plans remain after the selected wave finishes
14
+
15
+ Flag handling rule:
16
+ - The optional flags documented below are available behaviors, not implied active behaviors
17
+ - A flag is active only when its literal token appears in `$ARGUMENTS`
18
+ - If a documented flag is absent from `$ARGUMENTS`, treat it as inactive
19
+
20
+ Context budget: ~15% orchestrator, 100% fresh per subagent.
21
+ </objective>
22
+
23
+ <execution_context>
24
+ @$HOME/.config/opencode/get-shit-done/workflows/execute-phase.md
25
+ @$HOME/.config/opencode/get-shit-done/references/ui-brand.md
26
+ </execution_context>
27
+
28
+ <context>
29
+ Phase: $ARGUMENTS
30
+
31
+ **Available optional flags (documentation only — not automatically active):**
32
+ - `--wave N` — Execute only Wave `N` in the phase. Use when you want to pace execution or stay inside usage limits.
33
+ - `--gaps-only` — Execute only gap closure plans (plans with `gap_closure: true` in frontmatter). Use after verify-work creates fix plans.
34
+ - `--interactive` — Execute plans sequentially inline (no subagents) with user checkpoints between tasks. Lower token usage, pair-programming style. Best for small phases, bug fixes, and verification gaps.
35
+
36
+ **Active flags must be derived from `$ARGUMENTS`:**
37
+ - `--wave N` is active only if the literal `--wave` token is present in `$ARGUMENTS`
38
+ - `--gaps-only` is active only if the literal `--gaps-only` token is present in `$ARGUMENTS`
39
+ - `--interactive` is active only if the literal `--interactive` token is present in `$ARGUMENTS`
40
+ - If none of these tokens appear, run the standard full-phase execution flow with no flag-specific filtering
41
+ - Do not infer that a flag is active just because it is documented in this prompt
42
+
43
+ Context files are resolved inside the workflow via `gsd-tools init execute-phase` and per-subagent `<files_to_read>` blocks.
44
+ </context>
45
+
46
+ <process>
47
+ Execute the execute-phase workflow from @$HOME/.config/opencode/get-shit-done/workflows/execute-phase.md end-to-end.
48
+ Preserve all workflow gates (wave execution, checkpoint handling, verification, state updates, routing).
49
+ </process>
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: gsd-plan-phase
3
+ description: Implementation of gsd-plan-phase command
4
+ ---
5
+
6
+ <objective>
7
+ Create executable phase prompts (PLAN.md files) for a roadmap phase with integrated research and verification.
8
+
9
+ **Default flow:** Research (if needed) → Plan → Verify → Done
10
+
11
+ **Orchestrator role:** Parse arguments, validate phase, research domain (unless skipped), spawn gsd-planner, verify with gsd-plan-checker, iterate until pass or max iterations, present results.
12
+ </objective>
13
+
14
+ <execution_context>
15
+ @$HOME/.config/opencode/get-shit-done/workflows/plan-phase.md
16
+ @$HOME/.config/opencode/get-shit-done/references/ui-brand.md
17
+ </execution_context>
18
+
19
+ <context>
20
+ Phase number: $ARGUMENTS (optional — auto-detects next unplanned phase if omitted)
21
+
22
+ **Flags:**
23
+ - `--research` — Force re-research even if RESEARCH.md exists
24
+ - `--skip-research` — Skip research, go straight to planning
25
+ - `--gaps` — Gap closure mode (reads VERIFICATION.md, skips research)
26
+ - `--skip-verify` — Skip verification loop
27
+ - `--prd <file>` — Use a PRD/acceptance criteria file instead of discuss-phase. Parses requirements into CONTEXT.md automatically. Skips discuss-phase entirely.
28
+ - `--reviews` — Replan incorporating cross-AI review feedback from REVIEWS.md (produced by `/gsd-review`)
29
+ - `--text` — Use plain-text numbered lists instead of TUI menus (required for `/rc` remote sessions)
30
+
31
+ Normalize phase input in step 2 before any directory lookups.
32
+ </context>
33
+
34
+ <process>
35
+ Execute the plan-phase workflow from @$HOME/.config/opencode/get-shit-done/workflows/plan-phase.md end-to-end.
36
+ Preserve all workflow gates (validation, research, planning, verification loop, routing).
37
+ </process>
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: gsd-ui-phase
3
+ description: Implementation of gsd-ui-phase command
4
+ ---
5
+
6
+ <objective>
7
+ Create a UI design contract (UI-SPEC.md) for a frontend phase.
8
+ Orchestrates gsd-ui-researcher and gsd-ui-checker.
9
+ Flow: Validate → Research UI → Verify UI-SPEC → Done
10
+ </objective>
11
+
12
+ <execution_context>
13
+ @$HOME/.config/opencode/get-shit-done/workflows/ui-phase.md
14
+ @$HOME/.config/opencode/get-shit-done/references/ui-brand.md
15
+ </execution_context>
16
+
17
+ <context>
18
+ Phase number: $ARGUMENTS — optional, auto-detects next unplanned phase if omitted.
19
+ </context>
20
+
21
+ <process>
22
+ Execute @$HOME/.config/opencode/get-shit-done/workflows/ui-phase.md end-to-end.
23
+ Preserve all workflow gates.
24
+ </process>