@opengsd/gsd-core 1.2.0-rc.1

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 (503) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja-JP.md +870 -0
  3. package/README.ko-KR.md +861 -0
  4. package/README.md +301 -0
  5. package/README.pt-BR.md +492 -0
  6. package/README.zh-CN.md +842 -0
  7. package/agents/gsd-advisor-researcher.md +127 -0
  8. package/agents/gsd-ai-researcher.md +133 -0
  9. package/agents/gsd-assumptions-analyzer.md +105 -0
  10. package/agents/gsd-code-fixer.md +668 -0
  11. package/agents/gsd-code-reviewer.md +387 -0
  12. package/agents/gsd-codebase-mapper.md +853 -0
  13. package/agents/gsd-debug-session-manager.md +314 -0
  14. package/agents/gsd-debugger.md +1452 -0
  15. package/agents/gsd-doc-classifier.md +168 -0
  16. package/agents/gsd-doc-synthesizer.md +204 -0
  17. package/agents/gsd-doc-verifier.md +217 -0
  18. package/agents/gsd-doc-writer.md +615 -0
  19. package/agents/gsd-domain-researcher.md +153 -0
  20. package/agents/gsd-eval-auditor.md +191 -0
  21. package/agents/gsd-eval-planner.md +154 -0
  22. package/agents/gsd-executor.md +772 -0
  23. package/agents/gsd-framework-selector.md +160 -0
  24. package/agents/gsd-integration-checker.md +470 -0
  25. package/agents/gsd-intel-updater.md +342 -0
  26. package/agents/gsd-nyquist-auditor.md +203 -0
  27. package/agents/gsd-pattern-mapper.md +335 -0
  28. package/agents/gsd-phase-researcher.md +928 -0
  29. package/agents/gsd-plan-checker.md +978 -0
  30. package/agents/gsd-planner.md +1218 -0
  31. package/agents/gsd-project-researcher.md +677 -0
  32. package/agents/gsd-research-synthesizer.md +255 -0
  33. package/agents/gsd-roadmapper.md +688 -0
  34. package/agents/gsd-security-auditor.md +155 -0
  35. package/agents/gsd-ui-auditor.md +495 -0
  36. package/agents/gsd-ui-checker.md +309 -0
  37. package/agents/gsd-ui-researcher.md +380 -0
  38. package/agents/gsd-user-profiler.md +171 -0
  39. package/agents/gsd-verifier.md +917 -0
  40. package/bin/install.js +10936 -0
  41. package/bin/lib/ui-safety-gate.cjs +107 -0
  42. package/commands/gsd/add-tests.md +42 -0
  43. package/commands/gsd/ai-integration-phase.md +37 -0
  44. package/commands/gsd/audit-fix.md +34 -0
  45. package/commands/gsd/audit-milestone.md +37 -0
  46. package/commands/gsd/audit-uat.md +24 -0
  47. package/commands/gsd/autonomous.md +46 -0
  48. package/commands/gsd/capture.md +62 -0
  49. package/commands/gsd/cleanup.md +24 -0
  50. package/commands/gsd/code-review.md +59 -0
  51. package/commands/gsd/complete-milestone.md +143 -0
  52. package/commands/gsd/config.md +56 -0
  53. package/commands/gsd/debug.md +52 -0
  54. package/commands/gsd/discuss-phase.md +76 -0
  55. package/commands/gsd/docs-update.md +49 -0
  56. package/commands/gsd/eval-review.md +33 -0
  57. package/commands/gsd/execute-phase.md +64 -0
  58. package/commands/gsd/explore.md +27 -0
  59. package/commands/gsd/extract-learnings.md +23 -0
  60. package/commands/gsd/fast.md +31 -0
  61. package/commands/gsd/forensics.md +57 -0
  62. package/commands/gsd/graphify.md +199 -0
  63. package/commands/gsd/health.md +31 -0
  64. package/commands/gsd/help.md +28 -0
  65. package/commands/gsd/import.md +41 -0
  66. package/commands/gsd/inbox.md +39 -0
  67. package/commands/gsd/ingest-docs.md +42 -0
  68. package/commands/gsd/manager.md +45 -0
  69. package/commands/gsd/map-codebase.md +83 -0
  70. package/commands/gsd/milestone-summary.md +51 -0
  71. package/commands/gsd/mvp-phase.md +45 -0
  72. package/commands/gsd/new-milestone.md +45 -0
  73. package/commands/gsd/new-project.md +47 -0
  74. package/commands/gsd/ns-context.md +23 -0
  75. package/commands/gsd/ns-ideate.md +24 -0
  76. package/commands/gsd/ns-manage.md +29 -0
  77. package/commands/gsd/ns-project.md +22 -0
  78. package/commands/gsd/ns-review.md +26 -0
  79. package/commands/gsd/ns-workflow.md +28 -0
  80. package/commands/gsd/pause-work.md +43 -0
  81. package/commands/gsd/phase.md +56 -0
  82. package/commands/gsd/plan-phase.md +62 -0
  83. package/commands/gsd/plan-review-convergence.md +59 -0
  84. package/commands/gsd/pr-branch.md +26 -0
  85. package/commands/gsd/profile-user.md +46 -0
  86. package/commands/gsd/progress.md +47 -0
  87. package/commands/gsd/quick.md +174 -0
  88. package/commands/gsd/resume-work.md +30 -0
  89. package/commands/gsd/review-backlog.md +63 -0
  90. package/commands/gsd/review.md +41 -0
  91. package/commands/gsd/secure-phase.md +36 -0
  92. package/commands/gsd/settings.md +29 -0
  93. package/commands/gsd/ship.md +24 -0
  94. package/commands/gsd/sketch.md +60 -0
  95. package/commands/gsd/spec-phase.md +63 -0
  96. package/commands/gsd/spike.md +57 -0
  97. package/commands/gsd/stats.md +19 -0
  98. package/commands/gsd/surface.md +155 -0
  99. package/commands/gsd/thread.md +24 -0
  100. package/commands/gsd/ui-phase.md +35 -0
  101. package/commands/gsd/ui-review.md +33 -0
  102. package/commands/gsd/ultraplan-phase.md +34 -0
  103. package/commands/gsd/undo.md +35 -0
  104. package/commands/gsd/update.md +48 -0
  105. package/commands/gsd/validate-phase.md +36 -0
  106. package/commands/gsd/verify-work.md +39 -0
  107. package/commands/gsd/workspace.md +52 -0
  108. package/commands/gsd/workstreams.md +70 -0
  109. package/get-shit-done/bin/check-latest-version.cjs +106 -0
  110. package/get-shit-done/bin/gsd-tools.cjs +1676 -0
  111. package/get-shit-done/bin/lib/active-workstream-store.cjs +302 -0
  112. package/get-shit-done/bin/lib/adr-parser.cjs +394 -0
  113. package/get-shit-done/bin/lib/agent-command-router.cjs +65 -0
  114. package/get-shit-done/bin/lib/artifacts.cjs +53 -0
  115. package/get-shit-done/bin/lib/audit.cjs +755 -0
  116. package/get-shit-done/bin/lib/check-command-router.cjs +333 -0
  117. package/get-shit-done/bin/lib/cjs-command-router-adapter.cjs +118 -0
  118. package/get-shit-done/bin/lib/clock.cjs +96 -0
  119. package/get-shit-done/bin/lib/clusters.cjs +135 -0
  120. package/get-shit-done/bin/lib/code-review-flags.cjs +74 -0
  121. package/get-shit-done/bin/lib/command-aliases.cjs +815 -0
  122. package/get-shit-done/bin/lib/command-arg-projection.cjs +62 -0
  123. package/get-shit-done/bin/lib/command-routing-hub.cjs +388 -0
  124. package/get-shit-done/bin/lib/commands.cjs +1188 -0
  125. package/get-shit-done/bin/lib/config-schema.cjs +31 -0
  126. package/get-shit-done/bin/lib/config.cjs +728 -0
  127. package/get-shit-done/bin/lib/configuration.cjs +248 -0
  128. package/get-shit-done/bin/lib/context-utilization.cjs +47 -0
  129. package/get-shit-done/bin/lib/core.cjs +2121 -0
  130. package/get-shit-done/bin/lib/decisions.cjs +116 -0
  131. package/get-shit-done/bin/lib/docs.cjs +270 -0
  132. package/get-shit-done/bin/lib/drift.cjs +388 -0
  133. package/get-shit-done/bin/lib/fallow-runner.cjs +109 -0
  134. package/get-shit-done/bin/lib/frontmatter.cjs +389 -0
  135. package/get-shit-done/bin/lib/gap-checker.cjs +205 -0
  136. package/get-shit-done/bin/lib/graphify.cjs +592 -0
  137. package/get-shit-done/bin/lib/gsd2-import.cjs +514 -0
  138. package/get-shit-done/bin/lib/init-command-router.cjs +58 -0
  139. package/get-shit-done/bin/lib/init.cjs +2112 -0
  140. package/get-shit-done/bin/lib/install-profiles.cjs +603 -0
  141. package/get-shit-done/bin/lib/installer-migration-authoring.cjs +117 -0
  142. package/get-shit-done/bin/lib/installer-migration-report.cjs +354 -0
  143. package/get-shit-done/bin/lib/installer-migrations/000-first-time-baseline.cjs +220 -0
  144. package/get-shit-done/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +41 -0
  145. package/get-shit-done/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +80 -0
  146. package/get-shit-done/bin/lib/installer-migrations.cjs +778 -0
  147. package/get-shit-done/bin/lib/intel.cjs +708 -0
  148. package/get-shit-done/bin/lib/learnings.cjs +421 -0
  149. package/get-shit-done/bin/lib/milestone.cjs +314 -0
  150. package/get-shit-done/bin/lib/model-catalog.cjs +212 -0
  151. package/get-shit-done/bin/lib/model-profiles.cjs +31 -0
  152. package/get-shit-done/bin/lib/observability/event.cjs +82 -0
  153. package/get-shit-done/bin/lib/observability/logger.cjs +174 -0
  154. package/get-shit-done/bin/lib/observability/redaction.cjs +50 -0
  155. package/get-shit-done/bin/lib/package-identity.cjs +31 -0
  156. package/get-shit-done/bin/lib/phase-command-router.cjs +191 -0
  157. package/get-shit-done/bin/lib/phase-lifecycle.cjs +80 -0
  158. package/get-shit-done/bin/lib/phase.cjs +1607 -0
  159. package/get-shit-done/bin/lib/phases-command-router.cjs +39 -0
  160. package/get-shit-done/bin/lib/plan-scan.cjs +97 -0
  161. package/get-shit-done/bin/lib/planning-workspace.cjs +238 -0
  162. package/get-shit-done/bin/lib/profile-output.cjs +1141 -0
  163. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  164. package/get-shit-done/bin/lib/project-root.cjs +112 -0
  165. package/get-shit-done/bin/lib/prompt-budget.cjs +399 -0
  166. package/get-shit-done/bin/lib/review-reviewer-selection.cjs +125 -0
  167. package/get-shit-done/bin/lib/roadmap-command-router.cjs +28 -0
  168. package/get-shit-done/bin/lib/roadmap.cjs +650 -0
  169. package/get-shit-done/bin/lib/runtime-artifact-layout.cjs +301 -0
  170. package/get-shit-done/bin/lib/runtime-homes.cjs +222 -0
  171. package/get-shit-done/bin/lib/runtime-name-policy.cjs +83 -0
  172. package/get-shit-done/bin/lib/runtime-slash.cjs +112 -0
  173. package/get-shit-done/bin/lib/schema-detect.cjs +165 -0
  174. package/get-shit-done/bin/lib/secrets.cjs +32 -0
  175. package/get-shit-done/bin/lib/security.cjs +600 -0
  176. package/get-shit-done/bin/lib/semver-compare.cjs +35 -0
  177. package/get-shit-done/bin/lib/shell-command-projection.cjs +500 -0
  178. package/get-shit-done/bin/lib/state-command-router.cjs +252 -0
  179. package/get-shit-done/bin/lib/state-document.cjs +263 -0
  180. package/get-shit-done/bin/lib/state.cjs +2038 -0
  181. package/get-shit-done/bin/lib/surface.cjs +470 -0
  182. package/get-shit-done/bin/lib/task-command-router.cjs +81 -0
  183. package/get-shit-done/bin/lib/template.cjs +228 -0
  184. package/get-shit-done/bin/lib/uat.cjs +289 -0
  185. package/get-shit-done/bin/lib/update-context.cjs +209 -0
  186. package/get-shit-done/bin/lib/validate-command-router.cjs +83 -0
  187. package/get-shit-done/bin/lib/validate.cjs +92 -0
  188. package/get-shit-done/bin/lib/verify-command-router.cjs +40 -0
  189. package/get-shit-done/bin/lib/verify.cjs +1511 -0
  190. package/get-shit-done/bin/lib/workstream-inventory-builder.cjs +74 -0
  191. package/get-shit-done/bin/lib/workstream-inventory.cjs +146 -0
  192. package/get-shit-done/bin/lib/workstream-name-policy.cjs +94 -0
  193. package/get-shit-done/bin/lib/workstream.cjs +389 -0
  194. package/get-shit-done/bin/lib/worktree-safety.cjs +985 -0
  195. package/get-shit-done/bin/shared/config-defaults.manifest.json +97 -0
  196. package/get-shit-done/bin/shared/config-schema.manifest.json +175 -0
  197. package/get-shit-done/bin/shared/model-catalog.json +122 -0
  198. package/get-shit-done/bin/shared/runtime-aliases.manifest.json +75 -0
  199. package/get-shit-done/bin/verify-reapply-patches.cjs +352 -0
  200. package/get-shit-done/contexts/dev.md +21 -0
  201. package/get-shit-done/contexts/research.md +22 -0
  202. package/get-shit-done/contexts/review.md +23 -0
  203. package/get-shit-done/references/agent-contracts.md +79 -0
  204. package/get-shit-done/references/ai-evals.md +156 -0
  205. package/get-shit-done/references/ai-frameworks.md +186 -0
  206. package/get-shit-done/references/artifact-types.md +131 -0
  207. package/get-shit-done/references/autonomous-smart-discuss.md +277 -0
  208. package/get-shit-done/references/checkpoints.md +814 -0
  209. package/get-shit-done/references/common-bug-patterns.md +114 -0
  210. package/get-shit-done/references/context-budget.md +85 -0
  211. package/get-shit-done/references/continuation-format.md +253 -0
  212. package/get-shit-done/references/debugger-philosophy.md +76 -0
  213. package/get-shit-done/references/decimal-phase-calculation.md +64 -0
  214. package/get-shit-done/references/doc-conflict-engine.md +91 -0
  215. package/get-shit-done/references/domain-probes.md +125 -0
  216. package/get-shit-done/references/execute-mvp-tdd.md +81 -0
  217. package/get-shit-done/references/executor-examples.md +110 -0
  218. package/get-shit-done/references/few-shot-examples/plan-checker.md +73 -0
  219. package/get-shit-done/references/few-shot-examples/verifier.md +109 -0
  220. package/get-shit-done/references/gate-prompts.md +100 -0
  221. package/get-shit-done/references/gates.md +70 -0
  222. package/get-shit-done/references/git-integration.md +298 -0
  223. package/get-shit-done/references/git-planning-commit.md +40 -0
  224. package/get-shit-done/references/ios-scaffold.md +123 -0
  225. package/get-shit-done/references/mandatory-initial-read.md +2 -0
  226. package/get-shit-done/references/model-profile-resolution.md +38 -0
  227. package/get-shit-done/references/model-profiles.md +245 -0
  228. package/get-shit-done/references/mvp-concepts.md +49 -0
  229. package/get-shit-done/references/phase-argument-parsing.md +61 -0
  230. package/get-shit-done/references/planner-antipatterns.md +89 -0
  231. package/get-shit-done/references/planner-chunked.md +49 -0
  232. package/get-shit-done/references/planner-gap-closure.md +62 -0
  233. package/get-shit-done/references/planner-graphify-auto-update.md +67 -0
  234. package/get-shit-done/references/planner-human-verify-mode.md +57 -0
  235. package/get-shit-done/references/planner-interface-context.md +62 -0
  236. package/get-shit-done/references/planner-mvp-mode.md +53 -0
  237. package/get-shit-done/references/planner-reviews.md +39 -0
  238. package/get-shit-done/references/planner-revision.md +87 -0
  239. package/get-shit-done/references/planner-source-audit.md +73 -0
  240. package/get-shit-done/references/planning-config.md +471 -0
  241. package/get-shit-done/references/project-skills-discovery.md +19 -0
  242. package/get-shit-done/references/questioning.md +162 -0
  243. package/get-shit-done/references/revision-loop.md +97 -0
  244. package/get-shit-done/references/scout-codebase.md +51 -0
  245. package/get-shit-done/references/skeleton-template.md +48 -0
  246. package/get-shit-done/references/sketch-interactivity.md +41 -0
  247. package/get-shit-done/references/sketch-theme-system.md +94 -0
  248. package/get-shit-done/references/sketch-tooling.md +45 -0
  249. package/get-shit-done/references/sketch-variant-patterns.md +81 -0
  250. package/get-shit-done/references/spidr-splitting.md +69 -0
  251. package/get-shit-done/references/tdd.md +330 -0
  252. package/get-shit-done/references/thinking-models-debug.md +44 -0
  253. package/get-shit-done/references/thinking-models-execution.md +50 -0
  254. package/get-shit-done/references/thinking-models-planning.md +62 -0
  255. package/get-shit-done/references/thinking-models-research.md +50 -0
  256. package/get-shit-done/references/thinking-models-verification.md +55 -0
  257. package/get-shit-done/references/thinking-partner.md +96 -0
  258. package/get-shit-done/references/ui-brand.md +160 -0
  259. package/get-shit-done/references/universal-anti-patterns.md +63 -0
  260. package/get-shit-done/references/user-profiling.md +681 -0
  261. package/get-shit-done/references/user-story-template.md +58 -0
  262. package/get-shit-done/references/verification-overrides.md +227 -0
  263. package/get-shit-done/references/verification-patterns.md +612 -0
  264. package/get-shit-done/references/verify-mvp-mode.md +85 -0
  265. package/get-shit-done/references/workstream-flag.md +111 -0
  266. package/get-shit-done/references/worktree-path-safety.md +89 -0
  267. package/get-shit-done/templates/AI-SPEC.md +246 -0
  268. package/get-shit-done/templates/DEBUG.md +169 -0
  269. package/get-shit-done/templates/README.md +77 -0
  270. package/get-shit-done/templates/SECURITY.md +61 -0
  271. package/get-shit-done/templates/UAT.md +265 -0
  272. package/get-shit-done/templates/UI-SPEC.md +100 -0
  273. package/get-shit-done/templates/VALIDATION.md +76 -0
  274. package/get-shit-done/templates/claude-md.md +145 -0
  275. package/get-shit-done/templates/codebase/architecture.md +255 -0
  276. package/get-shit-done/templates/codebase/concerns.md +310 -0
  277. package/get-shit-done/templates/codebase/conventions.md +307 -0
  278. package/get-shit-done/templates/codebase/integrations.md +280 -0
  279. package/get-shit-done/templates/codebase/stack.md +186 -0
  280. package/get-shit-done/templates/codebase/structure.md +285 -0
  281. package/get-shit-done/templates/codebase/testing.md +480 -0
  282. package/get-shit-done/templates/config.json +62 -0
  283. package/get-shit-done/templates/context.md +352 -0
  284. package/get-shit-done/templates/continue-here.md +78 -0
  285. package/get-shit-done/templates/copilot-instructions.md +7 -0
  286. package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  287. package/get-shit-done/templates/dev-preferences.md +21 -0
  288. package/get-shit-done/templates/discovery.md +146 -0
  289. package/get-shit-done/templates/discussion-log.md +63 -0
  290. package/get-shit-done/templates/milestone-archive.md +123 -0
  291. package/get-shit-done/templates/milestone.md +115 -0
  292. package/get-shit-done/templates/phase-prompt.md +610 -0
  293. package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  294. package/get-shit-done/templates/project.md +186 -0
  295. package/get-shit-done/templates/requirements.md +231 -0
  296. package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  297. package/get-shit-done/templates/research-project/FEATURES.md +147 -0
  298. package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  299. package/get-shit-done/templates/research-project/STACK.md +120 -0
  300. package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  301. package/get-shit-done/templates/research.md +592 -0
  302. package/get-shit-done/templates/retrospective.md +54 -0
  303. package/get-shit-done/templates/roadmap.md +202 -0
  304. package/get-shit-done/templates/spec.md +307 -0
  305. package/get-shit-done/templates/state.md +195 -0
  306. package/get-shit-done/templates/summary-complex.md +59 -0
  307. package/get-shit-done/templates/summary-minimal.md +41 -0
  308. package/get-shit-done/templates/summary-standard.md +48 -0
  309. package/get-shit-done/templates/summary.md +248 -0
  310. package/get-shit-done/templates/user-profile.md +146 -0
  311. package/get-shit-done/templates/user-setup.md +311 -0
  312. package/get-shit-done/templates/verification-report.md +322 -0
  313. package/get-shit-done/workflows/_runtime-launcher.snippet.sh +1 -0
  314. package/get-shit-done/workflows/add-backlog.md +91 -0
  315. package/get-shit-done/workflows/add-phase.md +113 -0
  316. package/get-shit-done/workflows/add-tests.md +355 -0
  317. package/get-shit-done/workflows/add-todo.md +161 -0
  318. package/get-shit-done/workflows/ai-integration-phase.md +295 -0
  319. package/get-shit-done/workflows/analyze-dependencies.md +96 -0
  320. package/get-shit-done/workflows/audit-fix.md +178 -0
  321. package/get-shit-done/workflows/audit-milestone.md +358 -0
  322. package/get-shit-done/workflows/audit-uat.md +110 -0
  323. package/get-shit-done/workflows/autonomous.md +795 -0
  324. package/get-shit-done/workflows/check-todos.md +180 -0
  325. package/get-shit-done/workflows/cleanup.md +155 -0
  326. package/get-shit-done/workflows/code-review-fix.md +502 -0
  327. package/get-shit-done/workflows/code-review.md +656 -0
  328. package/get-shit-done/workflows/complete-milestone.md +855 -0
  329. package/get-shit-done/workflows/debug.md +232 -0
  330. package/get-shit-done/workflows/diagnose-issues.md +241 -0
  331. package/get-shit-done/workflows/discovery-phase.md +291 -0
  332. package/get-shit-done/workflows/discuss-phase/modes/advisor.md +176 -0
  333. package/get-shit-done/workflows/discuss-phase/modes/all.md +28 -0
  334. package/get-shit-done/workflows/discuss-phase/modes/analyze.md +44 -0
  335. package/get-shit-done/workflows/discuss-phase/modes/auto.md +57 -0
  336. package/get-shit-done/workflows/discuss-phase/modes/batch.md +52 -0
  337. package/get-shit-done/workflows/discuss-phase/modes/chain.md +98 -0
  338. package/get-shit-done/workflows/discuss-phase/modes/default.md +141 -0
  339. package/get-shit-done/workflows/discuss-phase/modes/power.md +44 -0
  340. package/get-shit-done/workflows/discuss-phase/modes/text.md +55 -0
  341. package/get-shit-done/workflows/discuss-phase/templates/checkpoint.json +18 -0
  342. package/get-shit-done/workflows/discuss-phase/templates/context.md +136 -0
  343. package/get-shit-done/workflows/discuss-phase/templates/discussion-log.md +50 -0
  344. package/get-shit-done/workflows/discuss-phase-assumptions.md +675 -0
  345. package/get-shit-done/workflows/discuss-phase-power.md +291 -0
  346. package/get-shit-done/workflows/discuss-phase.md +499 -0
  347. package/get-shit-done/workflows/do.md +111 -0
  348. package/get-shit-done/workflows/docs-update.md +1162 -0
  349. package/get-shit-done/workflows/edit-phase.md +295 -0
  350. package/get-shit-done/workflows/eval-review.md +156 -0
  351. package/get-shit-done/workflows/execute-phase/steps/codebase-drift-gate.md +82 -0
  352. package/get-shit-done/workflows/execute-phase/steps/per-plan-worktree-gate.md +94 -0
  353. package/get-shit-done/workflows/execute-phase/steps/post-merge-gate.md +117 -0
  354. package/get-shit-done/workflows/execute-phase.md +1709 -0
  355. package/get-shit-done/workflows/execute-plan.md +526 -0
  356. package/get-shit-done/workflows/explore.md +144 -0
  357. package/get-shit-done/workflows/extract-learnings.md +243 -0
  358. package/get-shit-done/workflows/fast.md +124 -0
  359. package/get-shit-done/workflows/forensics.md +279 -0
  360. package/get-shit-done/workflows/graduation.md +196 -0
  361. package/get-shit-done/workflows/health.md +224 -0
  362. package/get-shit-done/workflows/help/modes/brief.md +22 -0
  363. package/get-shit-done/workflows/help/modes/default.md +50 -0
  364. package/get-shit-done/workflows/help/modes/full.md +784 -0
  365. package/get-shit-done/workflows/help/modes/topic.md +74 -0
  366. package/get-shit-done/workflows/help.md +24 -0
  367. package/get-shit-done/workflows/import.md +254 -0
  368. package/get-shit-done/workflows/inbox.md +387 -0
  369. package/get-shit-done/workflows/ingest-docs.md +339 -0
  370. package/get-shit-done/workflows/insert-phase.md +152 -0
  371. package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  372. package/get-shit-done/workflows/list-workspaces.md +57 -0
  373. package/get-shit-done/workflows/manager.md +393 -0
  374. package/get-shit-done/workflows/map-codebase.md +444 -0
  375. package/get-shit-done/workflows/milestone-summary.md +224 -0
  376. package/get-shit-done/workflows/mvp-phase.md +222 -0
  377. package/get-shit-done/workflows/new-milestone.md +635 -0
  378. package/get-shit-done/workflows/new-project.md +1555 -0
  379. package/get-shit-done/workflows/new-workspace.md +240 -0
  380. package/get-shit-done/workflows/next.md +299 -0
  381. package/get-shit-done/workflows/node-repair.md +92 -0
  382. package/get-shit-done/workflows/note.md +158 -0
  383. package/get-shit-done/workflows/pause-work.md +244 -0
  384. package/get-shit-done/workflows/plan-milestone-gaps.md +281 -0
  385. package/get-shit-done/workflows/plan-phase.md +1809 -0
  386. package/get-shit-done/workflows/plan-review-convergence.md +346 -0
  387. package/get-shit-done/workflows/plant-seed.md +230 -0
  388. package/get-shit-done/workflows/pr-branch.md +157 -0
  389. package/get-shit-done/workflows/profile-user.md +453 -0
  390. package/get-shit-done/workflows/progress.md +699 -0
  391. package/get-shit-done/workflows/quick.md +1039 -0
  392. package/get-shit-done/workflows/reapply-patches.md +426 -0
  393. package/get-shit-done/workflows/remove-phase.md +156 -0
  394. package/get-shit-done/workflows/remove-workspace.md +108 -0
  395. package/get-shit-done/workflows/resume-project.md +332 -0
  396. package/get-shit-done/workflows/review.md +623 -0
  397. package/get-shit-done/workflows/scan.md +105 -0
  398. package/get-shit-done/workflows/secure-phase.md +180 -0
  399. package/get-shit-done/workflows/session-report.md +146 -0
  400. package/get-shit-done/workflows/settings-advanced.md +620 -0
  401. package/get-shit-done/workflows/settings-integrations.md +312 -0
  402. package/get-shit-done/workflows/settings.md +552 -0
  403. package/get-shit-done/workflows/ship.md +356 -0
  404. package/get-shit-done/workflows/sketch-wrap-up.md +286 -0
  405. package/get-shit-done/workflows/sketch.md +361 -0
  406. package/get-shit-done/workflows/spec-phase.md +262 -0
  407. package/get-shit-done/workflows/spike-wrap-up.md +307 -0
  408. package/get-shit-done/workflows/spike.md +453 -0
  409. package/get-shit-done/workflows/stats.md +80 -0
  410. package/get-shit-done/workflows/sync-skills.md +182 -0
  411. package/get-shit-done/workflows/thread.md +222 -0
  412. package/get-shit-done/workflows/transition.md +694 -0
  413. package/get-shit-done/workflows/ui-phase.md +328 -0
  414. package/get-shit-done/workflows/ui-review.md +193 -0
  415. package/get-shit-done/workflows/ultraplan-phase.md +199 -0
  416. package/get-shit-done/workflows/undo.md +314 -0
  417. package/get-shit-done/workflows/update.md +443 -0
  418. package/get-shit-done/workflows/validate-phase.md +179 -0
  419. package/get-shit-done/workflows/verify-phase.md +544 -0
  420. package/get-shit-done/workflows/verify-work.md +781 -0
  421. package/hooks/dist/gsd-check-update-worker.js +95 -0
  422. package/hooks/dist/gsd-check-update.js +64 -0
  423. package/hooks/dist/gsd-context-monitor.js +195 -0
  424. package/hooks/dist/gsd-graphify-update.sh +158 -0
  425. package/hooks/dist/gsd-phase-boundary.sh +47 -0
  426. package/hooks/dist/gsd-prompt-guard.js +97 -0
  427. package/hooks/dist/gsd-read-guard.js +101 -0
  428. package/hooks/dist/gsd-read-injection-scanner.js +203 -0
  429. package/hooks/dist/gsd-session-state.sh +59 -0
  430. package/hooks/dist/gsd-statusline.js +548 -0
  431. package/hooks/dist/gsd-update-banner.js +134 -0
  432. package/hooks/dist/gsd-validate-commit.sh +57 -0
  433. package/hooks/dist/gsd-workflow-guard.js +166 -0
  434. package/hooks/dist/lib/git-cmd.js +150 -0
  435. package/hooks/dist/lib/gsd-graphify-rebuild.sh +65 -0
  436. package/hooks/gsd-check-update-worker.js +95 -0
  437. package/hooks/gsd-check-update.js +64 -0
  438. package/hooks/gsd-context-monitor.js +195 -0
  439. package/hooks/gsd-graphify-update.sh +158 -0
  440. package/hooks/gsd-phase-boundary.sh +47 -0
  441. package/hooks/gsd-prompt-guard.js +97 -0
  442. package/hooks/gsd-read-guard.js +101 -0
  443. package/hooks/gsd-read-injection-scanner.js +203 -0
  444. package/hooks/gsd-session-state.sh +59 -0
  445. package/hooks/gsd-statusline.js +548 -0
  446. package/hooks/gsd-update-banner.js +134 -0
  447. package/hooks/gsd-validate-commit.sh +57 -0
  448. package/hooks/gsd-workflow-guard.js +166 -0
  449. package/hooks/lib/git-cmd.js +150 -0
  450. package/hooks/lib/gsd-graphify-rebuild.sh +65 -0
  451. package/hooks/managed-hooks-registry.cjs +34 -0
  452. package/package.json +102 -0
  453. package/scripts/affected-tests-lib.cjs +541 -0
  454. package/scripts/audit-workflow-script-paths.cjs +73 -0
  455. package/scripts/base64-scan.sh +339 -0
  456. package/scripts/build-hooks.js +236 -0
  457. package/scripts/changeset/README.md +129 -0
  458. package/scripts/changeset/cli.cjs +392 -0
  459. package/scripts/changeset/github-release-notes.cjs +199 -0
  460. package/scripts/changeset/lint.cjs +110 -0
  461. package/scripts/changeset/new.cjs +137 -0
  462. package/scripts/changeset/parse.cjs +114 -0
  463. package/scripts/changeset/render.cjs +34 -0
  464. package/scripts/changeset/serialize.cjs +130 -0
  465. package/scripts/check-alias-drift.cjs +108 -0
  466. package/scripts/check-env.cjs +302 -0
  467. package/scripts/check-npm-integrity.cjs +209 -0
  468. package/scripts/ci-guard-runner.cjs +16 -0
  469. package/scripts/ci-prepare-test-scope.cjs +46 -0
  470. package/scripts/ci-rebase-check.cjs +85 -0
  471. package/scripts/ci-test-scope.cjs +302 -0
  472. package/scripts/command-contract-helpers.cjs +64 -0
  473. package/scripts/diff-touches-shipped-paths.cjs +147 -0
  474. package/scripts/fix-slash-commands.cjs +147 -0
  475. package/scripts/gen-inventory-manifest.cjs +109 -0
  476. package/scripts/generate-package-identity.cjs +104 -0
  477. package/scripts/lint-command-contract.cjs +108 -0
  478. package/scripts/lint-descriptions.cjs +83 -0
  479. package/scripts/lint-docs-required.cjs +222 -0
  480. package/scripts/lint-no-source-grep-extras.cjs +81 -0
  481. package/scripts/lint-no-source-grep.cjs +174 -0
  482. package/scripts/lint-package-identity-drift.cjs +141 -0
  483. package/scripts/lint-pr-check-project-dir.cjs +98 -0
  484. package/scripts/lint-shared-module-handsync.cjs +388 -0
  485. package/scripts/lint-shell-command-projection-drift.cjs +57 -0
  486. package/scripts/lint-skill-deps.cjs +180 -0
  487. package/scripts/lint-test-file-count.allowlist.json +36 -0
  488. package/scripts/lint-test-file-count.cjs +190 -0
  489. package/scripts/pr-template-policy.cjs +268 -0
  490. package/scripts/prompt-injection-scan.sh +203 -0
  491. package/scripts/release-tarball-smoke.cjs +627 -0
  492. package/scripts/run-affected-tests.cjs +6 -0
  493. package/scripts/run-cross-platform-tests.cjs +63 -0
  494. package/scripts/run-tests.cjs +282 -0
  495. package/scripts/secret-scan-lint.sh +231 -0
  496. package/scripts/secret-scan.sh +358 -0
  497. package/scripts/setup-branch-protection.sh +236 -0
  498. package/scripts/shared-module-handsync-allowlist.json +183 -0
  499. package/scripts/strip-prose-atrefs.cjs +106 -0
  500. package/scripts/sync-rulesets.sh +34 -0
  501. package/scripts/sync-runtime-launcher.cjs +402 -0
  502. package/scripts/test-failure-reasons.cjs +34 -0
  503. package/scripts/workflow-policy.cjs +450 -0
@@ -0,0 +1,855 @@
1
+ <purpose>
2
+
3
+ Mark a shipped version (v1.0, v1.1, v2.0) as complete. Creates historical record in MILESTONES.md, performs full PROJECT.md evolution review, reorganizes ROADMAP.md with milestone groupings, and tags the release in git.
4
+
5
+ </purpose>
6
+
7
+ <required_reading>
8
+
9
+ 1. templates/milestone.md
10
+ 2. templates/milestone-archive.md
11
+ 3. `.planning/ROADMAP.md`
12
+ 4. `.planning/REQUIREMENTS.md`
13
+ 5. `.planning/PROJECT.md`
14
+
15
+ </required_reading>
16
+
17
+ <archival_behavior>
18
+
19
+ When a milestone completes:
20
+
21
+ 1. Extract full milestone details to `.planning/milestones/v[X.Y]-ROADMAP.md`
22
+ 2. Archive requirements to `.planning/milestones/v[X.Y]-REQUIREMENTS.md`
23
+ 3. Update ROADMAP.md — overwrite in place with milestone grouping (preserve Backlog section)
24
+ 4. Safety commit archive files + updated ROADMAP.md, then `git rm REQUIREMENTS.md` (fresh for next milestone)
25
+ 5. Perform full PROJECT.md evolution review
26
+ 6. Offer to create next milestone inline
27
+ 7. Archive UI artifacts (`*-UI-SPEC.md`, `*-UI-REVIEW.md`) alongside other phase documents
28
+ 8. Clean up `.planning/ui-reviews/` screenshot files (binary assets, never archived)
29
+
30
+ **Context Efficiency:** Archives keep ROADMAP.md constant-size and REQUIREMENTS.md milestone-scoped.
31
+
32
+ **ROADMAP archive** uses `templates/milestone-archive.md` — includes milestone header (status, phases, date), full phase details, milestone summary (decisions, issues, tech debt).
33
+
34
+ **REQUIREMENTS archive** contains all requirements marked complete with outcomes, traceability table with final status, notes on changed requirements.
35
+
36
+ </archival_behavior>
37
+
38
+ <process>
39
+
40
+ <step name="pre_close_artifact_audit">
41
+ Before proceeding with milestone close, run the comprehensive open artifact audit.
42
+
43
+ ```bash
44
+ _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi
45
+ gsd_run query audit-open
46
+ ```
47
+
48
+ If the output contains open items (any section with count > 0):
49
+
50
+ Display the full audit report to the user.
51
+
52
+ Then ask:
53
+ ```
54
+ These items are open. Choose an action:
55
+ [R] Resolve — stop and fix items, then re-run /gsd:complete-milestone
56
+ [A] Acknowledge all — document as deferred and proceed with close
57
+ [C] Cancel — exit without closing
58
+ ```
59
+
60
+ If user chooses [A] (Acknowledge):
61
+ 1. Re-run `gsd-tools.cjs query audit-open --json` to get structured data
62
+ 2. Write acknowledged items to STATE.md under `## Deferred Items` section:
63
+ ```markdown
64
+ ## Deferred Items
65
+
66
+ Items acknowledged and deferred at milestone close on {date}:
67
+
68
+ | Category | Item | Status |
69
+ |----------|------|--------|
70
+ | debug | {slug} | {status} |
71
+ | quick_task | {slug} | {status} |
72
+ ...
73
+ ```
74
+ Sanitize all slug and status values via `sanitizeForDisplay()` before writing. Never inject raw file content into STATE.md.
75
+ 3. Record in MILESTONES.md entry: `Known deferred items at close: {count} (see STATE.md Deferred Items)`
76
+ 4. Proceed with milestone close.
77
+
78
+ If output shows all clear (no open items): print `All artifact types clear.` and proceed.
79
+
80
+ SECURITY: Audit JSON output is structured data from the `audit-open` query handler (same JSON contract as legacy `gsd-tools.cjs audit-open`) — validated and sanitized at source. When writing to STATE.md, item slugs and descriptions are sanitized via `sanitizeForDisplay()` before inclusion. Never inject raw user-supplied content into STATE.md without sanitization.
81
+ </step>
82
+
83
+ <step name="verify_readiness">
84
+
85
+ **Use `roadmap analyze` for comprehensive readiness check:**
86
+
87
+ ```bash
88
+ ROADMAP=$(gsd_run query roadmap.analyze)
89
+ ```
90
+
91
+ This returns all phases with plan/summary counts and disk status. Use this to verify:
92
+ - Which phases belong to this milestone?
93
+ - All phases complete (all plans have summaries)? Check `disk_status === 'complete'` for each.
94
+ - `progress_percent` should be 100%.
95
+
96
+ **Requirements completion check (REQUIRED before presenting):**
97
+
98
+ Parse REQUIREMENTS.md traceability table:
99
+ - Count total v1 requirements vs checked-off (`[x]`) requirements
100
+ - Identify any non-Complete rows in the traceability table
101
+
102
+ Present:
103
+
104
+ ```
105
+ Milestone: [Name, e.g., "v1.0 MVP"]
106
+
107
+ Includes:
108
+ - Phase 1: Foundation (2/2 plans complete)
109
+ - Phase 2: Authentication (2/2 plans complete)
110
+ - Phase 3: Core Features (3/3 plans complete)
111
+ - Phase 4: Polish (1/1 plan complete)
112
+
113
+ Total: {phase_count} phases, {total_plans} plans, all complete
114
+ Requirements: {N}/{M} v1 requirements checked off
115
+ ```
116
+
117
+ **If requirements incomplete** (N < M):
118
+
119
+ ```
120
+ ⚠ Unchecked Requirements:
121
+
122
+ - [ ] {REQ-ID}: {description} (Phase {X})
123
+ - [ ] {REQ-ID}: {description} (Phase {Y})
124
+ ```
125
+
126
+ MUST present 3 options:
127
+ 1. **Proceed anyway** — mark milestone complete with known gaps
128
+ 2. **Run audit first** — `/gsd:audit-milestone` to assess gap severity
129
+ 3. **Abort** — return to development
130
+
131
+ If user selects "Proceed anyway": note incomplete requirements in MILESTONES.md under `### Known Gaps` with REQ-IDs and descriptions.
132
+
133
+ <config-check>
134
+
135
+ ```bash
136
+ cat .planning/config.json 2>/dev/null || true
137
+ ```
138
+
139
+ </config-check>
140
+
141
+ <if mode="yolo">
142
+
143
+ ```
144
+ ⚡ Auto-approved: Milestone scope verification
145
+ [Show breakdown summary without prompting]
146
+ Proceeding to stats gathering...
147
+ ```
148
+
149
+ Proceed to gather_stats.
150
+
151
+ </if>
152
+
153
+ <if mode="interactive" OR="custom with gates.confirm_milestone_scope true">
154
+
155
+ ```
156
+ Ready to mark this milestone as shipped?
157
+ (yes / wait / adjust scope)
158
+ ```
159
+
160
+ Wait for confirmation.
161
+ - "adjust scope": Ask which phases to include.
162
+ - "wait": Stop, user returns when ready.
163
+
164
+ </if>
165
+
166
+ </step>
167
+
168
+ <step name="gather_stats">
169
+
170
+ Calculate milestone statistics:
171
+
172
+ ```bash
173
+ git log --oneline --grep="feat(" | head -20
174
+ git diff --stat FIRST_COMMIT..LAST_COMMIT | tail -1
175
+ find . -name "*.swift" -o -name "*.ts" -o -name "*.py" | xargs wc -l 2>/dev/null || true
176
+ git log --format="%ai" FIRST_COMMIT | tail -1
177
+ git log --format="%ai" LAST_COMMIT | head -1
178
+ ```
179
+
180
+ Present:
181
+
182
+ ```
183
+ Milestone Stats:
184
+ - Phases: [X-Y]
185
+ - Plans: [Z] total
186
+ - Tasks: [N] total (from phase summaries)
187
+ - Files modified: [M]
188
+ - Lines of code: [LOC] [language]
189
+ - Timeline: [Days] days ([Start] → [End])
190
+ - Git range: feat(XX-XX) → feat(YY-YY)
191
+ ```
192
+
193
+ </step>
194
+
195
+ <step name="extract_accomplishments">
196
+
197
+ Extract one-liners from SUMMARY.md files using summary-extract:
198
+
199
+ ```bash
200
+ # For each phase in milestone, extract one-liner
201
+ for summary in .planning/phases/*-*/*-SUMMARY.md; do
202
+ [ -e "$summary" ] || continue
203
+ gsd_run query summary-extract "$summary" --fields one_liner --pick one_liner
204
+ done
205
+ ```
206
+
207
+ Extract 4-6 key accomplishments. Present:
208
+
209
+ ```
210
+ Key accomplishments for this milestone:
211
+ 1. [Achievement from phase 1]
212
+ 2. [Achievement from phase 2]
213
+ 3. [Achievement from phase 3]
214
+ 4. [Achievement from phase 4]
215
+ 5. [Achievement from phase 5]
216
+ ```
217
+
218
+ </step>
219
+
220
+ <step name="create_milestone_entry">
221
+
222
+ **Note:** MILESTONES.md entry is now created automatically by `gsd-tools.cjs query milestone.complete` in the archive_milestone step. The entry includes version, date, phase/plan/task counts, and accomplishments extracted from SUMMARY.md files.
223
+
224
+ If additional details are needed (e.g., user-provided "Delivered" summary, git range, LOC stats), add them manually after the CLI creates the base entry.
225
+
226
+ </step>
227
+
228
+ <step name="evolve_project_full_review">
229
+
230
+ Full PROJECT.md evolution review at milestone completion.
231
+
232
+ Read all phase summaries:
233
+
234
+ ```bash
235
+ cat .planning/phases/*-*/*-SUMMARY.md
236
+ ```
237
+
238
+ **Full review checklist:**
239
+
240
+ 1. **"What This Is" accuracy:**
241
+ - Compare current description to what was built
242
+ - Update if product has meaningfully changed
243
+
244
+ 2. **Core Value check:**
245
+ - Still the right priority? Did shipping reveal a different core value?
246
+ - Update if the ONE thing has shifted
247
+
248
+ 3. **Requirements audit:**
249
+
250
+ **Validated section:**
251
+ - All Active requirements shipped this milestone → Move to Validated
252
+ - Format: `- ✓ [Requirement] — v[X.Y]`
253
+
254
+ **Active section:**
255
+ - Remove requirements moved to Validated
256
+ - Add new requirements for next milestone
257
+ - Keep unaddressed requirements
258
+
259
+ **Out of Scope audit:**
260
+ - Review each item — reasoning still valid?
261
+ - Remove irrelevant items
262
+ - Add requirements invalidated during milestone
263
+
264
+ 4. **Context update:**
265
+ - Current codebase state (LOC, tech stack)
266
+ - User feedback themes (if any)
267
+ - Known issues or technical debt
268
+
269
+ 5. **Key Decisions audit:**
270
+ - Extract all decisions from milestone phase summaries
271
+ - Add to Key Decisions table with outcomes
272
+ - Mark ✓ Good, ⚠️ Revisit, or — Pending
273
+
274
+ 6. **Constraints check:**
275
+ - Any constraints changed during development? Update as needed
276
+
277
+ Update PROJECT.md inline. Update "Last updated" footer:
278
+
279
+ ```markdown
280
+ ---
281
+ *Last updated: [date] after v[X.Y] milestone*
282
+ ```
283
+
284
+ **Example full evolution (v1.0 → v1.1 prep):**
285
+
286
+ Before:
287
+
288
+ ```markdown
289
+ ## What This Is
290
+
291
+ A real-time collaborative whiteboard for remote teams.
292
+
293
+ ## Core Value
294
+
295
+ Real-time sync that feels instant.
296
+
297
+ ## Requirements
298
+
299
+ ### Validated
300
+
301
+ (None yet — ship to validate)
302
+
303
+ ### Active
304
+
305
+ - [ ] Canvas drawing tools
306
+ - [ ] Real-time sync < 500ms
307
+ - [ ] User authentication
308
+ - [ ] Export to PNG
309
+
310
+ ### Out of Scope
311
+
312
+ - Mobile app — web-first approach
313
+ - Video chat — use external tools
314
+ ```
315
+
316
+ After v1.0:
317
+
318
+ ```markdown
319
+ ## What This Is
320
+
321
+ A real-time collaborative whiteboard for remote teams with instant sync and drawing tools.
322
+
323
+ ## Core Value
324
+
325
+ Real-time sync that feels instant.
326
+
327
+ ## Requirements
328
+
329
+ ### Validated
330
+
331
+ - ✓ Canvas drawing tools — v1.0
332
+ - ✓ Real-time sync < 500ms — v1.0 (achieved 200ms avg)
333
+ - ✓ User authentication — v1.0
334
+
335
+ ### Active
336
+
337
+ - [ ] Export to PNG
338
+ - [ ] Undo/redo history
339
+ - [ ] Shape tools (rectangles, circles)
340
+
341
+ ### Out of Scope
342
+
343
+ - Mobile app — web-first approach, PWA works well
344
+ - Video chat — use external tools
345
+ - Offline mode — real-time is core value
346
+
347
+ ## Context
348
+
349
+ Shipped v1.0 with 2,400 LOC TypeScript.
350
+ Tech stack: Next.js, Supabase, Canvas API.
351
+ Initial user testing showed demand for shape tools.
352
+ ```
353
+
354
+ **Step complete when:**
355
+
356
+ - [ ] "What This Is" reviewed and updated if needed
357
+ - [ ] Core Value verified as still correct
358
+ - [ ] All shipped requirements moved to Validated
359
+ - [ ] New requirements added to Active for next milestone
360
+ - [ ] Out of Scope reasoning audited
361
+ - [ ] Context updated with current state
362
+ - [ ] All milestone decisions added to Key Decisions
363
+ - [ ] "Last updated" footer reflects milestone completion
364
+
365
+ </step>
366
+
367
+ <step name="reorganize_roadmap">
368
+
369
+ Update `.planning/ROADMAP.md` — group completed milestone phases:
370
+
371
+ ```markdown
372
+ # Roadmap: [Project Name]
373
+
374
+ ## Milestones
375
+
376
+ - ✅ **v1.0 MVP** — Phases 1-4 (shipped YYYY-MM-DD)
377
+ - 🚧 **v1.1 Security** — Phases 5-6 (in progress)
378
+ - 📋 **v2.0 Redesign** — Phases 7-10 (planned)
379
+
380
+ ## Phases
381
+
382
+ <details>
383
+ <summary>✅ v1.0 MVP (Phases 1-4) — SHIPPED YYYY-MM-DD</summary>
384
+
385
+ - [x] Phase 1: Foundation (2/2 plans) — completed YYYY-MM-DD
386
+ - [x] Phase 2: Authentication (2/2 plans) — completed YYYY-MM-DD
387
+ - [x] Phase 3: Core Features (3/3 plans) — completed YYYY-MM-DD
388
+ - [x] Phase 4: Polish (1/1 plan) — completed YYYY-MM-DD
389
+
390
+ </details>
391
+
392
+ ### 🚧 v[Next] [Name] (In Progress / Planned)
393
+
394
+ - [ ] Phase 5: [Name] ([N] plans)
395
+ - [ ] Phase 6: [Name] ([N] plans)
396
+
397
+ ## Progress
398
+
399
+ | Phase | Milestone | Plans Complete | Status | Completed |
400
+ | ----------------- | --------- | -------------- | ----------- | ---------- |
401
+ | 1. Foundation | v1.0 | 2/2 | Complete | YYYY-MM-DD |
402
+ | 2. Authentication | v1.0 | 2/2 | Complete | YYYY-MM-DD |
403
+ | 3. Core Features | v1.0 | 3/3 | Complete | YYYY-MM-DD |
404
+ | 4. Polish | v1.0 | 1/1 | Complete | YYYY-MM-DD |
405
+ | 5. Security Audit | v1.1 | 0/1 | Not started | - |
406
+ | 6. Hardening | v1.1 | 0/2 | Not started | - |
407
+ ```
408
+
409
+ </step>
410
+
411
+ <step name="archive_milestone">
412
+
413
+ **Delegate archival to `gsd-tools.cjs query milestone.complete`:**
414
+
415
+ ```bash
416
+ ARCHIVE=$(gsd_run query milestone.complete "v[X.Y]" --name "[Milestone Name]")
417
+ ```
418
+
419
+ The CLI handles:
420
+ - Creating `.planning/milestones/` directory
421
+ - Archiving ROADMAP.md to `milestones/v[X.Y]-ROADMAP.md`
422
+ - Archiving REQUIREMENTS.md to `milestones/v[X.Y]-REQUIREMENTS.md` with archive header
423
+ - Moving audit file to milestones if it exists
424
+ - Creating/appending MILESTONES.md entry with accomplishments from SUMMARY.md files
425
+ - Updating STATE.md (status, last activity)
426
+
427
+ Extract from result: `version`, `date`, `phases`, `plans`, `tasks`, `accomplishments`, `archived`.
428
+
429
+ Verify: `✅ Milestone archived to .planning/milestones/`
430
+
431
+ **Phase archival (optional):** After archival completes, ask the user:
432
+
433
+
434
+ **Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
435
+ AskUserQuestion(header="Archive Phases", question="Archive phase directories to milestones/?", options: "Yes — move to milestones/v[X.Y]-phases/" | "Skip — keep phases in place")
436
+
437
+ If "Yes": move phase directories to the milestone archive:
438
+ ```bash
439
+ mkdir -p .planning/milestones/v[X.Y]-phases
440
+ # For each phase directory in .planning/phases/:
441
+ mv .planning/phases/{phase-dir} .planning/milestones/v[X.Y]-phases/
442
+ ```
443
+ Verify: `✅ Phase directories archived to .planning/milestones/v[X.Y]-phases/`
444
+
445
+ If "Skip": Phase directories remain in `.planning/phases/` as raw execution history. Use `/gsd:cleanup` later to archive retroactively.
446
+
447
+ After archival, the AI still handles:
448
+ - Reorganizing ROADMAP.md with milestone grouping (requires judgment) — overwrite in place after extracting Backlog section
449
+ - Full PROJECT.md evolution review (requires understanding)
450
+ - Safety commit of archive files + updated ROADMAP.md, then `git rm .planning/REQUIREMENTS.md`
451
+ - These are NOT fully delegated because they require AI interpretation of content
452
+
453
+ </step>
454
+
455
+ <step name="reorganize_roadmap_and_delete_originals">
456
+
457
+ After `milestone complete` has archived, reorganize ROADMAP.md with milestone groupings, then commit archives as a safety checkpoint before removing originals.
458
+
459
+ **Backlog preservation — do this FIRST before rewriting ROADMAP.md:**
460
+
461
+ Extract the Backlog section from the current ROADMAP.md before making any changes:
462
+
463
+ ```bash
464
+ # Extract lines under ## Backlog through end of file (or next ## section)
465
+ BACKLOG_SECTION=$(awk '/^## Backlog/{found=1} found{print}' .planning/ROADMAP.md)
466
+ ```
467
+
468
+ If `$BACKLOG_SECTION` is empty, there is no Backlog section — skip silently.
469
+
470
+ **Reorganize ROADMAP.md** — overwrite in place (do NOT delete first) with milestone groupings:
471
+
472
+ ```markdown
473
+ # Roadmap: [Project Name]
474
+
475
+ ## Milestones
476
+
477
+ - ✅ **v1.0 MVP** — Phases 1-4 (shipped YYYY-MM-DD)
478
+ - 🚧 **v1.1 Security** — Phases 5-6 (in progress)
479
+
480
+ ## Phases
481
+
482
+ <details>
483
+ <summary>✅ v1.0 MVP (Phases 1-4) — SHIPPED YYYY-MM-DD</summary>
484
+
485
+ - [x] Phase 1: Foundation (2/2 plans) — completed YYYY-MM-DD
486
+ - [x] Phase 2: Authentication (2/2 plans) — completed YYYY-MM-DD
487
+
488
+ </details>
489
+ ```
490
+
491
+ **Re-append Backlog section after the rewrite** (only if `$BACKLOG_SECTION` was non-empty):
492
+
493
+ Append the extracted Backlog content verbatim to the end of the newly written ROADMAP.md. This ensures 999.x backlog items are never silently dropped during milestone reorganization.
494
+
495
+ **Safety commit — commit archive files BEFORE deleting any originals:**
496
+
497
+ ```bash
498
+ gsd_run query commit "chore: archive v[X.Y] milestone files" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md .planning/ROADMAP.md
499
+ ```
500
+
501
+ This creates a durable checkpoint in git history. If anything fails after this point, the working tree can be reconstructed from git.
502
+
503
+ **Remove REQUIREMENTS.md via git rm** (preserves history, stages deletion atomically):
504
+
505
+ ```bash
506
+ git rm .planning/REQUIREMENTS.md
507
+ ```
508
+
509
+ </step>
510
+
511
+ <step name="write_retrospective">
512
+
513
+ **Append to living retrospective:**
514
+
515
+ Check for existing retrospective:
516
+ ```bash
517
+ ls .planning/RETROSPECTIVE.md 2>/dev/null || true
518
+ ```
519
+
520
+ **If exists:** Read the file, append new milestone section before the "## Cross-Milestone Trends" section.
521
+
522
+ **If doesn't exist:** Create from template at `~/.claude/get-shit-done/templates/retrospective.md`.
523
+
524
+ **Gather retrospective data:**
525
+
526
+ 1. From SUMMARY.md files: Extract key deliverables, one-liners, tech decisions
527
+ 2. From VERIFICATION.md files: Extract verification scores, gaps found
528
+ 3. From UAT.md files: Extract test results, issues found
529
+ 4. From git log: Count commits, calculate timeline
530
+ 5. From the milestone work: Reflect on what worked and what didn't
531
+
532
+ **Write the milestone section:**
533
+
534
+ ```markdown
535
+ ## Milestone: v{version} — {name}
536
+
537
+ **Shipped:** {date}
538
+ **Phases:** {phase_count} | **Plans:** {plan_count}
539
+
540
+ ### What Was Built
541
+ {Extract from SUMMARY.md one-liners}
542
+
543
+ ### What Worked
544
+ {Patterns that led to smooth execution}
545
+
546
+ ### What Was Inefficient
547
+ {Missed opportunities, rework, bottlenecks}
548
+
549
+ ### Patterns Established
550
+ {New conventions discovered during this milestone}
551
+
552
+ ### Key Lessons
553
+ {Specific, actionable takeaways}
554
+
555
+ ### Cost Observations
556
+ - Model mix: {X}% opus, {Y}% sonnet, {Z}% haiku
557
+ - Sessions: {count}
558
+ - Notable: {efficiency observation}
559
+ ```
560
+
561
+ **Update cross-milestone trends:**
562
+
563
+ If the "## Cross-Milestone Trends" section exists, update the tables with new data from this milestone.
564
+
565
+ **Commit:**
566
+ ```bash
567
+ gsd_run query commit "docs: update retrospective for v${VERSION}" --files .planning/RETROSPECTIVE.md
568
+ ```
569
+
570
+ </step>
571
+
572
+ <step name="update_state">
573
+
574
+ Most STATE.md updates were handled by `milestone complete`, but verify and update remaining fields:
575
+
576
+ **Project Reference:**
577
+
578
+ ```markdown
579
+ ## Project Reference
580
+
581
+ See: .planning/PROJECT.md (updated [today])
582
+
583
+ **Core value:** [Current core value from PROJECT.md]
584
+ **Current focus:** [Next milestone or "Planning next milestone"]
585
+ ```
586
+
587
+ **Accumulated Context:**
588
+ - Clear decisions summary (full log in PROJECT.md)
589
+ - Clear resolved blockers
590
+ - Keep open blockers for next milestone
591
+
592
+ </step>
593
+
594
+ <step name="handle_branches">
595
+
596
+ Check branching strategy and offer merge options.
597
+
598
+ Use `init milestone-op` for context, or load config directly:
599
+
600
+ ```bash
601
+ INIT=$(gsd_run query init.execute-phase "1")
602
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
603
+ ```
604
+
605
+ Extract `branching_strategy`, `phase_branch_template`, `milestone_branch_template`, and `commit_docs` from init JSON.
606
+
607
+ Detect base branch:
608
+ ```bash
609
+ BASE_BRANCH=$(gsd_run query config-get git.base_branch 2>/dev/null || echo "")
610
+ if [ -z "$BASE_BRANCH" ] || [ "$BASE_BRANCH" = "null" ]; then
611
+ BASE_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|^refs/remotes/origin/||')
612
+ BASE_BRANCH="${BASE_BRANCH:-main}"
613
+ fi
614
+ ```
615
+
616
+ **If "none":** Skip to git_tag.
617
+
618
+ **For "phase" strategy:**
619
+
620
+ ```bash
621
+ BRANCH_PREFIX=$(echo "$PHASE_BRANCH_TEMPLATE" | sed 's/{.*//')
622
+ PHASE_BRANCHES=$(git branch --list "${BRANCH_PREFIX}*" 2>/dev/null | sed 's/^\*//' | tr -d ' ')
623
+ ```
624
+
625
+ **For "milestone" strategy:**
626
+
627
+ ```bash
628
+ BRANCH_PREFIX=$(echo "$MILESTONE_BRANCH_TEMPLATE" | sed 's/{.*//')
629
+ MILESTONE_BRANCH=$(git branch --list "${BRANCH_PREFIX}*" 2>/dev/null | sed 's/^\*//' | tr -d ' ' | head -1)
630
+ ```
631
+
632
+ **If no branches found:** Skip to git_tag.
633
+
634
+ **If branches exist:**
635
+
636
+ ```
637
+ ## Git Branches Detected
638
+
639
+ Branching strategy: {phase/milestone}
640
+ Branches: {list}
641
+
642
+ Options:
643
+ 1. **Merge to main** — Merge branch(es) to main
644
+ 2. **Delete without merging** — Already merged or not needed
645
+ 3. **Keep branches** — Leave for manual handling
646
+ ```
647
+
648
+ AskUserQuestion with options: Squash merge (Recommended), Merge with history, Delete without merging, Keep branches.
649
+
650
+ **Squash merge:**
651
+
652
+ ```bash
653
+ CURRENT_BRANCH=$(git branch --show-current)
654
+ git checkout ${BASE_BRANCH}
655
+
656
+ if [ "$BRANCHING_STRATEGY" = "phase" ]; then
657
+ for branch in $PHASE_BRANCHES; do
658
+ git merge --squash "$branch"
659
+ # Strip .planning/ from staging if commit_docs is false
660
+ if [ "$COMMIT_DOCS" = "false" ]; then
661
+ git reset HEAD .planning/ 2>/dev/null || true
662
+ fi
663
+ git commit -m "feat: $branch for v[X.Y]"
664
+ done
665
+ fi
666
+
667
+ if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
668
+ git merge --squash "$MILESTONE_BRANCH"
669
+ # Strip .planning/ from staging if commit_docs is false
670
+ if [ "$COMMIT_DOCS" = "false" ]; then
671
+ git reset HEAD .planning/ 2>/dev/null || true
672
+ fi
673
+ git commit -m "feat: $MILESTONE_BRANCH for v[X.Y]"
674
+ fi
675
+
676
+ git checkout "$CURRENT_BRANCH"
677
+ ```
678
+
679
+ **Merge with history:**
680
+
681
+ ```bash
682
+ CURRENT_BRANCH=$(git branch --show-current)
683
+ git checkout ${BASE_BRANCH}
684
+
685
+ if [ "$BRANCHING_STRATEGY" = "phase" ]; then
686
+ for branch in $PHASE_BRANCHES; do
687
+ git merge --no-ff --no-commit "$branch"
688
+ # Strip .planning/ from staging if commit_docs is false
689
+ if [ "$COMMIT_DOCS" = "false" ]; then
690
+ git reset HEAD .planning/ 2>/dev/null || true
691
+ fi
692
+ git commit -m "Merge branch '$branch' for v[X.Y]"
693
+ done
694
+ fi
695
+
696
+ if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
697
+ git merge --no-ff --no-commit "$MILESTONE_BRANCH"
698
+ # Strip .planning/ from staging if commit_docs is false
699
+ if [ "$COMMIT_DOCS" = "false" ]; then
700
+ git reset HEAD .planning/ 2>/dev/null || true
701
+ fi
702
+ git commit -m "Merge branch '$MILESTONE_BRANCH' for v[X.Y]"
703
+ fi
704
+
705
+ git checkout "$CURRENT_BRANCH"
706
+ ```
707
+
708
+ **Delete without merging:**
709
+
710
+ ```bash
711
+ if [ "$BRANCHING_STRATEGY" = "phase" ]; then
712
+ for branch in $PHASE_BRANCHES; do
713
+ git branch -d "$branch" 2>/dev/null || git branch -D "$branch"
714
+ done
715
+ fi
716
+
717
+ if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
718
+ git branch -d "$MILESTONE_BRANCH" 2>/dev/null || git branch -D "$MILESTONE_BRANCH"
719
+ fi
720
+ ```
721
+
722
+ **Keep branches:** Report "Branches preserved for manual handling"
723
+
724
+ </step>
725
+
726
+ <step name="git_tag">
727
+
728
+ <config-check>
729
+ Read `git.create_tag` via `gsd-tools.cjs query config-get git.create_tag 2>/dev/null || echo "true"`.
730
+ If the result is `false` → skip this step entirely and proceed to `git_commit_milestone`.
731
+ </config-check>
732
+
733
+ Create git tag:
734
+
735
+ ```bash
736
+ # Pre-check: skip if tag already exists (prevents silent failure on retry)
737
+ if git rev-parse "v[X.Y]" >/dev/null 2>&1; then echo "Tag v[X.Y] already exists, skipping"; exit 0; fi
738
+ git tag -a v[X.Y] -m "v[X.Y] [Name]
739
+
740
+ Delivered: [One sentence]
741
+
742
+ Key accomplishments:
743
+ - [Item 1]
744
+ - [Item 2]
745
+ - [Item 3]
746
+
747
+ See .planning/MILESTONES.md for full details."
748
+ ```
749
+
750
+ Confirm: "Tagged: v[X.Y]"
751
+
752
+ Ask: "Push tag to remote? (y/n)"
753
+
754
+ If yes:
755
+ ```bash
756
+ git push origin v[X.Y]
757
+ ```
758
+
759
+ </step>
760
+
761
+ <step name="git_commit_milestone">
762
+
763
+ Commit the REQUIREMENTS.md deletion (archive files and ROADMAP.md were already committed in the safety commit in `reorganize_roadmap_and_delete_originals`).
764
+
765
+ ```bash
766
+ git commit -m "chore: remove REQUIREMENTS.md for v[X.Y] milestone"
767
+ ```
768
+
769
+ Confirm: "Committed: chore: remove REQUIREMENTS.md for v[X.Y] milestone"
770
+
771
+ </step>
772
+
773
+ <step name="offer_next">
774
+
775
+ ```
776
+ ✅ Milestone v[X.Y] [Name] complete
777
+
778
+ Shipped:
779
+ - [N] phases ([M] plans, [P] tasks)
780
+ - [One sentence of what shipped]
781
+
782
+ Archived:
783
+ - milestones/v[X.Y]-ROADMAP.md
784
+ - milestones/v[X.Y]-REQUIREMENTS.md
785
+
786
+ Summary: .planning/MILESTONES.md
787
+ Tag: v[X.Y]
788
+
789
+ ---
790
+
791
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
792
+
793
+ **Start Next Milestone** — questioning → research → requirements → roadmap
794
+
795
+ `/clear` then:
796
+
797
+ `/gsd:new-milestone`
798
+
799
+ ---
800
+ ```
801
+
802
+ </step>
803
+
804
+ </process>
805
+
806
+ <milestone_naming>
807
+
808
+ **Version conventions:**
809
+ - **v1.0** — Initial MVP
810
+ - **v1.1, v1.2** — Minor updates, new features, fixes
811
+ - **v2.0, v3.0** — Major rewrites, breaking changes, new direction
812
+
813
+ **Names:** Short 1-2 words (v1.0 MVP, v1.1 Security, v1.2 Performance, v2.0 Redesign).
814
+
815
+ </milestone_naming>
816
+
817
+ <what_qualifies>
818
+
819
+ **Create milestones for:** Initial release, public releases, major feature sets shipped, before archiving planning.
820
+
821
+ **Don't create milestones for:** Every phase completion (too granular), work in progress, internal dev iterations (unless truly shipped).
822
+
823
+ Heuristic: "Is this deployed/usable/shipped?" If yes → milestone. If no → keep working.
824
+
825
+ </what_qualifies>
826
+
827
+ <success_criteria>
828
+
829
+ Milestone completion is successful when:
830
+
831
+ - [ ] Pre-close artifact audit run and output shown to user
832
+ - [ ] Deferred items recorded in STATE.md if user acknowledged
833
+ - [ ] Known deferred items count noted in MILESTONES.md entry
834
+
835
+ - [ ] MILESTONES.md entry created with stats and accomplishments
836
+ - [ ] PROJECT.md full evolution review completed
837
+ - [ ] All shipped requirements moved to Validated in PROJECT.md
838
+ - [ ] Key Decisions updated with outcomes
839
+ - [ ] ROADMAP.md Backlog section extracted before rewrite, re-appended after (skipped if absent)
840
+ - [ ] ROADMAP.md reorganized with milestone grouping (overwritten in place, not deleted)
841
+ - [ ] Roadmap archive created (milestones/v[X.Y]-ROADMAP.md)
842
+ - [ ] Requirements archive created (milestones/v[X.Y]-REQUIREMENTS.md)
843
+ - [ ] Safety commit made (archive files + updated ROADMAP.md) BEFORE deleting REQUIREMENTS.md
844
+ - [ ] REQUIREMENTS.md removed via `git rm` (fresh for next milestone, history preserved)
845
+ - [ ] STATE.md updated with fresh project reference
846
+ - [ ] Git tag created (v[X.Y]) (if `git.create_tag` enabled)
847
+ - [ ] Milestone commit made (includes archive files and deletion)
848
+ - [ ] Requirements completion checked against REQUIREMENTS.md traceability table
849
+ - [ ] Incomplete requirements surfaced with proceed/audit/abort options
850
+ - [ ] Known gaps recorded in MILESTONES.md if user proceeded with incomplete requirements
851
+ - [ ] RETROSPECTIVE.md updated with milestone section
852
+ - [ ] Cross-milestone trends updated
853
+ - [ ] User knows next step (/gsd:new-milestone)
854
+
855
+ </success_criteria>