claude-cook 1.10.1

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 (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +607 -0
  3. package/agents/gsd-codebase-mapper.md +738 -0
  4. package/agents/gsd-debugger.md +1203 -0
  5. package/agents/gsd-executor.md +784 -0
  6. package/agents/gsd-integration-checker.md +423 -0
  7. package/agents/gsd-phase-researcher.md +641 -0
  8. package/agents/gsd-plan-checker.md +745 -0
  9. package/agents/gsd-planner.md +1386 -0
  10. package/agents/gsd-pm.md +331 -0
  11. package/agents/gsd-project-researcher.md +865 -0
  12. package/agents/gsd-research-synthesizer.md +256 -0
  13. package/agents/gsd-roadmapper.md +605 -0
  14. package/agents/gsd-verifier.md +778 -0
  15. package/bin/install.js +1477 -0
  16. package/commands/gsd/add-phase.md +207 -0
  17. package/commands/gsd/add-todo.md +193 -0
  18. package/commands/gsd/audit-milestone.md +277 -0
  19. package/commands/gsd/check-todos.md +228 -0
  20. package/commands/gsd/complete-milestone.md +136 -0
  21. package/commands/gsd/debug.md +169 -0
  22. package/commands/gsd/discuss-phase.md +86 -0
  23. package/commands/gsd/execute-phase.md +339 -0
  24. package/commands/gsd/help.md +545 -0
  25. package/commands/gsd/insert-phase.md +227 -0
  26. package/commands/gsd/join-discord.md +18 -0
  27. package/commands/gsd/list-phase-assumptions.md +50 -0
  28. package/commands/gsd/map-codebase.md +71 -0
  29. package/commands/gsd/new-milestone.md +721 -0
  30. package/commands/gsd/new-project.md +1008 -0
  31. package/commands/gsd/pause-work.md +134 -0
  32. package/commands/gsd/plan-milestone-gaps.md +295 -0
  33. package/commands/gsd/plan-phase.md +525 -0
  34. package/commands/gsd/pm-check.md +115 -0
  35. package/commands/gsd/pm-replan.md +102 -0
  36. package/commands/gsd/pm-start.md +218 -0
  37. package/commands/gsd/pm-status.md +116 -0
  38. package/commands/gsd/pm-stop.md +72 -0
  39. package/commands/gsd/progress.md +415 -0
  40. package/commands/gsd/quick.md +309 -0
  41. package/commands/gsd/remove-phase.md +349 -0
  42. package/commands/gsd/research-phase.md +200 -0
  43. package/commands/gsd/resume-work.md +40 -0
  44. package/commands/gsd/set-profile.md +106 -0
  45. package/commands/gsd/settings.md +151 -0
  46. package/commands/gsd/update.md +172 -0
  47. package/commands/gsd/verify-work.md +219 -0
  48. package/get-shit-done/references/checkpoints.md +1078 -0
  49. package/get-shit-done/references/continuation-format.md +249 -0
  50. package/get-shit-done/references/git-integration.md +254 -0
  51. package/get-shit-done/references/model-profiles.md +73 -0
  52. package/get-shit-done/references/planning-config.md +189 -0
  53. package/get-shit-done/references/questioning.md +141 -0
  54. package/get-shit-done/references/tdd.md +263 -0
  55. package/get-shit-done/references/ui-brand.md +172 -0
  56. package/get-shit-done/references/verification-patterns.md +612 -0
  57. package/get-shit-done/references/vibe-kanban.md +142 -0
  58. package/get-shit-done/templates/DEBUG.md +159 -0
  59. package/get-shit-done/templates/UAT.md +247 -0
  60. package/get-shit-done/templates/codebase/architecture.md +255 -0
  61. package/get-shit-done/templates/codebase/concerns.md +310 -0
  62. package/get-shit-done/templates/codebase/conventions.md +307 -0
  63. package/get-shit-done/templates/codebase/integrations.md +280 -0
  64. package/get-shit-done/templates/codebase/stack.md +186 -0
  65. package/get-shit-done/templates/codebase/structure.md +285 -0
  66. package/get-shit-done/templates/codebase/testing.md +480 -0
  67. package/get-shit-done/templates/config.json +35 -0
  68. package/get-shit-done/templates/context.md +283 -0
  69. package/get-shit-done/templates/continue-here.md +78 -0
  70. package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  71. package/get-shit-done/templates/discovery.md +146 -0
  72. package/get-shit-done/templates/milestone-archive.md +123 -0
  73. package/get-shit-done/templates/milestone.md +115 -0
  74. package/get-shit-done/templates/phase-prompt.md +567 -0
  75. package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  76. package/get-shit-done/templates/pm-config.md +55 -0
  77. package/get-shit-done/templates/pm-log.md +27 -0
  78. package/get-shit-done/templates/project.md +184 -0
  79. package/get-shit-done/templates/requirements.md +231 -0
  80. package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  81. package/get-shit-done/templates/research-project/FEATURES.md +147 -0
  82. package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  83. package/get-shit-done/templates/research-project/STACK.md +120 -0
  84. package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  85. package/get-shit-done/templates/research.md +529 -0
  86. package/get-shit-done/templates/roadmap.md +202 -0
  87. package/get-shit-done/templates/state.md +205 -0
  88. package/get-shit-done/templates/summary.md +246 -0
  89. package/get-shit-done/templates/ticket-map.md +28 -0
  90. package/get-shit-done/templates/user-setup.md +311 -0
  91. package/get-shit-done/templates/verification-report.md +322 -0
  92. package/get-shit-done/workflows/complete-milestone.md +903 -0
  93. package/get-shit-done/workflows/diagnose-issues.md +231 -0
  94. package/get-shit-done/workflows/discovery-phase.md +289 -0
  95. package/get-shit-done/workflows/discuss-phase.md +433 -0
  96. package/get-shit-done/workflows/execute-phase.md +671 -0
  97. package/get-shit-done/workflows/execute-plan.md +1844 -0
  98. package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  99. package/get-shit-done/workflows/map-codebase.md +322 -0
  100. package/get-shit-done/workflows/pm-check.md +210 -0
  101. package/get-shit-done/workflows/pm-dispatch.md +104 -0
  102. package/get-shit-done/workflows/pm-replan.md +203 -0
  103. package/get-shit-done/workflows/pm-sync.md +130 -0
  104. package/get-shit-done/workflows/resume-project.md +307 -0
  105. package/get-shit-done/workflows/transition.md +556 -0
  106. package/get-shit-done/workflows/verify-phase.md +628 -0
  107. package/get-shit-done/workflows/verify-work.md +596 -0
  108. package/hooks/dist/gsd-check-update.js +61 -0
  109. package/hooks/dist/gsd-statusline.js +87 -0
  110. package/package.json +47 -0
  111. package/scripts/build-hooks.js +42 -0
  112. package/scripts/pm-loop.sh +155 -0
@@ -0,0 +1,415 @@
1
+ ---
2
+ name: gsd:progress
3
+ description: Check project progress, show context, and route to next action (execute or plan)
4
+ allowed-tools:
5
+ - Read
6
+ - Bash
7
+ - Grep
8
+ - Glob
9
+ - SlashCommand
10
+ ---
11
+
12
+ <objective>
13
+ Check project progress, summarize recent work and what's ahead, then intelligently route to the next action - either executing an existing plan or creating the next one.
14
+
15
+ Provides situational awareness before continuing work.
16
+ </objective>
17
+
18
+
19
+ <process>
20
+
21
+ <step name="verify">
22
+ **Verify planning structure exists:**
23
+
24
+ Use Bash (not Glob) to check—Glob respects .gitignore but .planning/ is often gitignored:
25
+
26
+ ```bash
27
+ test -d .planning && echo "exists" || echo "missing"
28
+ ```
29
+
30
+ If no `.planning/` directory:
31
+
32
+ ```
33
+ No planning structure found.
34
+
35
+ Run /gsd:new-project to start a new project.
36
+ ```
37
+
38
+ Exit.
39
+
40
+ If missing STATE.md: suggest `/gsd:new-project`.
41
+
42
+ **If ROADMAP.md missing but PROJECT.md exists:**
43
+
44
+ This means a milestone was completed and archived. Go to **Route F** (between milestones).
45
+
46
+ If missing both ROADMAP.md and PROJECT.md: suggest `/gsd:new-project`.
47
+ </step>
48
+
49
+ <step name="load">
50
+ **Load full project context:**
51
+
52
+ - Read `.planning/STATE.md` for living memory (position, decisions, issues)
53
+ - Read `.planning/ROADMAP.md` for phase structure and objectives
54
+ - Read `.planning/PROJECT.md` for current state (What This Is, Core Value, Requirements)
55
+ - Read `.planning/config.json` for settings (model_profile, workflow toggles)
56
+
57
+ **Check for PM mode:**
58
+
59
+ Read `pm` section from config.json. If `pm.project_id` is set (not null), PM mode is active.
60
+
61
+ If PM mode is active:
62
+ - Check if pm-loop.sh is running: `test -f .planning/.pm-loop-pid && ps -p $(cat .planning/.pm-loop-pid) > /dev/null 2>&1`
63
+ - Read TICKET-MAP.md for active phase if it exists
64
+ - Include PM status in the report (see PM section below)
65
+ - Route to PM commands instead of standard execute commands
66
+ </step>
67
+
68
+ <step name="recent">
69
+ **Gather recent work context:**
70
+
71
+ - Find the 2-3 most recent SUMMARY.md files
72
+ - Extract from each: what was accomplished, key decisions, any issues logged
73
+ - This shows "what we've been working on"
74
+ </step>
75
+
76
+ <step name="position">
77
+ **Parse current position:**
78
+
79
+ - From STATE.md: current phase, plan number, status
80
+ - Calculate: total plans, completed plans, remaining plans
81
+ - Note any blockers or concerns
82
+ - Check for CONTEXT.md: For phases without PLAN.md files, check if `{phase}-CONTEXT.md` exists in phase directory
83
+ - Count pending todos: `ls .planning/todos/pending/*.md 2>/dev/null | wc -l`
84
+ - Check for active debug sessions: `ls .planning/debug/*.md 2>/dev/null | grep -v resolved | wc -l`
85
+ </step>
86
+
87
+ <step name="report">
88
+ **Present rich status report:**
89
+
90
+ ```
91
+ # [Project Name]
92
+
93
+ **Progress:** [████████░░] 8/10 plans complete
94
+ **Profile:** [quality/balanced/budget]
95
+
96
+ ## Recent Work
97
+ - [Phase X, Plan Y]: [what was accomplished - 1 line]
98
+ - [Phase X, Plan Z]: [what was accomplished - 1 line]
99
+
100
+ ## Current Position
101
+ Phase [N] of [total]: [phase-name]
102
+ Plan [M] of [phase-total]: [status]
103
+ CONTEXT: [✓ if CONTEXT.md exists | - if not]
104
+
105
+ ## Key Decisions Made
106
+ - [decision 1 from STATE.md]
107
+ - [decision 2]
108
+
109
+ ## Blockers/Concerns
110
+ - [any blockers or concerns from STATE.md]
111
+
112
+ ## Pending Todos
113
+ - [count] pending — /gsd:check-todos to review
114
+
115
+ ## Active Debug Sessions
116
+ - [count] active — /gsd:debug to continue
117
+ (Only show this section if count > 0)
118
+
119
+ ## What's Next
120
+ [Next phase/plan objective from ROADMAP]
121
+ ```
122
+
123
+ </step>
124
+
125
+ <step name="pm_route">
126
+ **If PM mode is active (pm.project_id set in config):**
127
+
128
+ Skip the standard route step. Instead, present PM-specific routing:
129
+
130
+ 1. Read TICKET-MAP.md for the current phase
131
+ 2. If no TICKET-MAP exists: suggest `/gsd:pm-start {phase}`
132
+ 3. If TICKET-MAP exists, check ticket statuses:
133
+
134
+ | Condition | Action |
135
+ |-----------|--------|
136
+ | All tickets done | "Phase complete. `/gsd:pm-start {next}` for next phase." |
137
+ | Some tickets running | "Workers active. `/gsd:pm-check` to poll status." |
138
+ | Some tickets todo, wave ready | "Ready to dispatch. `/gsd:pm-check` to auto-dispatch." |
139
+ | Failed tickets | "Failures detected. `/gsd:pm-replan {phase}` to fix." |
140
+ | No tickets yet | "Phase not started. `/gsd:pm-start {phase}`" |
141
+
142
+ 4. If pm-loop.sh is running, note: "Autonomous monitoring active (PID: X)"
143
+ 5. Show last 3 PM-LOG entries if available
144
+ 6. Present available PM commands
145
+
146
+ ```
147
+ ## PM Status
148
+
149
+ Mode: {autonomous|manual}
150
+ Loop: {running|stopped}
151
+
152
+ | Wave | Done | Running | Todo | Failed |
153
+ | ---- | ---- | ------- | ---- | ------ |
154
+ | ... | ... | ... | ... | ... |
155
+
156
+ ## Actions
157
+ /gsd:pm-check — Poll ticket status
158
+ /gsd:pm-status — Full dashboard
159
+ /gsd:pm-replan — Modify plans
160
+ /gsd:pm-stop — Stop autonomous loop
161
+ ```
162
+
163
+ **Exit after PM route.** Do not continue to standard routing below.
164
+ </step>
165
+
166
+ <step name="route">
167
+ **Determine next action based on verified counts.**
168
+
169
+ **Step 1: Count plans, summaries, and issues in current phase**
170
+
171
+ List files in the current phase directory:
172
+
173
+ ```bash
174
+ ls -1 .planning/phases/[current-phase-dir]/*-PLAN.md 2>/dev/null | wc -l
175
+ ls -1 .planning/phases/[current-phase-dir]/*-SUMMARY.md 2>/dev/null | wc -l
176
+ ls -1 .planning/phases/[current-phase-dir]/*-UAT.md 2>/dev/null | wc -l
177
+ ```
178
+
179
+ State: "This phase has {X} plans, {Y} summaries."
180
+
181
+ **Step 1.5: Check for unaddressed UAT gaps**
182
+
183
+ Check for UAT.md files with status "diagnosed" (has gaps needing fixes).
184
+
185
+ ```bash
186
+ # Check for diagnosed UAT with gaps
187
+ grep -l "status: diagnosed" .planning/phases/[current-phase-dir]/*-UAT.md 2>/dev/null
188
+ ```
189
+
190
+ Track:
191
+ - `uat_with_gaps`: UAT.md files with status "diagnosed" (gaps need fixing)
192
+
193
+ **Step 2: Route based on counts**
194
+
195
+ | Condition | Meaning | Action |
196
+ |-----------|---------|--------|
197
+ | uat_with_gaps > 0 | UAT gaps need fix plans | Go to **Route E** |
198
+ | summaries < plans | Unexecuted plans exist | Go to **Route A** |
199
+ | summaries = plans AND plans > 0 | Phase complete | Go to Step 3 |
200
+ | plans = 0 | Phase not yet planned | Go to **Route B** |
201
+
202
+ ---
203
+
204
+ **Route A: Unexecuted plan exists**
205
+
206
+ Find the first PLAN.md without matching SUMMARY.md.
207
+ Read its `<objective>` section.
208
+
209
+ ```
210
+ ---
211
+
212
+ ## ▶ Next Up
213
+
214
+ **{phase}-{plan}: [Plan Name]** — [objective summary from PLAN.md]
215
+
216
+ `/gsd:execute-phase {phase}`
217
+
218
+ <sub>`/clear` first → fresh context window</sub>
219
+
220
+ ---
221
+ ```
222
+
223
+ ---
224
+
225
+ **Route B: Phase needs planning**
226
+
227
+ Check if `{phase}-CONTEXT.md` exists in phase directory.
228
+
229
+ **If CONTEXT.md exists:**
230
+
231
+ ```
232
+ ---
233
+
234
+ ## ▶ Next Up
235
+
236
+ **Phase {N}: {Name}** — {Goal from ROADMAP.md}
237
+ <sub>✓ Context gathered, ready to plan</sub>
238
+
239
+ `/gsd:plan-phase {phase-number}`
240
+
241
+ <sub>`/clear` first → fresh context window</sub>
242
+
243
+ ---
244
+ ```
245
+
246
+ **If CONTEXT.md does NOT exist:**
247
+
248
+ ```
249
+ ---
250
+
251
+ ## ▶ Next Up
252
+
253
+ **Phase {N}: {Name}** — {Goal from ROADMAP.md}
254
+
255
+ `/gsd:discuss-phase {phase}` — gather context and clarify approach
256
+
257
+ <sub>`/clear` first → fresh context window</sub>
258
+
259
+ ---
260
+
261
+ **Also available:**
262
+ - `/gsd:plan-phase {phase}` — skip discussion, plan directly
263
+ - `/gsd:list-phase-assumptions {phase}` — see Claude's assumptions
264
+
265
+ ---
266
+ ```
267
+
268
+ ---
269
+
270
+ **Route E: UAT gaps need fix plans**
271
+
272
+ UAT.md exists with gaps (diagnosed issues). User needs to plan fixes.
273
+
274
+ ```
275
+ ---
276
+
277
+ ## ⚠ UAT Gaps Found
278
+
279
+ **{phase}-UAT.md** has {N} gaps requiring fixes.
280
+
281
+ `/gsd:plan-phase {phase} --gaps`
282
+
283
+ <sub>`/clear` first → fresh context window</sub>
284
+
285
+ ---
286
+
287
+ **Also available:**
288
+ - `/gsd:execute-phase {phase}` — execute phase plans
289
+ - `/gsd:verify-work {phase}` — run more UAT testing
290
+
291
+ ---
292
+ ```
293
+
294
+ ---
295
+
296
+ **Step 3: Check milestone status (only when phase complete)**
297
+
298
+ Read ROADMAP.md and identify:
299
+ 1. Current phase number
300
+ 2. All phase numbers in the current milestone section
301
+
302
+ Count total phases and identify the highest phase number.
303
+
304
+ State: "Current phase is {X}. Milestone has {N} phases (highest: {Y})."
305
+
306
+ **Route based on milestone status:**
307
+
308
+ | Condition | Meaning | Action |
309
+ |-----------|---------|--------|
310
+ | current phase < highest phase | More phases remain | Go to **Route C** |
311
+ | current phase = highest phase | Milestone complete | Go to **Route D** |
312
+
313
+ ---
314
+
315
+ **Route C: Phase complete, more phases remain**
316
+
317
+ Read ROADMAP.md to get the next phase's name and goal.
318
+
319
+ ```
320
+ ---
321
+
322
+ ## ✓ Phase {Z} Complete
323
+
324
+ ## ▶ Next Up
325
+
326
+ **Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
327
+
328
+ `/gsd:discuss-phase {Z+1}` — gather context and clarify approach
329
+
330
+ <sub>`/clear` first → fresh context window</sub>
331
+
332
+ ---
333
+
334
+ **Also available:**
335
+ - `/gsd:plan-phase {Z+1}` — skip discussion, plan directly
336
+ - `/gsd:verify-work {Z}` — user acceptance test before continuing
337
+
338
+ ---
339
+ ```
340
+
341
+ ---
342
+
343
+ **Route D: Milestone complete**
344
+
345
+ ```
346
+ ---
347
+
348
+ ## 🎉 Milestone Complete
349
+
350
+ All {N} phases finished!
351
+
352
+ ## ▶ Next Up
353
+
354
+ **Complete Milestone** — archive and prepare for next
355
+
356
+ `/gsd:complete-milestone`
357
+
358
+ <sub>`/clear` first → fresh context window</sub>
359
+
360
+ ---
361
+
362
+ **Also available:**
363
+ - `/gsd:verify-work` — user acceptance test before completing milestone
364
+
365
+ ---
366
+ ```
367
+
368
+ ---
369
+
370
+ **Route F: Between milestones (ROADMAP.md missing, PROJECT.md exists)**
371
+
372
+ A milestone was completed and archived. Ready to start the next milestone cycle.
373
+
374
+ Read MILESTONES.md to find the last completed milestone version.
375
+
376
+ ```
377
+ ---
378
+
379
+ ## ✓ Milestone v{X.Y} Complete
380
+
381
+ Ready to plan the next milestone.
382
+
383
+ ## ▶ Next Up
384
+
385
+ **Start Next Milestone** — questioning → research → requirements → roadmap
386
+
387
+ `/gsd:new-milestone`
388
+
389
+ <sub>`/clear` first → fresh context window</sub>
390
+
391
+ ---
392
+ ```
393
+
394
+ </step>
395
+
396
+ <step name="edge_cases">
397
+ **Handle edge cases:**
398
+
399
+ - Phase complete but next phase not planned → offer `/gsd:plan-phase [next]`
400
+ - All work complete → offer milestone completion
401
+ - Blockers present → highlight before offering to continue
402
+ - Handoff file exists → mention it, offer `/gsd:resume-work`
403
+ </step>
404
+
405
+ </process>
406
+
407
+ <success_criteria>
408
+
409
+ - [ ] Rich context provided (recent work, decisions, issues)
410
+ - [ ] Current position clear with visual progress
411
+ - [ ] What's next clearly explained
412
+ - [ ] Smart routing: /gsd:execute-phase if plans exist, /gsd:plan-phase if not
413
+ - [ ] User confirms before any action
414
+ - [ ] Seamless handoff to appropriate gsd command
415
+ </success_criteria>
@@ -0,0 +1,309 @@
1
+ ---
2
+ name: gsd:quick
3
+ description: Execute a quick task with GSD guarantees (atomic commits, state tracking) but skip optional agents
4
+ argument-hint: ""
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Edit
9
+ - Glob
10
+ - Grep
11
+ - Bash
12
+ - Task
13
+ - AskUserQuestion
14
+ ---
15
+
16
+ <objective>
17
+ Execute small, ad-hoc tasks with GSD guarantees (atomic commits, STATE.md tracking) while skipping optional agents (research, plan-checker, verifier).
18
+
19
+ Quick mode is the same system with a shorter path:
20
+ - Spawns gsd-planner (quick mode) + gsd-executor(s)
21
+ - Skips gsd-phase-researcher, gsd-plan-checker, gsd-verifier
22
+ - Quick tasks live in `.planning/quick/` separate from planned phases
23
+ - Updates STATE.md "Quick Tasks Completed" table (NOT ROADMAP.md)
24
+
25
+ Use when: You know exactly what to do and the task is small enough to not need research or verification.
26
+ </objective>
27
+
28
+ <execution_context>
29
+ Orchestration is inline - no separate workflow file. Quick mode is deliberately simpler than full GSD.
30
+ </execution_context>
31
+
32
+ <context>
33
+ @.planning/STATE.md
34
+ </context>
35
+
36
+ <process>
37
+ **Step 0: Resolve Model Profile**
38
+
39
+ Read model profile for agent spawning:
40
+
41
+ ```bash
42
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
43
+ ```
44
+
45
+ Default to "balanced" if not set.
46
+
47
+ **Model lookup table:**
48
+
49
+ | Agent | quality | balanced | budget |
50
+ |-------|---------|----------|--------|
51
+ | gsd-planner | opus | opus | sonnet |
52
+ | gsd-executor | opus | sonnet | sonnet |
53
+
54
+ Store resolved models for use in Task calls below.
55
+
56
+ ---
57
+
58
+ **Step 1: Pre-flight validation**
59
+
60
+ Check that an active GSD project exists:
61
+
62
+ ```bash
63
+ if [ ! -f .planning/ROADMAP.md ]; then
64
+ echo "Quick mode requires an active project with ROADMAP.md."
65
+ echo "Run /gsd:new-project first."
66
+ exit 1
67
+ fi
68
+ ```
69
+
70
+ If validation fails, stop immediately with the error message.
71
+
72
+ Quick tasks can run mid-phase - validation only checks ROADMAP.md exists, not phase status.
73
+
74
+ ---
75
+
76
+ **Step 2: Get task description**
77
+
78
+ Prompt user interactively for the task description:
79
+
80
+ ```
81
+ AskUserQuestion(
82
+ header: "Quick Task",
83
+ question: "What do you want to do?",
84
+ followUp: null
85
+ )
86
+ ```
87
+
88
+ Store response as `$DESCRIPTION`.
89
+
90
+ If empty, re-prompt: "Please provide a task description."
91
+
92
+ Generate slug from description:
93
+ ```bash
94
+ slug=$(echo "$DESCRIPTION" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//' | cut -c1-40)
95
+ ```
96
+
97
+ ---
98
+
99
+ **Step 3: Calculate next quick task number**
100
+
101
+ Ensure `.planning/quick/` directory exists and find the next sequential number:
102
+
103
+ ```bash
104
+ # Ensure .planning/quick/ exists
105
+ mkdir -p .planning/quick
106
+
107
+ # Find highest existing number and increment
108
+ last=$(ls -1d .planning/quick/[0-9][0-9][0-9]-* 2>/dev/null | sort -r | head -1 | xargs -I{} basename {} | grep -oE '^[0-9]+')
109
+
110
+ if [ -z "$last" ]; then
111
+ next_num="001"
112
+ else
113
+ next_num=$(printf "%03d" $((10#$last + 1)))
114
+ fi
115
+ ```
116
+
117
+ ---
118
+
119
+ **Step 4: Create quick task directory**
120
+
121
+ Create the directory for this quick task:
122
+
123
+ ```bash
124
+ QUICK_DIR=".planning/quick/${next_num}-${slug}"
125
+ mkdir -p "$QUICK_DIR"
126
+ ```
127
+
128
+ Report to user:
129
+ ```
130
+ Creating quick task ${next_num}: ${DESCRIPTION}
131
+ Directory: ${QUICK_DIR}
132
+ ```
133
+
134
+ Store `$QUICK_DIR` for use in orchestration.
135
+
136
+ ---
137
+
138
+ **Step 5: Spawn planner (quick mode)**
139
+
140
+ Spawn gsd-planner with quick mode context:
141
+
142
+ ```
143
+ Task(
144
+ prompt="
145
+ <planning_context>
146
+
147
+ **Mode:** quick
148
+ **Directory:** ${QUICK_DIR}
149
+ **Description:** ${DESCRIPTION}
150
+
151
+ **Project State:**
152
+ @.planning/STATE.md
153
+
154
+ </planning_context>
155
+
156
+ <constraints>
157
+ - Create a SINGLE plan with 1-3 focused tasks
158
+ - Quick tasks should be atomic and self-contained
159
+ - No research phase, no checker phase
160
+ - Target ~30% context usage (simple, focused)
161
+ </constraints>
162
+
163
+ <output>
164
+ Write plan to: ${QUICK_DIR}/${next_num}-PLAN.md
165
+ Return: ## PLANNING COMPLETE with plan path
166
+ </output>
167
+ ",
168
+ subagent_type="gsd-planner",
169
+ model="{planner_model}",
170
+ description="Quick plan: ${DESCRIPTION}"
171
+ )
172
+ ```
173
+
174
+ After planner returns:
175
+ 1. Verify plan exists at `${QUICK_DIR}/${next_num}-PLAN.md`
176
+ 2. Extract plan count (typically 1 for quick tasks)
177
+ 3. Report: "Plan created: ${QUICK_DIR}/${next_num}-PLAN.md"
178
+
179
+ If plan not found, error: "Planner failed to create ${next_num}-PLAN.md"
180
+
181
+ ---
182
+
183
+ **Step 6: Spawn executor**
184
+
185
+ Spawn gsd-executor with plan reference:
186
+
187
+ ```
188
+ Task(
189
+ prompt="
190
+ Execute quick task ${next_num}.
191
+
192
+ Plan: @${QUICK_DIR}/${next_num}-PLAN.md
193
+ Project state: @.planning/STATE.md
194
+
195
+ <constraints>
196
+ - Execute all tasks in the plan
197
+ - Commit each task atomically
198
+ - Create summary at: ${QUICK_DIR}/${next_num}-SUMMARY.md
199
+ - Do NOT update ROADMAP.md (quick tasks are separate from planned phases)
200
+ </constraints>
201
+ ",
202
+ subagent_type="gsd-executor",
203
+ model="{executor_model}",
204
+ description="Execute: ${DESCRIPTION}"
205
+ )
206
+ ```
207
+
208
+ After executor returns:
209
+ 1. Verify summary exists at `${QUICK_DIR}/${next_num}-SUMMARY.md`
210
+ 2. Extract commit hash from executor output
211
+ 3. Report completion status
212
+
213
+ If summary not found, error: "Executor failed to create ${next_num}-SUMMARY.md"
214
+
215
+ Note: For quick tasks producing multiple plans (rare), spawn executors in parallel waves per execute-phase patterns.
216
+
217
+ ---
218
+
219
+ **Step 7: Update STATE.md**
220
+
221
+ Update STATE.md with quick task completion record.
222
+
223
+ **7a. Check if "Quick Tasks Completed" section exists:**
224
+
225
+ Read STATE.md and check for `### Quick Tasks Completed` section.
226
+
227
+ **7b. If section doesn't exist, create it:**
228
+
229
+ Insert after `### Blockers/Concerns` section:
230
+
231
+ ```markdown
232
+ ### Quick Tasks Completed
233
+
234
+ | # | Description | Date | Commit | Directory |
235
+ |---|-------------|------|--------|-----------|
236
+ ```
237
+
238
+ **7c. Append new row to table:**
239
+
240
+ ```markdown
241
+ | ${next_num} | ${DESCRIPTION} | $(date +%Y-%m-%d) | ${commit_hash} | [${next_num}-${slug}](./quick/${next_num}-${slug}/) |
242
+ ```
243
+
244
+ **7d. Update "Last activity" line:**
245
+
246
+ Find and update the line:
247
+ ```
248
+ Last activity: $(date +%Y-%m-%d) - Completed quick task ${next_num}: ${DESCRIPTION}
249
+ ```
250
+
251
+ Use Edit tool to make these changes atomically
252
+
253
+ ---
254
+
255
+ **Step 8: Final commit and completion**
256
+
257
+ Stage and commit quick task artifacts:
258
+
259
+ ```bash
260
+ # Stage quick task artifacts
261
+ git add ${QUICK_DIR}/${next_num}-PLAN.md
262
+ git add ${QUICK_DIR}/${next_num}-SUMMARY.md
263
+ git add .planning/STATE.md
264
+
265
+ # Commit with quick task format
266
+ git commit -m "$(cat <<'EOF'
267
+ docs(quick-${next_num}): ${DESCRIPTION}
268
+
269
+ Quick task completed.
270
+
271
+ Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
272
+ EOF
273
+ )"
274
+ ```
275
+
276
+ Get final commit hash:
277
+ ```bash
278
+ commit_hash=$(git rev-parse --short HEAD)
279
+ ```
280
+
281
+ Display completion output:
282
+ ```
283
+ ---
284
+
285
+ GSD > QUICK TASK COMPLETE
286
+
287
+ Quick Task ${next_num}: ${DESCRIPTION}
288
+
289
+ Summary: ${QUICK_DIR}/${next_num}-SUMMARY.md
290
+ Commit: ${commit_hash}
291
+
292
+ ---
293
+
294
+ Ready for next task: /gsd:quick
295
+ ```
296
+
297
+ </process>
298
+
299
+ <success_criteria>
300
+ - [ ] ROADMAP.md validation passes
301
+ - [ ] User provides task description
302
+ - [ ] Slug generated (lowercase, hyphens, max 40 chars)
303
+ - [ ] Next number calculated (001, 002, 003...)
304
+ - [ ] Directory created at `.planning/quick/NNN-slug/`
305
+ - [ ] `${next_num}-PLAN.md` created by planner
306
+ - [ ] `${next_num}-SUMMARY.md` created by executor
307
+ - [ ] STATE.md updated with quick task row
308
+ - [ ] Artifacts committed
309
+ </success_criteria>