gsd-code-first 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja-JP.md +834 -0
  3. package/README.ko-KR.md +823 -0
  4. package/README.md +937 -0
  5. package/README.pt-BR.md +452 -0
  6. package/README.zh-CN.md +800 -0
  7. package/agents/gsd-advisor-researcher.md +104 -0
  8. package/agents/gsd-annotator.md +148 -0
  9. package/agents/gsd-arc-executor.md +537 -0
  10. package/agents/gsd-arc-planner.md +374 -0
  11. package/agents/gsd-assumptions-analyzer.md +105 -0
  12. package/agents/gsd-code-planner.md +155 -0
  13. package/agents/gsd-codebase-mapper.md +770 -0
  14. package/agents/gsd-debugger.md +1373 -0
  15. package/agents/gsd-executor.md +509 -0
  16. package/agents/gsd-integration-checker.md +443 -0
  17. package/agents/gsd-nyquist-auditor.md +176 -0
  18. package/agents/gsd-phase-researcher.md +698 -0
  19. package/agents/gsd-plan-checker.md +773 -0
  20. package/agents/gsd-planner.md +1354 -0
  21. package/agents/gsd-project-researcher.md +654 -0
  22. package/agents/gsd-prototyper.md +161 -0
  23. package/agents/gsd-research-synthesizer.md +247 -0
  24. package/agents/gsd-roadmapper.md +679 -0
  25. package/agents/gsd-ui-auditor.md +439 -0
  26. package/agents/gsd-ui-checker.md +300 -0
  27. package/agents/gsd-ui-researcher.md +357 -0
  28. package/agents/gsd-user-profiler.md +171 -0
  29. package/agents/gsd-verifier.md +700 -0
  30. package/bin/install.js +5009 -0
  31. package/commands/gsd/add-backlog.md +76 -0
  32. package/commands/gsd/add-phase.md +43 -0
  33. package/commands/gsd/add-tests.md +41 -0
  34. package/commands/gsd/add-todo.md +47 -0
  35. package/commands/gsd/annotate.md +54 -0
  36. package/commands/gsd/audit-milestone.md +36 -0
  37. package/commands/gsd/audit-uat.md +24 -0
  38. package/commands/gsd/autonomous.md +41 -0
  39. package/commands/gsd/check-todos.md +45 -0
  40. package/commands/gsd/cleanup.md +18 -0
  41. package/commands/gsd/complete-milestone.md +136 -0
  42. package/commands/gsd/debug.md +173 -0
  43. package/commands/gsd/deep-plan.md +52 -0
  44. package/commands/gsd/discuss-phase.md +64 -0
  45. package/commands/gsd/do.md +30 -0
  46. package/commands/gsd/execute-phase.md +59 -0
  47. package/commands/gsd/extract-plan.md +35 -0
  48. package/commands/gsd/fast.md +30 -0
  49. package/commands/gsd/forensics.md +56 -0
  50. package/commands/gsd/health.md +22 -0
  51. package/commands/gsd/help.md +22 -0
  52. package/commands/gsd/insert-phase.md +32 -0
  53. package/commands/gsd/iterate.md +124 -0
  54. package/commands/gsd/join-discord.md +18 -0
  55. package/commands/gsd/list-phase-assumptions.md +46 -0
  56. package/commands/gsd/list-workspaces.md +19 -0
  57. package/commands/gsd/manager.md +39 -0
  58. package/commands/gsd/map-codebase.md +71 -0
  59. package/commands/gsd/milestone-summary.md +51 -0
  60. package/commands/gsd/new-milestone.md +44 -0
  61. package/commands/gsd/new-project.md +42 -0
  62. package/commands/gsd/new-workspace.md +44 -0
  63. package/commands/gsd/next.md +24 -0
  64. package/commands/gsd/note.md +34 -0
  65. package/commands/gsd/pause-work.md +38 -0
  66. package/commands/gsd/plan-milestone-gaps.md +34 -0
  67. package/commands/gsd/plan-phase.md +47 -0
  68. package/commands/gsd/plant-seed.md +28 -0
  69. package/commands/gsd/pr-branch.md +25 -0
  70. package/commands/gsd/profile-user.md +46 -0
  71. package/commands/gsd/progress.md +24 -0
  72. package/commands/gsd/prototype.md +56 -0
  73. package/commands/gsd/quick.md +47 -0
  74. package/commands/gsd/reapply-patches.md +123 -0
  75. package/commands/gsd/remove-phase.md +31 -0
  76. package/commands/gsd/remove-workspace.md +26 -0
  77. package/commands/gsd/research-phase.md +195 -0
  78. package/commands/gsd/resume-work.md +40 -0
  79. package/commands/gsd/review-backlog.md +61 -0
  80. package/commands/gsd/review.md +37 -0
  81. package/commands/gsd/session-report.md +19 -0
  82. package/commands/gsd/set-mode.md +41 -0
  83. package/commands/gsd/set-profile.md +12 -0
  84. package/commands/gsd/settings.md +36 -0
  85. package/commands/gsd/ship.md +23 -0
  86. package/commands/gsd/stats.md +18 -0
  87. package/commands/gsd/thread.md +127 -0
  88. package/commands/gsd/ui-phase.md +34 -0
  89. package/commands/gsd/ui-review.md +32 -0
  90. package/commands/gsd/update.md +37 -0
  91. package/commands/gsd/validate-phase.md +35 -0
  92. package/commands/gsd/verify-work.md +38 -0
  93. package/commands/gsd/workstreams.md +63 -0
  94. package/get-shit-done/bin/gsd-tools.cjs +946 -0
  95. package/get-shit-done/bin/lib/arc-scanner.cjs +341 -0
  96. package/get-shit-done/bin/lib/commands.cjs +959 -0
  97. package/get-shit-done/bin/lib/config.cjs +466 -0
  98. package/get-shit-done/bin/lib/core.cjs +1230 -0
  99. package/get-shit-done/bin/lib/frontmatter.cjs +336 -0
  100. package/get-shit-done/bin/lib/init.cjs +1442 -0
  101. package/get-shit-done/bin/lib/milestone.cjs +252 -0
  102. package/get-shit-done/bin/lib/model-profiles.cjs +68 -0
  103. package/get-shit-done/bin/lib/phase.cjs +888 -0
  104. package/get-shit-done/bin/lib/profile-output.cjs +952 -0
  105. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  106. package/get-shit-done/bin/lib/roadmap.cjs +329 -0
  107. package/get-shit-done/bin/lib/security.cjs +382 -0
  108. package/get-shit-done/bin/lib/state.cjs +1031 -0
  109. package/get-shit-done/bin/lib/template.cjs +222 -0
  110. package/get-shit-done/bin/lib/uat.cjs +282 -0
  111. package/get-shit-done/bin/lib/verify.cjs +888 -0
  112. package/get-shit-done/bin/lib/workstream.cjs +491 -0
  113. package/get-shit-done/commands/gsd/workstreams.md +63 -0
  114. package/get-shit-done/references/arc-standard.md +315 -0
  115. package/get-shit-done/references/checkpoints.md +778 -0
  116. package/get-shit-done/references/continuation-format.md +249 -0
  117. package/get-shit-done/references/decimal-phase-calculation.md +64 -0
  118. package/get-shit-done/references/git-integration.md +295 -0
  119. package/get-shit-done/references/git-planning-commit.md +38 -0
  120. package/get-shit-done/references/model-profile-resolution.md +36 -0
  121. package/get-shit-done/references/model-profiles.md +139 -0
  122. package/get-shit-done/references/phase-argument-parsing.md +61 -0
  123. package/get-shit-done/references/planning-config.md +202 -0
  124. package/get-shit-done/references/questioning.md +162 -0
  125. package/get-shit-done/references/tdd.md +263 -0
  126. package/get-shit-done/references/ui-brand.md +160 -0
  127. package/get-shit-done/references/user-profiling.md +681 -0
  128. package/get-shit-done/references/verification-patterns.md +612 -0
  129. package/get-shit-done/references/workstream-flag.md +58 -0
  130. package/get-shit-done/templates/DEBUG.md +164 -0
  131. package/get-shit-done/templates/UAT.md +265 -0
  132. package/get-shit-done/templates/UI-SPEC.md +100 -0
  133. package/get-shit-done/templates/VALIDATION.md +76 -0
  134. package/get-shit-done/templates/claude-md.md +122 -0
  135. package/get-shit-done/templates/codebase/architecture.md +255 -0
  136. package/get-shit-done/templates/codebase/concerns.md +310 -0
  137. package/get-shit-done/templates/codebase/conventions.md +307 -0
  138. package/get-shit-done/templates/codebase/integrations.md +280 -0
  139. package/get-shit-done/templates/codebase/stack.md +186 -0
  140. package/get-shit-done/templates/codebase/structure.md +285 -0
  141. package/get-shit-done/templates/codebase/testing.md +480 -0
  142. package/get-shit-done/templates/config.json +44 -0
  143. package/get-shit-done/templates/context.md +352 -0
  144. package/get-shit-done/templates/continue-here.md +78 -0
  145. package/get-shit-done/templates/copilot-instructions.md +7 -0
  146. package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  147. package/get-shit-done/templates/dev-preferences.md +21 -0
  148. package/get-shit-done/templates/discovery.md +146 -0
  149. package/get-shit-done/templates/discussion-log.md +63 -0
  150. package/get-shit-done/templates/milestone-archive.md +123 -0
  151. package/get-shit-done/templates/milestone.md +115 -0
  152. package/get-shit-done/templates/phase-prompt.md +610 -0
  153. package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  154. package/get-shit-done/templates/project.md +186 -0
  155. package/get-shit-done/templates/requirements.md +231 -0
  156. package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  157. package/get-shit-done/templates/research-project/FEATURES.md +147 -0
  158. package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  159. package/get-shit-done/templates/research-project/STACK.md +120 -0
  160. package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  161. package/get-shit-done/templates/research.md +552 -0
  162. package/get-shit-done/templates/retrospective.md +54 -0
  163. package/get-shit-done/templates/roadmap.md +202 -0
  164. package/get-shit-done/templates/state.md +176 -0
  165. package/get-shit-done/templates/summary-complex.md +59 -0
  166. package/get-shit-done/templates/summary-minimal.md +41 -0
  167. package/get-shit-done/templates/summary-standard.md +48 -0
  168. package/get-shit-done/templates/summary.md +248 -0
  169. package/get-shit-done/templates/user-profile.md +146 -0
  170. package/get-shit-done/templates/user-setup.md +311 -0
  171. package/get-shit-done/templates/verification-report.md +322 -0
  172. package/get-shit-done/workflows/add-phase.md +112 -0
  173. package/get-shit-done/workflows/add-tests.md +351 -0
  174. package/get-shit-done/workflows/add-todo.md +158 -0
  175. package/get-shit-done/workflows/audit-milestone.md +340 -0
  176. package/get-shit-done/workflows/audit-uat.md +109 -0
  177. package/get-shit-done/workflows/autonomous.md +891 -0
  178. package/get-shit-done/workflows/check-todos.md +177 -0
  179. package/get-shit-done/workflows/cleanup.md +152 -0
  180. package/get-shit-done/workflows/complete-milestone.md +767 -0
  181. package/get-shit-done/workflows/diagnose-issues.md +231 -0
  182. package/get-shit-done/workflows/discovery-phase.md +289 -0
  183. package/get-shit-done/workflows/discuss-phase-assumptions.md +653 -0
  184. package/get-shit-done/workflows/discuss-phase.md +1049 -0
  185. package/get-shit-done/workflows/do.md +104 -0
  186. package/get-shit-done/workflows/execute-phase.md +846 -0
  187. package/get-shit-done/workflows/execute-plan.md +514 -0
  188. package/get-shit-done/workflows/fast.md +105 -0
  189. package/get-shit-done/workflows/forensics.md +265 -0
  190. package/get-shit-done/workflows/health.md +181 -0
  191. package/get-shit-done/workflows/help.md +634 -0
  192. package/get-shit-done/workflows/insert-phase.md +130 -0
  193. package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  194. package/get-shit-done/workflows/list-workspaces.md +56 -0
  195. package/get-shit-done/workflows/manager.md +362 -0
  196. package/get-shit-done/workflows/map-codebase.md +377 -0
  197. package/get-shit-done/workflows/milestone-summary.md +223 -0
  198. package/get-shit-done/workflows/new-milestone.md +486 -0
  199. package/get-shit-done/workflows/new-project.md +1250 -0
  200. package/get-shit-done/workflows/new-workspace.md +237 -0
  201. package/get-shit-done/workflows/next.md +97 -0
  202. package/get-shit-done/workflows/node-repair.md +92 -0
  203. package/get-shit-done/workflows/note.md +156 -0
  204. package/get-shit-done/workflows/pause-work.md +176 -0
  205. package/get-shit-done/workflows/plan-milestone-gaps.md +273 -0
  206. package/get-shit-done/workflows/plan-phase.md +859 -0
  207. package/get-shit-done/workflows/plant-seed.md +169 -0
  208. package/get-shit-done/workflows/pr-branch.md +129 -0
  209. package/get-shit-done/workflows/profile-user.md +450 -0
  210. package/get-shit-done/workflows/progress.md +507 -0
  211. package/get-shit-done/workflows/quick.md +757 -0
  212. package/get-shit-done/workflows/remove-phase.md +155 -0
  213. package/get-shit-done/workflows/remove-workspace.md +90 -0
  214. package/get-shit-done/workflows/research-phase.md +82 -0
  215. package/get-shit-done/workflows/resume-project.md +326 -0
  216. package/get-shit-done/workflows/review.md +228 -0
  217. package/get-shit-done/workflows/session-report.md +146 -0
  218. package/get-shit-done/workflows/settings.md +283 -0
  219. package/get-shit-done/workflows/ship.md +228 -0
  220. package/get-shit-done/workflows/stats.md +60 -0
  221. package/get-shit-done/workflows/transition.md +671 -0
  222. package/get-shit-done/workflows/ui-phase.md +302 -0
  223. package/get-shit-done/workflows/ui-review.md +165 -0
  224. package/get-shit-done/workflows/update.md +323 -0
  225. package/get-shit-done/workflows/validate-phase.md +174 -0
  226. package/get-shit-done/workflows/verify-phase.md +254 -0
  227. package/get-shit-done/workflows/verify-work.md +637 -0
  228. package/hooks/dist/gsd-check-update.js +114 -0
  229. package/hooks/dist/gsd-context-monitor.js +156 -0
  230. package/hooks/dist/gsd-prompt-guard.js +96 -0
  231. package/hooks/dist/gsd-statusline.js +119 -0
  232. package/hooks/dist/gsd-workflow-guard.js +94 -0
  233. package/package.json +52 -0
  234. package/scripts/base64-scan.sh +262 -0
  235. package/scripts/build-hooks.js +82 -0
  236. package/scripts/prompt-injection-scan.sh +198 -0
  237. package/scripts/run-tests.cjs +29 -0
  238. package/scripts/secret-scan.sh +227 -0
@@ -0,0 +1,362 @@
1
+ <purpose>
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
+ </purpose>
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/.claude/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/.claude/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 AskUserQuestion:
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 AskUserQuestion:
167
+ - **question:** "What would you like to do?"
168
+ - **options:** (compound options as built above + refresh + exit, AskUserQuestion 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 ~/.claude/get-shit-done/workflows/plan-phase.md
227
+ 2. Run: node \"$HOME/.claude/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 AskUserQuestion — 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 ~/.claude/get-shit-done/workflows/execute-phase.md
262
+ 2. Run: node \"$HOME/.claude/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 AskUserQuestion — 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 AskUserQuestion:
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>