gsd-opencode 1.22.0 → 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 (157) 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 +1 -2
  4. package/agents/gsd-debugger.md +119 -2
  5. package/agents/gsd-executor.md +25 -4
  6. package/agents/gsd-integration-checker.md +1 -2
  7. package/agents/gsd-nyquist-auditor.md +1 -2
  8. package/agents/gsd-phase-researcher.md +151 -5
  9. package/agents/gsd-plan-checker.md +71 -5
  10. package/agents/gsd-planner.md +50 -4
  11. package/agents/gsd-project-researcher.md +29 -3
  12. package/agents/gsd-research-synthesizer.md +1 -2
  13. package/agents/gsd-roadmapper.md +30 -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 +124 -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 +10 -6
  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-resume-work.md +1 -1
  43. package/commands/gsd/gsd-review-backlog.md +61 -0
  44. package/commands/gsd/gsd-review.md +37 -0
  45. package/commands/gsd/gsd-session-report.md +19 -0
  46. package/commands/gsd/gsd-set-profile.md +24 -23
  47. package/commands/gsd/gsd-ship.md +23 -0
  48. package/commands/gsd/gsd-stats.md +18 -0
  49. package/commands/gsd/gsd-thread.md +127 -0
  50. package/commands/gsd/gsd-ui-phase.md +34 -0
  51. package/commands/gsd/gsd-ui-review.md +32 -0
  52. package/commands/gsd/gsd-workstreams.md +66 -0
  53. package/get-shit-done/bin/gsd-tools.cjs +410 -84
  54. package/get-shit-done/bin/lib/commands.cjs +429 -18
  55. package/get-shit-done/bin/lib/config.cjs +318 -45
  56. package/get-shit-done/bin/lib/core.cjs +822 -84
  57. package/get-shit-done/bin/lib/frontmatter.cjs +78 -41
  58. package/get-shit-done/bin/lib/init.cjs +836 -104
  59. package/get-shit-done/bin/lib/milestone.cjs +44 -33
  60. package/get-shit-done/bin/lib/model-profiles.cjs +68 -0
  61. package/get-shit-done/bin/lib/phase.cjs +293 -306
  62. package/get-shit-done/bin/lib/profile-output.cjs +952 -0
  63. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  64. package/get-shit-done/bin/lib/roadmap.cjs +55 -24
  65. package/get-shit-done/bin/lib/security.cjs +382 -0
  66. package/get-shit-done/bin/lib/state.cjs +363 -53
  67. package/get-shit-done/bin/lib/template.cjs +2 -2
  68. package/get-shit-done/bin/lib/uat.cjs +282 -0
  69. package/get-shit-done/bin/lib/verify.cjs +104 -36
  70. package/get-shit-done/bin/lib/workstream.cjs +491 -0
  71. package/get-shit-done/references/checkpoints.md +12 -10
  72. package/get-shit-done/references/decimal-phase-calculation.md +2 -3
  73. package/get-shit-done/references/git-integration.md +47 -0
  74. package/get-shit-done/references/model-profile-resolution.md +2 -0
  75. package/get-shit-done/references/model-profiles.md +62 -16
  76. package/get-shit-done/references/phase-argument-parsing.md +2 -2
  77. package/get-shit-done/references/planning-config.md +3 -1
  78. package/get-shit-done/references/user-profiling.md +681 -0
  79. package/get-shit-done/references/workstream-flag.md +58 -0
  80. package/get-shit-done/templates/UAT.md +21 -3
  81. package/get-shit-done/templates/UI-SPEC.md +100 -0
  82. package/get-shit-done/templates/claude-md.md +122 -0
  83. package/get-shit-done/templates/config.json +10 -3
  84. package/get-shit-done/templates/context.md +61 -6
  85. package/get-shit-done/templates/dev-preferences.md +21 -0
  86. package/get-shit-done/templates/discussion-log.md +63 -0
  87. package/get-shit-done/templates/phase-prompt.md +46 -5
  88. package/get-shit-done/templates/project.md +2 -0
  89. package/get-shit-done/templates/state.md +2 -2
  90. package/get-shit-done/templates/user-profile.md +146 -0
  91. package/get-shit-done/workflows/add-phase.md +2 -2
  92. package/get-shit-done/workflows/add-tests.md +4 -4
  93. package/get-shit-done/workflows/add-todo.md +3 -3
  94. package/get-shit-done/workflows/audit-milestone.md +13 -5
  95. package/get-shit-done/workflows/audit-uat.md +109 -0
  96. package/get-shit-done/workflows/autonomous.md +891 -0
  97. package/get-shit-done/workflows/check-todos.md +2 -2
  98. package/get-shit-done/workflows/cleanup.md +4 -4
  99. package/get-shit-done/workflows/complete-milestone.md +9 -6
  100. package/get-shit-done/workflows/diagnose-issues.md +15 -3
  101. package/get-shit-done/workflows/discovery-phase.md +2 -2
  102. package/get-shit-done/workflows/discuss-phase-assumptions.md +653 -0
  103. package/get-shit-done/workflows/discuss-phase.md +411 -38
  104. package/get-shit-done/workflows/do.md +104 -0
  105. package/get-shit-done/workflows/execute-phase.md +405 -18
  106. package/get-shit-done/workflows/execute-plan.md +77 -12
  107. package/get-shit-done/workflows/fast.md +105 -0
  108. package/get-shit-done/workflows/forensics.md +265 -0
  109. package/get-shit-done/workflows/health.md +28 -6
  110. package/get-shit-done/workflows/help.md +124 -7
  111. package/get-shit-done/workflows/insert-phase.md +2 -2
  112. package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
  113. package/get-shit-done/workflows/list-workspaces.md +56 -0
  114. package/get-shit-done/workflows/manager.md +362 -0
  115. package/get-shit-done/workflows/map-codebase.md +74 -13
  116. package/get-shit-done/workflows/milestone-summary.md +223 -0
  117. package/get-shit-done/workflows/new-milestone.md +120 -18
  118. package/get-shit-done/workflows/new-project.md +178 -39
  119. package/get-shit-done/workflows/new-workspace.md +237 -0
  120. package/get-shit-done/workflows/next.md +97 -0
  121. package/get-shit-done/workflows/node-repair.md +92 -0
  122. package/get-shit-done/workflows/note.md +156 -0
  123. package/get-shit-done/workflows/pause-work.md +62 -8
  124. package/get-shit-done/workflows/plan-milestone-gaps.md +4 -5
  125. package/get-shit-done/workflows/plan-phase.md +332 -33
  126. package/get-shit-done/workflows/plant-seed.md +169 -0
  127. package/get-shit-done/workflows/pr-branch.md +129 -0
  128. package/get-shit-done/workflows/profile-user.md +450 -0
  129. package/get-shit-done/workflows/progress.md +145 -20
  130. package/get-shit-done/workflows/quick.md +205 -49
  131. package/get-shit-done/workflows/remove-phase.md +2 -2
  132. package/get-shit-done/workflows/remove-workspace.md +90 -0
  133. package/get-shit-done/workflows/research-phase.md +11 -3
  134. package/get-shit-done/workflows/resume-project.md +35 -16
  135. package/get-shit-done/workflows/review.md +228 -0
  136. package/get-shit-done/workflows/session-report.md +146 -0
  137. package/get-shit-done/workflows/set-profile.md +2 -2
  138. package/get-shit-done/workflows/settings.md +80 -11
  139. package/get-shit-done/workflows/ship.md +228 -0
  140. package/get-shit-done/workflows/stats.md +60 -0
  141. package/get-shit-done/workflows/transition.md +147 -20
  142. package/get-shit-done/workflows/ui-phase.md +302 -0
  143. package/get-shit-done/workflows/ui-review.md +165 -0
  144. package/get-shit-done/workflows/update.md +108 -25
  145. package/get-shit-done/workflows/validate-phase.md +15 -8
  146. package/get-shit-done/workflows/verify-phase.md +16 -5
  147. package/get-shit-done/workflows/verify-work.md +72 -18
  148. package/package.json +1 -1
  149. package/skills/gsd-audit-milestone/SKILL.md +29 -0
  150. package/skills/gsd-cleanup/SKILL.md +19 -0
  151. package/skills/gsd-complete-milestone/SKILL.md +131 -0
  152. package/skills/gsd-discuss-phase/SKILL.md +54 -0
  153. package/skills/gsd-execute-phase/SKILL.md +49 -0
  154. package/skills/gsd-plan-phase/SKILL.md +37 -0
  155. package/skills/gsd-ui-phase/SKILL.md +24 -0
  156. package/skills/gsd-ui-review/SKILL.md +24 -0
  157. package/skills/gsd-verify-work/SKILL.md +30 -0
@@ -1,6 +1,6 @@
1
- <purpose>
1
+ <objective>
2
2
  Display the complete GSD command reference. Output ONLY the reference content. Do NOT add project-specific analysis, git status, next-step suggestions, or any commentary beyond the reference.
3
- </purpose>
3
+ </objective>
4
4
 
5
5
  <reference>
6
6
  # GSD Command Reference
@@ -66,8 +66,11 @@ Help articulate your vision for a phase before planning.
66
66
  - Captures how you imagine this phase working
67
67
  - Creates CONTEXT.md with your vision, essentials, and boundaries
68
68
  - Use when you have ideas about how something should look/feel
69
+ - Optional `--batch` asks 2-5 related questions at a time instead of one-by-one
69
70
 
70
71
  Usage: `/gsd-discuss-phase 2`
72
+ Usage: `/gsd-discuss-phase 2 --batch`
73
+ Usage: `/gsd-discuss-phase 2 --batch=3`
71
74
 
72
75
  **`/gsd-research-phase <number>`**
73
76
  Comprehensive ecosystem research for niche/complex domains.
@@ -104,30 +107,67 @@ Result: Creates `.planning/phases/01-foundation/01-01-PLAN.md`
104
107
  ### Execution
105
108
 
106
109
  **`/gsd-execute-phase <phase-number>`**
107
- Execute all plans in a phase.
110
+ Execute all plans in a phase, or run a specific wave.
108
111
 
109
112
  - Groups plans by wave (from frontmatter), executes waves sequentially
110
113
  - Plans within each wave run in parallel via task tool
114
+ - Optional `--wave N` flag executes only Wave `N` and stops unless the phase is now fully complete
111
115
  - Verifies phase goal after all plans complete
112
116
  - Updates REQUIREMENTS.md, ROADMAP.md, STATE.md
113
117
 
114
118
  Usage: `/gsd-execute-phase 5`
119
+ Usage: `/gsd-execute-phase 5 --wave 2`
120
+
121
+ ### Smart Router
122
+
123
+ **`/gsd-do <description>`**
124
+ Route freeform text to the right GSD command automatically.
125
+
126
+ - Analyzes natural language input to find the best matching GSD command
127
+ - Acts as a dispatcher — never does the work itself
128
+ - Resolves ambiguity by asking you to pick between top matches
129
+ - Use when you know what you want but don't know which `/gsd-*` command to run
130
+
131
+ Usage: `/gsd-do fix the login button`
132
+ Usage: `/gsd-do refactor the auth system`
133
+ Usage: `/gsd-do I want to start a new milestone`
115
134
 
116
135
  ### Quick Mode
117
136
 
118
- **`/gsd-quick`**
137
+ **`/gsd-quick [--full] [--discuss] [--research]`**
119
138
  Execute small, ad-hoc tasks with GSD guarantees but skip optional agents.
120
139
 
121
140
  Quick mode uses the same system with a shorter path:
122
- - Spawns planner + executor (skips researcher, checker, verifier)
141
+ - Spawns planner + executor (skips researcher, checker, verifier by default)
123
142
  - Quick tasks live in `.planning/quick/` separate from planned phases
124
143
  - Updates STATE.md tracking (not ROADMAP.md)
125
144
 
126
- Use when you know exactly what to do and the task is small enough to not need research or verification.
145
+ Flags enable additional quality steps:
146
+ - `--discuss` — Lightweight discussion to surface gray areas before planning
147
+ - `--research` — Focused research agent investigates approaches before planning
148
+ - `--full` — Adds plan-checking (max 2 iterations) and post-execution verification
149
+
150
+ Flags are composable: `--discuss --research --full` gives the complete quality pipeline for a single task.
127
151
 
128
152
  Usage: `/gsd-quick`
153
+ Usage: `/gsd-quick --research --full`
129
154
  Result: Creates `.planning/quick/NNN-slug/PLAN.md`, `.planning/quick/NNN-slug/SUMMARY.md`
130
155
 
156
+ ---
157
+
158
+ **`/gsd-fast [description]`**
159
+ Execute a trivial task inline — no subagents, no planning files, no overhead.
160
+
161
+ For tasks too small to justify planning: typo fixes, config changes, forgotten commits, simple additions. Runs in the current context, makes the change, commits, and logs to STATE.md.
162
+
163
+ - No PLAN.md or SUMMARY.md created
164
+ - No subagent spawned (runs inline)
165
+ - ≤ 3 file edits — redirects to `/gsd-quick` if task is non-trivial
166
+ - Atomic commit with conventional message
167
+
168
+ Usage: `/gsd-fast "fix the typo in README"`
169
+ Usage: `/gsd-fast "add .env to gitignore"`
170
+
131
171
  ### Roadmap Management
132
172
 
133
173
  **`/gsd-add-phase <description>`**
@@ -169,10 +209,12 @@ Start a new milestone through unified flow.
169
209
  - Optional domain research (spawns 4 parallel researcher agents)
170
210
  - Requirements definition with scoping
171
211
  - Roadmap creation with phase breakdown
212
+ - Optional `--reset-phase-numbers` flag restarts numbering at Phase 1 and archives old phase dirs first for safety
172
213
 
173
214
  Mirrors `/gsd-new-project` flow for brownfield projects (existing PROJECT.md).
174
215
 
175
216
  Usage: `/gsd-new-milestone "v2.0 Features"`
217
+ Usage: `/gsd-new-milestone --reset-phase-numbers "v2.0 Features"`
176
218
 
177
219
  **`/gsd-complete-milestone <version>`**
178
220
  Archive completed milestone and prepare for next version.
@@ -232,6 +274,21 @@ Systematic debugging with persistent state across context resets.
232
274
  Usage: `/gsd-debug "login button doesn't work"`
233
275
  Usage: `/gsd-debug` (resume active session)
234
276
 
277
+ ### Quick Notes
278
+
279
+ **`/gsd-note <text>`**
280
+ Zero-friction idea capture — one command, instant save, no questions.
281
+
282
+ - Saves timestamped note to `.planning/notes/` (or `$HOME/.config/opencode/notes/` globally)
283
+ - Three subcommands: append (default), list, promote
284
+ - Promote converts a note into a structured todo
285
+ - Works without a project (falls back to global scope)
286
+
287
+ Usage: `/gsd-note refactor the hook system`
288
+ Usage: `/gsd-note list`
289
+ Usage: `/gsd-note promote 3`
290
+ Usage: `/gsd-note --global cross-project idea`
291
+
235
292
  ### Todo Management
236
293
 
237
294
  **`/gsd-add-todo [description]`**
@@ -270,6 +327,65 @@ Validate built features through conversational UAT.
270
327
 
271
328
  Usage: `/gsd-verify-work 3`
272
329
 
330
+ ### Ship Work
331
+
332
+ **`/gsd-ship [phase]`**
333
+ Create a PR from completed phase work with an auto-generated body.
334
+
335
+ - Pushes branch to remote
336
+ - Creates PR with summary from SUMMARY.md, VERIFICATION.md, REQUIREMENTS.md
337
+ - Optionally requests code review
338
+ - Updates STATE.md with shipping status
339
+
340
+ Prerequisites: Phase verified, `gh` CLI installed and authenticated.
341
+
342
+ Usage: `/gsd-ship 4` or `/gsd-ship 4 --draft`
343
+
344
+ ---
345
+
346
+ **`/gsd-review --phase N [--gemini] [--OpenCode] [--codex] [--all]`**
347
+ Cross-AI peer review — invoke external AI CLIs to independently review phase plans.
348
+
349
+ - Detects available CLIs (gemini, OpenCode, codex)
350
+ - Each CLI reviews plans independently with the same structured prompt
351
+ - Produces REVIEWS.md with per-reviewer feedback and consensus summary
352
+ - Feed reviews back into planning: `/gsd-plan-phase N --reviews`
353
+
354
+ Usage: `/gsd-review --phase 3 --all`
355
+
356
+ ---
357
+
358
+ **`/gsd-pr-branch [target]`**
359
+ Create a clean branch for pull requests by filtering out .planning/ commits.
360
+
361
+ - Classifies commits: code-only (include), planning-only (exclude), mixed (include sans .planning/)
362
+ - Cherry-picks code commits onto a clean branch
363
+ - Reviewers see only code changes, no GSD artifacts
364
+
365
+ Usage: `/gsd-pr-branch` or `/gsd-pr-branch main`
366
+
367
+ ---
368
+
369
+ **`/gsd-plant-seed [idea]`**
370
+ Capture a forward-looking idea with trigger conditions for automatic surfacing.
371
+
372
+ - Seeds preserve WHY, WHEN to surface, and breadcrumbs to related code
373
+ - Auto-surfaces during `/gsd-new-milestone` when trigger conditions match
374
+ - Better than deferred items — triggers are checked, not forgotten
375
+
376
+ Usage: `/gsd-plant-seed "add real-time notifications when we build the events system"`
377
+
378
+ ---
379
+
380
+ **`/gsd-audit-uat`**
381
+ Cross-phase audit of all outstanding UAT and verification items.
382
+ - Scans every phase for pending, skipped, blocked, and human_needed items
383
+ - Cross-references against codebase to detect stale documentation
384
+ - Produces prioritized human test plan grouped by testability
385
+ - Use before starting a new milestone to clear verification debt
386
+
387
+ Usage: `/gsd-audit-uat`
388
+
273
389
  ### Milestone Auditing
274
390
 
275
391
  **`/gsd-audit-milestone [version]`**
@@ -298,7 +414,7 @@ Usage: `/gsd-plan-milestone-gaps`
298
414
  Configure workflow toggles and model profile interactively.
299
415
 
300
416
  - Toggle researcher, plan checker, verifier agents
301
- - Select model profile (simple/smart/genius)
417
+ - Select model profile (simple/smart/genius/inherit)
302
418
  - Updates `.planning/config.json`
303
419
 
304
420
  Usage: `/gsd-settings`
@@ -309,6 +425,7 @@ Quick switch model profile for GSD agents.
309
425
  - `quality` — Opus everywhere except verification
310
426
  - `balanced` — Opus for planning, Sonnet for execution (default)
311
427
  - `budget` — Sonnet for writing, Haiku for research/verification
428
+ - `inherit` — Use current session model for all agents (OpenCode `/model`)
312
429
 
313
430
  Usage: `/gsd-set-profile budget`
314
431
 
@@ -1,6 +1,6 @@
1
- <purpose>
1
+ <objective>
2
2
  Insert a decimal phase for urgent work discovered mid-milestone between existing integer phases. Uses decimal numbering (72.1, 72.2, etc.) to preserve the logical sequence of planned phases while accommodating urgent insertions without renumbering the entire roadmap.
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.
@@ -1,8 +1,8 @@
1
- <purpose>
1
+ <objective>
2
2
  Surface OpenCode's assumptions about a phase before planning, enabling users to correct misconceptions early.
3
3
 
4
4
  Key difference from discuss-phase: This is ANALYSIS of what OpenCode thinks, not INTAKE of what user knows. No file output - purely conversational to prompt discussion.
5
- </purpose>
5
+ </objective>
6
6
 
7
7
  <process>
8
8
 
@@ -0,0 +1,56 @@
1
+ <objective>
2
+ List all GSD workspaces found in ~/gsd-workspaces/ with their status.
3
+ </objective>
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. Setup
12
+
13
+ ```bash
14
+ INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init list-workspaces)
15
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
16
+ ```
17
+
18
+ Parse JSON for: `workspace_base`, `workspaces`, `workspace_count`.
19
+
20
+ ## 2. Display
21
+
22
+ **If `workspace_count` is 0:**
23
+
24
+ ```
25
+ No workspaces found in ~/gsd-workspaces/
26
+
27
+ Create one with:
28
+ /gsd-new-workspace --name my-workspace --repos repo1,repo2
29
+ ```
30
+
31
+ Done.
32
+
33
+ **If workspaces exist:**
34
+
35
+ Display a table:
36
+
37
+ ```
38
+ GSD Workspaces (~/gsd-workspaces/)
39
+
40
+ | Name | Repos | Strategy | GSD Project |
41
+ |------|-------|----------|-------------|
42
+ | feature-a | 3 | worktree | Yes |
43
+ | feature-b | 2 | clone | No |
44
+
45
+ Manage:
46
+ cd ~/gsd-workspaces/<name> # Enter a workspace
47
+ /gsd-remove-workspace <name> # Remove a workspace
48
+ ```
49
+
50
+ For each workspace, show:
51
+ - **Name** — directory name
52
+ - **Repos** — count from init data
53
+ - **Strategy** — from WORKSPACE.md
54
+ - **GSD Project** — whether `.planning/PROJECT.md` exists (Yes/No)
55
+
56
+ </process>
@@ -0,0 +1,362 @@
1
+ <objective>
2
+
3
+ Interactive command center for managing a milestone from a single terminal. Shows a dashboard of all phases with visual status, dispatches discuss inline and plan/execute as background agents, and loops back to the dashboard after each action. Enables parallel phase work from one terminal.
4
+
5
+ </objective>
6
+
7
+ <required_reading>
8
+
9
+ read all files referenced by the invoking prompt's execution_context before starting.
10
+
11
+ </required_reading>
12
+
13
+ <process>
14
+
15
+ <step name="initialize" priority="first">
16
+
17
+ ## 1. Initialize
18
+
19
+ Bootstrap via manager init:
20
+
21
+ ```bash
22
+ INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init manager)
23
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
24
+ ```
25
+
26
+ Parse JSON for: `milestone_version`, `milestone_name`, `phase_count`, `completed_count`, `in_progress_count`, `phases`, `recommended_actions`, `all_complete`, `waiting_signal`.
27
+
28
+ **If error:** Display the error message and exit.
29
+
30
+ Display startup banner:
31
+
32
+ ```
33
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
34
+ GSD ► MANAGER
35
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
36
+
37
+ {milestone_version} — {milestone_name}
38
+ {phase_count} phases · {completed_count} complete
39
+
40
+ ✓ Discuss → inline ◆ Plan/Execute → background
41
+ Dashboard auto-refreshes when background work is active.
42
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
43
+ ```
44
+
45
+ Proceed to dashboard step.
46
+
47
+ </step>
48
+
49
+ <step name="dashboard">
50
+
51
+ ## 2. Dashboard (Refresh Point)
52
+
53
+ **Every time this step is reached**, re-read state from disk to pick up changes from background agents:
54
+
55
+ ```bash
56
+ INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init manager)
57
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
58
+ ```
59
+
60
+ Parse the full JSON. Build the dashboard display.
61
+
62
+ Build dashboard from JSON. Symbols: `✓` done, `◆` active, `○` pending, `·` queued. Progress bar: 20-char `█░`.
63
+
64
+ **Status mapping** (disk_status → D P E Status):
65
+
66
+ - `complete` → `✓ ✓ ✓` `✓ Complete`
67
+ - `partial` → `✓ ✓ ◆` `◆ Executing...`
68
+ - `planned` → `✓ ✓ ○` `○ Ready to execute`
69
+ - `discussed` → `✓ ○ ·` `○ Ready to plan`
70
+ - `researched` → `◆ · ·` `○ Ready to plan`
71
+ - `empty`/`no_directory` + `is_next_to_discuss` → `○ · ·` `○ Ready to discuss`
72
+ - `empty`/`no_directory` otherwise → `· · ·` `· Up next`
73
+ - If `is_active`, replace status icon with `◆` and append `(active)`
74
+
75
+ If any `is_active` phases, show: `◆ Background: {action} Phase {N}, ...` above grid.
76
+
77
+ Use `display_name` (not `name`) for the Phase column — it's pre-truncated to 20 chars with `…` if clipped. Pad all phase names to the same width for alignment.
78
+
79
+ Use `deps_display` from init JSON for the Deps column — shows which phases this phase depends on (e.g. `1,3`) or `—` for none.
80
+
81
+ Example output:
82
+
83
+ ```
84
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
85
+ GSD ► DASHBOARD
86
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
87
+ ████████████░░░░░░░░ 60% (3/5 phases)
88
+ ◆ Background: Planning Phase 4
89
+ | # | Phase | Deps | D | P | E | Status |
90
+ |---|----------------------|------|---|---|---|---------------------|
91
+ | 1 | Foundation | — | ✓ | ✓ | ✓ | ✓ Complete |
92
+ | 2 | API Layer | 1 | ✓ | ✓ | ◆ | ◆ Executing (active)|
93
+ | 3 | Auth System | 1 | ✓ | ✓ | ○ | ○ Ready to execute |
94
+ | 4 | Dashboard UI & Set… | 1,2 | ✓ | ◆ | · | ◆ Planning (active) |
95
+ | 5 | Notifications | — | ○ | · | · | ○ Ready to discuss |
96
+ | 6 | Polish & Final Mail… | 1-5 | · | · | · | · Up next |
97
+ ```
98
+
99
+ **Recommendations section:**
100
+
101
+ If `all_complete` is true:
102
+
103
+ ```
104
+ ╔══════════════════════════════════════════════════════════════╗
105
+ ║ MILESTONE COMPLETE ║
106
+ ╚══════════════════════════════════════════════════════════════╝
107
+
108
+ All {phase_count} phases done. Ready for final steps:
109
+ → /gsd-verify-work — run acceptance testing
110
+ → /gsd-complete-milestone — archive and wrap up
111
+ ```
112
+
113
+ Ask user via question:
114
+ - **question:** "All phases complete. What next?"
115
+ - **options:** "Verify work" / "Complete milestone" / "Exit manager"
116
+
117
+ Handle responses:
118
+ - "Verify work": `skill(skill="gsd-verify-work")` then loop to dashboard.
119
+ - "Complete milestone": `skill(skill="gsd-complete-milestone")` then exit.
120
+ - "Exit manager": Go to exit step.
121
+
122
+ **If NOT all_complete**, build compound options from `recommended_actions`:
123
+
124
+ **Compound option logic:** Group background actions (plan/execute) together, and pair them with the single inline action (discuss) when one exists. The goal is to present the fewest options possible — one option can dispatch multiple background agents plus one inline action.
125
+
126
+ **Building options:**
127
+
128
+ 1. Collect all background actions (execute and plan recommendations) — there can be multiple of each.
129
+ 2. Collect the inline action (discuss recommendation, if any — there will be at most one since discuss is sequential).
130
+ 3. Build compound options:
131
+
132
+ **If there are ANY recommended actions (background, inline, or both):**
133
+ Create ONE primary "Continue" option that dispatches ALL of them together:
134
+ - Label: `"Continue"` — always this exact word
135
+ - Below the label, list every action that will happen. Enumerate ALL recommended actions — do not cap or truncate:
136
+ ```
137
+ Continue:
138
+ → Execute Phase 32 (background)
139
+ → Plan Phase 34 (background)
140
+ → Discuss Phase 35 (inline)
141
+ ```
142
+ - This dispatches all background agents first, then runs the inline discuss (if any).
143
+ - If there is no inline discuss, the dashboard refreshes after spawning background agents.
144
+
145
+ **Important:** The Continue option must include EVERY action from `recommended_actions` — not just 2. If there are 3 actions, list 3. If there are 5, list 5.
146
+
147
+ 4. Always add:
148
+ - `"Refresh dashboard"`
149
+ - `"Exit manager"`
150
+
151
+ Display recommendations compactly:
152
+
153
+ ```
154
+ ───────────────────────────────────────────────────────────────
155
+ ▶ Next Steps
156
+ ───────────────────────────────────────────────────────────────
157
+
158
+ Continue:
159
+ → Execute Phase 32 (background)
160
+ → Plan Phase 34 (background)
161
+ → Discuss Phase 35 (inline)
162
+ ```
163
+
164
+ **Auto-refresh:** If background agents are running (`is_active` is true for any phase), set a 60-second auto-refresh cycle. After presenting the action menu, if no user input is received within 60 seconds, automatically refresh the dashboard. This interval is configurable via `manager_refresh_interval` in GSD config (default: 60 seconds, set to 0 to disable).
165
+
166
+ Present via question:
167
+ - **question:** "What would you like to do?"
168
+ - **options:** (compound options as built above + refresh + exit, question auto-adds "Other")
169
+
170
+ **On "Other" (free text):** Parse intent — if it mentions a phase number and action, dispatch accordingly. If unclear, display available actions and loop to action_menu.
171
+
172
+ Proceed to handle_action step with the selected action.
173
+
174
+ </step>
175
+
176
+ <step name="handle_action">
177
+
178
+ ## 4. Handle Action
179
+
180
+ ### Refresh Dashboard
181
+
182
+ Loop back to dashboard step.
183
+
184
+ ### Exit Manager
185
+
186
+ Go to exit step.
187
+
188
+ ### Compound Action (background + inline)
189
+
190
+ When the user selects a compound option:
191
+
192
+ 1. **Spawn all background agents first** (plan/execute) — dispatch them in parallel using the Plan Phase N / Execute Phase N handlers below.
193
+ 2. **Then run the inline discuss:**
194
+
195
+ ```
196
+ skill(skill="gsd-discuss-phase", args="{PHASE_NUM}")
197
+ ```
198
+
199
+ After discuss completes, loop back to dashboard step (background agents continue running).
200
+
201
+ ### Discuss Phase N
202
+
203
+ Discussion is interactive — needs user input. Run inline:
204
+
205
+ ```
206
+ skill(skill="gsd-discuss-phase", args="{PHASE_NUM}")
207
+ ```
208
+
209
+ After discuss completes, loop back to dashboard step.
210
+
211
+ ### Plan Phase N
212
+
213
+ Planning runs autonomously. Spawn a background agent:
214
+
215
+ ```
216
+ task(
217
+ description="Plan phase {N}: {phase_name}",
218
+ run_in_background=true,
219
+ prompt="You are running the GSD plan-phase workflow for phase {N} of the project.
220
+
221
+ Working directory: {cwd}
222
+ Phase: {N} — {phase_name}
223
+ Goal: {goal}
224
+
225
+ Steps:
226
+ 1. read the plan-phase workflow: cat $HOME/.config/opencode/get-shit-done/workflows/plan-phase.md
227
+ 2. Run: node \"$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs\" init plan-phase {N}
228
+ 3. Follow the workflow steps to produce PLAN.md files for this phase.
229
+ 4. If research is enabled in config, run the research step first.
230
+ 5. Spawn a gsd-planner subagent via task() to create the plans.
231
+ 6. If plan-checker is enabled, spawn a gsd-plan-checker subagent to verify.
232
+ 7. Commit plan files when complete.
233
+
234
+ Important: You are running in the background. Do NOT use question — make autonomous decisions based on project context. If you hit a blocker, write it to STATE.md as a blocker and stop. Do NOT silently work around permission or file access errors — let them fail so the manager can surface them with resolution hints."
235
+ )
236
+ ```
237
+
238
+ Display:
239
+
240
+ ```
241
+ ◆ Spawning planner for Phase {N}: {phase_name}...
242
+ ```
243
+
244
+ Loop back to dashboard step.
245
+
246
+ ### Execute Phase N
247
+
248
+ Execution runs autonomously. Spawn a background agent:
249
+
250
+ ```
251
+ task(
252
+ description="Execute phase {N}: {phase_name}",
253
+ run_in_background=true,
254
+ prompt="You are running the GSD execute-phase workflow for phase {N} of the project.
255
+
256
+ Working directory: {cwd}
257
+ Phase: {N} — {phase_name}
258
+ Goal: {goal}
259
+
260
+ Steps:
261
+ 1. read the execute-phase workflow: cat $HOME/.config/opencode/get-shit-done/workflows/execute-phase.md
262
+ 2. Run: node \"$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs\" init execute-phase {N}
263
+ 3. Follow the workflow steps: discover plans, analyze dependencies, group into waves.
264
+ 4. For each wave, spawn gsd-executor subagents via task() to execute plans in parallel.
265
+ 5. After all waves complete, spawn a gsd-verifier subagent if verifier is enabled.
266
+ 6. Update ROADMAP.md and STATE.md with progress.
267
+ 7. Commit all changes.
268
+
269
+ Important: You are running in the background. Do NOT use question — make autonomous decisions. Use --no-verify on git commits. If you hit a permission error, file lock, or any access issue, do NOT work around it — let it fail and write the error to STATE.md as a blocker so the manager can surface it with resolution guidance."
270
+ )
271
+ ```
272
+
273
+ Display:
274
+
275
+ ```
276
+ ◆ Spawning executor for Phase {N}: {phase_name}...
277
+ ```
278
+
279
+ Loop back to dashboard step.
280
+
281
+ </step>
282
+
283
+ <step name="background_completion">
284
+
285
+ ## 5. Background Agent Completion
286
+
287
+ When notified that a background agent completed:
288
+
289
+ 1. read the result message from the agent.
290
+ 2. Display a brief notification:
291
+
292
+ ```
293
+ ✓ {description}
294
+ {brief summary from agent result}
295
+ ```
296
+
297
+ 3. Loop back to dashboard step.
298
+
299
+ **If the agent reported an error or blocker:**
300
+
301
+ Classify the error:
302
+
303
+ **Permission / tool access error** (e.g. tool not allowed, permission denied, sandbox restriction):
304
+ - Parse the error to identify which tool or command was blocked.
305
+ - Display the error clearly, then offer to fix it:
306
+ - **question:** "Phase {N} failed — permission denied for `{tool_or_command}`. Want me to add it to settings.local.json so it's allowed?"
307
+ - **options:** "Add permission and retry" / "Run this phase inline instead" / "Skip and continue"
308
+ - "Add permission and retry": Use `skill(skill="update-config")` to add the permission to `settings.local.json`, then re-spawn the background agent. Loop to dashboard.
309
+ - "Run this phase inline instead": Dispatch the same action (plan/execute) inline via `skill()` instead of a background task. Loop to dashboard after.
310
+ - "Skip and continue": Loop to dashboard (phase stays in current state).
311
+
312
+ **Other errors** (git lock, file conflict, logic error, etc.):
313
+ - Display the error, then offer options via question:
314
+ - **question:** "Background agent for Phase {N} encountered an issue: {error}. What next?"
315
+ - **options:** "Retry" / "Run inline instead" / "Skip and continue" / "View details"
316
+ - "Retry": Re-spawn the same background agent. Loop to dashboard.
317
+ - "Run inline instead": Dispatch the action inline via `skill()`. Loop to dashboard after.
318
+ - "Skip and continue": Loop to dashboard (phase stays in current state).
319
+ - "View details": read STATE.md blockers section, display, then re-present options.
320
+
321
+ </step>
322
+
323
+ <step name="exit">
324
+
325
+ ## 6. Exit
326
+
327
+ Display final status with progress bar:
328
+
329
+ ```
330
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
331
+ GSD ► SESSION END
332
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
333
+
334
+ {milestone_version} — {milestone_name}
335
+ {PROGRESS_BAR} {progress_pct}% ({completed_count}/{phase_count} phases)
336
+
337
+ Resume anytime: /gsd-manager
338
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
339
+ ```
340
+
341
+ **Note:** Any background agents still running will continue to completion. Their results will be visible on next `/gsd-manager` or `/gsd-progress` invocation.
342
+
343
+ </step>
344
+
345
+ </process>
346
+
347
+ <success_criteria>
348
+ - [ ] Dashboard displays all phases with correct status indicators (D/P/E/V columns)
349
+ - [ ] Progress bar shows accurate completion percentage
350
+ - [ ] Dependency resolution: blocked phases show which deps are missing
351
+ - [ ] Recommendations prioritize: execute > plan > discuss
352
+ - [ ] Discuss phases run inline via skill() — interactive questions work
353
+ - [ ] Plan phases spawn background task agents — return to dashboard immediately
354
+ - [ ] Execute phases spawn background task agents — return to dashboard immediately
355
+ - [ ] Dashboard refreshes pick up changes from background agents via disk state
356
+ - [ ] Background agent completion triggers notification and dashboard refresh
357
+ - [ ] Background agent errors present retry/skip options
358
+ - [ ] All-complete state offers verify-work and complete-milestone
359
+ - [ ] Exit shows final status with resume instructions
360
+ - [ ] "Other" free-text input parsed for phase number and action
361
+ - [ ] Manager loop continues until user exits or milestone completes
362
+ </success_criteria>