gsd-remix 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 (554) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +939 -0
  3. package/README.zh-CN.md +876 -0
  4. package/agents/gsd-advisor-researcher.md +127 -0
  5. package/agents/gsd-ai-researcher.md +133 -0
  6. package/agents/gsd-assumptions-analyzer.md +105 -0
  7. package/agents/gsd-code-fixer.md +517 -0
  8. package/agents/gsd-code-reviewer.md +371 -0
  9. package/agents/gsd-codebase-mapper.md +781 -0
  10. package/agents/gsd-debug-session-manager.md +314 -0
  11. package/agents/gsd-debugger.md +1452 -0
  12. package/agents/gsd-doc-classifier.md +168 -0
  13. package/agents/gsd-doc-synthesizer.md +204 -0
  14. package/agents/gsd-doc-verifier.md +217 -0
  15. package/agents/gsd-doc-writer.md +615 -0
  16. package/agents/gsd-domain-researcher.md +153 -0
  17. package/agents/gsd-eval-auditor.md +191 -0
  18. package/agents/gsd-eval-planner.md +154 -0
  19. package/agents/gsd-executor.md +603 -0
  20. package/agents/gsd-framework-selector.md +160 -0
  21. package/agents/gsd-integration-checker.md +470 -0
  22. package/agents/gsd-intel-updater.md +334 -0
  23. package/agents/gsd-nyquist-auditor.md +203 -0
  24. package/agents/gsd-pattern-mapper.md +335 -0
  25. package/agents/gsd-phase-researcher.md +841 -0
  26. package/agents/gsd-plan-checker.md +978 -0
  27. package/agents/gsd-planner.md +1251 -0
  28. package/agents/gsd-project-researcher.md +677 -0
  29. package/agents/gsd-research-synthesizer.md +247 -0
  30. package/agents/gsd-roadmapper.md +688 -0
  31. package/agents/gsd-security-auditor.md +155 -0
  32. package/agents/gsd-ui-auditor.md +495 -0
  33. package/agents/gsd-ui-checker.md +309 -0
  34. package/agents/gsd-ui-researcher.md +380 -0
  35. package/agents/gsd-user-profiler.md +171 -0
  36. package/agents/gsd-verifier.md +830 -0
  37. package/bin/install.js +7062 -0
  38. package/commands/gsd/add-backlog.md +79 -0
  39. package/commands/gsd/add-phase.md +43 -0
  40. package/commands/gsd/add-tests.md +41 -0
  41. package/commands/gsd/add-todo.md +47 -0
  42. package/commands/gsd/ai-integration-phase.md +36 -0
  43. package/commands/gsd/analyze-dependencies.md +34 -0
  44. package/commands/gsd/audit-fix.md +33 -0
  45. package/commands/gsd/audit-milestone.md +36 -0
  46. package/commands/gsd/audit-uat.md +24 -0
  47. package/commands/gsd/autonomous.md +46 -0
  48. package/commands/gsd/check-todos.md +45 -0
  49. package/commands/gsd/cleanup.md +23 -0
  50. package/commands/gsd/code-review-fix.md +52 -0
  51. package/commands/gsd/code-review.md +55 -0
  52. package/commands/gsd/complete-milestone.md +136 -0
  53. package/commands/gsd/debug.md +263 -0
  54. package/commands/gsd/discuss-phase.md +69 -0
  55. package/commands/gsd/do.md +30 -0
  56. package/commands/gsd/docs-update.md +48 -0
  57. package/commands/gsd/eval-review.md +32 -0
  58. package/commands/gsd/execute-phase.md +63 -0
  59. package/commands/gsd/explore.md +27 -0
  60. package/commands/gsd/extract_learnings.md +22 -0
  61. package/commands/gsd/fast.md +30 -0
  62. package/commands/gsd/forensics.md +56 -0
  63. package/commands/gsd/from-gsd2.md +47 -0
  64. package/commands/gsd/graphify.md +201 -0
  65. package/commands/gsd/health.md +22 -0
  66. package/commands/gsd/help.md +24 -0
  67. package/commands/gsd/import.md +37 -0
  68. package/commands/gsd/inbox.md +38 -0
  69. package/commands/gsd/ingest-docs.md +42 -0
  70. package/commands/gsd/insert-phase.md +32 -0
  71. package/commands/gsd/intel.md +179 -0
  72. package/commands/gsd/join-discord.md +19 -0
  73. package/commands/gsd/list-phase-assumptions.md +46 -0
  74. package/commands/gsd/list-workspaces.md +19 -0
  75. package/commands/gsd/manager.md +40 -0
  76. package/commands/gsd/map-codebase.md +71 -0
  77. package/commands/gsd/milestone-summary.md +51 -0
  78. package/commands/gsd/new-milestone.md +44 -0
  79. package/commands/gsd/new-project.md +46 -0
  80. package/commands/gsd/new-workspace.md +44 -0
  81. package/commands/gsd/next.md +28 -0
  82. package/commands/gsd/note.md +34 -0
  83. package/commands/gsd/pause-work.md +38 -0
  84. package/commands/gsd/plan-milestone-gaps.md +34 -0
  85. package/commands/gsd/plan-phase.md +52 -0
  86. package/commands/gsd/plan-review-convergence.md +52 -0
  87. package/commands/gsd/plant-seed.md +28 -0
  88. package/commands/gsd/pr-branch.md +25 -0
  89. package/commands/gsd/profile-user.md +46 -0
  90. package/commands/gsd/progress.md +25 -0
  91. package/commands/gsd/quick.md +173 -0
  92. package/commands/gsd/reapply-patches.md +331 -0
  93. package/commands/gsd/remove-phase.md +31 -0
  94. package/commands/gsd/remove-workspace.md +26 -0
  95. package/commands/gsd/research-phase.md +195 -0
  96. package/commands/gsd/resume-work.md +40 -0
  97. package/commands/gsd/review-backlog.md +62 -0
  98. package/commands/gsd/review.md +40 -0
  99. package/commands/gsd/scan.md +26 -0
  100. package/commands/gsd/secure-phase.md +35 -0
  101. package/commands/gsd/session-report.md +19 -0
  102. package/commands/gsd/set-profile.md +12 -0
  103. package/commands/gsd/settings.md +36 -0
  104. package/commands/gsd/ship.md +23 -0
  105. package/commands/gsd/sketch-wrap-up.md +31 -0
  106. package/commands/gsd/sketch.md +49 -0
  107. package/commands/gsd/spec-phase.md +62 -0
  108. package/commands/gsd/spike-wrap-up.md +31 -0
  109. package/commands/gsd/spike.md +46 -0
  110. package/commands/gsd/stats.md +18 -0
  111. package/commands/gsd/sync-skills.md +19 -0
  112. package/commands/gsd/thread.md +227 -0
  113. package/commands/gsd/ui-phase.md +34 -0
  114. package/commands/gsd/ui-review.md +32 -0
  115. package/commands/gsd/ultraplan-phase.md +33 -0
  116. package/commands/gsd/undo.md +34 -0
  117. package/commands/gsd/update.md +37 -0
  118. package/commands/gsd/validate-phase.md +35 -0
  119. package/commands/gsd/verify-work.md +38 -0
  120. package/commands/gsd/workstreams.md +69 -0
  121. package/get-shit-done/bin/gsd-tools.cjs +1263 -0
  122. package/get-shit-done/bin/lib/artifacts.cjs +52 -0
  123. package/get-shit-done/bin/lib/audit.cjs +757 -0
  124. package/get-shit-done/bin/lib/commands.cjs +1023 -0
  125. package/get-shit-done/bin/lib/config-schema.cjs +79 -0
  126. package/get-shit-done/bin/lib/config.cjs +463 -0
  127. package/get-shit-done/bin/lib/core.cjs +1794 -0
  128. package/get-shit-done/bin/lib/docs.cjs +267 -0
  129. package/get-shit-done/bin/lib/frontmatter.cjs +379 -0
  130. package/get-shit-done/bin/lib/graphify.cjs +494 -0
  131. package/get-shit-done/bin/lib/gsd2-import.cjs +511 -0
  132. package/get-shit-done/bin/lib/init.cjs +1878 -0
  133. package/get-shit-done/bin/lib/intel.cjs +639 -0
  134. package/get-shit-done/bin/lib/learnings.cjs +378 -0
  135. package/get-shit-done/bin/lib/milestone.cjs +283 -0
  136. package/get-shit-done/bin/lib/model-profiles.cjs +71 -0
  137. package/get-shit-done/bin/lib/phase.cjs +1058 -0
  138. package/get-shit-done/bin/lib/profile-output.cjs +1080 -0
  139. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  140. package/get-shit-done/bin/lib/roadmap.cjs +523 -0
  141. package/get-shit-done/bin/lib/schema-detect.cjs +238 -0
  142. package/get-shit-done/bin/lib/security.cjs +504 -0
  143. package/get-shit-done/bin/lib/state.cjs +1649 -0
  144. package/get-shit-done/bin/lib/template.cjs +226 -0
  145. package/get-shit-done/bin/lib/uat.cjs +288 -0
  146. package/get-shit-done/bin/lib/verify.cjs +1184 -0
  147. package/get-shit-done/bin/lib/workstream.cjs +495 -0
  148. package/get-shit-done/bin/repair-sdk.cjs +177 -0
  149. package/get-shit-done/contexts/dev.md +21 -0
  150. package/get-shit-done/contexts/research.md +22 -0
  151. package/get-shit-done/contexts/review.md +22 -0
  152. package/get-shit-done/references/agent-contracts.md +79 -0
  153. package/get-shit-done/references/ai-evals.md +156 -0
  154. package/get-shit-done/references/ai-frameworks.md +186 -0
  155. package/get-shit-done/references/artifact-types.md +131 -0
  156. package/get-shit-done/references/autonomous-smart-discuss.md +277 -0
  157. package/get-shit-done/references/checkpoints.md +808 -0
  158. package/get-shit-done/references/common-bug-patterns.md +114 -0
  159. package/get-shit-done/references/context-budget.md +49 -0
  160. package/get-shit-done/references/continuation-format.md +253 -0
  161. package/get-shit-done/references/debugger-philosophy.md +76 -0
  162. package/get-shit-done/references/decimal-phase-calculation.md +64 -0
  163. package/get-shit-done/references/doc-conflict-engine.md +91 -0
  164. package/get-shit-done/references/domain-probes.md +125 -0
  165. package/get-shit-done/references/executor-examples.md +110 -0
  166. package/get-shit-done/references/few-shot-examples/plan-checker.md +73 -0
  167. package/get-shit-done/references/few-shot-examples/verifier.md +109 -0
  168. package/get-shit-done/references/gate-prompts.md +100 -0
  169. package/get-shit-done/references/gates.md +70 -0
  170. package/get-shit-done/references/git-integration.md +295 -0
  171. package/get-shit-done/references/git-planning-commit.md +40 -0
  172. package/get-shit-done/references/ios-scaffold.md +123 -0
  173. package/get-shit-done/references/mandatory-initial-read.md +2 -0
  174. package/get-shit-done/references/model-profile-resolution.md +38 -0
  175. package/get-shit-done/references/model-profiles.md +145 -0
  176. package/get-shit-done/references/phase-argument-parsing.md +61 -0
  177. package/get-shit-done/references/planner-antipatterns.md +89 -0
  178. package/get-shit-done/references/planner-gap-closure.md +62 -0
  179. package/get-shit-done/references/planner-reviews.md +39 -0
  180. package/get-shit-done/references/planner-revision.md +87 -0
  181. package/get-shit-done/references/planner-source-audit.md +73 -0
  182. package/get-shit-done/references/planning-config.md +460 -0
  183. package/get-shit-done/references/project-skills-discovery.md +19 -0
  184. package/get-shit-done/references/questioning.md +162 -0
  185. package/get-shit-done/references/revision-loop.md +97 -0
  186. package/get-shit-done/references/sketch-interactivity.md +41 -0
  187. package/get-shit-done/references/sketch-theme-system.md +94 -0
  188. package/get-shit-done/references/sketch-tooling.md +45 -0
  189. package/get-shit-done/references/sketch-variant-patterns.md +81 -0
  190. package/get-shit-done/references/tdd.md +330 -0
  191. package/get-shit-done/references/thinking-models-debug.md +44 -0
  192. package/get-shit-done/references/thinking-models-execution.md +50 -0
  193. package/get-shit-done/references/thinking-models-planning.md +62 -0
  194. package/get-shit-done/references/thinking-models-research.md +50 -0
  195. package/get-shit-done/references/thinking-models-verification.md +55 -0
  196. package/get-shit-done/references/thinking-partner.md +96 -0
  197. package/get-shit-done/references/ui-brand.md +160 -0
  198. package/get-shit-done/references/universal-anti-patterns.md +63 -0
  199. package/get-shit-done/references/user-profiling.md +681 -0
  200. package/get-shit-done/references/verification-overrides.md +227 -0
  201. package/get-shit-done/references/verification-patterns.md +612 -0
  202. package/get-shit-done/references/workstream-flag.md +111 -0
  203. package/get-shit-done/templates/AI-SPEC.md +246 -0
  204. package/get-shit-done/templates/DEBUG.md +169 -0
  205. package/get-shit-done/templates/README.md +76 -0
  206. package/get-shit-done/templates/SECURITY.md +61 -0
  207. package/get-shit-done/templates/UAT.md +265 -0
  208. package/get-shit-done/templates/UI-SPEC.md +100 -0
  209. package/get-shit-done/templates/VALIDATION.md +76 -0
  210. package/get-shit-done/templates/claude-md.md +145 -0
  211. package/get-shit-done/templates/codebase/architecture.md +255 -0
  212. package/get-shit-done/templates/codebase/concerns.md +310 -0
  213. package/get-shit-done/templates/codebase/conventions.md +307 -0
  214. package/get-shit-done/templates/codebase/integrations.md +280 -0
  215. package/get-shit-done/templates/codebase/stack.md +186 -0
  216. package/get-shit-done/templates/codebase/structure.md +285 -0
  217. package/get-shit-done/templates/codebase/testing.md +480 -0
  218. package/get-shit-done/templates/config.json +56 -0
  219. package/get-shit-done/templates/context.md +352 -0
  220. package/get-shit-done/templates/continue-here.md +78 -0
  221. package/get-shit-done/templates/copilot-instructions.md +7 -0
  222. package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  223. package/get-shit-done/templates/dev-preferences.md +21 -0
  224. package/get-shit-done/templates/discovery.md +146 -0
  225. package/get-shit-done/templates/discussion-log.md +63 -0
  226. package/get-shit-done/templates/milestone-archive.md +123 -0
  227. package/get-shit-done/templates/milestone.md +115 -0
  228. package/get-shit-done/templates/phase-prompt.md +610 -0
  229. package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  230. package/get-shit-done/templates/project.md +186 -0
  231. package/get-shit-done/templates/requirements.md +231 -0
  232. package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  233. package/get-shit-done/templates/research-project/FEATURES.md +147 -0
  234. package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  235. package/get-shit-done/templates/research-project/STACK.md +120 -0
  236. package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  237. package/get-shit-done/templates/research.md +592 -0
  238. package/get-shit-done/templates/retrospective.md +54 -0
  239. package/get-shit-done/templates/roadmap.md +202 -0
  240. package/get-shit-done/templates/spec.md +307 -0
  241. package/get-shit-done/templates/state.md +184 -0
  242. package/get-shit-done/templates/summary-complex.md +59 -0
  243. package/get-shit-done/templates/summary-minimal.md +41 -0
  244. package/get-shit-done/templates/summary-standard.md +48 -0
  245. package/get-shit-done/templates/summary.md +248 -0
  246. package/get-shit-done/templates/user-profile.md +146 -0
  247. package/get-shit-done/templates/user-setup.md +311 -0
  248. package/get-shit-done/templates/verification-report.md +322 -0
  249. package/get-shit-done/workflows/add-phase.md +112 -0
  250. package/get-shit-done/workflows/add-tests.md +354 -0
  251. package/get-shit-done/workflows/add-todo.md +160 -0
  252. package/get-shit-done/workflows/ai-integration-phase.md +284 -0
  253. package/get-shit-done/workflows/analyze-dependencies.md +96 -0
  254. package/get-shit-done/workflows/audit-fix.md +175 -0
  255. package/get-shit-done/workflows/audit-milestone.md +340 -0
  256. package/get-shit-done/workflows/audit-uat.md +109 -0
  257. package/get-shit-done/workflows/autonomous.md +789 -0
  258. package/get-shit-done/workflows/check-todos.md +179 -0
  259. package/get-shit-done/workflows/cleanup.md +154 -0
  260. package/get-shit-done/workflows/code-review-fix.md +497 -0
  261. package/get-shit-done/workflows/code-review.md +515 -0
  262. package/get-shit-done/workflows/complete-milestone.md +847 -0
  263. package/get-shit-done/workflows/diagnose-issues.md +238 -0
  264. package/get-shit-done/workflows/discovery-phase.md +291 -0
  265. package/get-shit-done/workflows/discuss-phase-assumptions.md +670 -0
  266. package/get-shit-done/workflows/discuss-phase-power.md +308 -0
  267. package/get-shit-done/workflows/discuss-phase.md +1378 -0
  268. package/get-shit-done/workflows/do.md +110 -0
  269. package/get-shit-done/workflows/docs-update.md +1155 -0
  270. package/get-shit-done/workflows/eval-review.md +155 -0
  271. package/get-shit-done/workflows/execute-phase.md +1677 -0
  272. package/get-shit-done/workflows/execute-plan.md +533 -0
  273. package/get-shit-done/workflows/explore.md +141 -0
  274. package/get-shit-done/workflows/extract_learnings.md +242 -0
  275. package/get-shit-done/workflows/fast.md +105 -0
  276. package/get-shit-done/workflows/forensics.md +265 -0
  277. package/get-shit-done/workflows/graduation.md +195 -0
  278. package/get-shit-done/workflows/health.md +314 -0
  279. package/get-shit-done/workflows/help.md +667 -0
  280. package/get-shit-done/workflows/import.md +246 -0
  281. package/get-shit-done/workflows/inbox.md +387 -0
  282. package/get-shit-done/workflows/ingest-docs.md +328 -0
  283. package/get-shit-done/workflows/insert-phase.md +130 -0
  284. package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  285. package/get-shit-done/workflows/list-workspaces.md +56 -0
  286. package/get-shit-done/workflows/manager.md +365 -0
  287. package/get-shit-done/workflows/map-codebase.md +393 -0
  288. package/get-shit-done/workflows/milestone-summary.md +223 -0
  289. package/get-shit-done/workflows/new-milestone.md +611 -0
  290. package/get-shit-done/workflows/new-project.md +1391 -0
  291. package/get-shit-done/workflows/new-workspace.md +239 -0
  292. package/get-shit-done/workflows/next.md +220 -0
  293. package/get-shit-done/workflows/node-repair.md +92 -0
  294. package/get-shit-done/workflows/note.md +158 -0
  295. package/get-shit-done/workflows/pause-work.md +243 -0
  296. package/get-shit-done/workflows/plan-milestone-gaps.md +273 -0
  297. package/get-shit-done/workflows/plan-phase.md +1349 -0
  298. package/get-shit-done/workflows/plan-review-convergence.md +254 -0
  299. package/get-shit-done/workflows/plant-seed.md +172 -0
  300. package/get-shit-done/workflows/pr-branch.md +157 -0
  301. package/get-shit-done/workflows/profile-user.md +452 -0
  302. package/get-shit-done/workflows/progress.md +619 -0
  303. package/get-shit-done/workflows/quick.md +970 -0
  304. package/get-shit-done/workflows/remove-phase.md +155 -0
  305. package/get-shit-done/workflows/remove-workspace.md +92 -0
  306. package/get-shit-done/workflows/research-phase.md +89 -0
  307. package/get-shit-done/workflows/resume-project.md +326 -0
  308. package/get-shit-done/workflows/review.md +344 -0
  309. package/get-shit-done/workflows/scan.md +102 -0
  310. package/get-shit-done/workflows/secure-phase.md +166 -0
  311. package/get-shit-done/workflows/session-report.md +146 -0
  312. package/get-shit-done/workflows/settings.md +319 -0
  313. package/get-shit-done/workflows/ship.md +302 -0
  314. package/get-shit-done/workflows/sketch-wrap-up.md +283 -0
  315. package/get-shit-done/workflows/sketch.md +286 -0
  316. package/get-shit-done/workflows/spec-phase.md +262 -0
  317. package/get-shit-done/workflows/spike-wrap-up.md +281 -0
  318. package/get-shit-done/workflows/spike.md +362 -0
  319. package/get-shit-done/workflows/stats.md +60 -0
  320. package/get-shit-done/workflows/sync-skills.md +182 -0
  321. package/get-shit-done/workflows/transition.md +693 -0
  322. package/get-shit-done/workflows/ui-phase.md +323 -0
  323. package/get-shit-done/workflows/ui-review.md +190 -0
  324. package/get-shit-done/workflows/ultraplan-phase.md +189 -0
  325. package/get-shit-done/workflows/undo.md +314 -0
  326. package/get-shit-done/workflows/update.md +587 -0
  327. package/get-shit-done/workflows/validate-phase.md +176 -0
  328. package/get-shit-done/workflows/verify-phase.md +465 -0
  329. package/get-shit-done/workflows/verify-work.md +740 -0
  330. package/hooks/dist/gsd-check-update-worker.js +108 -0
  331. package/hooks/dist/gsd-check-update.js +64 -0
  332. package/hooks/dist/gsd-context-monitor.js +192 -0
  333. package/hooks/dist/gsd-phase-boundary.sh +28 -0
  334. package/hooks/dist/gsd-prompt-guard.js +97 -0
  335. package/hooks/dist/gsd-read-guard.js +82 -0
  336. package/hooks/dist/gsd-read-injection-scanner.js +152 -0
  337. package/hooks/dist/gsd-session-state.sh +34 -0
  338. package/hooks/dist/gsd-statusline.js +293 -0
  339. package/hooks/dist/gsd-validate-commit.sh +48 -0
  340. package/hooks/dist/gsd-workflow-guard.js +94 -0
  341. package/hooks/gsd-check-update-worker.js +108 -0
  342. package/hooks/gsd-check-update.js +64 -0
  343. package/hooks/gsd-context-monitor.js +192 -0
  344. package/hooks/gsd-phase-boundary.sh +28 -0
  345. package/hooks/gsd-prompt-guard.js +97 -0
  346. package/hooks/gsd-read-guard.js +82 -0
  347. package/hooks/gsd-read-injection-scanner.js +152 -0
  348. package/hooks/gsd-session-state.sh +34 -0
  349. package/hooks/gsd-statusline.js +293 -0
  350. package/hooks/gsd-validate-commit.sh +48 -0
  351. package/hooks/gsd-workflow-guard.js +94 -0
  352. package/package.json +59 -0
  353. package/scripts/base64-scan.sh +262 -0
  354. package/scripts/build-hooks.js +95 -0
  355. package/scripts/gen-inventory-manifest.cjs +109 -0
  356. package/scripts/prompt-injection-scan.sh +201 -0
  357. package/scripts/run-tests.cjs +33 -0
  358. package/scripts/secret-scan.sh +227 -0
  359. package/sdk/package-lock.json +1998 -0
  360. package/sdk/package.json +52 -0
  361. package/sdk/prompts/agents/gsd-executor.md +110 -0
  362. package/sdk/prompts/agents/gsd-phase-researcher.md +158 -0
  363. package/sdk/prompts/agents/gsd-plan-checker.md +160 -0
  364. package/sdk/prompts/agents/gsd-planner.md +214 -0
  365. package/sdk/prompts/agents/gsd-project-researcher.md +323 -0
  366. package/sdk/prompts/agents/gsd-research-synthesizer.md +237 -0
  367. package/sdk/prompts/agents/gsd-roadmapper.md +670 -0
  368. package/sdk/prompts/agents/gsd-verifier.md +159 -0
  369. package/sdk/prompts/templates/project.md +186 -0
  370. package/sdk/prompts/templates/requirements.md +231 -0
  371. package/sdk/prompts/templates/research-project/ARCHITECTURE.md +204 -0
  372. package/sdk/prompts/templates/research-project/FEATURES.md +147 -0
  373. package/sdk/prompts/templates/research-project/PITFALLS.md +200 -0
  374. package/sdk/prompts/templates/research-project/STACK.md +120 -0
  375. package/sdk/prompts/templates/research-project/SUMMARY.md +170 -0
  376. package/sdk/prompts/templates/roadmap.md +202 -0
  377. package/sdk/prompts/templates/state.md +175 -0
  378. package/sdk/prompts/workflows/discuss-phase.md +126 -0
  379. package/sdk/prompts/workflows/execute-plan.md +106 -0
  380. package/sdk/prompts/workflows/plan-phase.md +84 -0
  381. package/sdk/prompts/workflows/research-phase.md +45 -0
  382. package/sdk/prompts/workflows/verify-phase.md +142 -0
  383. package/sdk/src/assembled-prompts.test.ts +349 -0
  384. package/sdk/src/cli-transport.test.ts +388 -0
  385. package/sdk/src/cli-transport.ts +130 -0
  386. package/sdk/src/cli.test.ts +383 -0
  387. package/sdk/src/cli.ts +670 -0
  388. package/sdk/src/config.test.ts +168 -0
  389. package/sdk/src/config.ts +177 -0
  390. package/sdk/src/context-engine.test.ts +295 -0
  391. package/sdk/src/context-engine.ts +170 -0
  392. package/sdk/src/context-truncation.test.ts +163 -0
  393. package/sdk/src/context-truncation.ts +233 -0
  394. package/sdk/src/e2e.integration.test.ts +178 -0
  395. package/sdk/src/errors.ts +72 -0
  396. package/sdk/src/event-stream.test.ts +661 -0
  397. package/sdk/src/event-stream.ts +441 -0
  398. package/sdk/src/failure-memory.test.ts +457 -0
  399. package/sdk/src/failure-memory.ts +1324 -0
  400. package/sdk/src/golden/capture.ts +95 -0
  401. package/sdk/src/golden/fixtures/generate-slug.golden.json +1 -0
  402. package/sdk/src/golden/fixtures/profile-sample-sessions/demo-project/sample.jsonl +3 -0
  403. package/sdk/src/golden/fixtures/summary-extract-sample.md +26 -0
  404. package/sdk/src/golden/fixtures/uat-render-checkpoint-sample.md +15 -0
  405. package/sdk/src/golden/golden-integration-covered.ts +30 -0
  406. package/sdk/src/golden/golden-mutation-covered.ts +7 -0
  407. package/sdk/src/golden/golden-policy.test.ts +8 -0
  408. package/sdk/src/golden/golden-policy.ts +112 -0
  409. package/sdk/src/golden/golden.integration.test.ts +373 -0
  410. package/sdk/src/golden/init-golden-normalize.ts +15 -0
  411. package/sdk/src/golden/read-only-golden-rows.ts +77 -0
  412. package/sdk/src/golden/read-only-parity.integration.test.ts +125 -0
  413. package/sdk/src/golden/registry-canonical-commands.ts +31 -0
  414. package/sdk/src/gsd-tools.test.ts +409 -0
  415. package/sdk/src/gsd-tools.ts +595 -0
  416. package/sdk/src/headless-prompts.test.ts +159 -0
  417. package/sdk/src/index.ts +333 -0
  418. package/sdk/src/init-e2e.integration.test.ts +136 -0
  419. package/sdk/src/init-runner.test.ts +783 -0
  420. package/sdk/src/init-runner.ts +735 -0
  421. package/sdk/src/lifecycle-e2e.integration.test.ts +258 -0
  422. package/sdk/src/logger.test.ts +149 -0
  423. package/sdk/src/logger.ts +113 -0
  424. package/sdk/src/milestone-runner.test.ts +421 -0
  425. package/sdk/src/phase-prompt.test.ts +538 -0
  426. package/sdk/src/phase-prompt.ts +264 -0
  427. package/sdk/src/phase-runner-types.test.ts +421 -0
  428. package/sdk/src/phase-runner.integration.test.ts +377 -0
  429. package/sdk/src/phase-runner.test.ts +2333 -0
  430. package/sdk/src/phase-runner.ts +1203 -0
  431. package/sdk/src/plan-parser.test.ts +528 -0
  432. package/sdk/src/plan-parser.ts +427 -0
  433. package/sdk/src/prompt-builder.test.ts +306 -0
  434. package/sdk/src/prompt-builder.ts +193 -0
  435. package/sdk/src/prompt-sanitizer.test.ts +260 -0
  436. package/sdk/src/prompt-sanitizer.ts +71 -0
  437. package/sdk/src/query/QUERY-HANDLERS.md +317 -0
  438. package/sdk/src/query/audit-open.ts +722 -0
  439. package/sdk/src/query/check-auto-mode.test.ts +77 -0
  440. package/sdk/src/query/check-auto-mode.ts +50 -0
  441. package/sdk/src/query/check-completion.test.ts +113 -0
  442. package/sdk/src/query/check-completion.ts +182 -0
  443. package/sdk/src/query/check-gates.test.ts +103 -0
  444. package/sdk/src/query/check-gates.ts +112 -0
  445. package/sdk/src/query/check-ship-ready.test.ts +77 -0
  446. package/sdk/src/query/check-ship-ready.ts +103 -0
  447. package/sdk/src/query/check-verification-status.test.ts +143 -0
  448. package/sdk/src/query/check-verification-status.ts +160 -0
  449. package/sdk/src/query/commit.test.ts +202 -0
  450. package/sdk/src/query/commit.ts +301 -0
  451. package/sdk/src/query/config-gates.test.ts +89 -0
  452. package/sdk/src/query/config-gates.ts +69 -0
  453. package/sdk/src/query/config-mutation.test.ts +365 -0
  454. package/sdk/src/query/config-mutation.ts +497 -0
  455. package/sdk/src/query/config-query.test.ts +161 -0
  456. package/sdk/src/query/config-query.ts +190 -0
  457. package/sdk/src/query/context-history.test.ts +165 -0
  458. package/sdk/src/query/context-history.ts +467 -0
  459. package/sdk/src/query/decomposed-handlers.test.ts +365 -0
  460. package/sdk/src/query/detect-custom-files.ts +97 -0
  461. package/sdk/src/query/detect-phase-type.test.ts +105 -0
  462. package/sdk/src/query/detect-phase-type.ts +141 -0
  463. package/sdk/src/query/docs-init.ts +257 -0
  464. package/sdk/src/query/failure-capture.ts +58 -0
  465. package/sdk/src/query/frontmatter-array.test.ts +14 -0
  466. package/sdk/src/query/frontmatter-mutation.test.ts +259 -0
  467. package/sdk/src/query/frontmatter-mutation.ts +343 -0
  468. package/sdk/src/query/frontmatter.test.ts +281 -0
  469. package/sdk/src/query/frontmatter.ts +397 -0
  470. package/sdk/src/query/helpers.test.ts +426 -0
  471. package/sdk/src/query/helpers.ts +482 -0
  472. package/sdk/src/query/index.ts +586 -0
  473. package/sdk/src/query/init-complex.test.ts +232 -0
  474. package/sdk/src/query/init-complex.ts +578 -0
  475. package/sdk/src/query/init.test.ts +522 -0
  476. package/sdk/src/query/init.ts +1046 -0
  477. package/sdk/src/query/intel.test.ts +90 -0
  478. package/sdk/src/query/intel.ts +404 -0
  479. package/sdk/src/query/normalize-query-command.test.ts +50 -0
  480. package/sdk/src/query/normalize-query-command.ts +56 -0
  481. package/sdk/src/query/phase-lifecycle.test.ts +1126 -0
  482. package/sdk/src/query/phase-lifecycle.ts +1799 -0
  483. package/sdk/src/query/phase-list-queries.test.ts +88 -0
  484. package/sdk/src/query/phase-list-queries.ts +152 -0
  485. package/sdk/src/query/phase-ready.test.ts +65 -0
  486. package/sdk/src/query/phase-ready.ts +158 -0
  487. package/sdk/src/query/phase.test.ts +307 -0
  488. package/sdk/src/query/phase.ts +340 -0
  489. package/sdk/src/query/pipeline.test.ts +169 -0
  490. package/sdk/src/query/pipeline.ts +243 -0
  491. package/sdk/src/query/plan-execution-route.test.ts +166 -0
  492. package/sdk/src/query/plan-execution-route.ts +209 -0
  493. package/sdk/src/query/plan-task-structure.test.ts +65 -0
  494. package/sdk/src/query/plan-task-structure.ts +63 -0
  495. package/sdk/src/query/profile-extract-messages.ts +247 -0
  496. package/sdk/src/query/profile-output.ts +908 -0
  497. package/sdk/src/query/profile-questionnaire-data.ts +181 -0
  498. package/sdk/src/query/profile-sample.ts +184 -0
  499. package/sdk/src/query/profile-scan-sessions.ts +174 -0
  500. package/sdk/src/query/profile.test.ts +74 -0
  501. package/sdk/src/query/profile.ts +337 -0
  502. package/sdk/src/query/progress.test.ts +156 -0
  503. package/sdk/src/query/progress.ts +566 -0
  504. package/sdk/src/query/registry.test.ts +216 -0
  505. package/sdk/src/query/registry.ts +174 -0
  506. package/sdk/src/query/requirements-extract-from-plans.test.ts +58 -0
  507. package/sdk/src/query/requirements-extract-from-plans.ts +86 -0
  508. package/sdk/src/query/roadmap-update-plan-progress.ts +132 -0
  509. package/sdk/src/query/roadmap.test.ts +359 -0
  510. package/sdk/src/query/roadmap.ts +591 -0
  511. package/sdk/src/query/route-next-action.test.ts +61 -0
  512. package/sdk/src/query/route-next-action.ts +345 -0
  513. package/sdk/src/query/runtime-health.ts +7 -0
  514. package/sdk/src/query/schema-detect.ts +189 -0
  515. package/sdk/src/query/skill-manifest.ts +214 -0
  516. package/sdk/src/query/skills.test.ts +80 -0
  517. package/sdk/src/query/skills.ts +62 -0
  518. package/sdk/src/query/state-mutation.test.ts +450 -0
  519. package/sdk/src/query/state-mutation.ts +1444 -0
  520. package/sdk/src/query/state-project-load.ts +109 -0
  521. package/sdk/src/query/state.test.ts +347 -0
  522. package/sdk/src/query/state.ts +397 -0
  523. package/sdk/src/query/summary.test.ts +95 -0
  524. package/sdk/src/query/summary.ts +296 -0
  525. package/sdk/src/query/template.test.ts +180 -0
  526. package/sdk/src/query/template.ts +242 -0
  527. package/sdk/src/query/uat.test.ts +77 -0
  528. package/sdk/src/query/uat.ts +314 -0
  529. package/sdk/src/query/utils.test.ts +82 -0
  530. package/sdk/src/query/utils.ts +92 -0
  531. package/sdk/src/query/validate.test.ts +656 -0
  532. package/sdk/src/query/validate.ts +807 -0
  533. package/sdk/src/query/verify.test.ts +414 -0
  534. package/sdk/src/query/verify.ts +645 -0
  535. package/sdk/src/query/websearch.test.ts +31 -0
  536. package/sdk/src/query/websearch.ts +82 -0
  537. package/sdk/src/query/workspace.test.ts +119 -0
  538. package/sdk/src/query/workspace.ts +131 -0
  539. package/sdk/src/query/workstream.test.ts +51 -0
  540. package/sdk/src/query/workstream.ts +434 -0
  541. package/sdk/src/research-gate.test.ts +190 -0
  542. package/sdk/src/research-gate.ts +94 -0
  543. package/sdk/src/runtime-health.test.ts +176 -0
  544. package/sdk/src/runtime-health.ts +387 -0
  545. package/sdk/src/session-runner.test.ts +98 -0
  546. package/sdk/src/session-runner.ts +299 -0
  547. package/sdk/src/tool-scoping.test.ts +160 -0
  548. package/sdk/src/tool-scoping.ts +61 -0
  549. package/sdk/src/types.ts +917 -0
  550. package/sdk/src/workstream-utils.ts +33 -0
  551. package/sdk/src/ws-flag.test.ts +285 -0
  552. package/sdk/src/ws-transport.test.ts +161 -0
  553. package/sdk/src/ws-transport.ts +93 -0
  554. package/sdk/tsconfig.json +20 -0
@@ -0,0 +1,970 @@
1
+ <purpose>
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
+
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
+
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.
9
+
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.
11
+
12
+ Granular flags are composable: `--discuss --research --validate` gives the same result as `--full`.
13
+ </purpose>
14
+
15
+ <required_reading>
16
+ Read all files referenced by the invoking prompt's execution_context before starting.
17
+ </required_reading>
18
+
19
+ <available_agent_types>
20
+ Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'):
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
+ - gsd-code-reviewer — Reviews source files for bugs, security issues, and code quality
27
+ </available_agent_types>
28
+
29
+ <process>
30
+ **Step 1: Parse arguments and get task description**
31
+
32
+ Parse `$ARGUMENTS` for:
33
+ - `--full` flag → store `$FULL_MODE=true`, `$DISCUSS_MODE=true`, `$RESEARCH_MODE=true`, `$VALIDATE_MODE=true`
34
+ - `--validate` flag → store `$VALIDATE_MODE=true`
35
+ - `--discuss` flag → store `$DISCUSS_MODE=true`
36
+ - `--research` flag → store `$RESEARCH_MODE=true`
37
+ - Remaining text → use as `$DESCRIPTION` if non-empty
38
+
39
+ After parsing, normalize: if `$DISCUSS_MODE` and `$RESEARCH_MODE` and `$VALIDATE_MODE` are all true, set `$FULL_MODE=true`. This ensures `--discuss --research --validate` is treated identically to `--full`.
40
+
41
+ If `$DESCRIPTION` is empty after parsing, prompt user interactively:
42
+
43
+
44
+ **Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
45
+
46
+ ```
47
+ AskUserQuestion(
48
+ header: "Quick Task",
49
+ question: "What do you want to do?",
50
+ followUp: null
51
+ )
52
+ ```
53
+
54
+ Store response as `$DESCRIPTION`.
55
+
56
+ If still empty, re-prompt: "Please provide a task description."
57
+
58
+ Display banner based on active flags:
59
+
60
+ If `$FULL_MODE` (all phases enabled — `--full` or all granular flags):
61
+ ```
62
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
63
+ GSD ► QUICK TASK (FULL)
64
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
65
+
66
+ ◆ Discussion + research + plan checking + verification enabled
67
+ ```
68
+
69
+ If `$DISCUSS_MODE` and `$VALIDATE_MODE` (no research):
70
+ ```
71
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
72
+ GSD ► QUICK TASK (DISCUSS + VALIDATE)
73
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
74
+
75
+ ◆ Discussion + plan checking + verification enabled
76
+ ```
77
+
78
+ If `$DISCUSS_MODE` and `$RESEARCH_MODE` (no validate):
79
+ ```
80
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
81
+ GSD ► QUICK TASK (DISCUSS + RESEARCH)
82
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
83
+
84
+ ◆ Discussion + research enabled
85
+ ```
86
+
87
+ If `$RESEARCH_MODE` and `$VALIDATE_MODE` (no discuss):
88
+ ```
89
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
90
+ GSD ► QUICK TASK (RESEARCH + VALIDATE)
91
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
92
+
93
+ ◆ Research + plan checking + verification enabled
94
+ ```
95
+
96
+ If `$DISCUSS_MODE` only:
97
+ ```
98
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
99
+ GSD ► QUICK TASK (DISCUSS)
100
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
101
+
102
+ ◆ Discussion phase enabled — surfacing gray areas before planning
103
+ ```
104
+
105
+ If `$RESEARCH_MODE` only:
106
+ ```
107
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
108
+ GSD ► QUICK TASK (RESEARCH)
109
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110
+
111
+ ◆ Research phase enabled — investigating approaches before planning
112
+ ```
113
+
114
+ If `$VALIDATE_MODE` only:
115
+ ```
116
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
117
+ GSD ► QUICK TASK (VALIDATE)
118
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
119
+
120
+ ◆ Plan checking + verification enabled
121
+ ```
122
+
123
+ ---
124
+
125
+ **Step 2: Initialize**
126
+
127
+ ```bash
128
+ if ! command -v gsd-remix-sdk &>/dev/null; then
129
+ echo "⚠ gsd-remix-sdk not found in PATH — /gsd-quick requires it."
130
+ echo ""
131
+ echo "Repair the bundled SDK:"
132
+ echo " /gsd-health --runtime --repair"
133
+ echo ""
134
+ echo "Or refresh all runtime assets:"
135
+ echo " /gsd-update"
136
+ exit 1
137
+ fi
138
+ ```
139
+
140
+ ```bash
141
+ INIT=$(gsd-remix-sdk query init.quick "$DESCRIPTION")
142
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
143
+ AGENT_SKILLS_PLANNER=$(gsd-remix-sdk query agent-skills gsd-planner 2>/dev/null)
144
+ AGENT_SKILLS_EXECUTOR=$(gsd-remix-sdk query agent-skills gsd-executor 2>/dev/null)
145
+ AGENT_SKILLS_CHECKER=$(gsd-remix-sdk query agent-skills gsd-checker 2>/dev/null)
146
+ AGENT_SKILLS_VERIFIER=$(gsd-remix-sdk query agent-skills gsd-verifier 2>/dev/null)
147
+ ```
148
+
149
+ 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`.
150
+
151
+ ```bash
152
+ USE_WORKTREES=$(gsd-remix-sdk query config-get workflow.use_worktrees 2>/dev/null || echo "true")
153
+ ```
154
+
155
+ If the project uses git submodules, worktree isolation is skipped:
156
+
157
+ ```bash
158
+ if [ -f .gitmodules ]; then
159
+ echo "[worktree] Submodule project detected (.gitmodules exists) — falling back to sequential execution"
160
+ USE_WORKTREES=false
161
+ fi
162
+ ```
163
+
164
+ **If `roadmap_exists` is false:** Error — Quick mode requires an active project with ROADMAP.md. Run `/gsd-new-project` first.
165
+
166
+ Quick tasks can run mid-phase - validation only checks ROADMAP.md exists, not phase status.
167
+
168
+ ---
169
+
170
+ **Step 2.5: Handle quick-task branching**
171
+
172
+ **If `branch_name` is empty/null:** Skip and continue on the current branch.
173
+
174
+ **If `branch_name` is set:** Check out the quick-task branch before any planning commits:
175
+
176
+ ```bash
177
+ git checkout -b "$branch_name" 2>/dev/null || git checkout "$branch_name"
178
+ ```
179
+
180
+ All quick-task commits for this run stay on that branch. User handles merge/rebase afterward.
181
+
182
+ ---
183
+
184
+ **Step 3: Create task directory**
185
+
186
+ ```bash
187
+ mkdir -p "${task_dir}"
188
+ ```
189
+
190
+ ---
191
+
192
+ **Step 4: Create quick task directory**
193
+
194
+ Create the directory for this quick task:
195
+
196
+ ```bash
197
+ QUICK_DIR=".planning/quick/${quick_id}-${slug}"
198
+ mkdir -p "$QUICK_DIR"
199
+ ```
200
+
201
+ Report to user:
202
+ ```
203
+ Creating quick task ${quick_id}: ${DESCRIPTION}
204
+ Directory: ${QUICK_DIR}
205
+ ```
206
+
207
+ Store `$QUICK_DIR` for use in orchestration.
208
+
209
+ ---
210
+
211
+ **Step 4.5: Discussion phase (only when `$DISCUSS_MODE`)**
212
+
213
+ Skip this step entirely if NOT `$DISCUSS_MODE`.
214
+
215
+ Display banner:
216
+ ```
217
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
218
+ GSD ► DISCUSSING QUICK TASK
219
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
220
+
221
+ ◆ Surfacing gray areas for: ${DESCRIPTION}
222
+ ```
223
+
224
+ **4.5a. Identify gray areas**
225
+
226
+ Analyze `$DESCRIPTION` to identify 2-4 gray areas — implementation decisions that would change the outcome and that the user should weigh in on.
227
+
228
+ Use the domain-aware heuristic to generate phase-specific (not generic) gray areas:
229
+ - Something users **SEE** → layout, density, interactions, states
230
+ - Something users **CALL** → responses, errors, auth, versioning
231
+ - Something users **RUN** → output format, flags, modes, error handling
232
+ - Something users **READ** → structure, tone, depth, flow
233
+ - Something being **ORGANIZED** → criteria, grouping, naming, exceptions
234
+
235
+ Each gray area should be a concrete decision point, not a vague category. Example: "Loading behavior" not "UX".
236
+
237
+ **4.5b. Present gray areas**
238
+
239
+ ```
240
+ AskUserQuestion(
241
+ header: "Gray Areas",
242
+ question: "Which areas need clarification before planning?",
243
+ options: [
244
+ { label: "${area_1}", description: "${why_it_matters_1}" },
245
+ { label: "${area_2}", description: "${why_it_matters_2}" },
246
+ { label: "${area_3}", description: "${why_it_matters_3}" },
247
+ { label: "All clear", description: "Skip discussion — I know what I want" }
248
+ ],
249
+ multiSelect: true
250
+ )
251
+ ```
252
+
253
+ If user selects "All clear" → skip to Step 5 (no CONTEXT.md written).
254
+
255
+ **4.5c. Discuss selected areas**
256
+
257
+ For each selected area, ask 1-2 focused questions via AskUserQuestion:
258
+
259
+ ```
260
+ AskUserQuestion(
261
+ header: "${area_name}",
262
+ question: "${specific_question_about_this_area}",
263
+ options: [
264
+ { label: "${concrete_choice_1}", description: "${what_this_means}" },
265
+ { label: "${concrete_choice_2}", description: "${what_this_means}" },
266
+ { label: "${concrete_choice_3}", description: "${what_this_means}" },
267
+ { label: "You decide", description: "Claude's discretion" }
268
+ ],
269
+ multiSelect: false
270
+ )
271
+ ```
272
+
273
+ Rules:
274
+ - Options must be concrete choices, not abstract categories
275
+ - Highlight recommended choice where you have a clear opinion
276
+ - If user selects "Other" with freeform text, switch to plain text follow-up (per questioning.md freeform rule)
277
+ - If user selects "You decide", capture as Claude's Discretion in CONTEXT.md
278
+ - Max 2 questions per area — this is lightweight, not a deep dive
279
+
280
+ Collect all decisions into `$DECISIONS`.
281
+
282
+ **4.5d. Write CONTEXT.md**
283
+
284
+ Write `${QUICK_DIR}/${quick_id}-CONTEXT.md` using the standard context template structure:
285
+
286
+ ```markdown
287
+ # Quick Task ${quick_id}: ${DESCRIPTION} - Context
288
+
289
+ **Gathered:** ${date}
290
+ **Status:** Ready for planning
291
+
292
+ <domain>
293
+ ## Task Boundary
294
+
295
+ ${DESCRIPTION}
296
+
297
+ </domain>
298
+
299
+ <decisions>
300
+ ## Implementation Decisions
301
+
302
+ ### ${area_1_name}
303
+ - ${decision_from_discussion}
304
+
305
+ ### ${area_2_name}
306
+ - ${decision_from_discussion}
307
+
308
+ ### Claude's Discretion
309
+ ${areas_where_user_said_you_decide_or_areas_not_discussed}
310
+
311
+ </decisions>
312
+
313
+ <specifics>
314
+ ## Specific Ideas
315
+
316
+ ${any_specific_references_or_examples_from_discussion}
317
+
318
+ [If none: "No specific requirements — open to standard approaches"]
319
+
320
+ </specifics>
321
+
322
+ <canonical_refs>
323
+ ## Canonical References
324
+
325
+ ${any_specs_adrs_or_docs_referenced_during_discussion}
326
+
327
+ [If none: "No external specs — requirements fully captured in decisions above"]
328
+
329
+ </canonical_refs>
330
+ ```
331
+
332
+ 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.
333
+
334
+ Report: `Context captured: ${QUICK_DIR}/${quick_id}-CONTEXT.md`
335
+
336
+ ---
337
+
338
+ **Step 4.75: Research phase (only when `$RESEARCH_MODE`)**
339
+
340
+ Skip this step entirely if NOT `$RESEARCH_MODE`.
341
+
342
+ Display banner:
343
+ ```
344
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
345
+ GSD ► RESEARCHING QUICK TASK
346
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
347
+
348
+ ◆ Investigating approaches for: ${DESCRIPTION}
349
+ ```
350
+
351
+ Spawn a single focused researcher (not 4 parallel researchers like full phases — quick tasks need targeted research, not broad domain surveys):
352
+
353
+ ```
354
+ Task(
355
+ prompt="
356
+ <research_context>
357
+
358
+ **Mode:** quick-task
359
+ **Task:** ${DESCRIPTION}
360
+ **Output:** ${QUICK_DIR}/${quick_id}-RESEARCH.md
361
+
362
+ <files_to_read>
363
+ - .planning/STATE.md (Project state — what's already built)
364
+ - .planning/PROJECT.md (Project context)
365
+ - ./CLAUDE.md (if exists — project-specific guidelines)
366
+ ${DISCUSS_MODE ? '- ' + QUICK_DIR + '/' + quick_id + '-CONTEXT.md (User decisions — research should align with these)' : ''}
367
+ </files_to_read>
368
+
369
+ ${AGENT_SKILLS_PLANNER}
370
+
371
+ </research_context>
372
+
373
+ <focus>
374
+ This is a quick task, not a full phase. Research should be concise and targeted:
375
+ 1. Best libraries/patterns for this specific task
376
+ 2. Common pitfalls and how to avoid them
377
+ 3. Integration points with existing codebase
378
+ 4. Any constraints or gotchas worth knowing before planning
379
+
380
+ Do NOT produce a full domain survey. Target 1-2 pages of actionable findings.
381
+ </focus>
382
+
383
+ <output>
384
+ Write research to: ${QUICK_DIR}/${quick_id}-RESEARCH.md
385
+ Use standard research format but keep it lean — skip sections that don't apply.
386
+ Return: ## RESEARCH COMPLETE with file path
387
+ </output>
388
+ ",
389
+ subagent_type="gsd-phase-researcher",
390
+ model="{planner_model}",
391
+ description="Research: ${DESCRIPTION}"
392
+ )
393
+ ```
394
+
395
+ After researcher returns:
396
+ 1. Verify research exists at `${QUICK_DIR}/${quick_id}-RESEARCH.md`
397
+ 2. Report: "Research complete: ${QUICK_DIR}/${quick_id}-RESEARCH.md"
398
+
399
+ If research file not found, warn but continue: "Research agent did not produce output — proceeding to planning without research."
400
+
401
+ ---
402
+
403
+ **Step 5: Spawn planner (quick mode)**
404
+
405
+ **If `$VALIDATE_MODE`:** Use `quick-full` mode with stricter constraints.
406
+
407
+ **If NOT `$VALIDATE_MODE`:** Use standard `quick` mode.
408
+
409
+ ```
410
+ Task(
411
+ prompt="
412
+ <planning_context>
413
+
414
+ **Mode:** ${VALIDATE_MODE ? 'quick-full' : 'quick'}
415
+ **Directory:** ${QUICK_DIR}
416
+ **Description:** ${DESCRIPTION}
417
+
418
+ <files_to_read>
419
+ - .planning/STATE.md (Project State)
420
+ - ./CLAUDE.md (if exists — follow project-specific guidelines)
421
+ ${DISCUSS_MODE ? '- ' + QUICK_DIR + '/' + quick_id + '-CONTEXT.md (User decisions — locked, do not revisit)' : ''}
422
+ ${RESEARCH_MODE ? '- ' + QUICK_DIR + '/' + quick_id + '-RESEARCH.md (Research findings — use to inform implementation choices)' : ''}
423
+ </files_to_read>
424
+
425
+ ${AGENT_SKILLS_PLANNER}
426
+
427
+ **Project skills:** Check .claude/skills/ or .agents/skills/ directory (if either exists) — read SKILL.md files, plans should account for project skill rules
428
+
429
+ </planning_context>
430
+
431
+ <constraints>
432
+ - Create a SINGLE plan with 1-3 focused tasks
433
+ - Quick tasks should be atomic and self-contained
434
+ ${RESEARCH_MODE ? '- Research findings are available — use them to inform library/pattern choices' : '- No research phase'}
435
+ ${VALIDATE_MODE ? '- Target ~40% context usage (structured for verification)' : '- Target ~30% context usage (simple, focused)'}
436
+ ${VALIDATE_MODE ? '- MUST generate `must_haves` in plan frontmatter (truths, artifacts, key_links)' : ''}
437
+ ${VALIDATE_MODE ? '- Each task MUST have `files`, `action`, `verify`, `done` fields' : ''}
438
+ </constraints>
439
+
440
+ <output>
441
+ Write plan to: ${QUICK_DIR}/${quick_id}-PLAN.md
442
+ Return: ## PLANNING COMPLETE with plan path
443
+ </output>
444
+ ",
445
+ subagent_type="gsd-planner",
446
+ model="{planner_model}",
447
+ description="Quick plan: ${DESCRIPTION}"
448
+ )
449
+ ```
450
+
451
+ After planner returns:
452
+ 1. Verify plan exists at `${QUICK_DIR}/${quick_id}-PLAN.md`
453
+ 2. Extract plan count (typically 1 for quick tasks)
454
+ 3. Report: "Plan created: ${QUICK_DIR}/${quick_id}-PLAN.md"
455
+
456
+ If plan not found, error: "Planner failed to create ${quick_id}-PLAN.md"
457
+
458
+ ---
459
+
460
+ **Step 5.5: Plan-checker loop (only when `$VALIDATE_MODE`)**
461
+
462
+ Skip this step entirely if NOT `$VALIDATE_MODE`.
463
+
464
+ Display banner:
465
+ ```
466
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
467
+ GSD ► CHECKING PLAN
468
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
469
+
470
+ ◆ Spawning plan checker...
471
+ ```
472
+
473
+ Checker prompt:
474
+
475
+ ```markdown
476
+ <verification_context>
477
+ **Mode:** quick-full
478
+ **Task Description:** ${DESCRIPTION}
479
+
480
+ <files_to_read>
481
+ - ${QUICK_DIR}/${quick_id}-PLAN.md (Plan to verify)
482
+ </files_to_read>
483
+
484
+ ${AGENT_SKILLS_CHECKER}
485
+
486
+ **Scope:** This is a quick task, not a full phase. Skip checks that require a ROADMAP phase goal.
487
+ </verification_context>
488
+
489
+ <check_dimensions>
490
+ - Requirement coverage: Does the plan address the task description?
491
+ - Task completeness: Do tasks have files, action, verify, done fields?
492
+ - Key links: Are referenced files real?
493
+ - Scope sanity: Is this appropriately sized for a quick task (1-3 tasks)?
494
+ - must_haves derivation: Are must_haves traceable to the task description?
495
+
496
+ Skip: cross-plan deps (single plan), ROADMAP alignment
497
+ ${DISCUSS_MODE ? '- Context compliance: Does the plan honor locked decisions from CONTEXT.md?' : '- Skip: context compliance (no CONTEXT.md)'}
498
+ </check_dimensions>
499
+
500
+ <expected_output>
501
+ - ## VERIFICATION PASSED — all checks pass
502
+ - ## ISSUES FOUND — structured issue list
503
+ </expected_output>
504
+ ```
505
+
506
+ ```
507
+ Task(
508
+ prompt=checker_prompt,
509
+ subagent_type="gsd-plan-checker",
510
+ model="{checker_model}",
511
+ description="Check quick plan: ${DESCRIPTION}"
512
+ )
513
+ ```
514
+
515
+ **Handle checker return:**
516
+
517
+ - **`## VERIFICATION PASSED`:** Display confirmation, proceed to step 6.
518
+ - **`## ISSUES FOUND`:** Display issues, check iteration count, enter revision loop.
519
+
520
+ **Revision loop (max 2 iterations):**
521
+
522
+ Track `iteration_count` (starts at 1 after initial plan + check).
523
+
524
+ **If iteration_count < 2:**
525
+
526
+ Display: `Sending back to planner for revision... (iteration ${N}/2)`
527
+
528
+ Revision prompt:
529
+
530
+ ```markdown
531
+ <revision_context>
532
+ **Mode:** quick-full (revision)
533
+
534
+ <files_to_read>
535
+ - ${QUICK_DIR}/${quick_id}-PLAN.md (Existing plan)
536
+ </files_to_read>
537
+
538
+ ${AGENT_SKILLS_PLANNER}
539
+
540
+ **Checker issues:** ${structured_issues_from_checker}
541
+
542
+ </revision_context>
543
+
544
+ <instructions>
545
+ Make targeted updates to address checker issues.
546
+ Do NOT replan from scratch unless issues are fundamental.
547
+ Return what changed.
548
+ </instructions>
549
+ ```
550
+
551
+ ```
552
+ Task(
553
+ prompt=revision_prompt,
554
+ subagent_type="gsd-planner",
555
+ model="{planner_model}",
556
+ description="Revise quick plan: ${DESCRIPTION}"
557
+ )
558
+ ```
559
+
560
+ After planner returns → spawn checker again, increment iteration_count.
561
+
562
+ **If iteration_count >= 2:**
563
+
564
+ Display: `Max iterations reached. ${N} issues remain:` + issue list
565
+
566
+ Offer: 1) Force proceed, 2) Abort
567
+
568
+ ---
569
+
570
+ **Step 5.6: Pre-dispatch plan commit (worktree mode only)**
571
+
572
+ When `USE_WORKTREES !== "false"`, commit PLAN.md to the current branch **before** spawning the executor. This ensures the worktree inherits PLAN.md at its branch HEAD so the executor can read it via a worktree-rooted path — avoiding the main-repo path priming that triggers CC #36182 path-resolution drift.
573
+
574
+ Skip this step entirely if `USE_WORKTREES === "false"` (non-worktree mode: PLAN.md is committed in Step 8 as usual).
575
+
576
+ ```bash
577
+ if [ "${USE_WORKTREES}" != "false" ]; then
578
+ COMMIT_DOCS=$(gsd-remix-sdk query config-get commit_docs 2>/dev/null || echo "true")
579
+ if [ "$COMMIT_DOCS" != "false" ]; then
580
+ git add "${QUICK_DIR}/${quick_id}-PLAN.md"
581
+ git commit --no-verify -m "docs(${quick_id}): pre-dispatch plan for ${DESCRIPTION}" -- "${QUICK_DIR}/${quick_id}-PLAN.md" || true
582
+ fi
583
+ fi
584
+ ```
585
+
586
+ ---
587
+
588
+ **Step 6: Spawn executor**
589
+
590
+ Capture current HEAD before spawning (used for worktree branch check):
591
+ ```bash
592
+ EXPECTED_BASE=$(git rev-parse HEAD)
593
+ ```
594
+
595
+ Spawn gsd-executor with plan reference:
596
+
597
+ ```
598
+ Task(
599
+ prompt="
600
+ Execute quick task ${quick_id}.
601
+
602
+ ${USE_WORKTREES !== "false" ? `
603
+ <worktree_branch_check>
604
+ FIRST ACTION before any other work: verify this worktree branch is based on the correct commit.
605
+ Run: git merge-base HEAD ${EXPECTED_BASE}
606
+ If the result differs from ${EXPECTED_BASE}, hard-reset to the correct base (safe — runs before any agent work):
607
+ git reset --hard ${EXPECTED_BASE}
608
+ Then verify: if [ "$(git rev-parse HEAD)" != "${EXPECTED_BASE}" ]; then echo "ERROR: Could not correct worktree base"; exit 1; fi
609
+ This corrects a known issue where EnterWorktree creates branches from main instead of the feature branch HEAD (affects all platforms).
610
+ </worktree_branch_check>
611
+ ` : ''}
612
+
613
+ <files_to_read>
614
+ - ${QUICK_DIR}/${quick_id}-PLAN.md (Plan)
615
+ - .planning/STATE.md (Project state)
616
+ - ./CLAUDE.md (Project instructions, if exists)
617
+ - .claude/skills/ or .agents/skills/ (Project skills, if either exists — list skills, read SKILL.md for each, follow relevant rules during implementation)
618
+ </files_to_read>
619
+
620
+ ${AGENT_SKILLS_EXECUTOR}
621
+
622
+ <constraints>
623
+ - Execute all tasks in the plan
624
+ - Commit each task atomically (code changes only)
625
+ - Create summary at: ${QUICK_DIR}/${quick_id}-SUMMARY.md
626
+ - Do NOT commit docs artifacts (SUMMARY.md, STATE.md, PLAN.md) — the orchestrator handles the docs commit in Step 8
627
+ - Do NOT update ROADMAP.md (quick tasks are separate from planned phases)
628
+ </constraints>
629
+ ",
630
+ subagent_type="gsd-executor",
631
+ model="{executor_model}",
632
+ ${USE_WORKTREES !== "false" ? 'isolation="worktree",' : ''}
633
+ description="Execute: ${DESCRIPTION}"
634
+ )
635
+ ```
636
+
637
+ After executor returns:
638
+ 1. **Worktree cleanup:** If the executor ran with `isolation="worktree"`, merge the worktree branch back and clean up:
639
+ ```bash
640
+ # Find worktrees created by the executor
641
+ WORKTREES=$(git worktree list --porcelain | grep "^worktree " | grep -v "$(pwd)$" | sed 's/^worktree //')
642
+ for WT in $WORKTREES; do
643
+ WT_BRANCH=$(git -C "$WT" rev-parse --abbrev-ref HEAD 2>/dev/null)
644
+ if [ -n "$WT_BRANCH" ] && [ "$WT_BRANCH" != "HEAD" ]; then
645
+ # --- Orchestrator file protection (#1756) ---
646
+ # Backup STATE.md and ROADMAP.md before merge (main always wins)
647
+ STATE_BACKUP=$(mktemp)
648
+ ROADMAP_BACKUP=$(mktemp)
649
+ [ -f .planning/STATE.md ] && cp .planning/STATE.md "$STATE_BACKUP" || true
650
+ [ -f .planning/ROADMAP.md ] && cp .planning/ROADMAP.md "$ROADMAP_BACKUP" || true
651
+
652
+ # Snapshot files on main to detect resurrections
653
+ PRE_MERGE_FILES=$(git ls-files .planning/)
654
+
655
+ # Pre-merge deletion guard: block merges that delete tracked .planning/ files
656
+ DELETIONS=$(git diff --diff-filter=D --name-only HEAD..."$WT_BRANCH" 2>/dev/null || true)
657
+ if [ -n "$DELETIONS" ]; then
658
+ echo "BLOCKED: Worktree branch $WT_BRANCH contains file deletions: $DELETIONS"
659
+ echo "Review these deletions before merging. If intentional, remove this guard and re-run."
660
+ rm -f "$STATE_BACKUP" "$ROADMAP_BACKUP"
661
+ continue
662
+ fi
663
+
664
+ git merge "$WT_BRANCH" --no-ff --no-edit -m "chore: merge quick task worktree ($WT_BRANCH)" 2>&1 || {
665
+ echo "⚠ Merge conflict from worktree $WT_BRANCH — resolve manually"
666
+ echo " STATE.md backup: $STATE_BACKUP"
667
+ echo " ROADMAP.md backup: $ROADMAP_BACKUP"
668
+ echo " Restore with: cp \$STATE_BACKUP .planning/STATE.md && cp \$ROADMAP_BACKUP .planning/ROADMAP.md"
669
+ break
670
+ }
671
+
672
+ # Restore orchestrator-owned files
673
+ if [ -s "$STATE_BACKUP" ]; then cp "$STATE_BACKUP" .planning/STATE.md; fi
674
+ if [ -s "$ROADMAP_BACKUP" ]; then cp "$ROADMAP_BACKUP" .planning/ROADMAP.md; fi
675
+ rm -f "$STATE_BACKUP" "$ROADMAP_BACKUP"
676
+
677
+ # Remove files deleted on main but re-added by worktree (--no-ff guarantees a merge commit so HEAD~1 is reliable)
678
+ DELETED_FILES=$(git diff --diff-filter=A --name-only HEAD~1 -- .planning/ 2>/dev/null || true)
679
+ for RESURRECTED in $DELETED_FILES; do
680
+ if ! echo "$PRE_MERGE_FILES" | grep -qxF "$RESURRECTED"; then
681
+ git rm -f "$RESURRECTED" 2>/dev/null || true
682
+ fi
683
+ done
684
+
685
+ if ! git diff --quiet .planning/STATE.md .planning/ROADMAP.md 2>/dev/null || \
686
+ [ -n "$DELETED_FILES" ]; then
687
+ COMMIT_DOCS=$(gsd-remix-sdk query config-get commit_docs 2>/dev/null || echo "true")
688
+ if [ "$COMMIT_DOCS" != "false" ]; then
689
+ git add .planning/STATE.md .planning/ROADMAP.md 2>/dev/null || true
690
+ git commit --amend --no-edit 2>/dev/null || true
691
+ fi
692
+ fi
693
+
694
+ # Safety net: rescue uncommitted SUMMARY.md before worktree removal (#2296, mirrors #2070)
695
+ UNCOMMITTED_SUMMARY=$(git -C "$WT" ls-files --modified --others --exclude-standard -- "*SUMMARY.md" 2>/dev/null || true)
696
+ if [ -n "$UNCOMMITTED_SUMMARY" ]; then
697
+ echo "⚠ SUMMARY.md was not committed by executor — committing now to prevent data loss"
698
+ git -C "$WT" add -- "*SUMMARY.md" 2>/dev/null || true
699
+ git -C "$WT" commit --no-verify -m "docs(recovery): rescue uncommitted SUMMARY.md before worktree removal (#2070)" 2>/dev/null || true
700
+ git merge "$WT_BRANCH" --no-edit -m "chore: merge rescued SUMMARY.md from executor worktree ($WT_BRANCH)" 2>/dev/null || true
701
+ fi
702
+
703
+ if ! git worktree remove "$WT" --force; then
704
+ WT_NAME=$(basename "$WT")
705
+ if [ -f ".git/worktrees/${WT_NAME}/locked" ]; then
706
+ echo "⚠ Worktree $WT is locked — attempting to unlock and retry"
707
+ git worktree unlock "$WT" 2>/dev/null || true
708
+ if ! git worktree remove "$WT" --force; then
709
+ echo "⚠ Residual worktree at $WT — manual cleanup required after session exits:"
710
+ echo " git worktree unlock \"$WT\" && git worktree remove \"$WT\" --force && git branch -D \"$WT_BRANCH\""
711
+ fi
712
+ else
713
+ echo "⚠ Residual worktree at $WT (remove failed) — investigate manually"
714
+ fi
715
+ fi
716
+ git branch -D "$WT_BRANCH" 2>/dev/null || true
717
+ fi
718
+ done
719
+ ```
720
+ If `workflow.use_worktrees` is `false`, skip this step.
721
+ 2. Verify summary exists at `${QUICK_DIR}/${quick_id}-SUMMARY.md`
722
+ 3. Extract commit hash from executor output
723
+ 4. Report completion status
724
+
725
+ **Known Claude Code bug (classifyHandoffIfNeeded):** If executor reports "failed" with error `classifyHandoffIfNeeded is not defined`, this is a Claude Code runtime bug — not a real failure. Check if summary file exists and git log shows commits. If so, treat as successful.
726
+
727
+ If summary not found, error: "Executor failed to create ${quick_id}-SUMMARY.md"
728
+
729
+ Note: For quick tasks producing multiple plans (rare), spawn executors in parallel waves per execute-phase patterns.
730
+
731
+ ---
732
+
733
+ **Step 6.25: Code review (auto)**
734
+
735
+ Skip this step entirely if `$FULL_MODE` is false.
736
+
737
+ **Config gate:**
738
+ ```bash
739
+ CODE_REVIEW_ENABLED=$(gsd-remix-sdk query config-get workflow.code_review 2>/dev/null || echo "true")
740
+ ```
741
+ If `"false"`, skip with message "Code review skipped (workflow.code_review=false)".
742
+
743
+ **Scope files from executor's commits:**
744
+ ```bash
745
+ # Find the diff base: last commit before quick task started
746
+ # Use git log to find commits referencing the quick task id, then take the parent of the oldest
747
+ QUICK_COMMITS=$(git log --oneline --format="%H" --grep="${quick_id}" 2>/dev/null)
748
+ if [ -n "$QUICK_COMMITS" ]; then
749
+ DIFF_BASE=$(echo "$QUICK_COMMITS" | tail -1)^
750
+ # Verify parent exists (guard against first commit in repo)
751
+ git rev-parse "${DIFF_BASE}" >/dev/null 2>&1 || DIFF_BASE=$(echo "$QUICK_COMMITS" | tail -1)
752
+ else
753
+ # No commits found for this quick task — skip review
754
+ DIFF_BASE=""
755
+ fi
756
+
757
+ if [ -n "$DIFF_BASE" ]; then
758
+ CHANGED_FILES=$(git diff --name-only "${DIFF_BASE}..HEAD" -- . ':!.planning' 2>/dev/null | tr '\n' ' ')
759
+ else
760
+ CHANGED_FILES=""
761
+ fi
762
+ ```
763
+
764
+ If `CHANGED_FILES` is empty, skip with "No source files changed — skipping code review."
765
+
766
+ **Invoke review:**
767
+ ```
768
+ Task(
769
+ prompt="Review these files for bugs, security issues, and code quality.
770
+ Files: ${CHANGED_FILES}
771
+ Output: ${QUICK_DIR}/${quick_id}-REVIEW.md
772
+ Depth: quick",
773
+ subagent_type="gsd-code-reviewer",
774
+ model="{executor_model}"
775
+ )
776
+ ```
777
+
778
+ If review produces findings, display advisory message. **Error handling:** Failures are non-blocking — catch and proceed.
779
+
780
+ ---
781
+
782
+ **Step 6.5: Verification (only when `$VALIDATE_MODE`)**
783
+
784
+ Skip this step entirely if NOT `$VALIDATE_MODE`.
785
+
786
+ Display banner:
787
+ ```
788
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
789
+ GSD ► VERIFYING RESULTS
790
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
791
+
792
+ ◆ Spawning verifier...
793
+ ```
794
+
795
+ ```
796
+ Task(
797
+ prompt="Verify quick task goal achievement.
798
+ Task directory: ${QUICK_DIR}
799
+ Task goal: ${DESCRIPTION}
800
+
801
+ <files_to_read>
802
+ - ${QUICK_DIR}/${quick_id}-PLAN.md (Plan)
803
+ </files_to_read>
804
+
805
+ ${AGENT_SKILLS_VERIFIER}
806
+
807
+ Check must_haves against actual codebase. Create VERIFICATION.md at ${QUICK_DIR}/${quick_id}-VERIFICATION.md.",
808
+ subagent_type="gsd-verifier",
809
+ model="{verifier_model}",
810
+ description="Verify: ${DESCRIPTION}"
811
+ )
812
+ ```
813
+
814
+ Read verification status:
815
+ ```bash
816
+ grep "^status:" "${QUICK_DIR}/${quick_id}-VERIFICATION.md" | cut -d: -f2 | tr -d ' '
817
+ ```
818
+
819
+ Store as `$VERIFICATION_STATUS`.
820
+
821
+ | Status | Action |
822
+ |--------|--------|
823
+ | `passed` | Store `$VERIFICATION_STATUS = "Verified"`, continue to step 7 |
824
+ | `human_needed` | Display items needing manual check, store `$VERIFICATION_STATUS = "Needs Review"`, continue |
825
+ | `gaps_found` | Display gap summary, offer: 1) Re-run executor to fix gaps, 2) Accept as-is. Store `$VERIFICATION_STATUS = "Gaps"` |
826
+
827
+ ---
828
+
829
+ **Step 7: Update STATE.md**
830
+
831
+ Update STATE.md with quick task completion record.
832
+
833
+ **7a. Check if "Quick Tasks Completed" section exists:**
834
+
835
+ Read STATE.md and check for `### Quick Tasks Completed` section.
836
+
837
+ **7b. If section doesn't exist, create it:**
838
+
839
+ Insert after `### Blockers/Concerns` section:
840
+
841
+ **If `$VALIDATE_MODE`:**
842
+ ```markdown
843
+ ### Quick Tasks Completed
844
+
845
+ | # | Description | Date | Commit | Status | Directory |
846
+ |---|-------------|------|--------|--------|-----------|
847
+ ```
848
+
849
+ **If NOT `$VALIDATE_MODE`:**
850
+ ```markdown
851
+ ### Quick Tasks Completed
852
+
853
+ | # | Description | Date | Commit | Directory |
854
+ |---|-------------|------|--------|-----------|
855
+ ```
856
+
857
+ **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.
858
+
859
+ **7c. Append new row to table:**
860
+
861
+ Use `date` from init:
862
+
863
+ **If `$VALIDATE_MODE` (or table has Status column):**
864
+ ```markdown
865
+ | ${quick_id} | ${DESCRIPTION} | ${date} | ${commit_hash} | ${VERIFICATION_STATUS} | [${quick_id}-${slug}](./quick/${quick_id}-${slug}/) |
866
+ ```
867
+
868
+ **If NOT `$VALIDATE_MODE` (and table has no Status column):**
869
+ ```markdown
870
+ | ${quick_id} | ${DESCRIPTION} | ${date} | ${commit_hash} | [${quick_id}-${slug}](./quick/${quick_id}-${slug}/) |
871
+ ```
872
+
873
+ **7d. Update "Last activity" line:**
874
+
875
+ Use `date` from init:
876
+ ```
877
+ Last activity: ${date} - Completed quick task ${quick_id}: ${DESCRIPTION}
878
+ ```
879
+
880
+ Use Edit tool to make these changes atomically
881
+
882
+ ---
883
+
884
+ **Step 8: Final commit and completion**
885
+
886
+ 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-remix-sdk query commit` command (or legacy `gsd-tools.cjs` commit) handles already-committed files gracefully.
887
+
888
+ Build file list:
889
+ - `${QUICK_DIR}/${quick_id}-PLAN.md`
890
+ - `${QUICK_DIR}/${quick_id}-SUMMARY.md`
891
+ - `.planning/STATE.md`
892
+ - If `$DISCUSS_MODE` and context file exists: `${QUICK_DIR}/${quick_id}-CONTEXT.md`
893
+ - If `$RESEARCH_MODE` and research file exists: `${QUICK_DIR}/${quick_id}-RESEARCH.md`
894
+ - If `$VALIDATE_MODE` and verification file exists: `${QUICK_DIR}/${quick_id}-VERIFICATION.md`
895
+
896
+ ```bash
897
+ # Explicitly stage all artifacts before commit — PLAN.md may be untracked
898
+ # if the executor ran without worktree isolation and committed docs early
899
+ # Filter .planning/ files from staging if commit_docs is disabled (#1783)
900
+ COMMIT_DOCS=$(gsd-remix-sdk query config-get commit_docs 2>/dev/null || echo "true")
901
+ if [ "$COMMIT_DOCS" = "false" ]; then
902
+ file_list_filtered=$(echo "${file_list}" | tr ' ' '\n' | grep -v '^\.planning/' | tr '\n' ' ')
903
+ git add ${file_list_filtered} 2>/dev/null
904
+ else
905
+ git add ${file_list} 2>/dev/null
906
+ fi
907
+ gsd-remix-sdk query commit "docs(quick-${quick_id}): ${DESCRIPTION}" ${file_list}
908
+ ```
909
+
910
+ Get final commit hash:
911
+ ```bash
912
+ commit_hash=$(git rev-parse --short HEAD)
913
+ ```
914
+
915
+ Display completion output:
916
+
917
+ **If `$VALIDATE_MODE`:**
918
+ ```
919
+ ---
920
+
921
+ GSD > QUICK TASK COMPLETE (VALIDATED)
922
+
923
+ Quick Task ${quick_id}: ${DESCRIPTION}
924
+
925
+ ${RESEARCH_MODE ? 'Research: ' + QUICK_DIR + '/' + quick_id + '-RESEARCH.md' : ''}
926
+ Summary: ${QUICK_DIR}/${quick_id}-SUMMARY.md
927
+ Verification: ${QUICK_DIR}/${quick_id}-VERIFICATION.md (${VERIFICATION_STATUS})
928
+ Commit: ${commit_hash}
929
+
930
+ ---
931
+
932
+ Ready for next task: /gsd-quick ${GSD_WS}
933
+ ```
934
+
935
+ **If NOT `$VALIDATE_MODE`:**
936
+ ```
937
+ ---
938
+
939
+ GSD > QUICK TASK COMPLETE
940
+
941
+ Quick Task ${quick_id}: ${DESCRIPTION}
942
+
943
+ ${RESEARCH_MODE ? 'Research: ' + QUICK_DIR + '/' + quick_id + '-RESEARCH.md' : ''}
944
+ Summary: ${QUICK_DIR}/${quick_id}-SUMMARY.md
945
+ Commit: ${commit_hash}
946
+
947
+ ---
948
+
949
+ Ready for next task: /gsd-quick ${GSD_WS}
950
+ ```
951
+
952
+ </process>
953
+
954
+ <success_criteria>
955
+ - [ ] ROADMAP.md validation passes
956
+ - [ ] User provides task description
957
+ - [ ] `--full`, `--validate`, `--discuss`, and `--research` flags parsed from arguments when present
958
+ - [ ] `--full` sets all booleans (`$FULL_MODE`, `$DISCUSS_MODE`, `$RESEARCH_MODE`, `$VALIDATE_MODE`)
959
+ - [ ] Slug generated (lowercase, hyphens, max 40 chars)
960
+ - [ ] Quick ID generated (YYMMDD-xxx format, 2s Base36 precision)
961
+ - [ ] Directory created at `.planning/quick/YYMMDD-xxx-slug/`
962
+ - [ ] (--discuss) Gray areas identified and presented, decisions captured in `${quick_id}-CONTEXT.md`
963
+ - [ ] (--research) Research agent spawned, `${quick_id}-RESEARCH.md` created
964
+ - [ ] `${quick_id}-PLAN.md` created by planner (honors CONTEXT.md decisions when --discuss, uses RESEARCH.md findings when --research)
965
+ - [ ] (--validate) Plan checker validates plan, revision loop capped at 2
966
+ - [ ] `${quick_id}-SUMMARY.md` created by executor
967
+ - [ ] (--validate) `${quick_id}-VERIFICATION.md` created by verifier
968
+ - [ ] STATE.md updated with quick task row (Status column when --validate)
969
+ - [ ] Artifacts committed
970
+ </success_criteria>