@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,699 @@
1
+ <purpose>
2
+ Check project progress, summarize recent work and what's ahead, then intelligently route to the next action — either executing an existing plan or creating the next one. Provides situational awareness before continuing work.
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ Read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
8
+
9
+ <process>
10
+
11
+ <step name="init_context">
12
+ **Load progress context (paths only):**
13
+
14
+ ```bash
15
+ _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
16
+ INIT=$(gsd_run query init.progress)
17
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
18
+ ```
19
+
20
+ Extract from init JSON: `project_exists`, `roadmap_exists`, `state_exists`, `phases`, `current_phase`, `next_phase`, `milestone_version`, `completed_count`, `phase_count`, `paused_at`, `state_path`, `roadmap_path`, `project_path`, `config_path`.
21
+
22
+ ```bash
23
+ DISCUSS_MODE=$(gsd_run query config-get workflow.discuss_mode 2>/dev/null || echo "discuss")
24
+ ```
25
+
26
+ If `project_exists` is false (no `.planning/` directory):
27
+
28
+ ```
29
+ No planning structure found.
30
+
31
+ Run /gsd:new-project to start a new project.
32
+ ```
33
+
34
+ Exit.
35
+
36
+ If missing STATE.md: suggest `/gsd:new-project`.
37
+
38
+ **If ROADMAP.md missing but PROJECT.md exists:**
39
+
40
+ This means a milestone was completed and archived. Go to **Route F** (between milestones).
41
+
42
+ If missing both ROADMAP.md and PROJECT.md: suggest `/gsd:new-project`.
43
+ </step>
44
+
45
+ <step name="load">
46
+ **Use structured extraction from `gsd-tools.cjs query` (or legacy gsd-tools.cjs):**
47
+
48
+ Instead of reading full files, use targeted tools to get only the data needed for the report:
49
+ - `ROADMAP=$(gsd-tools.cjs query roadmap.analyze)`
50
+ - `STATE=$(gsd-tools.cjs query state-snapshot)`
51
+
52
+ This minimizes orchestrator context usage.
53
+ </step>
54
+
55
+ <step name="analyze_roadmap">
56
+ **Get comprehensive roadmap analysis (replaces manual parsing):**
57
+
58
+ ```bash
59
+ ROADMAP=$(gsd_run query roadmap.analyze)
60
+ ```
61
+
62
+ This returns structured JSON with:
63
+ - All phases with disk status (complete/partial/planned/empty/no_directory)
64
+ - Goal and dependencies per phase
65
+ - Plan and summary counts per phase
66
+ - Aggregated stats: total plans, summaries, progress percent
67
+ - Current and next phase identification
68
+
69
+ Use this instead of manually reading/parsing ROADMAP.md.
70
+ </step>
71
+
72
+ <step name="recent">
73
+ **Gather recent work context:**
74
+
75
+ - Find the 2-3 most recent SUMMARY.md files
76
+ - Use `summary-extract` for efficient parsing:
77
+ ```bash
78
+ gsd_run query summary-extract <path> --fields one_liner
79
+ ```
80
+ - This shows "what we've been working on"
81
+ </step>
82
+
83
+ <step name="position">
84
+ **Parse current position from init context and roadmap analysis:**
85
+
86
+ - Use `current_phase` and `next_phase` from `$ROADMAP`
87
+ - Note `paused_at` if work was paused (from `$STATE`)
88
+ - Count pending todos: use `init todos` or `list-todos`
89
+ - Check for active debug sessions: `(ls .planning/debug/*.md 2>/dev/null || true) | grep -v resolved | wc -l`
90
+ </step>
91
+
92
+ <step name="report">
93
+ > ⚠️ Context authority: PROJECT.md, STATE.md, and ROADMAP.md are the authoritative sources
94
+ > for project name, milestone, current phase, and next-step routing. CLAUDE.md ## Project
95
+ > blocks are a secondary config aid that may be significantly stale — do NOT use the
96
+ > CLAUDE.md project description as a source for any progress report field.
97
+
98
+ **Generate progress bar from `gsd-tools.cjs query progress` / `progress.json`, then present rich status report:**
99
+
100
+ ```bash
101
+ # Get formatted progress bar
102
+ PROGRESS_BAR=$(gsd_run query progress.bar --raw)
103
+ ```
104
+
105
+ Present:
106
+
107
+ ```
108
+ # [Project Name]
109
+
110
+ **Progress:** {PROGRESS_BAR}
111
+ **Profile:** [quality/balanced/budget/inherit]
112
+ **Discuss mode:** {DISCUSS_MODE}
113
+
114
+ ## Recent Work
115
+ - [Phase X, Plan Y]: [what was accomplished - 1 line from summary-extract]
116
+ - [Phase X, Plan Z]: [what was accomplished - 1 line from summary-extract]
117
+
118
+ ## Current Position
119
+ Phase [N] of [total]: [phase-name]
120
+ Plan [M] of [phase-total]: [status]
121
+ CONTEXT: [✓ if has_context | - if not]
122
+
123
+ ## Key Decisions Made
124
+ - [extract from $STATE.decisions[]]
125
+ - [e.g. jq -r '.decisions[].decision' from state-snapshot]
126
+
127
+ ## Blockers/Concerns
128
+ - [extract from $STATE.blockers[]]
129
+ - [e.g. jq -r '.blockers[].text' from state-snapshot]
130
+
131
+ ## Pending Todos
132
+ - [count] pending — /gsd:capture --list to review
133
+
134
+ ## Active Debug Sessions
135
+ - [count] active — /gsd:debug to continue
136
+ (Only show this section if count > 0)
137
+
138
+ ## What's Next
139
+ [Next phase/plan objective from roadmap analyze]
140
+ ```
141
+
142
+ </step>
143
+
144
+ <step name="mvp_display">
145
+ **MVP-mode display (when phase has `**Mode:** mvp` in ROADMAP.md).**
146
+
147
+ Resolve `MVP_MODE` per phase via the centralized resolver. progress has no `--mvp` CLI flag (mode is inherited from the planned phase), so we omit `--cli-flag`:
148
+
149
+ ```bash
150
+ MVP_MODE=$(gsd_run query phase.mvp-mode "${PHASE_NUMBER}" --pick active)
151
+ ```
152
+
153
+ When `MVP_MODE=true`, the per-phase progress block adds a **user-flow status** sub-block sourced from the phase's PLAN.md task names. Each task whose name reads like a user-visible capability (e.g., "Register flow", "Login flow", "Password reset") is rendered as a status line:
154
+
155
+ ```
156
+ Phase 1 — User Auth MVP
157
+ ✅ Walking Skeleton complete ← from SKELETON.md existence
158
+ ✅ Register flow working ← from PLAN.md task with summary
159
+ ✅ Login flow working ← from PLAN.md task with summary
160
+ 🔄 Password reset (in progress) ← from PLAN.md task without summary
161
+ ⬜ Email verification ← from PLAN.md task not yet started
162
+ ```
163
+
164
+ **User-flow filter:** Tasks whose names are technical-sounding ("Wire DB schema", "Create migration", "Bump deps") are NOT rendered as user-flow status lines. Heuristic: a task name is user-flow-shaped if it ends in "flow", "page", "screen", or starts with a verb the user would recognize ("Register", "Login", "Upload", "View"). Tasks that fail the heuristic still count toward the standard task progress total but don't appear in the user-flow sub-block.
165
+
166
+ When `MVP_MODE=false` (mode is null, absent, or the phase has no `**Mode:**` line), fall back to the standard display path — no behavioral change.
167
+ </step>
168
+
169
+ <step name="route">
170
+ **Determine next action based on verified counts.**
171
+
172
+ **Step 0: Resume-incomplete-phase invariant (Route 0)**
173
+
174
+ Before any current-phase-scoped counting, scan ALL phases for incomplete execution. This catches the case where STATE.md's `current_phase` was advanced past the phase that actually has unfinished work (common after a mid-execution session death from hang, token exhaustion, or API disruption). Without this guard, the current-phase-scoped count in Step 1 would inspect the wrong phase and the routing would skip the unfinished work.
175
+
176
+ **Skip if `--no-resume` or `--force` is present in `$ARGUMENTS`.**
177
+
178
+ Scan all phases via the `$ROADMAP` JSON already loaded in `analyze_roadmap`. For each phase entry, compare `plans` length to `summaries` length using the same plans-without-summaries predicate as `determine_next_action` Route 4 (`plans.length > summaries.length`). Stop at the first (lowest-numbered) phase where the predicate is true. Record its phase number as `INCOMPLETE_PHASE`.
179
+
180
+ If `$ROADMAP` is empty or the query failed, surface a warning rather than silently proceeding:
181
+
182
+ ```bash
183
+ INCOMPLETE_PHASE=""
184
+ if [ -z "$ROADMAP" ]; then
185
+ echo "⚠ WARNING: resume-incomplete-phase scan could not run (\$ROADMAP is empty)." >&2
186
+ echo " The incomplete-phase invariant (#160) could not be verified." >&2
187
+ echo " Review project state carefully before continuing." >&2
188
+ else
189
+ for PHASE_NUM in $(echo "$ROADMAP" | jq -r '.phases[] | (.number // .phase_number)'); do
190
+ PHASE_DATA=$(echo "$ROADMAP" | jq --arg n "$PHASE_NUM" '.phases[] | select((.number // .phase_number) == ($n | tonumber))')
191
+ PLAN_COUNT=$(echo "$PHASE_DATA" | jq '(.plans // []) | length')
192
+ SUMMARY_COUNT=$(echo "$PHASE_DATA" | jq '(.summaries // []) | length')
193
+ if [ "${PLAN_COUNT:-0}" -gt "${SUMMARY_COUNT:-0}" ]; then
194
+ INCOMPLETE_PHASE="$PHASE_NUM"
195
+ break
196
+ fi
197
+ done
198
+ fi
199
+ ```
200
+
201
+ **If `INCOMPLETE_PHASE` is non-empty:** emit a one-line resume notice in the routing output and route to `/gsd:execute-phase ${INCOMPLETE_PHASE}` instead of running Step 1's current-phase routing. The progress report (already displayed by the `report` step above) gives the user full project status before this routing decision is shown.
202
+
203
+ ```
204
+ ---
205
+
206
+ ## ▶ Next Up — Resuming incomplete Phase ${INCOMPLETE_PHASE}
207
+
208
+ `/clear` then:
209
+
210
+ `/gsd:execute-phase ${INCOMPLETE_PHASE} ${GSD_WS}`
211
+
212
+ (plans without summaries detected; use --no-resume to skip this check and route by current_phase instead; --force to skip all gates)
213
+
214
+ ---
215
+ ```
216
+
217
+ Then exit the route step. Do NOT run Steps 1 through Routes A-F.
218
+
219
+ **If `INCOMPLETE_PHASE` is empty:** continue to Step 1.
220
+
221
+ **Step 1: Count plans, summaries, and issues in current phase**
222
+
223
+ List files in the current phase directory:
224
+
225
+ ```bash
226
+ (ls -1 .planning/phases/[current-phase-dir]/*-PLAN.md 2>/dev/null || true) | wc -l
227
+ (ls -1 .planning/phases/[current-phase-dir]/*-SUMMARY.md 2>/dev/null || true) | wc -l
228
+ (ls -1 .planning/phases/[current-phase-dir]/*-UAT.md 2>/dev/null || true) | wc -l
229
+ ```
230
+
231
+ State: "This phase has {X} plans, {Y} summaries."
232
+
233
+ **Step 1.5: Check for unaddressed UAT gaps**
234
+
235
+ Check for UAT.md files with status "diagnosed" (has gaps needing fixes).
236
+
237
+ ```bash
238
+ # Check for diagnosed UAT with gaps or partial (incomplete) testing
239
+ grep -l "status: diagnosed\|status: partial" .planning/phases/[current-phase-dir]/*-UAT.md 2>/dev/null || true
240
+ ```
241
+
242
+ Track:
243
+ - `uat_with_gaps`: UAT.md files with status "diagnosed" (gaps need fixing)
244
+ - `uat_partial`: UAT.md files with status "partial" (incomplete testing)
245
+
246
+ **Step 1.6: Cross-phase health check**
247
+
248
+ Scan ALL phases in the current milestone for outstanding verification debt using the CLI (which respects milestone boundaries via `getMilestonePhaseFilter`):
249
+
250
+ ```bash
251
+ DEBT=$(gsd_run query audit-uat --raw 2>/dev/null)
252
+ ```
253
+
254
+ Parse JSON for `summary.total_items` and `summary.total_files`.
255
+
256
+ Track: `outstanding_debt` — `summary.total_items` from the audit.
257
+
258
+ **If outstanding_debt > 0:** Add a warning section to the progress report output (in the `report` step), placed between "## What's Next" and the route suggestion:
259
+
260
+ ```markdown
261
+ ## Verification Debt ({N} files across prior phases)
262
+
263
+ | Phase | File | Issue |
264
+ |-------|------|-------|
265
+ | {phase} | {filename} | {pending_count} pending, {skipped_count} skipped, {blocked_count} blocked |
266
+ | {phase} | {filename} | human_needed — {count} items |
267
+
268
+ Review: `/gsd:audit-uat ${GSD_WS}` — full cross-phase audit
269
+ Resume testing: `/gsd:verify-work {phase} ${GSD_WS}` — retest specific phase
270
+ ```
271
+
272
+ This is a WARNING, not a blocker — routing proceeds normally. The debt is visible so the user can make an informed choice.
273
+
274
+ **Step 2: Route based on counts**
275
+
276
+ | Condition | Meaning | Action |
277
+ |-----------|---------|--------|
278
+ | uat_partial > 0 | UAT testing incomplete | Go to **Route E.2** |
279
+ | uat_with_gaps > 0 | UAT gaps need fix plans | Go to **Route E** |
280
+ | summaries < plans | Unexecuted plans exist | Go to **Route A** |
281
+ | summaries = plans AND plans > 0 | Phase complete | Go to Step 3 |
282
+ | plans = 0 | Phase not yet planned | Go to **Route B** |
283
+
284
+ ---
285
+
286
+ **Route A: Unexecuted plan exists**
287
+
288
+ Find the first PLAN.md without matching SUMMARY.md.
289
+ Read its `<objective>` section.
290
+
291
+ ```
292
+ ---
293
+
294
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
295
+
296
+ **{phase}-{plan}: [Plan Name]** — [objective summary from PLAN.md]
297
+
298
+ `/clear` then:
299
+
300
+ `/gsd:execute-phase {phase} ${GSD_WS}`
301
+
302
+ ---
303
+ ```
304
+
305
+ ---
306
+
307
+ **Route B: Phase needs planning**
308
+
309
+ Check if `{phase_num}-CONTEXT.md` exists in phase directory.
310
+
311
+ Check if current phase has UI indicators:
312
+
313
+ ```bash
314
+ PHASE_SECTION=$(gsd_run query roadmap.get-phase "${CURRENT_PHASE}" 2>/dev/null)
315
+ PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" || echo "false")
316
+ ```
317
+
318
+ **If CONTEXT.md exists:**
319
+
320
+ ```
321
+ ---
322
+
323
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
324
+
325
+ **Phase {N}: {Name}** — {Goal from ROADMAP.md}
326
+ <sub>✓ Context gathered, ready to plan</sub>
327
+
328
+ `/clear` then:
329
+
330
+ `/gsd:plan-phase {phase-number} ${GSD_WS}`
331
+
332
+ ---
333
+ ```
334
+
335
+ **If CONTEXT.md does NOT exist AND phase has UI (`PHASE_HAS_UI` is `true`):**
336
+
337
+ ```
338
+ ---
339
+
340
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
341
+
342
+ **Phase {N}: {Name}** — {Goal from ROADMAP.md}
343
+
344
+ `/clear` then:
345
+
346
+ `/gsd:discuss-phase {phase}` — gather context and clarify approach
347
+
348
+ ---
349
+
350
+ **Also available:**
351
+ - `/gsd:ui-phase {phase}` — generate UI design contract (recommended for frontend phases)
352
+ - `/gsd:plan-phase {phase}` — skip discussion, plan directly
353
+ - `/gsd:discuss-phase {phase}` — include assumptions check before planning
354
+
355
+ ---
356
+ ```
357
+
358
+ **If CONTEXT.md does NOT exist AND phase has no UI:**
359
+
360
+ ```
361
+ ---
362
+
363
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
364
+
365
+ **Phase {N}: {Name}** — {Goal from ROADMAP.md}
366
+
367
+ `/clear` then:
368
+
369
+ `/gsd:discuss-phase {phase} ${GSD_WS}` — gather context and clarify approach
370
+
371
+ ---
372
+
373
+ **Also available:**
374
+ - `/gsd:plan-phase {phase} ${GSD_WS}` — skip discussion, plan directly
375
+ - `/gsd:discuss-phase {phase} ${GSD_WS}` — include assumptions check before planning
376
+
377
+ ---
378
+ ```
379
+
380
+ ---
381
+
382
+ **Route E: UAT gaps need fix plans**
383
+
384
+ UAT.md exists with gaps (diagnosed issues). User needs to plan fixes.
385
+
386
+ ```
387
+ ---
388
+
389
+ ## ⚠ UAT Gaps Found
390
+
391
+ **{phase_num}-UAT.md** has {N} gaps requiring fixes.
392
+
393
+ `/clear` then:
394
+
395
+ `/gsd:plan-phase {phase} --gaps ${GSD_WS}`
396
+
397
+ ---
398
+
399
+ **Also available:**
400
+ - `/gsd:execute-phase {phase} ${GSD_WS}` — execute phase plans
401
+ - `/gsd:verify-work {phase} ${GSD_WS}` — run more UAT testing
402
+
403
+ ---
404
+ ```
405
+
406
+ ---
407
+
408
+ **Route E.2: UAT testing incomplete (partial)**
409
+
410
+ UAT.md exists with `status: partial` — testing session ended before all items resolved.
411
+
412
+ ```
413
+ ---
414
+
415
+ ## Incomplete UAT Testing
416
+
417
+ **{phase_num}-UAT.md** has {N} unresolved tests (pending, blocked, or skipped).
418
+
419
+ `/clear` then:
420
+
421
+ `/gsd:verify-work {phase} ${GSD_WS}` — resume testing from where you left off
422
+
423
+ ---
424
+
425
+ **Also available:**
426
+ - `/gsd:audit-uat ${GSD_WS}` — full cross-phase UAT audit
427
+ - `/gsd:execute-phase {phase} ${GSD_WS}` — execute phase plans
428
+
429
+ ---
430
+ ```
431
+
432
+ ---
433
+
434
+ **Step 3: Check milestone status (only when phase complete)**
435
+
436
+ Read ROADMAP.md and identify:
437
+ 1. Current phase number
438
+ 2. All phase numbers in the current milestone section
439
+
440
+ Count total phases and identify the highest phase number.
441
+
442
+ State: "Current phase is {X}. Milestone has {N} phases (highest: {Y})."
443
+
444
+ **Route based on milestone status:**
445
+
446
+ | Condition | Meaning | Action |
447
+ |-----------|---------|--------|
448
+ | current phase < highest phase | More phases remain | Go to **Route C** |
449
+ | current phase = highest phase | Milestone complete | Go to **Route D** |
450
+
451
+ ---
452
+
453
+ **Route C: Phase complete, more phases remain**
454
+
455
+ Read ROADMAP.md to get the next phase's name and goal.
456
+
457
+ Check if next phase has UI indicators:
458
+
459
+ ```bash
460
+ NEXT_PHASE_SECTION=$(gsd_run query roadmap.get-phase "$((Z+1))" 2>/dev/null)
461
+ NEXT_HAS_UI=$(echo "$NEXT_PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" || echo "false")
462
+ ```
463
+
464
+ **If next phase has UI (`NEXT_HAS_UI` is `true`):**
465
+
466
+ ```
467
+ ---
468
+
469
+ ## ✓ Phase {Z} Complete
470
+
471
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
472
+
473
+ **Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
474
+
475
+ `/clear` then:
476
+
477
+ `/gsd:discuss-phase {Z+1}` — gather context and clarify approach
478
+
479
+ ---
480
+
481
+ **Also available:**
482
+ - `/gsd:ui-phase {Z+1}` — generate UI design contract (recommended for frontend phases)
483
+ - `/gsd:plan-phase {Z+1}` — skip discussion, plan directly
484
+ - `/gsd:verify-work {Z}` — user acceptance test before continuing
485
+
486
+ ---
487
+ ```
488
+
489
+ **If next phase has no UI:**
490
+
491
+ ```
492
+ ---
493
+
494
+ ## ✓ Phase {Z} Complete
495
+
496
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
497
+
498
+ **Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
499
+
500
+ `/clear` then:
501
+
502
+ `/gsd:discuss-phase {Z+1} ${GSD_WS}` — gather context and clarify approach
503
+
504
+ ---
505
+
506
+ **Also available:**
507
+ - `/gsd:plan-phase {Z+1} ${GSD_WS}` — skip discussion, plan directly
508
+ - `/gsd:verify-work {Z} ${GSD_WS}` — user acceptance test before continuing
509
+
510
+ ---
511
+ ```
512
+
513
+ ---
514
+
515
+ **Route D: Milestone complete**
516
+
517
+ ```
518
+ ---
519
+
520
+ ## 🎉 Milestone Complete
521
+
522
+ All {N} phases finished!
523
+
524
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
525
+
526
+ **Complete Milestone** — archive and prepare for next
527
+
528
+ `/clear` then:
529
+
530
+ `/gsd:complete-milestone ${GSD_WS}`
531
+
532
+ ---
533
+
534
+ **Also available:**
535
+ - `/gsd:verify-work ${GSD_WS}` — user acceptance test before completing milestone
536
+
537
+ ---
538
+ ```
539
+
540
+ ---
541
+
542
+ **Route F: Between milestones (ROADMAP.md missing, PROJECT.md exists)**
543
+
544
+ A milestone was completed and archived. Ready to start the next milestone cycle.
545
+
546
+ Read MILESTONES.md to find the last completed milestone version.
547
+
548
+ ```
549
+ ---
550
+
551
+ ## ✓ Milestone v{X.Y} Complete
552
+
553
+ Ready to plan the next milestone.
554
+
555
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
556
+
557
+ **Start Next Milestone** — questioning → research → requirements → roadmap
558
+
559
+ `/clear` then:
560
+
561
+ `/gsd:new-milestone ${GSD_WS}`
562
+
563
+ ---
564
+ ```
565
+
566
+ </step>
567
+
568
+ <step name="edge_cases">
569
+ **Handle edge cases:**
570
+
571
+ - Phase complete but next phase not planned → offer `/gsd:plan-phase [next] ${GSD_WS}`
572
+ - All work complete → offer milestone completion
573
+ - Blockers present → highlight before offering to continue
574
+ - Handoff file exists → mention it, offer `/gsd:resume-work ${GSD_WS}`
575
+ </step>
576
+
577
+ <step name="forensic_audit">
578
+ **Forensic Integrity Audit** — only runs when `--forensic` is present in ARGUMENTS.
579
+
580
+ If `--forensic` is NOT present in ARGUMENTS: skip this step entirely. Default progress behavior (standard report + routing) is unchanged.
581
+
582
+ If `--forensic` IS present: after the standard report and routing suggestion have been displayed, append the following audit section.
583
+
584
+ ---
585
+
586
+ ## Forensic Integrity Audit
587
+
588
+ Running 6 deep checks against project state...
589
+
590
+ Run each check in order. For each check, emit ✓ (pass) or ⚠ (warning) with concrete evidence when a problem is found.
591
+
592
+ **Check 1 — STATE vs artifact consistency**
593
+
594
+ Read STATE.md `status` / `stopped_at` fields (from the STATE snapshot already loaded). Compare against the artifact count from the roadmap analysis. If STATE.md claims the current phase is pending/mid-flight but the artifact count shows it as complete (all PLAN.md files have matching SUMMARY.md files), flag inconsistency. Emit:
595
+ - ✓ `STATE.md consistent with artifact count` — if both agree
596
+ - ⚠ `STATE.md claims [status] but artifact count shows phase complete` — with the specific values
597
+
598
+ **Check 2 — Orphaned handoff files**
599
+
600
+ Check for existence of:
601
+ ```bash
602
+ ls .planning/HANDOFF.json .planning/phases/*/.continue-here.md .planning/phases/*/*HANDOFF*.md 2>/dev/null || true
603
+ ```
604
+ Also check `.planning/continue-here.md`.
605
+
606
+ Emit:
607
+ - ✓ `No orphaned handoff files` — if none found
608
+ - ⚠ `Orphaned handoff files found` — list each file path, add: `→ Work was paused mid-flight. Read the handoff before continuing.`
609
+
610
+ **Check 3 — Deferred scope drift**
611
+
612
+ Search phase artifacts (CONTEXT.md, DISCUSSION-LOG.md, BUG-BRIEF.md, VERIFICATION.md, SUMMARY.md, HANDOFF.md files under `.planning/phases/`) for patterns:
613
+ ```bash
614
+ grep -rl "defer to Phase\|future phase\|out of scope Phase\|deferred to Phase" .planning/phases/ 2>/dev/null || true
615
+ ```
616
+
617
+ For each match, extract the referenced phase number. Cross-reference against ROADMAP.md phase list. If the referenced phase number is NOT in ROADMAP.md, flag as deferred scope not captured.
618
+
619
+ Emit:
620
+ - ✓ `All deferred scope captured in ROADMAP` — if no mismatches
621
+ - ⚠ `Deferred scope references phase(s) not in ROADMAP` — list: file, reference text, missing phase number
622
+
623
+ **Check 4 — Memory-flagged pending work**
624
+
625
+ Check if `.planning/MEMORY.md` or `.planning/memory/` exists:
626
+ ```bash
627
+ ls .planning/MEMORY.md .planning/memory/*.md 2>/dev/null || true
628
+ ```
629
+
630
+ If found, grep for entries containing: `pending`, `status`, `deferred`, `not yet run`, `backfill`, `blocking`.
631
+
632
+ Emit:
633
+ - ✓ `No memory entries flagging pending work` — if none found or no MEMORY.md
634
+ - ⚠ `Memory entries flag pending/deferred work` — list the matching lines (max 5, truncated at 80 chars)
635
+
636
+ **Check 5 — Blocking operational todos**
637
+
638
+ Check for pending todos:
639
+ ```bash
640
+ ls .planning/todos/pending/*.md 2>/dev/null || true
641
+ ```
642
+
643
+ For files found, scan for keywords indicating operational blockers: `script`, `credential`, `API key`, `manual`, `verification`, `setup`, `configure`, `run `.
644
+
645
+ Emit:
646
+ - ✓ `No blocking operational todos` — if no pending todos or none match operational keywords
647
+ - ⚠ `Blocking operational todos found` — list the file names and matching keywords (max 5)
648
+
649
+ **Check 6 — Uncommitted code**
650
+
651
+ ```bash
652
+ git status --porcelain 2>/dev/null | grep -v "^??" | grep -v "^.planning\/" | grep -v "^\.\." | head -10
653
+ ```
654
+
655
+ If output is non-empty (modified/staged files outside `.planning/`), flag as uncommitted code.
656
+
657
+ Emit:
658
+ - ✓ `Working tree clean` — if no modified files outside `.planning/`
659
+ - ⚠ `Uncommitted changes in source files` — list up to 10 file paths
660
+
661
+ ---
662
+
663
+ After all 6 checks, display the verdict:
664
+
665
+ **If all 6 checks passed:**
666
+ ```
667
+ ### Verdict: CLEAN
668
+
669
+ The standard progress report is trustworthy — proceed with the routing suggestion above.
670
+ ```
671
+
672
+ **If 1 or more checks failed:**
673
+ ```
674
+ ### Verdict: N INTEGRITY ISSUE(S) FOUND
675
+
676
+ The standard progress report may not reflect true project state.
677
+ Review the flagged items above before acting on the routing suggestion.
678
+ ```
679
+
680
+ Then for each failed check, add a concrete next action:
681
+ - Check 2 (orphaned handoff): `Read the handoff file(s) and resume from where work was paused: /gsd:resume-work ${GSD_WS}`
682
+ - Check 3 (deferred scope): `Add the missing phases to ROADMAP.md or update the deferred references`
683
+ - Check 4 (memory pending): `Review the flagged memory entries and resolve or clear them`
684
+ - Check 5 (blocking todos): `Complete the operational steps in .planning/todos/pending/ before continuing`
685
+ - Check 6 (uncommitted code): `Commit or stash the uncommitted changes before advancing`
686
+ - Check 1 (STATE inconsistency): `Run /gsd:verify-work ${PHASE} ${GSD_WS} to reconcile state`
687
+ </step>
688
+
689
+ </process>
690
+
691
+ <success_criteria>
692
+
693
+ - [ ] Rich context provided (recent work, decisions, issues)
694
+ - [ ] Current position clear with visual progress
695
+ - [ ] What's next clearly explained
696
+ - [ ] Smart routing: /gsd:execute-phase if plans exist, /gsd:plan-phase if not
697
+ - [ ] User confirms before any action
698
+ - [ ] Seamless handoff to appropriate gsd command
699
+ </success_criteria>