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,281 @@
1
+ <purpose>
2
+ Curate spike experiment findings and package them into a persistent project skill for future
3
+ build conversations. Reads from `.planning/spikes/`, writes skill to `./.claude/skills/spike-findings-[project]/`
4
+ (project-local) and summary to `.planning/spikes/WRAP-UP-SUMMARY.md`.
5
+ Companion to `/gsd-spike`.
6
+ </purpose>
7
+
8
+ <required_reading>
9
+ Read all files referenced by the invoking prompt's execution_context before starting.
10
+ </required_reading>
11
+
12
+ <process>
13
+
14
+ <step name="banner">
15
+ ```
16
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
17
+ GSD ► SPIKE WRAP-UP
18
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
19
+ ```
20
+ </step>
21
+
22
+ <step name="gather">
23
+ ## Gather Spike Inventory
24
+
25
+ 1. Read `.planning/spikes/MANIFEST.md` for the overall idea context
26
+ 2. Glob `.planning/spikes/*/README.md` and parse YAML frontmatter from each
27
+ 3. Check if `./.claude/skills/spike-findings-*/SKILL.md` exists for this project
28
+ - If yes: read its `processed_spikes` list from the metadata section and filter those out
29
+ - If no: all spikes are candidates
30
+
31
+ If no unprocessed spikes exist:
32
+ ```
33
+ No unprocessed spikes found in `.planning/spikes/`.
34
+ Run `/gsd-spike` first to create experiments.
35
+ ```
36
+ Exit.
37
+
38
+ Check `commit_docs` config:
39
+ ```bash
40
+ COMMIT_DOCS=$(gsd-remix-sdk query config-get commit_docs 2>/dev/null || echo "true")
41
+ ```
42
+ </step>
43
+
44
+ <step name="auto_include">
45
+ ## Auto-Include All Spikes
46
+
47
+ Include all unprocessed spikes automatically. Present a brief inventory showing what's being processed:
48
+
49
+ ```
50
+ Processing N spikes:
51
+ 001 — name (VALIDATED)
52
+ 002 — name (PARTIAL)
53
+ 003 — name (INVALIDATED)
54
+ ```
55
+
56
+ Every spike carries forward:
57
+ - **VALIDATED** spikes provide proven patterns
58
+ - **PARTIAL** spikes provide constrained patterns
59
+ - **INVALIDATED** spikes provide landmines and dead ends
60
+ </step>
61
+
62
+ <step name="group">
63
+ ## Auto-Group by Feature Area
64
+
65
+ Group spikes by feature area based on tags, names, `related` fields, and content. Proceed directly into synthesis.
66
+
67
+ Each group becomes one reference file in the generated skill.
68
+ </step>
69
+
70
+ <step name="skill_name">
71
+ ## Determine Output Skill Name
72
+
73
+ Derive the skill name from the project directory:
74
+
75
+ 1. Get the project root directory name (e.g., `solana-tracker`)
76
+ 2. The skill will be created at `./.claude/skills/spike-findings-[project-dir-name]/`
77
+
78
+ If a skill already exists at that path (append mode), update in place.
79
+ </step>
80
+
81
+ <step name="copy_sources">
82
+ ## Copy Source Files
83
+
84
+ For each included spike:
85
+
86
+ 1. Identify the core source files — the actual scripts, main files, and config that make the spike work. Exclude:
87
+ - `node_modules/`, `__pycache__/`, `.venv/`, build artifacts
88
+ - Lock files (`package-lock.json`, `yarn.lock`, etc.)
89
+ - `.git/`, `.DS_Store`
90
+ 2. Copy the README.md and core source files into `sources/NNN-spike-name/` inside the generated skill directory
91
+ </step>
92
+
93
+ <step name="synthesize">
94
+ ## Synthesize Reference Files
95
+
96
+ For each feature-area group, write a reference file at `references/[feature-area-name].md`:
97
+
98
+ ```markdown
99
+ # [Feature Area Name]
100
+
101
+ ## Validated Patterns
102
+ [For each validated finding: describe the approach that works, include key code snippets extracted from the spike source, explain why it works]
103
+
104
+ ## Landmines
105
+ [Things that look right but aren't. Gotchas. Anti-patterns discovered during spiking.]
106
+
107
+ ## Constraints
108
+ [Hard facts: rate limits, library limitations, version requirements, incompatibilities]
109
+
110
+ ## Origin
111
+ Synthesized from spikes: NNN, NNN, NNN
112
+ Source files available in: sources/NNN-spike-name/, sources/NNN-spike-name/
113
+ ```
114
+ </step>
115
+
116
+ <step name="write_skill">
117
+ ## Write SKILL.md
118
+
119
+ Create (or update) the generated skill's SKILL.md:
120
+
121
+ ```markdown
122
+ ---
123
+ name: spike-findings-[project-dir-name]
124
+ description: Validated patterns, constraints, and implementation knowledge from spike experiments. Auto-loaded during implementation work on [project-dir-name].
125
+ ---
126
+
127
+ <context>
128
+ ## Project: [project-dir-name]
129
+
130
+ [One paragraph from MANIFEST.md describing the overall idea]
131
+
132
+ Spike sessions wrapped: [date(s)]
133
+ </context>
134
+
135
+ <findings_index>
136
+ ## Feature Areas
137
+
138
+ | Area | Reference | Key Finding |
139
+ |------|-----------|-------------|
140
+ | [Name] | references/[name].md | [One-line summary] |
141
+
142
+ ## Source Files
143
+
144
+ Original spike source files are preserved in `sources/` for complete reference.
145
+ </findings_index>
146
+
147
+ <metadata>
148
+ ## Processed Spikes
149
+
150
+ [List of spike numbers wrapped up]
151
+
152
+ - 001-spike-name
153
+ - 002-spike-name
154
+ </metadata>
155
+ ```
156
+ </step>
157
+
158
+ <step name="write_summary">
159
+ ## Write Planning Summary
160
+
161
+ Write `.planning/spikes/WRAP-UP-SUMMARY.md` for project history:
162
+
163
+ ```markdown
164
+ # Spike Wrap-Up Summary
165
+
166
+ **Date:** [date]
167
+ **Spikes processed:** [count]
168
+ **Feature areas:** [list]
169
+ **Skill output:** `./.claude/skills/spike-findings-[project]/`
170
+
171
+ ## Processed Spikes
172
+ | # | Name | Type | Verdict | Feature Area |
173
+ |---|------|------|---------|--------------|
174
+
175
+ ## Key Findings
176
+ [consolidated findings summary]
177
+ ```
178
+ </step>
179
+
180
+ <step name="update_claude_md">
181
+ ## Update Project CLAUDE.md
182
+
183
+ Add an auto-load routing line to the project's CLAUDE.md (create the file if it doesn't exist):
184
+
185
+ ```
186
+ - **Spike findings for [project]** (implementation patterns, constraints, gotchas) → `Skill("spike-findings-[project-dir-name]")`
187
+ ```
188
+
189
+ If this routing line already exists (append mode), leave it as-is.
190
+ </step>
191
+
192
+ <step name="commit">
193
+ Commit all artifacts (if `COMMIT_DOCS` is true):
194
+
195
+ ```bash
196
+ gsd-remix-sdk query commit "docs(spike-wrap-up): package [N] spike findings into project skill" .planning/spikes/WRAP-UP-SUMMARY.md
197
+ ```
198
+ </step>
199
+
200
+ <step name="report">
201
+ ```
202
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
203
+ GSD ► SPIKE WRAP-UP COMPLETE ✓
204
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
205
+
206
+ **Processed:** {N} spikes
207
+ **Feature areas:** {list}
208
+ **Skill:** `./.claude/skills/spike-findings-[project]/`
209
+ **Summary:** `.planning/spikes/WRAP-UP-SUMMARY.md`
210
+ **CLAUDE.md:** routing line added
211
+
212
+ The spike-findings skill will auto-load in future build conversations.
213
+ ```
214
+ </step>
215
+
216
+ <step name="whats_next">
217
+ ## What's Next — Intelligent Spike Routing
218
+
219
+ Analyze the full spike landscape (MANIFEST.md, all curated findings, feature-area groupings, validated/invalidated/partial verdicts) and present three categories of next-step options:
220
+
221
+ ### Category A: Integration Spikes — "Do any validated spikes need to be tested together?"
222
+
223
+ Review every pair and cluster of VALIDATED spikes. Look for:
224
+
225
+ - **Shared resources:** Two spikes that both touch the same API, database, state, or data format but were tested independently. Will they conflict, race, or step on each other?
226
+ - **Data handoffs:** Spike A produces output that Spike B consumes. The formats were assumed compatible but never proven.
227
+ - **Timing/ordering:** Spikes that work in isolation but have sequencing dependencies in the real flow (e.g., auth must complete before streaming starts).
228
+ - **Resource contention:** Spikes that individually work but may compete for connections, memory, rate limits, or tokens when combined.
229
+
230
+ If integration risks exist, present them as concrete proposed spikes:
231
+
232
+ > **Integration spike candidates:**
233
+ > - "Spikes 001 + 003 together: streaming through the authenticated connection" — these were tested separately but the real app needs both at once
234
+ > - "Spikes 002 + 005 data handoff: does the parser output match what the renderer expects?"
235
+
236
+ If no meaningful integration risks exist, say so and skip this category.
237
+
238
+ ### Category B: Frontier Spikes — "What else should we spike?"
239
+
240
+ Think laterally about the overall idea from MANIFEST.md and what's been proven so far. Consider:
241
+
242
+ - **Gaps in the vision:** What does the user's idea need that hasn't been spiked yet? Look at the MANIFEST.md idea description and identify capabilities that are assumed but unproven.
243
+ - **Discovered dependencies:** Findings from completed spikes that reveal new questions. A spike that validated "X works" may imply "but we'd also need Y" — surface those implied needs.
244
+ - **Alternative approaches:** If any spike was PARTIAL or INVALIDATED, suggest a different angle to achieve the same goal.
245
+ - **Adjacent capabilities:** Things that aren't strictly required but would meaningfully improve the idea if feasible — worth a quick spike to find out.
246
+ - **Comparison opportunities:** If a spike used one library/approach and it worked but felt heavy or awkward, suggest a comparison spike with an alternative.
247
+
248
+ Present frontier spikes as concrete proposals with names, validation questions (Given/When/Then), and risk-ordering:
249
+
250
+ > **Frontier spike candidates:**
251
+ > 1. `NNN-descriptive-name` — Given [X], when [Y], then [Z]. *Why now: [reason this is the logical next thing to explore]*
252
+ > 2. `NNN-descriptive-name` — Given [X], when [Y], then [Z]. *Why now: [reason]*
253
+
254
+ Number them continuing from the highest existing spike number.
255
+
256
+ ### Category C: Standard Options
257
+
258
+ - `/gsd-plan-phase` — Start planning the real implementation
259
+ - `/gsd-add-phase` — Add a phase based on spike findings
260
+ - `/gsd-spike` — Spike additional ideas
261
+ - `/gsd-explore` — Continue exploring
262
+ - Other
263
+
264
+ ### Presenting the Options
265
+
266
+ Present all applicable categories, then ask the user which direction to go. If the user picks a frontier or integration spike, write the spike definitions directly into `.planning/spikes/MANIFEST.md` (appending to the existing table) and kick off `/gsd-spike` with those spikes pre-defined — the user shouldn't have to re-describe what was just proposed.
267
+ </step>
268
+
269
+ </process>
270
+
271
+ <success_criteria>
272
+ - [ ] All unprocessed spikes auto-included and processed
273
+ - [ ] Spikes grouped by feature area
274
+ - [ ] Spike-findings skill exists at `./.claude/skills/` with SKILL.md, references/, sources/
275
+ - [ ] Core source files from all spikes copied into sources/
276
+ - [ ] Reference files contain validated patterns, code snippets, landmines, constraints
277
+ - [ ] `.planning/spikes/WRAP-UP-SUMMARY.md` written for project history
278
+ - [ ] Project CLAUDE.md has auto-load routing line
279
+ - [ ] Summary presented
280
+ - [ ] Intelligent next-step analysis presented with integration spike candidates, frontier spike candidates, and standard options
281
+ </success_criteria>
@@ -0,0 +1,362 @@
1
+ <purpose>
2
+ Rapid feasibility validation through focused, throwaway experiments. Each spike answers one
3
+ specific question with observable evidence. Saves artifacts to `.planning/spikes/`.
4
+ Companion to `/gsd-spike-wrap-up`.
5
+ </purpose>
6
+
7
+ <required_reading>
8
+ Read all files referenced by the invoking prompt's execution_context before starting.
9
+ </required_reading>
10
+
11
+ <process>
12
+
13
+ <step name="banner">
14
+ ```
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ GSD ► SPIKING
17
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
18
+ ```
19
+
20
+ Parse `$ARGUMENTS` for:
21
+ - `--quick` flag → set `QUICK_MODE=true`
22
+ - `--text` flag → set `TEXT_MODE=true`
23
+ - Remaining text → the idea to spike
24
+
25
+ **Text mode:** If TEXT_MODE is enabled, replace AskUserQuestion calls with plain-text numbered lists — emit the options and ask the user to type the number of their choice.
26
+ </step>
27
+
28
+ <step name="setup_directory">
29
+ Create `.planning/spikes/` if it doesn't exist:
30
+
31
+ ```bash
32
+ mkdir -p .planning/spikes
33
+ ```
34
+
35
+ Check for existing spikes to determine numbering:
36
+ ```bash
37
+ ls -d .planning/spikes/[0-9][0-9][0-9]-* 2>/dev/null | sort | tail -1
38
+ ```
39
+
40
+ Check `commit_docs` config:
41
+ ```bash
42
+ COMMIT_DOCS=$(gsd-remix-sdk query config-get commit_docs 2>/dev/null || echo "true")
43
+ ```
44
+ </step>
45
+
46
+ <step name="detect_stack">
47
+ Check for the project's tech stack to inform spike technology choices:
48
+
49
+ ```bash
50
+ ls package.json pyproject.toml Cargo.toml go.mod 2>/dev/null
51
+ ```
52
+
53
+ Use the project's language/framework by default. For greenfield projects with no existing stack, pick whatever gets to a runnable result fastest (Python, Node, Bash, single HTML file).
54
+
55
+ Avoid unless the spike specifically requires it:
56
+ - Complex package management beyond `npm install` or `pip install`
57
+ - Build tools, bundlers, or transpilers
58
+ - Docker, containers, or infrastructure
59
+ - Env files or config systems — hardcode everything
60
+ </step>
61
+
62
+ <step name="check_prior_spikes">
63
+ If `.planning/spikes/MANIFEST.md` exists, read it. Scan the verdicts, names, and validation questions of all prior spikes. When decomposing the new idea, cross-reference against this history:
64
+
65
+ - **Skip already-validated questions.** If a prior spike proved "WebSocket streaming works" with a VALIDATED verdict, don't re-spike it. Note the prior spike number and move on.
66
+ - **Build on prior findings.** If a prior spike was INVALIDATED or PARTIAL, factor that into the new decomposition — don't repeat the same approach, and flag the constraint to the user.
67
+ - **Call out relevant prior art.** When presenting the decomposition, mention any prior spikes that overlap: "Spike 003 already validated X, so we can skip that and focus on Y."
68
+
69
+ If no `.planning/spikes/MANIFEST.md` exists, skip this step.
70
+ </step>
71
+
72
+ <step name="decompose">
73
+ **If `QUICK_MODE` is true:** Skip decomposition and alignment. Take the user's idea as a single spike question. Assign it spike number `001` (or next available). Jump to `research`.
74
+
75
+ **Otherwise:**
76
+
77
+ Break the idea into 2-5 independent questions that each prove something specific. Frame each as an informal Given/When/Then. Present as a table:
78
+
79
+ ```
80
+ | # | Spike | Type | Validates (Given/When/Then) | Risk |
81
+ |---|-------|------|-----------------------------|------|
82
+ | 001 | websocket-streaming | standard | Given a WS connection, when LLM streams tokens, then client receives chunks < 100ms | **High** |
83
+ | 002a | pdf-parse-pdfjs | comparison | Given a multi-page PDF, when parsed with pdfjs, then structured text is extractable | Medium |
84
+ | 002b | pdf-parse-camelot | comparison | Given a multi-page PDF, when parsed with camelot, then structured text is extractable | Medium |
85
+ ```
86
+
87
+ **Spike types:**
88
+ - **standard** — one approach answering one question
89
+ - **comparison** — same question, different approaches. Use a shared number with lettered variants: `NNN-a-name` and `NNN-b-name`. Both built back-to-back, then head-to-head comparison.
90
+
91
+ Good spikes answer one specific feasibility question:
92
+ - "Can we parse X format and extract Y?" — script that does it on a sample file
93
+ - "How fast is X approach?" — benchmark with real-ish data
94
+ - "Can we get X and Y to talk to each other?" — thinnest integration
95
+ - "What does X feel like as a UI?" — minimal interactive prototype
96
+ - "Does X API actually support Y?" — script that calls it and shows the response
97
+ - "Should we use X or Y for this?" — **comparison spike**: same thin proof built with both
98
+
99
+ Bad spikes are too broad or don't produce observable output:
100
+ - "Set up the project" — not a question, just busywork
101
+ - "Design the architecture" — planning, not spiking
102
+ - "Build the backend" — too broad, no specific question
103
+ - "Research best practices" — open-ended reading with no runnable output
104
+
105
+ Order by risk — the spike most likely to kill the idea runs first.
106
+ </step>
107
+
108
+ <step name="align">
109
+ **If `QUICK_MODE` is true:** Skip.
110
+
111
+ Present the ordered spike list and ask which to build:
112
+
113
+ ╔══════════════════════════════════════════════════════════════╗
114
+ ║ CHECKPOINT: Decision Required ║
115
+ ╚══════════════════════════════════════════════════════════════╝
116
+
117
+ {spike table from decompose step}
118
+
119
+ ──────────────────────────────────────────────────────────────
120
+ → Build all in this order, or adjust the list?
121
+ ──────────────────────────────────────────────────────────────
122
+
123
+ The user may reorder, merge, split, or skip spikes. Wait for alignment.
124
+ </step>
125
+
126
+ <step name="research">
127
+ ## Research Before Building
128
+
129
+ Before writing any spike code, ground each spike in reality. This prevents building against outdated APIs, picking the wrong library, or discovering mid-spike that the approach is impossible.
130
+
131
+ For each spike about to be built:
132
+
133
+ **a. Identify unknowns.** What libraries, APIs, protocols, or techniques does this spike depend on? What assumptions are you making about how they work?
134
+
135
+ **b. Check current docs.** Use context7 (resolve-library-id → query-docs) for any library or framework involved. Use web search for APIs, services, or techniques without a context7 entry. Read actual documentation — not training data, which may be stale.
136
+
137
+ **c. Validate feasibility before coding.** Specifically check:
138
+ - Does the API/library actually support what the spike assumes? (Check endpoints, methods, capabilities)
139
+ - What's the current recommended approach? (The "right way" changes — what was learned in training may be deprecated)
140
+ - Are there version constraints, breaking changes, or migration gotchas?
141
+ - Are there rate limits, auth requirements, or platform restrictions that would block the spike?
142
+
143
+ **d. Pick the right tool.** If multiple libraries could solve the problem, briefly compare them on: current maintenance status, API fit for the specific spike question, and complexity. Pick the one that gets to a runnable answer fastest with the fewest surprises.
144
+
145
+ **e. Capture research findings.** Add a `## Research` section to the spike's README (before `## How to Run`) with:
146
+ - Which docs were checked and key findings
147
+ - The chosen approach and why
148
+ - Any gotchas or constraints discovered
149
+
150
+ **Skip research when unnecessary.** If the spike uses only well-known, stable tools already verified in this session, or if the entire spike is pure logic with no external dependencies, skip this step. The goal is grounding in reality, not busywork.
151
+ </step>
152
+
153
+ <step name="create_manifest">
154
+ Create or update `.planning/spikes/MANIFEST.md`:
155
+
156
+ ```markdown
157
+ # Spike Manifest
158
+
159
+ ## Idea
160
+ [One paragraph describing the overall idea being explored]
161
+
162
+ ## Spikes
163
+
164
+ | # | Name | Type | Validates | Verdict | Tags |
165
+ |---|------|------|-----------|---------|------|
166
+ | 001 | websocket-streaming | standard | WS connections can stream LLM output | VALIDATED | websocket, real-time |
167
+ | 002a | pdf-parse-pdfjs | comparison | PDF table extraction | WINNER | pdf, parsing |
168
+ | 002b | pdf-parse-camelot | comparison | PDF table extraction | — | pdf, parsing |
169
+ ```
170
+
171
+ If MANIFEST.md already exists, append new spikes to the existing table.
172
+ </step>
173
+
174
+ <step name="build_spikes">
175
+ Build each spike sequentially, highest-risk first.
176
+
177
+ **Comparison spikes** use a shared number with lettered variants: `NNN-a-descriptive-name` and `NNN-b-descriptive-name`. Both answer the same question using different approaches. Build them back-to-back, then report a head-to-head comparison before moving on. Judge on criteria that matter for the real build: API ergonomics, output quality, complexity, performance, or whatever the user cares about. The comparison spike's verdict names the winner and why.
178
+
179
+ ### For Each Spike:
180
+
181
+ **a.** Find next available number by checking existing `.planning/spikes/NNN-*/` directories.
182
+ Format: three-digit zero-padded + hyphenated descriptive name. Comparison spikes: same number with letter suffix — `002a-pdf-parse-pdfjs`, `002b-pdf-parse-camelot`.
183
+
184
+ **b.** Create the spike directory: `.planning/spikes/NNN-descriptive-name/`
185
+
186
+ **c.** Assess observability needs before writing code. Ask: **can Claude fully verify this spike's outcome by running a command and reading stdout, or does it require human interaction with a runtime?**
187
+
188
+ Spikes that need runtime observability:
189
+ - **UI spikes** — anything with a browser, clicks, visual feedback
190
+ - **Streaming spikes** — WebSockets, SSE, real-time data flow
191
+ - **Multi-process spikes** — client/server, IPC, subprocess orchestration
192
+ - **Timing-sensitive spikes** — race conditions, debounce, polling, reconnection
193
+ - **External API spikes** — where the API response shape, latency, or error behavior matters for the verdict
194
+
195
+ Spikes that do NOT need it:
196
+ - Pure computation (parse this file, transform this data)
197
+ - Single-run scripts with deterministic stdout
198
+ - Anything Claude can run and check the output of directly
199
+
200
+ **If the spike needs runtime observability,** build a forensic log layer into the spike:
201
+
202
+ 1. **An event log array** at module level that captures every meaningful event with an ISO timestamp and a direction/category tag (e.g., `"user_input"`, `"api_response"`, `"sse_frame"`, `"error"`, `"state_change"`)
203
+ 2. **A log export mechanism** appropriate to the spike's runtime:
204
+ - For server spikes: a `GET /api/export-log` endpoint returning downloadable JSON
205
+ - For CLI spikes: write `spike-log-{timestamp}.json` to the spike directory on exit or on signal
206
+ - For browser spikes: a visible "Export Log" button that triggers a JSON download
207
+ 3. **A log summary** included in the export: total event counts by category, duration, errors detected, environment metadata
208
+ 4. **Analysis helpers** if the event volume warrants it: a small script (bash/python) in the spike directory that extracts the signal from the log. Name it `analyze-log.sh` or similar.
209
+
210
+ Keep the logging lightweight — an array push per event, not a logging framework. Inline it in the spike code.
211
+
212
+ **d.** Build the minimum code that answers the spike's question (with the observability layer from step c if applicable). Every line must serve the question — nothing incidental.
213
+
214
+ **e.** Write `README.md` with YAML frontmatter:
215
+
216
+ ```markdown
217
+ ---
218
+ spike: NNN
219
+ name: descriptive-name
220
+ type: standard
221
+ validates: "Given [precondition], when [action], then [expected outcome]"
222
+ verdict: PENDING
223
+ related: []
224
+ tags: [tag1, tag2]
225
+ ---
226
+
227
+ # Spike NNN: Descriptive Name
228
+
229
+ ## What This Validates
230
+ [The specific feasibility question, framed as Given/When/Then]
231
+
232
+ ## Research
233
+ [Docs checked, key findings, chosen approach and why, gotchas discovered. Omit if no external dependencies.]
234
+
235
+ ## How to Run
236
+ [Single command or short sequence to run the spike]
237
+
238
+ ## What to Expect
239
+ [Concrete observable outcomes: "When you click X, you should see Y within Z seconds"]
240
+
241
+ ## Observability
242
+ [If this spike has a forensic log layer: describe what's captured, how to export the log, and how to analyze it. Omit for spikes without runtime observability.]
243
+
244
+ ## Results
245
+ [Filled in after running — verdict, evidence, surprises. If a forensic log was exported, include key findings from the log analysis here.]
246
+ ```
247
+
248
+ **f.** Auto-link related spikes: read existing spike READMEs and infer relationships from tags, names, and descriptions. Write the `related` field silently.
249
+
250
+ **g.** Run and verify:
251
+ - If self-verifiable: run it, check output, update README verdict and Results section
252
+ - If needs human judgment: run it, present instructions using a checkpoint box:
253
+
254
+ ╔══════════════════════════════════════════════════════════════╗
255
+ ║ CHECKPOINT: Verification Required ║
256
+ ╚══════════════════════════════════════════════════════════════╝
257
+
258
+ **Spike {NNN}: {name}**
259
+
260
+ **How to run:** {command}
261
+ **What to expect:** {concrete outcomes}
262
+
263
+ ──────────────────────────────────────────────────────────────
264
+ → Does this match what you expected? Describe what you see.
265
+ ──────────────────────────────────────────────────────────────
266
+
267
+ - If the spike has a forensic log layer: after verification, export the log and include key findings in the Results section. If something went wrong, ask the user to export the log and provide it for diagnosis.
268
+
269
+ **h.** Update verdict to VALIDATED / INVALIDATED / PARTIAL (or WINNER for comparison spike winners). Update Results section with evidence.
270
+
271
+ **i.** Update `.planning/spikes/MANIFEST.md` with the spike's row.
272
+
273
+ **j.** Commit (if `COMMIT_DOCS` is true):
274
+ ```bash
275
+ gsd-remix-sdk query commit "docs(spike-NNN): [VERDICT] — [key finding in one sentence]" .planning/spikes/NNN-descriptive-name/ .planning/spikes/MANIFEST.md
276
+ ```
277
+
278
+ **k.** Report before moving to next spike:
279
+ ```
280
+ ◆ Spike NNN: {name}
281
+ Verdict: {VALIDATED ✓ / INVALIDATED ✗ / PARTIAL ⚠}
282
+ Finding: {one sentence}
283
+ Impact: {effect on remaining spikes, if any}
284
+ ```
285
+
286
+ **l.** If a spike invalidates a core assumption: stop and present:
287
+
288
+ ╔══════════════════════════════════════════════════════════════╗
289
+ ║ CHECKPOINT: Decision Required ║
290
+ ╚══════════════════════════════════════════════════════════════╝
291
+
292
+ Core assumption invalidated by Spike {NNN}.
293
+
294
+ {what was invalidated and why}
295
+
296
+ ──────────────────────────────────────────────────────────────
297
+ → Continue with remaining spikes / Pivot approach / Abandon
298
+ ──────────────────────────────────────────────────────────────
299
+
300
+ Only proceed if the user says to.
301
+ </step>
302
+
303
+ <step name="report">
304
+ After all spikes complete, present the consolidated report:
305
+
306
+ ```
307
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
308
+ GSD ► SPIKE COMPLETE ✓
309
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
310
+
311
+ ## Verdicts
312
+
313
+ | # | Name | Type | Verdict |
314
+ |---|------|------|---------|
315
+ | 001 | {name} | standard | ✓ VALIDATED |
316
+ | 002a | {name} | comparison | ✓ WINNER |
317
+ | 002b | {name} | comparison | — |
318
+
319
+ ## Key Discoveries
320
+ {surprises, gotchas, things that weren't expected}
321
+
322
+ ## Feasibility Assessment
323
+ {overall, is the idea viable?}
324
+
325
+ ## Signal for the Build
326
+ {what the real implementation should use, avoid, or watch out for}
327
+ ```
328
+
329
+ ───────────────────────────────────────────────────────────────
330
+
331
+ ## ▶ Next Up
332
+
333
+ **Package findings** — wrap spike knowledge into a reusable skill
334
+
335
+ `/gsd-spike-wrap-up`
336
+
337
+ ───────────────────────────────────────────────────────────────
338
+
339
+ **Also available:**
340
+ - `/gsd-plan-phase` — start planning the real implementation
341
+ - `/gsd-explore` — continue exploring the idea
342
+ - `/gsd-add-phase` — add a phase to the roadmap based on findings
343
+
344
+ ───────────────────────────────────────────────────────────────
345
+ </step>
346
+
347
+ </process>
348
+
349
+ <success_criteria>
350
+ - [ ] `.planning/spikes/` created (auto-creates if needed, no project init required)
351
+ - [ ] Prior spikes checked — already-validated questions skipped, prior findings factored in
352
+ - [ ] Research grounded each spike in current docs before coding (unless pure logic/no deps)
353
+ - [ ] Comparison spikes built back-to-back with head-to-head verdict
354
+ - [ ] Spikes needing human interaction have forensic log layer (event capture, export, analysis)
355
+ - [ ] Each spike answers one specific question with observable evidence
356
+ - [ ] Each spike README has complete frontmatter (including type), run instructions, and results
357
+ - [ ] User verified each spike (self-verified or human checkpoint)
358
+ - [ ] MANIFEST.md is current (with Type column)
359
+ - [ ] Commits use `docs(spike-NNN): [VERDICT]` format
360
+ - [ ] Consolidated report presented with next-step routing
361
+ - [ ] If core assumption invalidated, execution stopped and user consulted
362
+ </success_criteria>