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,331 @@
1
+ ---
2
+ name: gsd:reapply-patches
3
+ description: Reapply local modifications after a GSD update
4
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
5
+ ---
6
+
7
+ <purpose>
8
+ After a GSD update wipes and reinstalls files, this command merges user's previously saved local modifications back into the new version. Uses three-way comparison (pristine baseline, user-modified backup, newly installed version) to reliably distinguish user customizations from version drift.
9
+
10
+ **Critical invariant:** Every file in `gsd-local-patches/` was backed up because the installer's hash comparison detected it was modified. The workflow must NEVER conclude "no custom content" for any backed-up file — that is a logical contradiction. When in doubt, classify as CONFLICT requiring user review, not SKIP.
11
+ </purpose>
12
+
13
+ <process>
14
+
15
+ ## Step 1: Detect backed-up patches
16
+
17
+ Check for local patches directory:
18
+
19
+ ```bash
20
+ expand_home() {
21
+ case "$1" in
22
+ "~/"*) printf '%s/%s\n' "$HOME" "${1#~/}" ;;
23
+ *) printf '%s\n' "$1" ;;
24
+ esac
25
+ }
26
+
27
+ PATCHES_DIR=""
28
+
29
+ # Env overrides first — covers custom config directories used with --config-dir
30
+ if [ -n "$KILO_CONFIG_DIR" ]; then
31
+ candidate="$(expand_home "$KILO_CONFIG_DIR")/gsd-local-patches"
32
+ if [ -d "$candidate" ]; then
33
+ PATCHES_DIR="$candidate"
34
+ fi
35
+ elif [ -n "$KILO_CONFIG" ]; then
36
+ candidate="$(dirname "$(expand_home "$KILO_CONFIG")")/gsd-local-patches"
37
+ if [ -d "$candidate" ]; then
38
+ PATCHES_DIR="$candidate"
39
+ fi
40
+ elif [ -n "$XDG_CONFIG_HOME" ]; then
41
+ candidate="$(expand_home "$XDG_CONFIG_HOME")/kilo/gsd-local-patches"
42
+ if [ -d "$candidate" ]; then
43
+ PATCHES_DIR="$candidate"
44
+ fi
45
+ fi
46
+
47
+ if [ -z "$PATCHES_DIR" ] && [ -n "$OPENCODE_CONFIG_DIR" ]; then
48
+ candidate="$(expand_home "$OPENCODE_CONFIG_DIR")/gsd-local-patches"
49
+ if [ -d "$candidate" ]; then
50
+ PATCHES_DIR="$candidate"
51
+ fi
52
+ elif [ -z "$PATCHES_DIR" ] && [ -n "$OPENCODE_CONFIG" ]; then
53
+ candidate="$(dirname "$(expand_home "$OPENCODE_CONFIG")")/gsd-local-patches"
54
+ if [ -d "$candidate" ]; then
55
+ PATCHES_DIR="$candidate"
56
+ fi
57
+ elif [ -z "$PATCHES_DIR" ] && [ -n "$XDG_CONFIG_HOME" ]; then
58
+ candidate="$(expand_home "$XDG_CONFIG_HOME")/opencode/gsd-local-patches"
59
+ if [ -d "$candidate" ]; then
60
+ PATCHES_DIR="$candidate"
61
+ fi
62
+ fi
63
+
64
+ if [ -z "$PATCHES_DIR" ] && [ -n "$GEMINI_CONFIG_DIR" ]; then
65
+ candidate="$(expand_home "$GEMINI_CONFIG_DIR")/gsd-local-patches"
66
+ if [ -d "$candidate" ]; then
67
+ PATCHES_DIR="$candidate"
68
+ fi
69
+ fi
70
+
71
+ if [ -z "$PATCHES_DIR" ] && [ -n "$CODEX_HOME" ]; then
72
+ candidate="$(expand_home "$CODEX_HOME")/gsd-local-patches"
73
+ if [ -d "$candidate" ]; then
74
+ PATCHES_DIR="$candidate"
75
+ fi
76
+ fi
77
+
78
+ if [ -z "$PATCHES_DIR" ] && [ -n "$CLAUDE_CONFIG_DIR" ]; then
79
+ candidate="$(expand_home "$CLAUDE_CONFIG_DIR")/gsd-local-patches"
80
+ if [ -d "$candidate" ]; then
81
+ PATCHES_DIR="$candidate"
82
+ fi
83
+ fi
84
+
85
+ # Global install — detect runtime config directory defaults
86
+ if [ -z "$PATCHES_DIR" ]; then
87
+ if [ -d "$HOME/.config/kilo/gsd-local-patches" ]; then
88
+ PATCHES_DIR="$HOME/.config/kilo/gsd-local-patches"
89
+ elif [ -d "$HOME/.config/opencode/gsd-local-patches" ]; then
90
+ PATCHES_DIR="$HOME/.config/opencode/gsd-local-patches"
91
+ elif [ -d "$HOME/.opencode/gsd-local-patches" ]; then
92
+ PATCHES_DIR="$HOME/.opencode/gsd-local-patches"
93
+ elif [ -d "$HOME/.gemini/gsd-local-patches" ]; then
94
+ PATCHES_DIR="$HOME/.gemini/gsd-local-patches"
95
+ elif [ -d "$HOME/.codex/gsd-local-patches" ]; then
96
+ PATCHES_DIR="$HOME/.codex/gsd-local-patches"
97
+ else
98
+ PATCHES_DIR="$HOME/.claude/gsd-local-patches"
99
+ fi
100
+ fi
101
+ # Local install fallback — check all runtime directories
102
+ if [ ! -d "$PATCHES_DIR" ]; then
103
+ for dir in .config/kilo .kilo .config/opencode .opencode .gemini .codex .claude; do
104
+ if [ -d "./$dir/gsd-local-patches" ]; then
105
+ PATCHES_DIR="./$dir/gsd-local-patches"
106
+ break
107
+ fi
108
+ done
109
+ fi
110
+ ```
111
+
112
+ Read `backup-meta.json` from the patches directory.
113
+
114
+ **If no patches found:**
115
+ ```
116
+ No local patches found. Nothing to reapply.
117
+
118
+ Local patches are automatically saved when you run /gsd-update
119
+ after modifying any GSD workflow, command, or agent files.
120
+ ```
121
+ Exit.
122
+
123
+ ## Step 2: Determine baseline for three-way comparison
124
+
125
+ The quality of the merge depends on having a **pristine baseline** — the original unmodified version of each file from the pre-update GSD release. This enables three-way comparison:
126
+ - **Pristine baseline** (original GSD file before any user edits)
127
+ - **User's version** (backed up in `gsd-local-patches/`)
128
+ - **New version** (freshly installed after update)
129
+
130
+ Check for baseline sources in priority order:
131
+
132
+ ### Option A: Pristine hash from backup-meta.json + git history (most reliable)
133
+ If the config directory is a git repository:
134
+ ```bash
135
+ CONFIG_DIR=$(dirname "$PATCHES_DIR")
136
+ if git -C "$CONFIG_DIR" rev-parse --git-dir >/dev/null 2>&1; then
137
+ HAS_GIT=true
138
+ fi
139
+ ```
140
+ When `HAS_GIT=true`, use the `pristine_hashes` recorded in `backup-meta.json` to locate the correct baseline commit. For each file, iterate commits that touched it and find the one whose blob SHA-256 matches the recorded pristine hash:
141
+ ```bash
142
+ # Get the expected pristine SHA-256 from backup-meta.json
143
+ PRISTINE_HASH=$(jq -r ".pristine_hashes[\"${file_path}\"] // empty" "$PATCHES_DIR/backup-meta.json")
144
+
145
+ BASELINE_COMMIT=""
146
+ if [ -n "$PRISTINE_HASH" ]; then
147
+ # Walk commits that touched this file, pick the one matching the pristine hash
148
+ while IFS= read -r commit_hash; do
149
+ blob_hash=$(git -C "$CONFIG_DIR" show "${commit_hash}:${file_path}" 2>/dev/null | sha256sum | cut -d' ' -f1)
150
+ if [ "$blob_hash" = "$PRISTINE_HASH" ]; then
151
+ BASELINE_COMMIT="$commit_hash"
152
+ break
153
+ fi
154
+ done < <(git -C "$CONFIG_DIR" log --format="%H" -- "${file_path}")
155
+ fi
156
+
157
+ # Fallback: if no pristine hash in backup-meta (older installer), use first-add commit
158
+ if [ -z "$BASELINE_COMMIT" ]; then
159
+ BASELINE_COMMIT=$(git -C "$CONFIG_DIR" log --diff-filter=A --format="%H" -- "${file_path}" | tail -1)
160
+ fi
161
+ ```
162
+ Extract the pristine version from the matched commit:
163
+ ```bash
164
+ git -C "$CONFIG_DIR" show "${BASELINE_COMMIT}:${file_path}"
165
+ ```
166
+
167
+ **Why this matters:** `git log --diff-filter=A` returns the commit that *first added* the file, which is the wrong baseline on repos that have been through multiple GSD update cycles. The `pristine_hashes` field in `backup-meta.json` records the SHA-256 of the file as it existed in the pre-update GSD release — matching against it finds the correct baseline regardless of how many updates have occurred.
168
+
169
+ ### Option B: Pristine snapshot directory
170
+ Check if a `gsd-pristine/` directory exists alongside `gsd-local-patches/`:
171
+ ```bash
172
+ PRISTINE_DIR="$CONFIG_DIR/gsd-pristine"
173
+ ```
174
+ If it exists, the installer saved pristine copies at install time. Use these as the baseline.
175
+
176
+ ### Option C: No baseline available (two-way fallback)
177
+ If neither git history nor pristine snapshots are available, fall back to two-way comparison — but with **strengthened heuristics** (see Step 3).
178
+
179
+ ## Step 3: Show patch summary
180
+
181
+ ```
182
+ ## Local Patches to Reapply
183
+
184
+ **Backed up from:** v{from_version}
185
+ **Current version:** {read VERSION file}
186
+ **Files modified:** {count}
187
+ **Merge strategy:** {three-way (git) | three-way (pristine) | two-way (enhanced)}
188
+
189
+ | # | File | Status |
190
+ |---|------|--------|
191
+ | 1 | {file_path} | Pending |
192
+ | 2 | {file_path} | Pending |
193
+ ```
194
+
195
+ ## Step 4: Merge each file
196
+
197
+ For each file in `backup-meta.json`:
198
+
199
+ 1. **Read the backed-up version** (user's modified copy from `gsd-local-patches/`)
200
+ 2. **Read the newly installed version** (current file after update)
201
+ 3. **If available, read the pristine baseline** (from git history or `gsd-pristine/`)
202
+
203
+ ### Three-way merge (when baseline is available)
204
+
205
+ Compare the three versions to isolate changes:
206
+ - **User changes** = diff(pristine → user's version) — these are the customizations to preserve
207
+ - **Upstream changes** = diff(pristine → new version) — these are version updates to accept
208
+
209
+ **Merge rules:**
210
+ - Sections changed only by user → apply user's version
211
+ - Sections changed only by upstream → accept upstream version
212
+ - Sections changed by both → flag as CONFLICT, show both, ask user
213
+ - Sections unchanged by either → use new version (identical to all three)
214
+
215
+ ### Two-way merge (fallback when no baseline)
216
+
217
+ When no pristine baseline is available, use these **strengthened heuristics**:
218
+
219
+ **CRITICAL RULE: Every file in this backup directory was explicitly detected as modified by the installer's SHA-256 hash comparison. "No custom content" is never a valid conclusion.**
220
+
221
+ For each file:
222
+ a. Read both versions completely
223
+ b. Identify ALL differences, then classify each as:
224
+ - **Mechanical drift** — path substitutions (e.g. `/Users/xxx/.claude/` → `$HOME/.claude/`), variable additions (`${GSD_WS}`, `${AGENT_SKILLS_*}`), error handling additions (`|| true`)
225
+ - **User customization** — added steps/sections, removed sections, reordered content, changed behavior, added frontmatter fields, modified instructions
226
+
227
+ c. **If ANY differences remain after filtering out mechanical drift → those are user customizations. Merge them.**
228
+ d. **If ALL differences appear to be mechanical drift → still flag as CONFLICT.** The installer's hash check already proved this file was modified. Ask the user: "This file appears to only have path/variable differences. Were there intentional customizations?" Do NOT silently skip.
229
+
230
+ ### Git-enhanced two-way merge
231
+
232
+ When the config directory is a git repo but the pristine install commit can't be found, use commit history to identify user changes:
233
+ ```bash
234
+ # Find non-update commits that touched this file
235
+ git -C "$CONFIG_DIR" log --oneline --no-merges -- "{file_path}" | grep -v "gsd:update\|GSD update\|gsd-install"
236
+ ```
237
+ Each matching commit represents an intentional user modification. Use the commit messages and diffs to understand what was changed and why.
238
+
239
+ 4. **Write merged result** to the installed location
240
+
241
+ ### Post-merge verification
242
+
243
+ After writing each merged file, verify that user modifications survived the merge:
244
+
245
+ 1. **Line-count check:** Count lines in the backup and the merged result. If the merged result has fewer lines than the backup minus the expected upstream removals, flag for review.
246
+ 2. **Hunk presence check:** For each user-added section identified during diff analysis, search the merged output for at least the first significant line (non-blank, non-comment) of each addition. Missing signature lines indicate a dropped hunk.
247
+ 3. **Report warnings inline** (do not block):
248
+ ```
249
+ ⚠ Potential dropped content in {file_path}:
250
+ - Missing hunk near line {N}: "{first_line_preview}..." ({line_count} lines)
251
+ - Backup available: {patches_dir}/{file_path}
252
+ ```
253
+ 4. **Produce a Hunk Verification Table** — one row per hunk per file. This table is **mandatory output** and must be produced before Step 5 can proceed. Format:
254
+
255
+ | file | hunk_id | signature_line | line_count | verified |
256
+ |------|---------|----------------|------------|----------|
257
+ | {file_path} | {N} | {first_significant_line} | {count} | yes |
258
+ | {file_path} | {N} | {first_significant_line} | {count} | no |
259
+
260
+ - `hunk_id` — sequential integer per file (1, 2, 3…)
261
+ - `signature_line` — first non-blank, non-comment line of the user-added section
262
+ - `line_count` — total lines in the hunk
263
+ - `verified` — `yes` if the signature_line is present in the merged output, `no` otherwise
264
+
265
+ 5. **Track verification status** — add to per-file report: `Merged (verified)` vs `Merged (⚠ {N} hunks may be missing)`
266
+
267
+ 6. **Report status per file:**
268
+ - `Merged` — user modifications applied cleanly (show summary of what was preserved)
269
+ - `Conflict` — user reviewed and chose resolution
270
+ - `Incorporated` — user's modification was already adopted upstream (only valid when pristine baseline confirms this)
271
+
272
+ **Never report `Skipped — no custom content`.** If a file is in the backup, it has custom content.
273
+
274
+ ## Step 5: Hunk Verification Gate
275
+
276
+ Before proceeding to cleanup, evaluate the Hunk Verification Table produced in Step 4.
277
+
278
+ **If the Hunk Verification Table is absent** (Step 4 did not produce it), STOP immediately and report to the user:
279
+ ```
280
+ ERROR: Hunk Verification Table is missing. Post-merge verification was not completed.
281
+ Rerun /gsd-reapply-patches to retry with full verification.
282
+ ```
283
+
284
+ **If any row in the Hunk Verification Table shows `verified: no`**, STOP and report to the user:
285
+ ```
286
+ ERROR: {N} hunk(s) failed verification — content may have been dropped during merge.
287
+
288
+ Unverified hunks:
289
+ {file} hunk {hunk_id}: signature line "{signature_line}" not found in merged output
290
+
291
+ The backup is preserved at: {patches_dir}/{file}
292
+ Review the merged file manually, then either:
293
+ (a) Re-merge the missing content by hand, or
294
+ (b) Restore from backup: cp {patches_dir}/{file} {installed_path}
295
+ ```
296
+
297
+ Do not proceed to cleanup until the user confirms they have resolved all unverified hunks.
298
+
299
+ **Only when all rows show `verified: yes`** (or when all files had zero user-added hunks) may execution continue to Step 6.
300
+
301
+ ## Step 6: Cleanup option
302
+
303
+ Ask user:
304
+ - "Keep patch backups for reference?" → preserve `gsd-local-patches/`
305
+ - "Clean up patch backups?" → remove `gsd-local-patches/` directory
306
+
307
+ ## Step 7: Report
308
+
309
+ ```
310
+ ## Patches Reapplied
311
+
312
+ | # | File | Result | User Changes Preserved |
313
+ |---|------|--------|----------------------|
314
+ | 1 | {file_path} | Merged | Added step X, modified section Y |
315
+ | 2 | {file_path} | Incorporated | Already in upstream v{version} |
316
+ | 3 | {file_path} | Conflict resolved | User chose: keep custom section |
317
+
318
+ {count} file(s) updated. Your local modifications are active again.
319
+ ```
320
+
321
+ </process>
322
+
323
+ <success_criteria>
324
+ - [ ] All backed-up patches processed — zero files left unhandled
325
+ - [ ] No file classified as "no custom content" or "SKIP" — every backed-up file is definitionally modified
326
+ - [ ] Three-way merge used when pristine baseline available (git history or gsd-pristine/)
327
+ - [ ] User modifications identified and merged into new version
328
+ - [ ] Conflicts surfaced to user with both versions shown
329
+ - [ ] Status reported for each file with summary of what was preserved
330
+ - [ ] Post-merge verification checks each file for dropped hunks and warns if content appears missing
331
+ </success_criteria>
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: gsd:remove-phase
3
+ description: Remove a future phase from roadmap and renumber subsequent phases
4
+ argument-hint: <phase-number>
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ ---
11
+ <objective>
12
+ Remove an unstarted future phase from the roadmap and renumber all subsequent phases to maintain a clean, linear sequence.
13
+
14
+ Purpose: Clean removal of work you've decided not to do, without polluting context with cancelled/deferred markers.
15
+ Output: Phase deleted, all subsequent phases renumbered, git commit as historical record.
16
+ </objective>
17
+
18
+ <execution_context>
19
+ @~/.claude/get-shit-done/workflows/remove-phase.md
20
+ </execution_context>
21
+
22
+ <context>
23
+ Phase: $ARGUMENTS
24
+
25
+ Roadmap and state are resolved in-workflow via `init phase-op` and targeted reads.
26
+ </context>
27
+
28
+ <process>
29
+ Execute the remove-phase workflow from @~/.claude/get-shit-done/workflows/remove-phase.md end-to-end.
30
+ Preserve all validation gates (future phase check, work check), renumbering logic, and commit.
31
+ </process>
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: gsd:remove-workspace
3
+ description: Remove a GSD workspace and clean up worktrees
4
+ argument-hint: "<workspace-name>"
5
+ allowed-tools:
6
+ - Bash
7
+ - Read
8
+ - AskUserQuestion
9
+ ---
10
+ <context>
11
+ **Arguments:**
12
+ - `<workspace-name>` (required) — Name of the workspace to remove
13
+ </context>
14
+
15
+ <objective>
16
+ Remove a workspace directory after confirmation. For worktree strategy, runs `git worktree remove` for each member repo first. Refuses if any repo has uncommitted changes.
17
+ </objective>
18
+
19
+ <execution_context>
20
+ @~/.claude/get-shit-done/workflows/remove-workspace.md
21
+ @~/.claude/get-shit-done/references/ui-brand.md
22
+ </execution_context>
23
+
24
+ <process>
25
+ Execute the remove-workspace workflow from @~/.claude/get-shit-done/workflows/remove-workspace.md end-to-end.
26
+ </process>
@@ -0,0 +1,195 @@
1
+ ---
2
+ name: gsd:research-phase
3
+ description: Research how to implement a phase (standalone - usually use /gsd-plan-phase instead)
4
+ argument-hint: "[phase]"
5
+ allowed-tools:
6
+ - Read
7
+ - Bash
8
+ - Task
9
+ ---
10
+
11
+ <objective>
12
+ Research how to implement a phase. Spawns gsd-phase-researcher agent with phase context.
13
+
14
+ **Note:** This is a standalone research command. For most workflows, use `/gsd-plan-phase` which integrates research automatically.
15
+
16
+ **Use this command when:**
17
+ - You want to research without planning yet
18
+ - You want to re-research after planning is complete
19
+ - You need to investigate before deciding if a phase is feasible
20
+
21
+ **Orchestrator role:** Parse phase, validate against roadmap, check existing research, gather context, spawn researcher agent, present results.
22
+
23
+ **Why subagent:** Research burns context fast (WebSearch, Context7 queries, source verification). Fresh 200k context for investigation. Main context stays lean for user interaction.
24
+ </objective>
25
+
26
+ <available_agent_types>
27
+ Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'):
28
+ - gsd-phase-researcher — Researches technical approaches for a phase
29
+ </available_agent_types>
30
+
31
+ <context>
32
+ Phase number: $ARGUMENTS (required)
33
+
34
+ Normalize phase input in step 1 before any directory lookups.
35
+ </context>
36
+
37
+ <process>
38
+
39
+ ## 0. Initialize Context
40
+
41
+ ```bash
42
+ INIT=$(gsd-remix-sdk query init.phase-op "$ARGUMENTS")
43
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
44
+ ```
45
+
46
+ Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`, `phase_found`, `commit_docs`, `has_research`, `state_path`, `requirements_path`, `context_path`, `research_path`.
47
+
48
+ Resolve researcher model:
49
+ ```bash
50
+ RESEARCHER_MODEL=$(gsd-remix-sdk query resolve-model gsd-phase-researcher --raw)
51
+ ```
52
+
53
+ ## 1. Validate Phase
54
+
55
+ ```bash
56
+ PHASE_INFO=$(gsd-remix-sdk query roadmap.get-phase "${phase_number}")
57
+ ```
58
+
59
+ **If `found` is false:** Error and exit. **If `found` is true:** Extract `phase_number`, `phase_name`, `goal` from JSON.
60
+
61
+ ## 2. Check Existing Research
62
+
63
+ ```bash
64
+ ls .planning/phases/${PHASE}-*/RESEARCH.md 2>/dev/null
65
+ ```
66
+
67
+ **If exists:** Offer: 1) Update research, 2) View existing, 3) Skip. Wait for response.
68
+
69
+ **If doesn't exist:** Continue.
70
+
71
+ ## 3. Gather Phase Context
72
+
73
+ Use paths from INIT (do not inline file contents in orchestrator context):
74
+ - `requirements_path`
75
+ - `context_path`
76
+ - `state_path`
77
+
78
+ Present summary with phase description and what files the researcher will load.
79
+
80
+ ## 4. Spawn gsd-phase-researcher Agent
81
+
82
+ Research modes: ecosystem (default), feasibility, implementation, comparison.
83
+
84
+ ```markdown
85
+ <research_type>
86
+ Phase Research — investigating HOW to implement a specific phase well.
87
+ </research_type>
88
+
89
+ <key_insight>
90
+ The question is NOT "which library should I use?"
91
+
92
+ The question is: "What do I not know that I don't know?"
93
+
94
+ For this phase, discover:
95
+ - What's the established architecture pattern?
96
+ - What libraries form the standard stack?
97
+ - What problems do people commonly hit?
98
+ - What's SOTA vs what Claude's training thinks is SOTA?
99
+ - What should NOT be hand-rolled?
100
+ </key_insight>
101
+
102
+ <objective>
103
+ Research implementation approach for Phase {phase_number}: {phase_name}
104
+ Mode: ecosystem
105
+ </objective>
106
+
107
+ <files_to_read>
108
+ - {requirements_path} (Requirements)
109
+ - {context_path} (Phase context from discuss-phase, if exists)
110
+ - {state_path} (Prior project decisions and blockers)
111
+ </files_to_read>
112
+
113
+ <additional_context>
114
+ **Phase description:** {phase_description}
115
+ </additional_context>
116
+
117
+ <downstream_consumer>
118
+ Your RESEARCH.md will be loaded by `/gsd-plan-phase` which uses specific sections:
119
+ - `## Standard Stack` → Plans use these libraries
120
+ - `## Architecture Patterns` → Task structure follows these
121
+ - `## Don't Hand-Roll` → Tasks NEVER build custom solutions for listed problems
122
+ - `## Common Pitfalls` → Verification steps check for these
123
+ - `## Code Examples` → Task actions reference these patterns
124
+
125
+ Be prescriptive, not exploratory. "Use X" not "Consider X or Y."
126
+ </downstream_consumer>
127
+
128
+ <quality_gate>
129
+ Before declaring complete, verify:
130
+ - [ ] All domains investigated (not just some)
131
+ - [ ] Negative claims verified with official docs
132
+ - [ ] Multiple sources for critical claims
133
+ - [ ] Confidence levels assigned honestly
134
+ - [ ] Section names match what plan-phase expects
135
+ </quality_gate>
136
+
137
+ <output>
138
+ Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
139
+ </output>
140
+ ```
141
+
142
+ ```
143
+ Task(
144
+ prompt=filled_prompt,
145
+ subagent_type="gsd-phase-researcher",
146
+ model="{researcher_model}",
147
+ description="Research Phase {phase}"
148
+ )
149
+ ```
150
+
151
+ ## 5. Handle Agent Return
152
+
153
+ **`## RESEARCH COMPLETE`:** Display summary, offer: Plan phase, Dig deeper, Review full, Done.
154
+
155
+ **`## CHECKPOINT REACHED`:** Present to user, get response, spawn continuation.
156
+
157
+ **`## RESEARCH INCONCLUSIVE`:** Show what was attempted, offer: Add context, Try different mode, Manual.
158
+
159
+ ## 6. Spawn Continuation Agent
160
+
161
+ ```markdown
162
+ <objective>
163
+ Continue research for Phase {phase_number}: {phase_name}
164
+ </objective>
165
+
166
+ <prior_state>
167
+ <files_to_read>
168
+ - .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md (Existing research)
169
+ </files_to_read>
170
+ </prior_state>
171
+
172
+ <checkpoint_response>
173
+ **Type:** {checkpoint_type}
174
+ **Response:** {user_response}
175
+ </checkpoint_response>
176
+ ```
177
+
178
+ ```
179
+ Task(
180
+ prompt=continuation_prompt,
181
+ subagent_type="gsd-phase-researcher",
182
+ model="{researcher_model}",
183
+ description="Continue research Phase {phase}"
184
+ )
185
+ ```
186
+
187
+ </process>
188
+
189
+ <success_criteria>
190
+ - [ ] Phase validated against roadmap
191
+ - [ ] Existing research checked
192
+ - [ ] gsd-phase-researcher spawned with context
193
+ - [ ] Checkpoints handled correctly
194
+ - [ ] User knows next steps
195
+ </success_criteria>
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: gsd:resume-work
3
+ description: Resume work from previous session with full context restoration
4
+ allowed-tools:
5
+ - Read
6
+ - Bash
7
+ - Write
8
+ - AskUserQuestion
9
+ - SlashCommand
10
+ ---
11
+
12
+ <objective>
13
+ Restore complete project context and resume work seamlessly from previous session.
14
+
15
+ Routes to the resume-project workflow which handles:
16
+
17
+ - STATE.md loading (or reconstruction if missing)
18
+ - Checkpoint detection (.continue-here files)
19
+ - Incomplete work detection (PLAN without SUMMARY)
20
+ - Status presentation
21
+ - Context-aware next action routing
22
+ </objective>
23
+
24
+ <execution_context>
25
+ @~/.claude/get-shit-done/workflows/resume-project.md
26
+ </execution_context>
27
+
28
+ <process>
29
+ **Follow the resume-project workflow** from `@~/.claude/get-shit-done/workflows/resume-project.md`.
30
+
31
+ The workflow handles all resumption logic including:
32
+
33
+ 1. Project existence verification
34
+ 2. STATE.md loading or reconstruction
35
+ 3. Checkpoint and incomplete work detection
36
+ 4. Visual status presentation
37
+ 5. Context-aware option offering (checks CONTEXT.md before suggesting plan vs discuss)
38
+ 6. Routing to appropriate next command
39
+ 7. Session continuity updates
40
+ </process>
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: gsd:review-backlog
3
+ description: Review and promote backlog items to active milestone
4
+ allowed-tools:
5
+ - Read
6
+ - Write
7
+ - Bash
8
+ - AskUserQuestion
9
+ ---
10
+
11
+ <objective>
12
+ Review all 999.x backlog items and optionally promote them into the active
13
+ milestone sequence or remove stale entries.
14
+ </objective>
15
+
16
+ <process>
17
+
18
+ 1. **List backlog items:**
19
+ ```bash
20
+ ls -d .planning/phases/999* 2>/dev/null || echo "No backlog items found"
21
+ ```
22
+
23
+ 2. **Read ROADMAP.md** and extract all 999.x phase entries:
24
+ ```bash
25
+ cat .planning/ROADMAP.md
26
+ ```
27
+ Show each backlog item with its description, any accumulated context (CONTEXT.md, RESEARCH.md), and creation date.
28
+
29
+ 3. **Present the list to the user** via AskUserQuestion:
30
+ - For each backlog item, show: phase number, description, accumulated artifacts
31
+ - Options per item: **Promote** (move to active), **Keep** (leave in backlog), **Remove** (delete)
32
+
33
+ 4. **For items to PROMOTE:**
34
+ - Find the next sequential phase number in the active milestone
35
+ - Rename the directory from `999.x-slug` to `{new_num}-slug`:
36
+ ```bash
37
+ NEW_NUM=$(gsd-remix-sdk query phase.add "${DESCRIPTION}" --raw)
38
+ ```
39
+ - Move accumulated artifacts to the new phase directory
40
+ - Update ROADMAP.md: move the entry from `## Backlog` section to the active phase list
41
+ - Remove `(BACKLOG)` marker
42
+ - Add appropriate `**Depends on:**` field
43
+
44
+ 5. **For items to REMOVE:**
45
+ - Delete the phase directory
46
+ - Remove the entry from ROADMAP.md `## Backlog` section
47
+
48
+ 6. **Commit changes:**
49
+ ```bash
50
+ gsd-remix-sdk query commit "docs: review backlog — promoted N, removed M" .planning/ROADMAP.md
51
+ ```
52
+
53
+ 7. **Report summary:**
54
+ ```
55
+ ## 📋 Backlog Review Complete
56
+
57
+ Promoted: {list of promoted items with new phase numbers}
58
+ Kept: {list of items remaining in backlog}
59
+ Removed: {list of deleted items}
60
+ ```
61
+
62
+ </process>