gsd-opencode 1.22.1 → 1.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/agents/gsd-advisor-researcher.md +112 -0
  2. package/agents/gsd-assumptions-analyzer.md +110 -0
  3. package/agents/gsd-codebase-mapper.md +0 -2
  4. package/agents/gsd-debugger.md +117 -2
  5. package/agents/gsd-doc-verifier.md +207 -0
  6. package/agents/gsd-doc-writer.md +608 -0
  7. package/agents/gsd-executor.md +45 -4
  8. package/agents/gsd-integration-checker.md +0 -2
  9. package/agents/gsd-nyquist-auditor.md +0 -2
  10. package/agents/gsd-phase-researcher.md +191 -5
  11. package/agents/gsd-plan-checker.md +152 -5
  12. package/agents/gsd-planner.md +131 -157
  13. package/agents/gsd-project-researcher.md +28 -3
  14. package/agents/gsd-research-synthesizer.md +0 -2
  15. package/agents/gsd-roadmapper.md +29 -2
  16. package/agents/gsd-security-auditor.md +129 -0
  17. package/agents/gsd-ui-auditor.md +485 -0
  18. package/agents/gsd-ui-checker.md +305 -0
  19. package/agents/gsd-ui-researcher.md +368 -0
  20. package/agents/gsd-user-profiler.md +173 -0
  21. package/agents/gsd-verifier.md +207 -22
  22. package/commands/gsd/gsd-add-backlog.md +76 -0
  23. package/commands/gsd/gsd-analyze-dependencies.md +34 -0
  24. package/commands/gsd/gsd-audit-uat.md +24 -0
  25. package/commands/gsd/gsd-autonomous.md +45 -0
  26. package/commands/gsd/gsd-cleanup.md +5 -0
  27. package/commands/gsd/gsd-debug.md +29 -21
  28. package/commands/gsd/gsd-discuss-phase.md +15 -36
  29. package/commands/gsd/gsd-do.md +30 -0
  30. package/commands/gsd/gsd-docs-update.md +48 -0
  31. package/commands/gsd/gsd-execute-phase.md +24 -2
  32. package/commands/gsd/gsd-fast.md +30 -0
  33. package/commands/gsd/gsd-forensics.md +56 -0
  34. package/commands/gsd/gsd-help.md +2 -0
  35. package/commands/gsd/gsd-join-discord.md +2 -1
  36. package/commands/gsd/gsd-list-workspaces.md +19 -0
  37. package/commands/gsd/gsd-manager.md +40 -0
  38. package/commands/gsd/gsd-milestone-summary.md +51 -0
  39. package/commands/gsd/gsd-new-project.md +4 -0
  40. package/commands/gsd/gsd-new-workspace.md +44 -0
  41. package/commands/gsd/gsd-next.md +24 -0
  42. package/commands/gsd/gsd-note.md +34 -0
  43. package/commands/gsd/gsd-plan-phase.md +8 -1
  44. package/commands/gsd/gsd-plant-seed.md +28 -0
  45. package/commands/gsd/gsd-pr-branch.md +25 -0
  46. package/commands/gsd/gsd-profile-user.md +46 -0
  47. package/commands/gsd/gsd-quick.md +7 -3
  48. package/commands/gsd/gsd-reapply-patches.md +178 -45
  49. package/commands/gsd/gsd-remove-workspace.md +26 -0
  50. package/commands/gsd/gsd-research-phase.md +7 -12
  51. package/commands/gsd/gsd-review-backlog.md +62 -0
  52. package/commands/gsd/gsd-review.md +38 -0
  53. package/commands/gsd/gsd-secure-phase.md +35 -0
  54. package/commands/gsd/gsd-session-report.md +19 -0
  55. package/commands/gsd/gsd-set-profile.md +24 -23
  56. package/commands/gsd/gsd-ship.md +23 -0
  57. package/commands/gsd/gsd-stats.md +18 -0
  58. package/commands/gsd/gsd-thread.md +127 -0
  59. package/commands/gsd/gsd-ui-phase.md +34 -0
  60. package/commands/gsd/gsd-ui-review.md +32 -0
  61. package/commands/gsd/gsd-workstreams.md +71 -0
  62. package/get-shit-done/bin/gsd-tools.cjs +450 -90
  63. package/get-shit-done/bin/lib/commands.cjs +489 -24
  64. package/get-shit-done/bin/lib/config.cjs +329 -48
  65. package/get-shit-done/bin/lib/core.cjs +1143 -102
  66. package/get-shit-done/bin/lib/docs.cjs +267 -0
  67. package/get-shit-done/bin/lib/frontmatter.cjs +125 -43
  68. package/get-shit-done/bin/lib/init.cjs +918 -106
  69. package/get-shit-done/bin/lib/milestone.cjs +65 -33
  70. package/get-shit-done/bin/lib/model-profiles.cjs +70 -0
  71. package/get-shit-done/bin/lib/phase.cjs +434 -404
  72. package/get-shit-done/bin/lib/profile-output.cjs +1048 -0
  73. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  74. package/get-shit-done/bin/lib/roadmap.cjs +156 -101
  75. package/get-shit-done/bin/lib/schema-detect.cjs +238 -0
  76. package/get-shit-done/bin/lib/security.cjs +384 -0
  77. package/get-shit-done/bin/lib/state.cjs +711 -79
  78. package/get-shit-done/bin/lib/template.cjs +2 -2
  79. package/get-shit-done/bin/lib/uat.cjs +282 -0
  80. package/get-shit-done/bin/lib/verify.cjs +254 -42
  81. package/get-shit-done/bin/lib/workstream.cjs +495 -0
  82. package/get-shit-done/references/agent-contracts.md +79 -0
  83. package/get-shit-done/references/artifact-types.md +113 -0
  84. package/get-shit-done/references/checkpoints.md +12 -10
  85. package/get-shit-done/references/context-budget.md +49 -0
  86. package/get-shit-done/references/continuation-format.md +15 -15
  87. package/get-shit-done/references/decimal-phase-calculation.md +2 -3
  88. package/get-shit-done/references/domain-probes.md +125 -0
  89. package/get-shit-done/references/gate-prompts.md +100 -0
  90. package/get-shit-done/references/git-integration.md +47 -0
  91. package/get-shit-done/references/model-profile-resolution.md +2 -0
  92. package/get-shit-done/references/model-profiles.md +62 -16
  93. package/get-shit-done/references/phase-argument-parsing.md +2 -2
  94. package/get-shit-done/references/planner-gap-closure.md +62 -0
  95. package/get-shit-done/references/planner-reviews.md +39 -0
  96. package/get-shit-done/references/planner-revision.md +87 -0
  97. package/get-shit-done/references/planning-config.md +18 -1
  98. package/get-shit-done/references/revision-loop.md +97 -0
  99. package/get-shit-done/references/ui-brand.md +2 -2
  100. package/get-shit-done/references/universal-anti-patterns.md +58 -0
  101. package/get-shit-done/references/user-profiling.md +681 -0
  102. package/get-shit-done/references/workstream-flag.md +111 -0
  103. package/get-shit-done/templates/SECURITY.md +61 -0
  104. package/get-shit-done/templates/UAT.md +21 -3
  105. package/get-shit-done/templates/UI-SPEC.md +100 -0
  106. package/get-shit-done/templates/VALIDATION.md +3 -3
  107. package/get-shit-done/templates/claude-md.md +145 -0
  108. package/get-shit-done/templates/config.json +14 -3
  109. package/get-shit-done/templates/context.md +61 -6
  110. package/get-shit-done/templates/debug-subagent-prompt.md +2 -6
  111. package/get-shit-done/templates/dev-preferences.md +21 -0
  112. package/get-shit-done/templates/discussion-log.md +63 -0
  113. package/get-shit-done/templates/phase-prompt.md +46 -5
  114. package/get-shit-done/templates/planner-subagent-prompt.md +2 -10
  115. package/get-shit-done/templates/project.md +2 -0
  116. package/get-shit-done/templates/state.md +2 -2
  117. package/get-shit-done/templates/user-profile.md +146 -0
  118. package/get-shit-done/workflows/add-phase.md +4 -4
  119. package/get-shit-done/workflows/add-tests.md +4 -4
  120. package/get-shit-done/workflows/add-todo.md +4 -4
  121. package/get-shit-done/workflows/analyze-dependencies.md +96 -0
  122. package/get-shit-done/workflows/audit-milestone.md +20 -16
  123. package/get-shit-done/workflows/audit-uat.md +109 -0
  124. package/get-shit-done/workflows/autonomous.md +1036 -0
  125. package/get-shit-done/workflows/check-todos.md +4 -4
  126. package/get-shit-done/workflows/cleanup.md +4 -4
  127. package/get-shit-done/workflows/complete-milestone.md +22 -10
  128. package/get-shit-done/workflows/diagnose-issues.md +21 -7
  129. package/get-shit-done/workflows/discovery-phase.md +2 -2
  130. package/get-shit-done/workflows/discuss-phase-assumptions.md +671 -0
  131. package/get-shit-done/workflows/discuss-phase-power.md +291 -0
  132. package/get-shit-done/workflows/discuss-phase.md +558 -47
  133. package/get-shit-done/workflows/do.md +104 -0
  134. package/get-shit-done/workflows/docs-update.md +1093 -0
  135. package/get-shit-done/workflows/execute-phase.md +741 -58
  136. package/get-shit-done/workflows/execute-plan.md +77 -12
  137. package/get-shit-done/workflows/fast.md +105 -0
  138. package/get-shit-done/workflows/forensics.md +265 -0
  139. package/get-shit-done/workflows/health.md +28 -6
  140. package/get-shit-done/workflows/help.md +127 -7
  141. package/get-shit-done/workflows/insert-phase.md +4 -4
  142. package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
  143. package/get-shit-done/workflows/list-workspaces.md +56 -0
  144. package/get-shit-done/workflows/manager.md +363 -0
  145. package/get-shit-done/workflows/map-codebase.md +83 -44
  146. package/get-shit-done/workflows/milestone-summary.md +223 -0
  147. package/get-shit-done/workflows/new-milestone.md +133 -25
  148. package/get-shit-done/workflows/new-project.md +216 -54
  149. package/get-shit-done/workflows/new-workspace.md +237 -0
  150. package/get-shit-done/workflows/next.md +97 -0
  151. package/get-shit-done/workflows/node-repair.md +92 -0
  152. package/get-shit-done/workflows/note.md +156 -0
  153. package/get-shit-done/workflows/pause-work.md +132 -15
  154. package/get-shit-done/workflows/plan-milestone-gaps.md +6 -7
  155. package/get-shit-done/workflows/plan-phase.md +513 -62
  156. package/get-shit-done/workflows/plant-seed.md +169 -0
  157. package/get-shit-done/workflows/pr-branch.md +129 -0
  158. package/get-shit-done/workflows/profile-user.md +450 -0
  159. package/get-shit-done/workflows/progress.md +154 -29
  160. package/get-shit-done/workflows/quick.md +285 -111
  161. package/get-shit-done/workflows/remove-phase.md +2 -2
  162. package/get-shit-done/workflows/remove-workspace.md +90 -0
  163. package/get-shit-done/workflows/research-phase.md +13 -9
  164. package/get-shit-done/workflows/resume-project.md +37 -18
  165. package/get-shit-done/workflows/review.md +281 -0
  166. package/get-shit-done/workflows/secure-phase.md +154 -0
  167. package/get-shit-done/workflows/session-report.md +146 -0
  168. package/get-shit-done/workflows/set-profile.md +2 -2
  169. package/get-shit-done/workflows/settings.md +91 -11
  170. package/get-shit-done/workflows/ship.md +237 -0
  171. package/get-shit-done/workflows/stats.md +60 -0
  172. package/get-shit-done/workflows/transition.md +150 -23
  173. package/get-shit-done/workflows/ui-phase.md +292 -0
  174. package/get-shit-done/workflows/ui-review.md +183 -0
  175. package/get-shit-done/workflows/update.md +262 -30
  176. package/get-shit-done/workflows/validate-phase.md +14 -17
  177. package/get-shit-done/workflows/verify-phase.md +143 -11
  178. package/get-shit-done/workflows/verify-work.md +141 -39
  179. package/package.json +1 -1
  180. package/skills/gsd-audit-milestone/SKILL.md +29 -0
  181. package/skills/gsd-cleanup/SKILL.md +19 -0
  182. package/skills/gsd-complete-milestone/SKILL.md +131 -0
  183. package/skills/gsd-discuss-phase/SKILL.md +54 -0
  184. package/skills/gsd-execute-phase/SKILL.md +49 -0
  185. package/skills/gsd-plan-phase/SKILL.md +37 -0
  186. package/skills/gsd-ui-phase/SKILL.md +24 -0
  187. package/skills/gsd-ui-review/SKILL.md +24 -0
  188. package/skills/gsd-verify-work/SKILL.md +30 -0
@@ -1,23 +1,38 @@
1
- <purpose>
1
+ <objective>
2
2
  Execute small, ad-hoc tasks with GSD guarantees (atomic commits, STATE.md tracking). Quick mode spawns gsd-planner (quick mode) + gsd-executor(s), tracks tasks in `.planning/quick/`, and updates STATE.md's "Quick Tasks Completed" table.
3
3
 
4
+ With `--full` flag: enables the complete quality pipeline — discussion + research + plan-checking + verification. One flag for everything.
5
+
6
+ With `--validate` flag: enables plan-checking (max 2 iterations) and post-execution verification only. Use when you want quality guarantees without discussion or research.
7
+
4
8
  With `--discuss` flag: lightweight discussion phase before planning. Surfaces assumptions, clarifies gray areas, captures decisions in CONTEXT.md so the planner treats them as locked.
5
9
 
6
- With `--full` flag: enables plan-checking (max 2 iterations) and post-execution verification for quality guarantees without full milestone ceremony.
10
+ With `--research` flag: spawns a focused research agent before planning. Investigates implementation approaches, library options, and pitfalls. Use when you're unsure how to approach a task.
7
11
 
8
- Flags are composable: `--discuss --full` gives discussion + plan-checking + verification.
9
- </purpose>
12
+ Granular flags are composable: `--discuss --research --validate` gives the same result as `--full`.
13
+ </objective>
10
14
 
11
15
  <required_reading>
12
16
  read all files referenced by the invoking prompt's execution_context before starting.
13
17
  </required_reading>
14
18
 
19
+ <available_agent_types>
20
+ Valid GSD subagent types (use exact names — do not fall back to 'general'):
21
+ - gsd-phase-researcher — Researches technical approaches for a phase
22
+ - gsd-planner — Creates detailed plans from phase scope
23
+ - gsd-plan-checker — Reviews plan quality before execution
24
+ - gsd-executor — Executes plan tasks, commits, creates SUMMARY.md
25
+ - gsd-verifier — Verifies phase completion, checks quality gates
26
+ </available_agent_types>
27
+
15
28
  <process>
16
29
  **Step 1: Parse arguments and get task description**
17
30
 
18
31
  Parse `$ARGUMENTS` for:
19
- - `--full` flag → store as `$FULL_MODE` (true/false)
20
- - `--discuss` flag → store as `$DISCUSS_MODE` (true/false)
32
+ - `--full` flag → store `$FULL_MODE=true`, `$DISCUSS_MODE=true`, `$RESEARCH_MODE=true`, `$VALIDATE_MODE=true`
33
+ - `--validate` flag → store `$VALIDATE_MODE=true`
34
+ - `--discuss` flag → store `$DISCUSS_MODE=true`
35
+ - `--research` flag → store `$RESEARCH_MODE=true`
21
36
  - Remaining text → use as `$DESCRIPTION` if non-empty
22
37
 
23
38
  If `$DESCRIPTION` is empty after parsing, prompt user interactively:
@@ -36,15 +51,51 @@ If still empty, re-prompt: "Please provide a task description."
36
51
 
37
52
  Display banner based on active flags:
38
53
 
39
- If `$DISCUSS_MODE` and `$FULL_MODE`:
54
+ If `$FULL_MODE` (all phases enabled — `--full` or all granular flags):
55
+ ```
56
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
57
+ GSD ► QUICK TASK (FULL)
58
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
59
+
60
+ ◆ Discussion + research + plan checking + verification enabled
61
+ ```
62
+
63
+ If `$DISCUSS_MODE` and `$RESEARCH_MODE` and `$VALIDATE_MODE` (no `$FULL_MODE` — composed granularly):
40
64
  ```
41
65
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
42
- GSD ► QUICK TASK (DISCUSS + FULL)
66
+ GSD ► QUICK TASK (DISCUSS + RESEARCH + VALIDATE)
67
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
68
+
69
+ ◆ Discussion + research + plan checking + verification enabled
70
+ ```
71
+
72
+ If `$DISCUSS_MODE` and `$VALIDATE_MODE` (no research):
73
+ ```
74
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
75
+ GSD ► QUICK TASK (DISCUSS + VALIDATE)
43
76
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
44
77
 
45
78
  ◆ Discussion + plan checking + verification enabled
46
79
  ```
47
80
 
81
+ If `$DISCUSS_MODE` and `$RESEARCH_MODE` (no validate):
82
+ ```
83
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
84
+ GSD ► QUICK TASK (DISCUSS + RESEARCH)
85
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
86
+
87
+ ◆ Discussion + research enabled
88
+ ```
89
+
90
+ If `$RESEARCH_MODE` and `$VALIDATE_MODE` (no discuss):
91
+ ```
92
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
93
+ GSD ► QUICK TASK (RESEARCH + VALIDATE)
94
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
95
+
96
+ ◆ Research + plan checking + verification enabled
97
+ ```
98
+
48
99
  If `$DISCUSS_MODE` only:
49
100
  ```
50
101
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -54,10 +105,19 @@ If `$DISCUSS_MODE` only:
54
105
  ◆ Discussion phase enabled — surfacing gray areas before planning
55
106
  ```
56
107
 
57
- If `$FULL_MODE` only:
108
+ If `$RESEARCH_MODE` only:
109
+ ```
110
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
111
+ GSD ► QUICK TASK (RESEARCH)
112
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
113
+
114
+ ◆ Research phase enabled — investigating approaches before planning
115
+ ```
116
+
117
+ If `$VALIDATE_MODE` only:
58
118
  ```
59
119
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
60
- GSD ► QUICK TASK (FULL MODE)
120
+ GSD ► QUICK TASK (VALIDATE)
61
121
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
62
122
 
63
123
  ◆ Plan checking + verification enabled
@@ -70,9 +130,17 @@ If `$FULL_MODE` only:
70
130
  ```bash
71
131
  INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init quick "$DESCRIPTION")
72
132
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
133
+ AGENT_SKILLS_PLANNER=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-planner 2>/dev/null)
134
+ AGENT_SKILLS_EXECUTOR=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-executor 2>/dev/null)
135
+ AGENT_SKILLS_CHECKER=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-checker 2>/dev/null)
136
+ AGENT_SKILLS_VERIFIER=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-verifier 2>/dev/null)
73
137
  ```
74
138
 
75
- Parse JSON for: `planner_model`, `executor_model`, `checker_model`, `verifier_model`, `commit_docs`, `next_num`, `slug`, `date`, `timestamp`, `quick_dir`, `task_dir`, `roadmap_exists`, `planning_exists`.
139
+ Parse JSON for: `planner_model`, `executor_model`, `checker_model`, `verifier_model`, `commit_docs`, `branch_name`, `quick_id`, `slug`, `date`, `timestamp`, `quick_dir`, `task_dir`, `roadmap_exists`, `planning_exists`.
140
+
141
+ ```bash
142
+ USE_WORKTREES=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-get workflow.use_worktrees 2>/dev/null || echo "true")
143
+ ```
76
144
 
77
145
  **If `roadmap_exists` is false:** Error — Quick mode requires an active project with ROADMAP.md. Run `/gsd-new-project` first.
78
146
 
@@ -80,6 +148,20 @@ Quick tasks can run mid-phase - validation only checks ROADMAP.md exists, not ph
80
148
 
81
149
  ---
82
150
 
151
+ **Step 2.5: Handle quick-task branching**
152
+
153
+ **If `branch_name` is empty/null:** Skip and continue on the current branch.
154
+
155
+ **If `branch_name` is set:** Check out the quick-task branch before any planning commits:
156
+
157
+ ```bash
158
+ git checkout -b "$branch_name" 2>/dev/null || git checkout "$branch_name"
159
+ ```
160
+
161
+ All quick-task commits for this run stay on that branch. User handles merge/rebase afterward.
162
+
163
+ ---
164
+
83
165
  **Step 3: Create task directory**
84
166
 
85
167
  ```bash
@@ -93,13 +175,13 @@ mkdir -p "${task_dir}"
93
175
  Create the directory for this quick task:
94
176
 
95
177
  ```bash
96
- QUICK_DIR=".planning/quick/${next_num}-${slug}"
178
+ QUICK_DIR=".planning/quick/${quick_id}-${slug}"
97
179
  mkdir -p "$QUICK_DIR"
98
180
  ```
99
181
 
100
182
  Report to user:
101
183
  ```
102
- Creating quick task ${next_num}: ${DESCRIPTION}
184
+ Creating quick task ${quick_id}: ${DESCRIPTION}
103
185
  Directory: ${QUICK_DIR}
104
186
  ```
105
187
 
@@ -180,10 +262,10 @@ Collect all decisions into `$DECISIONS`.
180
262
 
181
263
  **4.5d. write CONTEXT.md**
182
264
 
183
- write `${QUICK_DIR}/${next_num}-CONTEXT.md` using the standard context template structure:
265
+ write `${QUICK_DIR}/${quick_id}-CONTEXT.md` using the standard context template structure:
184
266
 
185
267
  ```markdown
186
- # Quick task ${next_num}: ${DESCRIPTION} - Context
268
+ # Quick task ${quick_id}: ${DESCRIPTION} - Context
187
269
 
188
270
  **Gathered:** ${date}
189
271
  **Status:** Ready for planning
@@ -217,35 +299,106 @@ ${any_specific_references_or_examples_from_discussion}
217
299
  [If none: "No specific requirements — open to standard approaches"]
218
300
 
219
301
  </specifics>
302
+
303
+ <canonical_refs>
304
+ ## Canonical References
305
+
306
+ ${any_specs_adrs_or_docs_referenced_during_discussion}
307
+
308
+ [If none: "No external specs — requirements fully captured in decisions above"]
309
+
310
+ </canonical_refs>
220
311
  ```
221
312
 
222
- Note: Quick task CONTEXT.md omits `<code_context>` and `<deferred>` sections (no codebase scouting, no phase scope to defer to). Keep it lean.
313
+ Note: Quick task CONTEXT.md omits `<code_context>` and `<deferred>` sections (no codebase scouting, no phase scope to defer to). Keep it lean. The `<canonical_refs>` section is included when external docs were referenced — omit it only if no external docs apply.
223
314
 
224
- Report: `Context captured: ${QUICK_DIR}/${next_num}-CONTEXT.md`
315
+ Report: `Context captured: ${QUICK_DIR}/${quick_id}-CONTEXT.md`
316
+
317
+ ---
318
+
319
+ **Step 4.75: Research phase (only when `$RESEARCH_MODE`)**
320
+
321
+ Skip this step entirely if NOT `$RESEARCH_MODE`.
322
+
323
+ Display banner:
324
+ ```
325
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
326
+ GSD ► RESEARCHING QUICK TASK
327
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
328
+
329
+ ◆ Investigating approaches for: ${DESCRIPTION}
330
+ ```
331
+
332
+ Spawn a single focused researcher (not 4 parallel researchers like full phases — quick tasks need targeted research, not broad domain surveys):
333
+
334
+ ```
335
+ @gsd-phase-researcher "
336
+ <research_context>
337
+
338
+ **Mode:** quick-task
339
+ **task:** ${DESCRIPTION}
340
+ **Output:** ${QUICK_DIR}/${quick_id}-RESEARCH.md
341
+
342
+ <files_to_read>
343
+ - .planning/STATE.md (Project state — what's already built)
344
+ - .planning/PROJECT.md (Project context)
345
+ - ./AGENTS.md (if exists — project-specific guidelines)
346
+ ${DISCUSS_MODE ? '- ' + QUICK_DIR + '/' + quick_id + '-CONTEXT.md (User decisions — research should align with these)' : ''}
347
+ </files_to_read>
348
+
349
+ ${AGENT_SKILLS_PLANNER}
350
+
351
+ </research_context>
352
+
353
+ <focus>
354
+ This is a quick task, not a full phase. Research should be concise and targeted:
355
+ 1. Best libraries/patterns for this specific task
356
+ 2. Common pitfalls and how to avoid them
357
+ 3. Integration points with existing codebase
358
+ 4. Any constraints or gotchas worth knowing before planning
359
+
360
+ Do NOT produce a full domain survey. Target 1-2 pages of actionable findings.
361
+ </focus>
362
+
363
+ <output>
364
+ write research to: ${QUICK_DIR}/${quick_id}-RESEARCH.md
365
+ Use standard research format but keep it lean — skip sections that don't apply.
366
+ Return: ## RESEARCH COMPLETE with file path
367
+ </output>
368
+ "
369
+ ```
370
+
371
+ After researcher returns:
372
+ 1. Verify research exists at `${QUICK_DIR}/${quick_id}-RESEARCH.md`
373
+ 2. Report: "Research complete: ${QUICK_DIR}/${quick_id}-RESEARCH.md"
374
+
375
+ If research file not found, warn but continue: "Research agent did not produce output — proceeding to planning without research."
225
376
 
226
377
  ---
227
378
 
228
379
  **Step 5: Spawn planner (quick mode)**
229
380
 
230
- **If `$FULL_MODE`:** Use `quick-full` mode with stricter constraints.
381
+ **If `$VALIDATE_MODE`:** Use `quick-full` mode with stricter constraints.
231
382
 
232
- **If NOT `$FULL_MODE`:** Use standard `quick` mode.
383
+ **If NOT `$VALIDATE_MODE`:** Use standard `quick` mode.
233
384
 
234
385
  ```
235
- task(
236
- prompt="
386
+ @gsd-planner "
237
387
  <planning_context>
238
388
 
239
- **Mode:** ${FULL_MODE ? 'quick-full' : 'quick'}
389
+ **Mode:** ${VALIDATE_MODE ? 'quick-full' : 'quick'}
240
390
  **Directory:** ${QUICK_DIR}
241
391
  **Description:** ${DESCRIPTION}
242
392
 
243
393
  <files_to_read>
244
394
  - .planning/STATE.md (Project State)
245
395
  - ./AGENTS.md (if exists — follow project-specific guidelines)
246
- ${DISCUSS_MODE ? '- ' + QUICK_DIR + '/' + next_num + '-CONTEXT.md (User decisions — locked, do not revisit)' : ''}
396
+ ${DISCUSS_MODE ? '- ' + QUICK_DIR + '/' + quick_id + '-CONTEXT.md (User decisions — locked, do not revisit)' : ''}
397
+ ${RESEARCH_MODE ? '- ' + QUICK_DIR + '/' + quick_id + '-RESEARCH.md (Research findings — use to inform implementation choices)' : ''}
247
398
  </files_to_read>
248
399
 
400
+ ${AGENT_SKILLS_PLANNER}
401
+
249
402
  **Project skills:** Check .OpenCode/skills/ or .agents/skills/ directory (if either exists) — read SKILL.md files, plans should account for project skill rules
250
403
 
251
404
  </planning_context>
@@ -253,35 +406,31 @@ ${DISCUSS_MODE ? '- ' + QUICK_DIR + '/' + next_num + '-CONTEXT.md (User decision
253
406
  <constraints>
254
407
  - Create a SINGLE plan with 1-3 focused tasks
255
408
  - Quick tasks should be atomic and self-contained
256
- - No research phase
257
- ${FULL_MODE ? '- Target ~40% context usage (structured for verification)' : '- Target ~30% context usage (simple, focused)'}
258
- ${FULL_MODE ? '- MUST generate `must_haves` in plan frontmatter (truths, artifacts, key_links)' : ''}
259
- ${FULL_MODE ? '- Each task MUST have `files`, `action`, `verify`, `done` fields' : ''}
409
+ ${RESEARCH_MODE ? '- Research findings are available — use them to inform library/pattern choices' : '- No research phase'}
410
+ ${VALIDATE_MODE ? '- Target ~40% context usage (structured for verification)' : '- Target ~30% context usage (simple, focused)'}
411
+ ${VALIDATE_MODE ? '- MUST generate `must_haves` in plan frontmatter (truths, artifacts, key_links)' : ''}
412
+ ${VALIDATE_MODE ? '- Each task MUST have `files`, `action`, `verify`, `done` fields' : ''}
260
413
  </constraints>
261
414
 
262
415
  <output>
263
- write plan to: ${QUICK_DIR}/${next_num}-PLAN.md
416
+ write plan to: ${QUICK_DIR}/${quick_id}-PLAN.md
264
417
  Return: ## PLANNING COMPLETE with plan path
265
418
  </output>
266
- ",
267
- subagent_type="gsd-planner",
268
- model="{planner_model}",
269
- description="Quick plan: ${DESCRIPTION}"
270
- )
419
+ "
271
420
  ```
272
421
 
273
422
  After planner returns:
274
- 1. Verify plan exists at `${QUICK_DIR}/${next_num}-PLAN.md`
423
+ 1. Verify plan exists at `${QUICK_DIR}/${quick_id}-PLAN.md`
275
424
  2. Extract plan count (typically 1 for quick tasks)
276
- 3. Report: "Plan created: ${QUICK_DIR}/${next_num}-PLAN.md"
425
+ 3. Report: "Plan created: ${QUICK_DIR}/${quick_id}-PLAN.md"
277
426
 
278
- If plan not found, error: "Planner failed to create ${next_num}-PLAN.md"
427
+ If plan not found, error: "Planner failed to create ${quick_id}-PLAN.md"
279
428
 
280
429
  ---
281
430
 
282
- **Step 5.5: Plan-checker loop (only when `$FULL_MODE`)**
431
+ **Step 5.5: Plan-checker loop (only when `$VALIDATE_MODE`)**
283
432
 
284
- Skip this step entirely if NOT `$FULL_MODE`.
433
+ Skip this step entirely if NOT `$VALIDATE_MODE`.
285
434
 
286
435
  Display banner:
287
436
  ```
@@ -300,9 +449,11 @@ Checker prompt:
300
449
  **task Description:** ${DESCRIPTION}
301
450
 
302
451
  <files_to_read>
303
- - ${QUICK_DIR}/${next_num}-PLAN.md (Plan to verify)
452
+ - ${QUICK_DIR}/${quick_id}-PLAN.md (Plan to verify)
304
453
  </files_to_read>
305
454
 
455
+ ${AGENT_SKILLS_CHECKER}
456
+
306
457
  **Scope:** This is a quick task, not a full phase. Skip checks that require a ROADMAP phase goal.
307
458
  </verification_context>
308
459
 
@@ -324,12 +475,7 @@ ${DISCUSS_MODE ? '- Context compliance: Does the plan honor locked decisions fro
324
475
  ```
325
476
 
326
477
  ```
327
- task(
328
- prompt=checker_prompt,
329
- subagent_type="gsd-plan-checker",
330
- model="{checker_model}",
331
- description="Check quick plan: ${DESCRIPTION}"
332
- )
478
+ @gsd-plan-checker checker_prompt
333
479
  ```
334
480
 
335
481
  **Handle checker return:**
@@ -352,9 +498,11 @@ Revision prompt:
352
498
  **Mode:** quick-full (revision)
353
499
 
354
500
  <files_to_read>
355
- - ${QUICK_DIR}/${next_num}-PLAN.md (Existing plan)
501
+ - ${QUICK_DIR}/${quick_id}-PLAN.md (Existing plan)
356
502
  </files_to_read>
357
503
 
504
+ ${AGENT_SKILLS_PLANNER}
505
+
358
506
  **Checker issues:** ${structured_issues_from_checker}
359
507
 
360
508
  </revision_context>
@@ -367,12 +515,7 @@ Return what changed.
367
515
  ```
368
516
 
369
517
  ```
370
- task(
371
- prompt=revision_prompt,
372
- subagent_type="gsd-planner",
373
- model="{planner_model}",
374
- description="Revise quick plan: ${DESCRIPTION}"
375
- )
518
+ @gsd-planner revision_prompt
376
519
  ```
377
520
 
378
521
  After planner returns → spawn checker again, increment iteration_count.
@@ -387,49 +530,75 @@ Offer: 1) Force proceed, 2) Abort
387
530
 
388
531
  **Step 6: Spawn executor**
389
532
 
533
+ Capture current HEAD before spawning (used for worktree branch check):
534
+ ```bash
535
+ EXPECTED_BASE=$(git rev-parse HEAD)
536
+ ```
537
+
390
538
  Spawn gsd-executor with plan reference:
391
539
 
392
540
  ```
393
- task(
394
- prompt="
395
- Execute quick task ${next_num}.
541
+ @gsd-executor "
542
+ Execute quick task ${quick_id}.
543
+
544
+ ${USE_WORKTREES !== "false" ? `
545
+ <worktree_branch_check>
546
+ FIRST ACTION before any other work: verify this worktree branch is based on the correct commit.
547
+ Run: git merge-base HEAD ${EXPECTED_BASE}
548
+ If the result differs from ${EXPECTED_BASE}, run: git reset --soft ${EXPECTED_BASE}
549
+ This corrects a known issue on Windows where EnterWorktree creates branches from main instead of the feature branch HEAD.
550
+ </worktree_branch_check>
551
+ ` : ''}
396
552
 
397
553
  <files_to_read>
398
- - ${QUICK_DIR}/${next_num}-PLAN.md (Plan)
554
+ - ${QUICK_DIR}/${quick_id}-PLAN.md (Plan)
399
555
  - .planning/STATE.md (Project state)
400
556
  - ./AGENTS.md (Project instructions, if exists)
401
557
  - .OpenCode/skills/ or .agents/skills/ (Project skills, if either exists — list skills, read SKILL.md for each, follow relevant rules during implementation)
402
558
  </files_to_read>
403
559
 
560
+ ${AGENT_SKILLS_EXECUTOR}
561
+
404
562
  <constraints>
405
563
  - Execute all tasks in the plan
406
- - Commit each task atomically
407
- - Create summary at: ${QUICK_DIR}/${next_num}-SUMMARY.md
564
+ - Commit each task atomically (code changes only)
565
+ - Create summary at: ${QUICK_DIR}/${quick_id}-SUMMARY.md
566
+ - Do NOT commit docs artifacts (SUMMARY.md, STATE.md, PLAN.md) — the orchestrator handles the docs commit in Step 8
408
567
  - Do NOT update ROADMAP.md (quick tasks are separate from planned phases)
409
568
  </constraints>
410
- ",
411
- subagent_type="gsd-executor",
412
- model="{executor_model}",
413
- description="Execute: ${DESCRIPTION}"
414
- )
569
+ "
415
570
  ```
416
571
 
417
572
  After executor returns:
418
- 1. Verify summary exists at `${QUICK_DIR}/${next_num}-SUMMARY.md`
419
- 2. Extract commit hash from executor output
420
- 3. Report completion status
573
+ 1. **Worktree cleanup:** If the executor ran with `isolation="worktree"`, merge the worktree branch back and clean up:
574
+ ```bash
575
+ # Find worktrees created by the executor
576
+ WORKTREES=$(git worktree list --porcelain | grep "^worktree " | grep -v "$(pwd)$" | sed 's/^worktree //')
577
+ for WT in $WORKTREES; do
578
+ WT_BRANCH=$(git -C "$WT" rev-parse --abbrev-ref HEAD 2>/dev/null)
579
+ if [ -n "$WT_BRANCH" ] && [ "$WT_BRANCH" != "HEAD" ]; then
580
+ git merge "$WT_BRANCH" --no-edit -m "chore: merge quick task worktree ($WT_BRANCH)" 2>&1 || echo "⚠ Merge conflict — resolve manually"
581
+ git worktree remove "$WT" --force 2>/dev/null || true
582
+ git branch -D "$WT_BRANCH" 2>/dev/null || true
583
+ fi
584
+ done
585
+ ```
586
+ If `workflow.use_worktrees` is `false`, skip this step.
587
+ 2. Verify summary exists at `${QUICK_DIR}/${quick_id}-SUMMARY.md`
588
+ 3. Extract commit hash from executor output
589
+ 4. Report completion status
421
590
 
422
591
  **Known OpenCode bug (classifyHandoffIfNeeded):** If executor reports "failed" with error `classifyHandoffIfNeeded is not defined`, this is a OpenCode runtime bug — not a real failure. Check if summary file exists and git log shows commits. If so, treat as successful.
423
592
 
424
- If summary not found, error: "Executor failed to create ${next_num}-SUMMARY.md"
593
+ If summary not found, error: "Executor failed to create ${quick_id}-SUMMARY.md"
425
594
 
426
595
  Note: For quick tasks producing multiple plans (rare), spawn executors in parallel waves per execute-phase patterns.
427
596
 
428
597
  ---
429
598
 
430
- **Step 6.5: Verification (only when `$FULL_MODE`)**
599
+ **Step 6.5: Verification (only when `$VALIDATE_MODE`)**
431
600
 
432
- Skip this step entirely if NOT `$FULL_MODE`.
601
+ Skip this step entirely if NOT `$VALIDATE_MODE`.
433
602
 
434
603
  Display banner:
435
604
  ```
@@ -441,25 +610,22 @@ Display banner:
441
610
  ```
442
611
 
443
612
  ```
444
- task(
445
- prompt="Verify quick task goal achievement.
613
+ @gsd-verifier "Verify quick task goal achievement.
446
614
  task directory: ${QUICK_DIR}
447
615
  task goal: ${DESCRIPTION}
448
616
 
449
617
  <files_to_read>
450
- - ${QUICK_DIR}/${next_num}-PLAN.md (Plan)
618
+ - ${QUICK_DIR}/${quick_id}-PLAN.md (Plan)
451
619
  </files_to_read>
452
620
 
453
- Check must_haves against actual codebase. Create VERIFICATION.md at ${QUICK_DIR}/${next_num}-VERIFICATION.md.",
454
- subagent_type="gsd-verifier",
455
- model="{verifier_model}",
456
- description="Verify: ${DESCRIPTION}"
457
- )
621
+ ${AGENT_SKILLS_VERIFIER}
622
+
623
+ Check must_haves against actual codebase. Create VERIFICATION.md at ${QUICK_DIR}/${quick_id}-VERIFICATION.md."
458
624
  ```
459
625
 
460
626
  read verification status:
461
627
  ```bash
462
- grep "^status:" "${QUICK_DIR}/${next_num}-VERIFICATION.md" | cut -d: -f2 | tr -d ' '
628
+ grep "^status:" "${QUICK_DIR}/${quick_id}-VERIFICATION.md" | cut -d: -f2 | tr -d ' '
463
629
  ```
464
630
 
465
631
  Store as `$VERIFICATION_STATUS`.
@@ -484,7 +650,7 @@ read STATE.md and check for `### Quick Tasks Completed` section.
484
650
 
485
651
  Insert after `### Blockers/Concerns` section:
486
652
 
487
- **If `$FULL_MODE`:**
653
+ **If `$VALIDATE_MODE`:**
488
654
  ```markdown
489
655
  ### Quick Tasks Completed
490
656
 
@@ -492,7 +658,7 @@ Insert after `### Blockers/Concerns` section:
492
658
  |---|-------------|------|--------|--------|-----------|
493
659
  ```
494
660
 
495
- **If NOT `$FULL_MODE`:**
661
+ **If NOT `$VALIDATE_MODE`:**
496
662
  ```markdown
497
663
  ### Quick Tasks Completed
498
664
 
@@ -500,27 +666,27 @@ Insert after `### Blockers/Concerns` section:
500
666
  |---|-------------|------|--------|-----------|
501
667
  ```
502
668
 
503
- **Note:** If the table already exists, match its existing column format. If adding `--full` to a project that already has quick tasks without a Status column, add the Status column to the header and separator rows, and leave Status empty for the new row's predecessors.
669
+ **Note:** If the table already exists, match its existing column format. If adding `--validate` (or `--full`) to a project that already has quick tasks without a Status column, add the Status column to the header and separator rows, and leave Status empty for the new row's predecessors.
504
670
 
505
671
  **7c. Append new row to table:**
506
672
 
507
673
  Use `date` from init:
508
674
 
509
- **If `$FULL_MODE` (or table has Status column):**
675
+ **If `$VALIDATE_MODE` (or table has Status column):**
510
676
  ```markdown
511
- | ${next_num} | ${DESCRIPTION} | ${date} | ${commit_hash} | ${VERIFICATION_STATUS} | [${next_num}-${slug}](./quick/${next_num}-${slug}/) |
677
+ | ${quick_id} | ${DESCRIPTION} | ${date} | ${commit_hash} | ${VERIFICATION_STATUS} | [${quick_id}-${slug}](./quick/${quick_id}-${slug}/) |
512
678
  ```
513
679
 
514
- **If NOT `$FULL_MODE` (and table has no Status column):**
680
+ **If NOT `$VALIDATE_MODE` (and table has no Status column):**
515
681
  ```markdown
516
- | ${next_num} | ${DESCRIPTION} | ${date} | ${commit_hash} | [${next_num}-${slug}](./quick/${next_num}-${slug}/) |
682
+ | ${quick_id} | ${DESCRIPTION} | ${date} | ${commit_hash} | [${quick_id}-${slug}](./quick/${quick_id}-${slug}/) |
517
683
  ```
518
684
 
519
685
  **7d. Update "Last activity" line:**
520
686
 
521
687
  Use `date` from init:
522
688
  ```
523
- Last activity: ${date} - Completed quick task ${next_num}: ${DESCRIPTION}
689
+ Last activity: ${date} - Completed quick task ${quick_id}: ${DESCRIPTION}
524
690
  ```
525
691
 
526
692
  Use edit tool to make these changes atomically
@@ -529,17 +695,21 @@ Use edit tool to make these changes atomically
529
695
 
530
696
  **Step 8: Final commit and completion**
531
697
 
532
- Stage and commit quick task artifacts:
698
+ Stage and commit quick task artifacts. This step MUST always run — even if the executor already committed some files (e.g. when running without worktree isolation). The `gsd-tools commit` command handles already-committed files gracefully.
533
699
 
534
700
  Build file list:
535
- - `${QUICK_DIR}/${next_num}-PLAN.md`
536
- - `${QUICK_DIR}/${next_num}-SUMMARY.md`
701
+ - `${QUICK_DIR}/${quick_id}-PLAN.md`
702
+ - `${QUICK_DIR}/${quick_id}-SUMMARY.md`
537
703
  - `.planning/STATE.md`
538
- - If `$DISCUSS_MODE` and context file exists: `${QUICK_DIR}/${next_num}-CONTEXT.md`
539
- - If `$FULL_MODE` and verification file exists: `${QUICK_DIR}/${next_num}-VERIFICATION.md`
704
+ - If `$DISCUSS_MODE` and context file exists: `${QUICK_DIR}/${quick_id}-CONTEXT.md`
705
+ - If `$RESEARCH_MODE` and research file exists: `${QUICK_DIR}/${quick_id}-RESEARCH.md`
706
+ - If `$VALIDATE_MODE` and verification file exists: `${QUICK_DIR}/${quick_id}-VERIFICATION.md`
540
707
 
541
708
  ```bash
542
- node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs(quick-${next_num}): ${DESCRIPTION}" --files ${file_list}
709
+ # Explicitly stage all artifacts before commit PLAN.md may be untracked
710
+ # if the executor ran without worktree isolation and committed docs early
711
+ git add ${file_list} 2>/dev/null
712
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs(quick-${quick_id}): ${DESCRIPTION}" --files ${file_list}
543
713
  ```
544
714
 
545
715
  Get final commit hash:
@@ -549,37 +719,39 @@ commit_hash=$(git rev-parse --short HEAD)
549
719
 
550
720
  Display completion output:
551
721
 
552
- **If `$FULL_MODE`:**
722
+ **If `$VALIDATE_MODE`:**
553
723
  ```
554
724
  ---
555
725
 
556
- GSD > QUICK TASK COMPLETE (FULL MODE)
726
+ GSD > QUICK TASK COMPLETE (VALIDATED)
557
727
 
558
- Quick task ${next_num}: ${DESCRIPTION}
728
+ Quick task ${quick_id}: ${DESCRIPTION}
559
729
 
560
- Summary: ${QUICK_DIR}/${next_num}-SUMMARY.md
561
- Verification: ${QUICK_DIR}/${next_num}-VERIFICATION.md (${VERIFICATION_STATUS})
730
+ ${RESEARCH_MODE ? 'Research: ' + QUICK_DIR + '/' + quick_id + '-RESEARCH.md' : ''}
731
+ Summary: ${QUICK_DIR}/${quick_id}-SUMMARY.md
732
+ Verification: ${QUICK_DIR}/${quick_id}-VERIFICATION.md (${VERIFICATION_STATUS})
562
733
  Commit: ${commit_hash}
563
734
 
564
735
  ---
565
736
 
566
- Ready for next task: /gsd-quick
737
+ Ready for next task: /gsd-quick ${GSD_WS}
567
738
  ```
568
739
 
569
- **If NOT `$FULL_MODE`:**
740
+ **If NOT `$VALIDATE_MODE`:**
570
741
  ```
571
742
  ---
572
743
 
573
744
  GSD > QUICK TASK COMPLETE
574
745
 
575
- Quick task ${next_num}: ${DESCRIPTION}
746
+ Quick task ${quick_id}: ${DESCRIPTION}
576
747
 
577
- Summary: ${QUICK_DIR}/${next_num}-SUMMARY.md
748
+ ${RESEARCH_MODE ? 'Research: ' + QUICK_DIR + '/' + quick_id + '-RESEARCH.md' : ''}
749
+ Summary: ${QUICK_DIR}/${quick_id}-SUMMARY.md
578
750
  Commit: ${commit_hash}
579
751
 
580
752
  ---
581
753
 
582
- Ready for next task: /gsd-quick
754
+ Ready for next task: /gsd-quick ${GSD_WS}
583
755
  ```
584
756
 
585
757
  </process>
@@ -587,15 +759,17 @@ Ready for next task: /gsd-quick
587
759
  <success_criteria>
588
760
  - [ ] ROADMAP.md validation passes
589
761
  - [ ] User provides task description
590
- - [ ] `--full` and `--discuss` flags parsed from arguments when present
762
+ - [ ] `--full`, `--validate`, `--discuss`, and `--research` flags parsed from arguments when present
763
+ - [ ] `--full` sets all booleans (`$FULL_MODE`, `$DISCUSS_MODE`, `$RESEARCH_MODE`, `$VALIDATE_MODE`)
591
764
  - [ ] Slug generated (lowercase, hyphens, max 40 chars)
592
- - [ ] Next number calculated (001, 002, 003...)
593
- - [ ] Directory created at `.planning/quick/NNN-slug/`
594
- - [ ] (--discuss) Gray areas identified and presented, decisions captured in `${next_num}-CONTEXT.md`
595
- - [ ] `${next_num}-PLAN.md` created by planner (honors CONTEXT.md decisions when --discuss)
596
- - [ ] (--full) Plan checker validates plan, revision loop capped at 2
597
- - [ ] `${next_num}-SUMMARY.md` created by executor
598
- - [ ] (--full) `${next_num}-VERIFICATION.md` created by verifier
599
- - [ ] STATE.md updated with quick task row (Status column when --full)
765
+ - [ ] Quick ID generated (YYMMDD-xxx format, 2s Base36 precision)
766
+ - [ ] Directory created at `.planning/quick/YYMMDD-xxx-slug/`
767
+ - [ ] (--discuss) Gray areas identified and presented, decisions captured in `${quick_id}-CONTEXT.md`
768
+ - [ ] (--research) Research agent spawned, `${quick_id}-RESEARCH.md` created
769
+ - [ ] `${quick_id}-PLAN.md` created by planner (honors CONTEXT.md decisions when --discuss, uses RESEARCH.md findings when --research)
770
+ - [ ] (--validate) Plan checker validates plan, revision loop capped at 2
771
+ - [ ] `${quick_id}-SUMMARY.md` created by executor
772
+ - [ ] (--validate) `${quick_id}-VERIFICATION.md` created by verifier
773
+ - [ ] STATE.md updated with quick task row (Status column when --validate)
600
774
  - [ ] Artifacts committed
601
775
  </success_criteria>