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,286 @@
1
+ <purpose>
2
+ Explore design directions through throwaway HTML mockups before committing to implementation.
3
+ Each sketch produces 2-3 variants for comparison. Saves artifacts to `.planning/sketches/`.
4
+ Companion to `/gsd-sketch-wrap-up`.
5
+ </purpose>
6
+
7
+ <required_reading>
8
+ Read all files referenced by the invoking prompt's execution_context before starting.
9
+
10
+ @~/.claude/get-shit-done/references/sketch-theme-system.md
11
+ @~/.claude/get-shit-done/references/sketch-variant-patterns.md
12
+ @~/.claude/get-shit-done/references/sketch-interactivity.md
13
+ @~/.claude/get-shit-done/references/sketch-tooling.md
14
+ </required_reading>
15
+
16
+ <process>
17
+
18
+ <step name="banner">
19
+ ```
20
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
21
+ GSD ► SKETCHING
22
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
23
+ ```
24
+
25
+ Parse `$ARGUMENTS` for:
26
+ - `--quick` flag → set `QUICK_MODE=true`
27
+ - `--text` flag → set `TEXT_MODE=true`
28
+ - Remaining text → the design idea to sketch
29
+
30
+ **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.
31
+ </step>
32
+
33
+ <step name="setup_directory">
34
+ Create `.planning/sketches/` and themes directory if they don't exist:
35
+
36
+ ```bash
37
+ mkdir -p .planning/sketches/themes
38
+ ```
39
+
40
+ Check for existing sketches to determine numbering:
41
+ ```bash
42
+ ls -d .planning/sketches/[0-9][0-9][0-9]-* 2>/dev/null | sort | tail -1
43
+ ```
44
+
45
+ Check `commit_docs` config:
46
+ ```bash
47
+ COMMIT_DOCS=$(gsd-remix-sdk query config-get commit_docs 2>/dev/null || echo "true")
48
+ ```
49
+ </step>
50
+
51
+ <step name="mood_intake">
52
+ **If `QUICK_MODE` is true:** Skip mood intake. Use whatever the user provided in `$ARGUMENTS` as the design direction. Jump to `decompose`.
53
+
54
+ **Otherwise:**
55
+
56
+ Before sketching anything, explore the design intent through conversation. Ask one question at a time using AskUserQuestion, with a paragraph of context and reasoning for each.
57
+
58
+ **Questions to cover (adapt to what the user has already shared):**
59
+
60
+ 1. **Feel:** "What should this feel like? Give me adjectives, emotions, or a vibe." (e.g., "clean and clinical", "warm and playful", "dense and powerful")
61
+ 2. **References:** "What apps, sites, or products have a similar feel to what you're imagining?" (gives concrete visual anchors)
62
+ 3. **Core action:** "What's the single most important thing a user does here?" (focuses the sketch on what matters)
63
+
64
+ You may need more or fewer questions depending on how much the user shares upfront. After each answer, briefly reflect what you heard and how it shapes your thinking.
65
+
66
+ When you have enough signal, ask: **"I think I have a good sense of the direction. Ready for me to sketch, or want to keep discussing?"**
67
+
68
+ Only proceed when the user says go.
69
+ </step>
70
+
71
+ <step name="decompose">
72
+ Break the idea into 2-5 design questions. Present as a table:
73
+
74
+ | Sketch | Design question | Approach | Risk |
75
+ |--------|----------------|----------|------|
76
+ | 001 | Does a two-panel layout feel right? | Sidebar + main, variants: fixed/collapsible/floating | **High** — sets page structure |
77
+ | 002 | How should the form controls look? | Grouped cards, variants: stacked/inline/floating labels | Medium |
78
+
79
+ Each sketch answers one specific visual question. Good sketches:
80
+ - "Does this layout feel right?" — build with real-ish content
81
+ - "How should these controls be grouped?" — build with actual labels and inputs
82
+ - "What does this interaction feel like?" — build the hover/click/transition
83
+ - "Does this color palette work?" — apply to actual UI, not a swatch grid
84
+
85
+ Bad sketches:
86
+ - "Design the whole app" — too broad
87
+ - "Set up the component library" — that's implementation
88
+ - "Pick a color palette" — apply it to UI instead
89
+
90
+ Present the table and get alignment before building.
91
+ </step>
92
+
93
+ <step name="research_stack">
94
+ ## Research the Target Stack
95
+
96
+ Before sketching, ground the design in what's actually buildable. Sketches are HTML, but they should reflect real constraints of the target implementation.
97
+
98
+ **a. Identify the target stack.** Check for package.json, Cargo.toml, etc. If the user mentioned a framework (React, SwiftUI, Flutter, etc.), note it.
99
+
100
+ **b. Check component/pattern availability.** Use context7 (resolve-library-id → query-docs) or web search to answer:
101
+ - What layout primitives does the target framework provide? (grid systems, nav patterns, panel components)
102
+ - Are there existing component libraries in use? (shadcn, Material UI, etc.) What components are available?
103
+ - What interaction patterns are idiomatic? (e.g., sheet vs modal vs dialog in mobile)
104
+
105
+ **c. Note constraints that affect design.** Some things that look great in HTML are painful or impossible in certain stacks:
106
+ - Platform conventions (iOS nav patterns, desktop menu bars, terminal grid constraints)
107
+ - Framework limitations (what's easy vs requires custom work)
108
+ - Existing design tokens or theme systems already in the project
109
+
110
+ **d. Let research inform variants.** Use findings to make variants that are actually buildable — at least one variant should follow the path of least resistance for the target stack.
111
+
112
+ **Skip when unnecessary.** If it's a greenfield project with no stack chosen, or the user explicitly says "just explore visually, don't worry about implementation," skip this step entirely. The point is grounding, not gatekeeping.
113
+ </step>
114
+
115
+ <step name="create_manifest">
116
+ Create or update `.planning/sketches/MANIFEST.md`:
117
+
118
+ ```markdown
119
+ # Sketch Manifest
120
+
121
+ ## Design Direction
122
+ [One paragraph capturing the mood/feel/direction from the intake conversation]
123
+
124
+ ## Reference Points
125
+ [Apps/sites the user referenced]
126
+
127
+ ## Sketches
128
+
129
+ | # | Name | Design Question | Winner | Tags |
130
+ |---|------|----------------|--------|------|
131
+ ```
132
+
133
+ If MANIFEST.md already exists, append new sketches to the existing table.
134
+ </step>
135
+
136
+ <step name="create_theme">
137
+ If no theme exists yet at `.planning/sketches/themes/default.css`, create one based on the mood/direction from the intake step. See `sketch-theme-system.md` for the full template.
138
+
139
+ Adapt colors, fonts, spacing, and shapes to match the agreed aesthetic — don't use the defaults verbatim unless they match the mood.
140
+ </step>
141
+
142
+ <step name="build_sketches">
143
+ Build each sketch in order.
144
+
145
+ ### For Each Sketch:
146
+
147
+ **a.** Find next available number by checking existing `.planning/sketches/NNN-*/` directories.
148
+ Format: three-digit zero-padded + hyphenated descriptive name.
149
+
150
+ **b.** Create the sketch directory: `.planning/sketches/NNN-descriptive-name/`
151
+
152
+ **c.** Build `index.html` with 2-3 variants:
153
+
154
+ **First round — dramatic differences:** Build 2-3 meaningfully different approaches to the design question. Different layouts, different visual structures, different interaction models.
155
+
156
+ **Subsequent rounds — refinements:** Once the user has picked a direction or cherry-picked elements, build subtler variations within that direction.
157
+
158
+ Each variant is a page/tab in the same HTML file. Include:
159
+ - Tab navigation to switch between variants (see `sketch-variant-patterns.md`)
160
+ - Clear labels: "Variant A: Sidebar Layout", "Variant B: Top Nav", etc.
161
+ - The sketch toolbar (see `sketch-tooling.md`)
162
+ - All interactive elements functional (see `sketch-interactivity.md`)
163
+ - Real-ish content, not lorem ipsum
164
+ - Link to `../themes/default.css` for shared theme variables
165
+
166
+ **All sketches are plain HTML with inline CSS and JS.** No build step, no npm, no framework. Opens instantly in a browser.
167
+
168
+ **d.** Write `README.md`:
169
+
170
+ ```markdown
171
+ ---
172
+ sketch: NNN
173
+ name: descriptive-name
174
+ question: "What layout structure feels right for the dashboard?"
175
+ winner: null
176
+ tags: [layout, dashboard]
177
+ ---
178
+
179
+ # Sketch NNN: Descriptive Name
180
+
181
+ ## Design Question
182
+ [The specific visual question this sketch answers]
183
+
184
+ ## How to View
185
+ open .planning/sketches/NNN-descriptive-name/index.html
186
+
187
+ ## Variants
188
+ - **A: [name]** — [one-line description of this approach]
189
+ - **B: [name]** — [one-line description]
190
+ - **C: [name]** — [one-line description]
191
+
192
+ ## What to Look For
193
+ [Specific things to pay attention to when comparing variants]
194
+ ```
195
+
196
+ **e.** Present to the user with a checkpoint:
197
+
198
+ ╔══════════════════════════════════════════════════════════════╗
199
+ ║ CHECKPOINT: Verification Required ║
200
+ ╚══════════════════════════════════════════════════════════════╝
201
+
202
+ **Sketch {NNN}: {name}**
203
+
204
+ Open: `open .planning/sketches/NNN-name/index.html`
205
+
206
+ Compare: {what to look for between variants}
207
+
208
+ ──────────────────────────────────────────────────────────────
209
+ → Which variant feels right? Or cherry-pick elements across variants.
210
+ ──────────────────────────────────────────────────────────────
211
+
212
+ **f.** Handle feedback:
213
+ - **Pick a direction:** "I like variant B" → mark winner in README, move to next sketch
214
+ - **Cherry-pick elements:** "Rounded edges from A, color treatment from C" → build a synthesis as a new variant, show again
215
+ - **Want more exploration:** "None of these feel right, try X instead" → build new variants
216
+
217
+ Iterate until the user is satisfied with a direction for this sketch.
218
+
219
+ **g.** Finalize:
220
+ 1. Mark the winning variant in the README frontmatter (`winner: "B"`)
221
+ 2. Add ★ indicator to the winning tab in the HTML
222
+ 3. Update `.planning/sketches/MANIFEST.md` with the sketch row
223
+
224
+ **h.** Commit (if `COMMIT_DOCS` is true):
225
+ ```bash
226
+ gsd-remix-sdk query commit "docs(sketch-NNN): [winning direction] — [key visual insight]" .planning/sketches/NNN-descriptive-name/ .planning/sketches/MANIFEST.md
227
+ ```
228
+
229
+ **i.** Report:
230
+ ```
231
+ ◆ Sketch NNN: {name}
232
+ Winner: Variant {X} — {description}
233
+ Insight: {key visual decision made}
234
+ ```
235
+ </step>
236
+
237
+ <step name="report">
238
+ After all sketches complete, present the summary:
239
+
240
+ ```
241
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
242
+ GSD ► SKETCH COMPLETE ✓
243
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
244
+
245
+ ## Design Direction
246
+ {what we landed on overall}
247
+
248
+ ## Key Decisions
249
+ {layout, palette, typography, spacing, interaction patterns}
250
+
251
+ ## Open Questions
252
+ {anything unresolved or worth revisiting}
253
+ ```
254
+
255
+ ───────────────────────────────────────────────────────────────
256
+
257
+ ## ▶ Next Up
258
+
259
+ **Package findings** — wrap design decisions into a reusable skill
260
+
261
+ `/gsd-sketch-wrap-up`
262
+
263
+ ───────────────────────────────────────────────────────────────
264
+
265
+ **Also available:**
266
+ - `/gsd-plan-phase` — start building the real UI
267
+ - `/gsd-explore` — continue exploring the concept
268
+ - `/gsd-spike` — spike technical feasibility of a design pattern
269
+
270
+ ───────────────────────────────────────────────────────────────
271
+ </step>
272
+
273
+ </process>
274
+
275
+ <success_criteria>
276
+ - [ ] `.planning/sketches/` created (auto-creates if needed, no project init required)
277
+ - [ ] Design direction explored conversationally before any code (unless --quick)
278
+ - [ ] Target stack researched — component availability, constraints, and idioms noted (unless greenfield/skipped)
279
+ - [ ] Each sketch has 2-3 variants for comparison (at least one follows path of least resistance for target stack)
280
+ - [ ] User can open and interact with sketches in a browser
281
+ - [ ] Winning variant selected and marked for each sketch
282
+ - [ ] All variants preserved (winner marked, not others deleted)
283
+ - [ ] MANIFEST.md is current
284
+ - [ ] Commits use `docs(sketch-NNN): [winner]` format
285
+ - [ ] Summary presented with next-step routing
286
+ </success_criteria>
@@ -0,0 +1,262 @@
1
+ <purpose>
2
+ Clarify WHAT a phase delivers through a Socratic interview loop with quantitative ambiguity scoring.
3
+ Produces a SPEC.md with falsifiable requirements that discuss-phase treats as locked decisions.
4
+
5
+ This workflow handles "what" and "why" — discuss-phase handles "how".
6
+ </purpose>
7
+
8
+ <ambiguity_model>
9
+ Score each dimension 0.0 (completely unclear) to 1.0 (crystal clear):
10
+
11
+ | Dimension | Weight | Minimum | What it measures |
12
+ |-------------------|--------|---------|---------------------------------------------------|
13
+ | Goal Clarity | 35% | 0.75 | Is the outcome specific and measurable? |
14
+ | Boundary Clarity | 25% | 0.70 | What's in scope vs out of scope? |
15
+ | Constraint Clarity| 20% | 0.65 | Performance, compatibility, data requirements? |
16
+ | Acceptance Criteria| 20% | 0.70 | How do we know it's done? |
17
+
18
+ **Ambiguity score** = 1.0 − (0.35×goal + 0.25×boundary + 0.20×constraint + 0.20×acceptance)
19
+
20
+ **Gate:** ambiguity ≤ 0.20 AND all dimensions ≥ their minimums → ready to write SPEC.md.
21
+
22
+ A score of 0.20 means 80% weighted clarity — enough precision that the planner won't silently make wrong assumptions.
23
+ </ambiguity_model>
24
+
25
+ <interview_perspectives>
26
+ Rotate through these perspectives — each naturally surfaces different blindspots:
27
+
28
+ **Researcher (rounds 1–2):** Ground the discussion in current reality.
29
+ - "What exists in the codebase today related to this phase?"
30
+ - "What's the delta between today and the target state?"
31
+ - "What triggers this work — what's broken or missing?"
32
+
33
+ **Simplifier (round 2):** Surface minimum viable scope.
34
+ - "What's the simplest version that solves the core problem?"
35
+ - "If you had to cut 50%, what's the irreducible core?"
36
+ - "What would make this phase a success even without the nice-to-haves?"
37
+
38
+ **Boundary Keeper (round 3):** Lock the perimeter.
39
+ - "What explicitly will NOT be done in this phase?"
40
+ - "What adjacent problems is it tempting to solve but shouldn't?"
41
+ - "What does 'done' look like — what's the final deliverable?"
42
+
43
+ **Failure Analyst (round 4):** Find the edge cases that invalidate requirements.
44
+ - "What's the worst thing that could go wrong if we get the requirements wrong?"
45
+ - "What does a broken version of this look like?"
46
+ - "What would cause a verifier to reject the output?"
47
+
48
+ **Seed Closer (rounds 5–6):** Lock remaining undecided territory.
49
+ - "We have [dimension] at [score] — what would make it completely clear?"
50
+ - "The remaining ambiguity is in [area] — can we make a decision now?"
51
+ - "Is there anything you'd regret not specifying before planning starts?"
52
+ </interview_perspectives>
53
+
54
+ <process>
55
+
56
+ ## Step 1: Initialize
57
+
58
+ ```bash
59
+ INIT=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" init phase-op "${PHASE}")
60
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
61
+ ```
62
+
63
+ Parse JSON for: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `state_path`, `requirements_path`, `roadmap_path`, `planning_path`, `response_language`, `commit_docs`.
64
+
65
+ **If `response_language` is set:** All user-facing text in this workflow MUST be in `{response_language}`. Technical terms, code, and file paths stay in English.
66
+
67
+ **If `phase_found` is false:**
68
+ ```
69
+ Phase [X] not found in roadmap.
70
+ Use /gsd-progress to see available phases.
71
+ ```
72
+ Exit.
73
+
74
+ **Check for existing SPEC.md:**
75
+ ```bash
76
+ ls ${phase_dir}/*-SPEC.md 2>/dev/null | grep -v AI-SPEC | head -1 || true
77
+ ```
78
+
79
+ If SPEC.md already exists:
80
+
81
+ **If `--auto`:** Auto-select "Update it". Log: `[auto] SPEC.md exists — updating.`
82
+
83
+ **Otherwise:** Use AskUserQuestion:
84
+ - header: "Spec"
85
+ - question: "Phase [X] already has a SPEC.md. What do you want to do?"
86
+ - options:
87
+ - "Update it" — Revise and re-score
88
+ - "View it" — Show current spec
89
+ - "Skip" — Exit (use existing spec as-is)
90
+
91
+ If "View": Display SPEC.md, then offer Update/Skip.
92
+ If "Skip": Exit with message: "Existing SPEC.md unchanged. Run /gsd-discuss-phase [X] to continue."
93
+ If "Update": Load existing SPEC.md, continue to Step 3.
94
+
95
+ ## Step 2: Scout Codebase
96
+
97
+ **Read these files before any questions:**
98
+ - `{requirements_path}` — Project requirements
99
+ - `STATE_SNAPSHOT=$(gsd-remix-sdk query state-snapshot 2>/dev/null || echo "{}")` — Decisions already made, current phase, blockers without loading full STATE.md
100
+ - ROADMAP.md phase entry — Phase description, goals, canonical refs
101
+
102
+ **Grep the codebase** for code/files relevant to this phase goal. Look for:
103
+ - Existing implementations of similar functionality
104
+ - Integration points where new code will connect
105
+ - Test coverage gaps relevant to the phase
106
+ - Prior phase artifacts (SUMMARY.md, VERIFICATION.md) that inform current state
107
+
108
+ **Synthesize current state** — the grounded baseline for the interview:
109
+ - What exists today related to this phase
110
+ - The gap between current state and the phase goal
111
+ - The primary deliverable: what file/behavior/capability does NOT exist yet?
112
+
113
+ Confirm your current state synthesis internally. Do not present it to the user yet — you'll use it to ask precise, grounded questions.
114
+
115
+ ## Step 3: First Ambiguity Assessment
116
+
117
+ Before questioning begins, score the phase's current ambiguity based only on what ROADMAP.md and REQUIREMENTS.md say:
118
+
119
+ ```
120
+ Goal Clarity: [score 0.0–1.0]
121
+ Boundary Clarity: [score 0.0–1.0]
122
+ Constraint Clarity: [score 0.0–1.0]
123
+ Acceptance Criteria:[score 0.0–1.0]
124
+
125
+ Ambiguity: [score] ([calculate])
126
+ ```
127
+
128
+ **If `--auto` and initial ambiguity already ≤ 0.20 with all minimums met:** Skip interview — derive SPEC.md directly from roadmap + requirements. Log: `[auto] Phase requirements are already sufficiently clear — generating SPEC.md from existing context.` Jump to Step 6.
129
+
130
+ **Otherwise:** Continue to Step 4.
131
+
132
+ ## Step 4: Socratic Interview Loop
133
+
134
+ **Max 6 rounds.** Each round: 2–3 questions max. End round after user responds.
135
+
136
+ **Round selection by perspective:**
137
+ - Round 1: Researcher
138
+ - Round 2: Researcher + Simplifier
139
+ - Round 3: Boundary Keeper
140
+ - Round 4: Failure Analyst
141
+ - Rounds 5–6: Seed Closer (focus on lowest-scoring dimensions)
142
+
143
+ **After each round:**
144
+ 1. Update all 4 dimension scores from the user's answers
145
+ 2. Calculate new ambiguity score
146
+ 3. Display the updated scoring:
147
+
148
+ ```
149
+ After round [N]:
150
+ Goal Clarity: [score] (min 0.75) [✓ or ↑ needed]
151
+ Boundary Clarity: [score] (min 0.70) [✓ or ↑ needed]
152
+ Constraint Clarity: [score] (min 0.65) [✓ or ↑ needed]
153
+ Acceptance Criteria:[score] (min 0.70) [✓ or ↑ needed]
154
+ Ambiguity: [score] (gate: ≤ 0.20)
155
+ ```
156
+
157
+ **Gate check after each round:**
158
+
159
+ If gate passes (ambiguity ≤ 0.20 AND all minimums met):
160
+
161
+ **If `--auto`:** Jump to Step 6.
162
+
163
+ **Otherwise:** AskUserQuestion:
164
+ - header: "Spec Gate Passed"
165
+ - question: "Ambiguity is [score] — requirements are clear enough to write SPEC.md. Proceed?"
166
+ - options:
167
+ - "Yes — write SPEC.md" → Jump to Step 6
168
+ - "One more round" → Continue interview
169
+ - "Done talking — write it" → Jump to Step 6
170
+
171
+ **If max rounds reached (6) and gate not passed:**
172
+
173
+ **If `--auto`:** Write SPEC.md anyway — flag unresolved dimensions. Log: `[auto] Max rounds reached. Writing SPEC.md with [N] dimensions below minimum. Planner will need to treat these as assumptions.`
174
+
175
+ **Otherwise:** AskUserQuestion:
176
+ - header: "Max Rounds"
177
+ - question: "After 6 rounds, ambiguity is [score]. [List dimensions still below minimum.] What would you like to do?"
178
+ - options:
179
+ - "Write SPEC.md anyway — flag gaps" → Write SPEC.md, mark unresolved dimensions in Ambiguity Report
180
+ - "Keep talking" → Continue (no round limit from here)
181
+ - "Abandon" → Exit without writing
182
+
183
+ **If `--auto` mode throughout:** Replace all AskUserQuestion calls above with Claude's recommended choice. Log decisions inline. Apply the same logic as `--auto` in discuss-phase.
184
+
185
+ **Text mode (`workflow.text_mode: true` or `--text` flag):** Use plain-text numbered lists instead of AskUserQuestion TUI menus.
186
+
187
+ ## Step 5: (covered inline — ambiguity scoring is per-round)
188
+
189
+ ## Step 6: Generate SPEC.md
190
+
191
+ Use the SPEC.md template from @~/.claude/get-shit-done/templates/spec.md.
192
+
193
+ **Requirements for every requirement entry:**
194
+ - One specific, testable statement
195
+ - Current state (what exists now)
196
+ - Target state (what it should become)
197
+ - Acceptance criterion (how to verify it was met)
198
+
199
+ **Vague requirements are rejected:**
200
+ - ✗ "The system should be fast"
201
+ - ✗ "Improve user experience"
202
+ - ✓ "API endpoint responds in < 200ms at p95 under 100 concurrent requests"
203
+ - ✓ "CLI command exits with code 1 and prints to stderr on invalid input"
204
+
205
+ **Count requirements.** The display in discuss-phase reads: "Found SPEC.md — {N} requirements locked."
206
+
207
+ **Boundaries must be explicit lists:**
208
+ - "In scope" — what this phase produces
209
+ - "Out of scope" — what it explicitly does NOT do (with brief reasoning)
210
+
211
+ **Acceptance criteria must be pass/fail checkboxes** — no "should feel good" or "looks reasonable."
212
+
213
+ **If any dimensions are below minimum**, mark them in the Ambiguity Report with: `⚠ Below minimum — planner must treat as assumption`.
214
+
215
+ Write to: `{phase_dir}/{padded_phase}-SPEC.md`
216
+
217
+ ## Step 7: Commit
218
+
219
+ ```bash
220
+ git add "${phase_dir}/${padded_phase}-SPEC.md"
221
+ git commit -m "spec(phase-${phase_number}): add SPEC.md for ${phase_name} — ${requirement_count} requirements (#2213)"
222
+ ```
223
+
224
+ If `commit_docs` is false: Skip commit. Note that SPEC.md was written but not committed.
225
+
226
+ ## Step 8: Wrap Up
227
+
228
+ Display:
229
+
230
+ ```
231
+ SPEC.md written — {N} requirements locked.
232
+
233
+ Phase {X}: {name}
234
+ Ambiguity: {final_score} (gate: ≤ 0.20)
235
+
236
+ Next: /gsd-discuss-phase {X}
237
+ discuss-phase will detect SPEC.md and focus on implementation decisions only.
238
+ ```
239
+
240
+ </process>
241
+
242
+ <critical_rules>
243
+ - Every requirement MUST have current state, target state, and acceptance criterion
244
+ - Boundaries section is MANDATORY — cannot be empty
245
+ - "In scope" and "Out of scope" must be explicit lists, not narrative prose
246
+ - Acceptance criteria must be pass/fail — no subjective criteria
247
+ - SPEC.md is NEVER written if the user selects "Abandon"
248
+ - Do NOT ask about HOW to implement — that is discuss-phase territory
249
+ - Scout the codebase BEFORE the first question — grounded questions only
250
+ - Max 2–3 questions per round — do not frontload all questions at once
251
+ </critical_rules>
252
+
253
+ <success_criteria>
254
+ - Codebase scouted and current state understood before questioning
255
+ - All 4 dimensions scored after every round
256
+ - Gate passed OR user explicitly chose to write despite gaps
257
+ - SPEC.md contains only falsifiable requirements
258
+ - Boundaries are explicit (in scope / out of scope with reasoning)
259
+ - Acceptance criteria are pass/fail checkboxes
260
+ - SPEC.md committed atomically (when commit_docs is true)
261
+ - User directed to /gsd-discuss-phase as next step
262
+ </success_criteria>