@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,161 @@
1
+ <purpose>
2
+ Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work. Enables "thought → capture → continue" flow without losing context.
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 todo context:
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.todos)
17
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
18
+ ```
19
+
20
+ Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`.
21
+
22
+ Ensure directories exist:
23
+ ```bash
24
+ mkdir -p .planning/todos/pending .planning/todos/completed
25
+ ```
26
+
27
+ Note existing areas from the todos array for consistency in infer_area step.
28
+ </step>
29
+
30
+ <step name="extract_content">
31
+ **With arguments:** Use as the title/focus.
32
+ - `/gsd-add-todo Add auth token refresh` → title = "Add auth token refresh"
33
+
34
+ **Without arguments:** Analyze recent conversation to extract:
35
+ - The specific problem, idea, or task discussed
36
+ - Relevant file paths mentioned
37
+ - Technical details (error messages, line numbers, constraints)
38
+
39
+ Formulate:
40
+ - `title`: 3-10 word descriptive title (action verb preferred)
41
+ - `problem`: What's wrong or why this is needed
42
+ - `solution`: Approach hints or "TBD" if just an idea
43
+ - `files`: Relevant paths with line numbers from conversation
44
+ </step>
45
+
46
+ <step name="infer_area">
47
+ Infer area from file paths:
48
+
49
+ | Path pattern | Area |
50
+ |--------------|------|
51
+ | `src/api/*`, `api/*` | `api` |
52
+ | `src/components/*`, `src/ui/*` | `ui` |
53
+ | `src/auth/*`, `auth/*` | `auth` |
54
+ | `src/db/*`, `database/*` | `database` |
55
+ | `tests/*`, `__tests__/*` | `testing` |
56
+ | `docs/*` | `docs` |
57
+ | `.planning/*` | `planning` |
58
+ | `scripts/*`, `bin/*` | `tooling` |
59
+ | No files or unclear | `general` |
60
+
61
+ Use existing area from step 2 if similar match exists.
62
+ </step>
63
+
64
+ <step name="check_duplicates">
65
+ ```bash
66
+ # Search for key words from title in existing todos
67
+ grep -l -i "[key words from title]" .planning/todos/pending/*.md 2>/dev/null || true
68
+ ```
69
+
70
+ If potential duplicate found:
71
+ 1. Read the existing todo
72
+ 2. Compare scope
73
+
74
+
75
+ **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.
76
+ If overlapping, use AskUserQuestion:
77
+ - header: "Duplicate?"
78
+ - question: "Similar todo exists: [title]. What would you like to do?"
79
+ - options:
80
+ - "Skip" — keep existing todo
81
+ - "Replace" — update existing with new context
82
+ - "Add anyway" — create as separate todo
83
+ </step>
84
+
85
+ <step name="create_file">
86
+ Use values from init context: `timestamp` and `date` are already available.
87
+
88
+ Generate slug for the title:
89
+ ```bash
90
+ slug=$(gsd_run query generate-slug "$title" --raw)
91
+ ```
92
+
93
+ Write to `.planning/todos/pending/${date}-${slug}.md`:
94
+
95
+ ```markdown
96
+ ---
97
+ created: [timestamp]
98
+ title: [title]
99
+ area: [area]
100
+ files:
101
+ - [file:lines]
102
+ ---
103
+
104
+ ## Problem
105
+
106
+ [problem description - enough context for future Claude to understand weeks later]
107
+
108
+ ## Solution
109
+
110
+ [approach hints or "TBD"]
111
+ ```
112
+ </step>
113
+
114
+ <step name="update_state">
115
+ If `.planning/STATE.md` exists:
116
+
117
+ 1. Use `todo_count` from init context (or re-run `init todos` if count changed)
118
+ 2. Update "### Pending Todos" under "## Accumulated Context"
119
+ </step>
120
+
121
+ <step name="git_commit">
122
+ Commit the todo and any updated state:
123
+
124
+ ```bash
125
+ gsd_run query commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
126
+ ```
127
+
128
+ Tool respects `commit_docs` config and gitignore automatically.
129
+
130
+ Confirm: "Committed: docs: capture todo - [title]"
131
+ </step>
132
+
133
+ <step name="confirm">
134
+ ```
135
+ Todo saved: .planning/todos/pending/[filename]
136
+
137
+ [title]
138
+ Area: [area]
139
+ Files: [count] referenced
140
+
141
+ ---
142
+
143
+ Would you like to:
144
+
145
+ 1. Continue with current work
146
+ 2. Add another todo
147
+ 3. View all todos (/gsd:capture --list)
148
+ ```
149
+ </step>
150
+
151
+ </process>
152
+
153
+ <success_criteria>
154
+ - [ ] Directory structure exists
155
+ - [ ] Todo file created with valid frontmatter
156
+ - [ ] Problem section has enough context for future Claude
157
+ - [ ] No duplicates (checked and resolved)
158
+ - [ ] Area consistent with existing todos
159
+ - [ ] STATE.md updated if exists
160
+ - [ ] Todo and state committed to git
161
+ </success_criteria>
@@ -0,0 +1,295 @@
1
+ <purpose>
2
+ Generate an AI design contract (AI-SPEC.md) for phases that involve building AI systems. Orchestrates gsd-framework-selector → gsd-ai-researcher → gsd-domain-researcher → gsd-eval-planner with a validation gate. Inserts between discuss-phase and plan-phase in the GSD lifecycle.
3
+
4
+ AI-SPEC.md locks four things before the planner creates tasks:
5
+ 1. Framework selection (with rationale and alternatives)
6
+ 2. Implementation guidance (correct syntax, patterns, pitfalls from official docs)
7
+ 3. Domain context (practitioner rubric ingredients, failure modes, regulatory constraints)
8
+ 4. Evaluation strategy (dimensions, rubrics, tooling, reference dataset, guardrails)
9
+
10
+ This prevents the two most common AI development failures: choosing the wrong framework for the use case, and treating evaluation as an afterthought.
11
+ </purpose>
12
+
13
+ <required_reading>
14
+ @~/.claude/get-shit-done/references/ai-frameworks.md
15
+ @~/.claude/get-shit-done/references/ai-evals.md
16
+ </required_reading>
17
+
18
+ <process>
19
+
20
+ ## 1. Initialize
21
+
22
+ ```bash
23
+ _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
24
+ INIT=$(gsd_run query init.plan-phase "$PHASE")
25
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
26
+ ```
27
+
28
+ Parse JSON for: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_context`, `has_research`, `commit_docs`.
29
+
30
+ **File paths:** `state_path`, `roadmap_path`, `requirements_path`, `context_path`.
31
+
32
+ Resolve agent models:
33
+ ```bash
34
+ SELECTOR_MODEL=$(gsd_run query resolve-model gsd-framework-selector 2>/dev/null | jq -r '.model' 2>/dev/null || true)
35
+ RESEARCHER_MODEL=$(gsd_run query resolve-model gsd-ai-researcher 2>/dev/null | jq -r '.model' 2>/dev/null || true)
36
+ DOMAIN_MODEL=$(gsd_run query resolve-model gsd-domain-researcher 2>/dev/null | jq -r '.model' 2>/dev/null || true)
37
+ PLANNER_MODEL=$(gsd_run query resolve-model gsd-eval-planner 2>/dev/null | jq -r '.model' 2>/dev/null || true)
38
+ ```
39
+
40
+ Check config:
41
+ ```bash
42
+ AI_PHASE_ENABLED=$(gsd_run query config-get workflow.ai_integration_phase 2>/dev/null || echo "true")
43
+ ```
44
+
45
+ **If `AI_PHASE_ENABLED` is `false`:**
46
+ ```
47
+ AI phase is disabled in config. Enable via /gsd:settings.
48
+ ```
49
+ Exit workflow.
50
+
51
+ **If `planning_exists` is false:** Error — run `/gsd:new-project` first.
52
+
53
+ ## 2. Parse and Validate Phase
54
+
55
+ Extract phase number from $ARGUMENTS. If not provided, detect next unplanned phase.
56
+
57
+ ```bash
58
+ PHASE_INFO=$(gsd_run query roadmap.get-phase "${PHASE}")
59
+ ```
60
+
61
+ **If `found` is false:** Error with available phases.
62
+
63
+ ## 3. Check Prerequisites
64
+
65
+ **If `has_context` is false:**
66
+ ```
67
+ No CONTEXT.md found for Phase {N}.
68
+ Recommended: run /gsd:discuss-phase {N} first to capture framework preferences.
69
+ Continuing without user decisions — framework selector will ask all questions.
70
+ ```
71
+ Continue (non-blocking).
72
+
73
+ ## 4. Check Existing AI-SPEC
74
+
75
+ ```bash
76
+ AI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-AI-SPEC.md 2>/dev/null | head -1)
77
+ ```
78
+
79
+
80
+ **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.
81
+ **If exists:** Use AskUserQuestion:
82
+ - header: "Existing AI-SPEC"
83
+ - question: "AI-SPEC.md already exists for Phase {N}. What would you like to do?"
84
+ - options:
85
+ - "Update — re-run with existing as baseline"
86
+ - "View — display current AI-SPEC and exit"
87
+ - "Skip — keep current AI-SPEC and exit"
88
+
89
+ If "View": display file contents, exit.
90
+ If "Skip": exit.
91
+ If "Update": continue to step 5.
92
+
93
+ ## 5. Spawn gsd-framework-selector
94
+
95
+ Display:
96
+ ```
97
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
98
+ GSD ► AI DESIGN CONTRACT — PHASE {N}: {name}
99
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
100
+
101
+ ◆ Step 1/4 — Framework Selection...
102
+ ```
103
+
104
+ Spawn `gsd-framework-selector` with:
105
+ ```markdown
106
+ Read ~/.claude/agents/gsd-framework-selector.md for instructions.
107
+
108
+ <objective>
109
+ Select the right AI framework for Phase {phase_number}: {phase_name}
110
+ Goal: {phase_goal}
111
+ </objective>
112
+
113
+ <files_to_read>
114
+ {context_path if exists}
115
+ {requirements_path if exists}
116
+ </files_to_read>
117
+
118
+ <phase_context>
119
+ Phase: {phase_number} — {phase_name}
120
+ Goal: {phase_goal}
121
+ </phase_context>
122
+ ```
123
+
124
+ Parse selector output for: `primary_framework`, `system_type`, `model_provider`, `eval_concerns`, `alternative_framework`.
125
+
126
+ **If selector fails or returns empty:** Exit with error — "Framework selection failed. Re-run /gsd:ai-integration-phase {N} or answer the framework question in /gsd:discuss-phase {N} first."
127
+
128
+ ## 6. Initialize AI-SPEC.md
129
+
130
+ Copy template:
131
+ ```bash
132
+ cp "$HOME/.claude/get-shit-done/templates/AI-SPEC.md" "${PHASE_DIR}/${PADDED_PHASE}-AI-SPEC.md"
133
+ ```
134
+
135
+ Fill in header fields:
136
+ - Phase number and name
137
+ - System classification (from selector)
138
+ - Selected framework (from selector)
139
+ - Alternative considered (from selector)
140
+
141
+ ## 7. Spawn gsd-ai-researcher
142
+
143
+ > **Ordering note (prevents tool-level last-writer-wins race):** Steps 7 and 8 write disjoint sections of AI-SPEC.md but MUST run sequentially — wait for Step 7 to complete before spawning Step 8. Both agents use the `Edit` tool exclusively (never `Write`) when modifying AI-SPEC.md. A `Write` on a shared file replaces the entire file, silently overwriting the other agent's work; `Edit` targets only the relevant lines. See #3096 for a confirmed 40%-incidence race on parallel dispatch.
144
+
145
+ Display:
146
+ ```
147
+ ◆ Step 2/4 — Researching {primary_framework} docs + AI systems best practices...
148
+ ```
149
+
150
+ Spawn `gsd-ai-researcher` with:
151
+ ```markdown
152
+ Read ~/.claude/agents/gsd-ai-researcher.md for instructions.
153
+
154
+ **Tool discipline (mandatory):**
155
+ Use the Edit tool exclusively when modifying AI-SPEC.md — NEVER use Write on this file.
156
+ Write replaces the entire file and will overwrite work from parallel or sequential sibling agents.
157
+ Before editing, verify the section you are about to write is still a template placeholder.
158
+
159
+ <objective>
160
+ </objective>
161
+
162
+ <files_to_read>
163
+ {ai_spec_path}
164
+ {context_path if exists}
165
+ </files_to_read>
166
+
167
+ <input>
168
+ framework: {primary_framework}
169
+ system_type: {system_type}
170
+ model_provider: {model_provider}
171
+ ai_spec_path: {ai_spec_path}
172
+ phase_context: Phase {phase_number}: {phase_name} — {phase_goal}
173
+ </input>
174
+ ```
175
+
176
+ ## 8. Spawn gsd-domain-researcher
177
+
178
+ > **Wait for Step 7 to complete before spawning this step** (see ordering note in Step 7).
179
+
180
+ Display:
181
+ ```
182
+ ◆ Step 3/4 — Researching domain context and expert evaluation criteria...
183
+ ```
184
+
185
+ Spawn `gsd-domain-researcher` with:
186
+ ```markdown
187
+ Read ~/.claude/agents/gsd-domain-researcher.md for instructions.
188
+
189
+ **Tool discipline (mandatory):**
190
+ Use the Edit tool exclusively when modifying AI-SPEC.md — NEVER use Write on this file.
191
+ Write replaces the entire file and will overwrite work from parallel or sequential sibling agents.
192
+ Before editing, verify the section you are about to write is still a template placeholder.
193
+
194
+ <objective>
195
+ </objective>
196
+
197
+ <files_to_read>
198
+ {ai_spec_path}
199
+ {context_path if exists}
200
+ {requirements_path if exists}
201
+ </files_to_read>
202
+
203
+ <input>
204
+ system_type: {system_type}
205
+ phase_name: {phase_name}
206
+ phase_goal: {phase_goal}
207
+ ai_spec_path: {ai_spec_path}
208
+ </input>
209
+ ```
210
+
211
+ ## 9. Spawn gsd-eval-planner
212
+
213
+ Display:
214
+ ```
215
+ ◆ Step 4/4 — Designing evaluation strategy from domain + technical context...
216
+ ```
217
+
218
+ Spawn `gsd-eval-planner` with:
219
+ ```markdown
220
+ Read ~/.claude/agents/gsd-eval-planner.md for instructions.
221
+
222
+ <objective>
223
+ Design evaluation strategy for Phase {phase_number}: {phase_name}
224
+ Write Sections 5, 6, and 7 of AI-SPEC.md
225
+ AI-SPEC.md now contains domain context (Section 1b) — use it as your rubric starting point.
226
+ </objective>
227
+
228
+ <files_to_read>
229
+ {ai_spec_path}
230
+ {context_path if exists}
231
+ {requirements_path if exists}
232
+ </files_to_read>
233
+
234
+ <input>
235
+ system_type: {system_type}
236
+ framework: {primary_framework}
237
+ model_provider: {model_provider}
238
+ phase_name: {phase_name}
239
+ phase_goal: {phase_goal}
240
+ ai_spec_path: {ai_spec_path}
241
+ </input>
242
+ ```
243
+
244
+ ## 10. Validate AI-SPEC Completeness
245
+
246
+ Read the completed AI-SPEC.md. Check that:
247
+ - Section 2 has a framework name (not placeholder)
248
+ - Section 1b has at least one domain rubric ingredient (Good/Bad/Stakes)
249
+ - Section 3 has a non-empty code block (entry point pattern)
250
+ - Section 4b has a Pydantic example
251
+ - Section 5 has at least one row in the dimensions table
252
+ - Section 6 has at least one guardrail or explicit "N/A for internal tool" note
253
+ - Checklist section at end has 3+ items checked
254
+
255
+ **If validation fails:** Display specific missing sections. Ask user if they want to re-run the specific step or continue anyway.
256
+
257
+ ## 11. Commit
258
+
259
+ **If `commit_docs` is true:**
260
+ ```bash
261
+ git add "${AI_SPEC_FILE}"
262
+ git commit -m "docs({phase_slug}): generate AI-SPEC.md — {primary_framework} + domain context + eval strategy"
263
+ ```
264
+
265
+ ## 12. Display Completion
266
+
267
+ ```
268
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
269
+ GSD ► AI-SPEC COMPLETE — PHASE {N}: {name}
270
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
271
+
272
+ ◆ Framework: {primary_framework}
273
+ ◆ System Type: {system_type}
274
+ ◆ Domain: {domain_vertical from Section 1b}
275
+ ◆ Eval Dimensions: {eval_concerns}
276
+ ◆ Tracing Default: Arize Phoenix (or detected existing tool)
277
+ ◆ Output: {ai_spec_path}
278
+
279
+ Next step:
280
+ /gsd:plan-phase {N} — planner will consume AI-SPEC.md
281
+ ```
282
+
283
+ </process>
284
+
285
+ <success_criteria>
286
+ - [ ] Framework selected with rationale (Section 2)
287
+ - [ ] AI-SPEC.md created from template
288
+ - [ ] Framework docs + AI best practices researched (Sections 3, 4, 4b populated)
289
+ - [ ] Domain context + expert rubric ingredients researched (Section 1b populated)
290
+ - [ ] Eval strategy grounded in domain context (Sections 5-7 populated)
291
+ - [ ] Arize Phoenix (or detected tool) set as tracing default in Section 7
292
+ - [ ] AI-SPEC.md validated (Sections 1b, 2, 3, 4b, 5, 6 all non-empty)
293
+ - [ ] Committed if commit_docs enabled
294
+ - [ ] Next step surfaced to user
295
+ </success_criteria>
@@ -0,0 +1,96 @@
1
+ <purpose>
2
+ Analyze ROADMAP.md phases for dependency relationships before execution. Detect file overlap between phases, semantic API/data-flow dependencies, and suggest `Depends on` entries to prevent merge conflicts during parallel execution by `/gsd:manager`.
3
+ </purpose>
4
+
5
+ <process>
6
+
7
+ ## 1. Load ROADMAP.md
8
+
9
+ Read `.planning/ROADMAP.md`. If it does not exist, error: "No ROADMAP.md found — run `/gsd:new-project` first."
10
+
11
+ Extract all phases. For each phase capture:
12
+ - Phase number and name
13
+ - Scope/Goal description
14
+ - Files listed in `Files` or `files_modified` fields (if present)
15
+ - Existing `Depends on` field value
16
+
17
+ ## 2. Infer Likely File Modifications
18
+
19
+ For each phase without explicit `files_modified`, analyze the scope/goal description to infer which files will likely be modified. Use these heuristics:
20
+
21
+ - **Database/schema phases** → migration files, schema definitions, model files
22
+ - **API/backend phases** → route files, controller files, service files, handler files
23
+ - **Frontend/UI phases** → component files, page files, style files
24
+ - **Auth phases** → middleware files, auth route files, session/token files
25
+ - **Config/infra phases** → config files, environment files, CI/CD files
26
+ - **Test phases** → test files, spec files, fixture files
27
+ - **Shared utility phases** → lib/utils files, shared type definitions
28
+
29
+ Group phases by their inferred file domain (database, API, frontend, auth, config, shared).
30
+
31
+ ## 3. Detect Dependency Relationships
32
+
33
+ For each pair of phases (A, B), check for dependency signals:
34
+
35
+ ### File Overlap Detection
36
+ If phases A and B will both modify files in the same domain or the same specific files, one must run before the other. The phase that *provides* the foundation runs first.
37
+
38
+ ### Semantic Dependency Detection
39
+ Read each phase's scope/goal for these patterns:
40
+ - Phase B mentions consuming, using, or calling something that Phase A creates/implements
41
+ - Phase B references an "API", "schema", "model", "endpoint", or "interface" that Phase A builds
42
+ - Phase B says "after X is complete", "once X is built", "using the X from Phase N"
43
+ - Phase B extends or modifies code that Phase A establishes
44
+
45
+ ### Data Flow Detection
46
+ - Phase A creates data structures, schemas, or types → Phase B consumes or transforms them
47
+ - Phase A seeds/migrates the database → Phase B reads from that database
48
+ - Phase A exposes an API contract → Phase B implements the client for that contract
49
+
50
+ ## 4. Build Dependency Table
51
+
52
+ Output a dependency suggestion table:
53
+
54
+ ```
55
+ Phase Dependency Analysis
56
+ =========================
57
+
58
+ Phase N: <name>
59
+ Scope: <brief scope>
60
+ Likely touches: <inferred file domains>
61
+
62
+ Suggested dependencies:
63
+ → Depends on: <Phase M> — reason: <overlap/semantic/data-flow explanation>
64
+
65
+ Current "Depends on": <existing value or "(none)">
66
+ ```
67
+
68
+ For phase pairs with no detected dependency, state: "No dependency detected between Phase X and Phase Y."
69
+
70
+ ## 5. Summarize Suggested Changes
71
+
72
+ Show a consolidated diff of proposed ROADMAP.md `Depends on` changes:
73
+
74
+ ```
75
+ Suggested ROADMAP.md updates:
76
+ Phase 3: add "Depends on: 1, 2" (file overlap: database schema)
77
+ Phase 5: add "Depends on: 3" (semantic: uses auth API from Phase 3)
78
+ Phase 4: no change needed (independent scope)
79
+ ```
80
+
81
+ ## 6. Confirm and Apply
82
+
83
+ Ask the user: "Apply these `Depends on` suggestions to ROADMAP.md? (yes / no / edit)"
84
+
85
+ - **yes** — Write all suggested `Depends on` entries to ROADMAP.md. Confirm each write.
86
+ - **no** — Print the suggestions as text only. User updates manually.
87
+ - **edit** — Present each suggestion individually with yes/no/skip per suggestion.
88
+
89
+ When writing to ROADMAP.md:
90
+ - Locate the phase entry and add or update the `Depends on:` field
91
+ - Preserve all other phase content unchanged
92
+ - Do not reorder phases
93
+
94
+ After applying: "ROADMAP.md updated. Run `/gsd:manager` to execute phases in the correct order."
95
+
96
+ </process>