@opengsd/gsd-core 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. package/README.ja-JP.md +46 -791
  2. package/README.ko-KR.md +44 -780
  3. package/README.md +42 -218
  4. package/README.pt-BR.md +47 -414
  5. package/README.zh-CN.md +46 -763
  6. package/agents/gsd-ai-researcher.md +2 -2
  7. package/agents/gsd-debug-session-manager.md +1 -1
  8. package/agents/gsd-debugger.md +8 -8
  9. package/agents/gsd-doc-writer.md +7 -6
  10. package/agents/gsd-domain-researcher.md +15 -2
  11. package/agents/gsd-eval-auditor.md +1 -1
  12. package/agents/gsd-eval-planner.md +2 -2
  13. package/agents/gsd-executor.md +21 -8
  14. package/agents/gsd-framework-selector.md +1 -1
  15. package/agents/gsd-intel-updater.md +4 -4
  16. package/agents/gsd-phase-researcher.md +19 -6
  17. package/agents/gsd-plan-checker.md +3 -3
  18. package/agents/gsd-planner.md +36 -23
  19. package/agents/gsd-project-researcher.md +13 -0
  20. package/agents/gsd-research-synthesizer.md +6 -2
  21. package/agents/gsd-roadmapper.md +6 -6
  22. package/agents/gsd-ui-researcher.md +16 -3
  23. package/agents/gsd-user-profiler.md +2 -2
  24. package/agents/gsd-verifier.md +8 -8
  25. package/assets/gsd-logo-2000-transparent.png +0 -0
  26. package/assets/gsd-logo-2000-transparent.svg +17 -0
  27. package/assets/gsd-logo-2000.png +0 -0
  28. package/assets/gsd-logo-2000.svg +21 -0
  29. package/assets/terminal.svg +68 -0
  30. package/bin/install.js +255 -103
  31. package/commands/gsd/add-tests.md +1 -1
  32. package/commands/gsd/ai-integration-phase.md +3 -3
  33. package/commands/gsd/audit-fix.md +1 -1
  34. package/commands/gsd/audit-milestone.md +1 -1
  35. package/commands/gsd/audit-uat.md +1 -1
  36. package/commands/gsd/autonomous.md +2 -2
  37. package/commands/gsd/capture.md +6 -6
  38. package/commands/gsd/cleanup.md +1 -1
  39. package/commands/gsd/code-review.md +1 -1
  40. package/commands/gsd/complete-milestone.md +2 -2
  41. package/commands/gsd/config.md +3 -3
  42. package/commands/gsd/debug.md +1 -1
  43. package/commands/gsd/discuss-phase.md +5 -4
  44. package/commands/gsd/docs-update.md +1 -1
  45. package/commands/gsd/eval-review.md +2 -2
  46. package/commands/gsd/execute-phase.md +2 -2
  47. package/commands/gsd/explore.md +1 -1
  48. package/commands/gsd/extract-learnings.md +2 -2
  49. package/commands/gsd/fast.md +1 -1
  50. package/commands/gsd/forensics.md +1 -1
  51. package/commands/gsd/graphify.md +9 -9
  52. package/commands/gsd/health.md +1 -1
  53. package/commands/gsd/help.md +2 -2
  54. package/commands/gsd/import.md +5 -5
  55. package/commands/gsd/inbox.md +1 -1
  56. package/commands/gsd/ingest-docs.md +4 -4
  57. package/commands/gsd/manager.md +3 -3
  58. package/commands/gsd/map-codebase.md +1 -1
  59. package/commands/gsd/milestone-summary.md +1 -1
  60. package/commands/gsd/mvp-phase.md +4 -4
  61. package/commands/gsd/new-milestone.md +5 -5
  62. package/commands/gsd/new-project.md +5 -5
  63. package/commands/gsd/pause-work.md +2 -2
  64. package/commands/gsd/phase.md +4 -4
  65. package/commands/gsd/plan-phase.md +2 -2
  66. package/commands/gsd/plan-review-convergence.md +4 -4
  67. package/commands/gsd/pr-branch.md +1 -1
  68. package/commands/gsd/profile-user.md +2 -2
  69. package/commands/gsd/progress.md +4 -4
  70. package/commands/gsd/quick.md +1 -1
  71. package/commands/gsd/resume-work.md +1 -1
  72. package/commands/gsd/review.md +3 -2
  73. package/commands/gsd/secure-phase.md +1 -1
  74. package/commands/gsd/settings.md +1 -1
  75. package/commands/gsd/ship.md +2 -2
  76. package/commands/gsd/sketch.md +7 -7
  77. package/commands/gsd/spec-phase.md +2 -2
  78. package/commands/gsd/spike.md +3 -3
  79. package/commands/gsd/stats.md +1 -1
  80. package/commands/gsd/surface.md +4 -4
  81. package/commands/gsd/thread.md +1 -1
  82. package/commands/gsd/ui-phase.md +2 -2
  83. package/commands/gsd/ui-review.md +2 -2
  84. package/commands/gsd/ultraplan-phase.md +2 -2
  85. package/commands/gsd/undo.md +3 -3
  86. package/commands/gsd/update.md +3 -3
  87. package/commands/gsd/validate-phase.md +1 -1
  88. package/commands/gsd/verify-work.md +2 -2
  89. package/commands/gsd/workspace.md +4 -4
  90. package/{get-shit-done → gsd-core}/bin/check-latest-version.cjs +1 -1
  91. package/{get-shit-done → gsd-core}/bin/gsd-tools.cjs +50 -4
  92. package/gsd-core/bin/lib/active-workstream-store.cjs +291 -0
  93. package/gsd-core/bin/lib/adr-parser.cjs +399 -0
  94. package/gsd-core/bin/lib/agent-command-router.cjs +68 -0
  95. package/gsd-core/bin/lib/artifacts.cjs +51 -0
  96. package/gsd-core/bin/lib/audit.cjs +743 -0
  97. package/gsd-core/bin/lib/check-command-router.cjs +342 -0
  98. package/gsd-core/bin/lib/cjs-command-router-adapter.cjs +81 -0
  99. package/gsd-core/bin/lib/clock.cjs +95 -0
  100. package/gsd-core/bin/lib/clusters.cjs +128 -0
  101. package/gsd-core/bin/lib/code-review-flags.cjs +59 -0
  102. package/gsd-core/bin/lib/command-aliases.cjs +809 -0
  103. package/gsd-core/bin/lib/command-arg-projection.cjs +55 -0
  104. package/gsd-core/bin/lib/command-routing-hub.cjs +300 -0
  105. package/gsd-core/bin/lib/commands.cjs +1202 -0
  106. package/gsd-core/bin/lib/config-schema.cjs +29 -0
  107. package/gsd-core/bin/lib/config-types.cjs +19 -0
  108. package/gsd-core/bin/lib/config.cjs +714 -0
  109. package/{get-shit-done → gsd-core}/bin/lib/configuration.cjs +76 -85
  110. package/gsd-core/bin/lib/context-utilization.cjs +48 -0
  111. package/gsd-core/bin/lib/core.cjs +2007 -0
  112. package/{get-shit-done → gsd-core}/bin/lib/decisions.cjs +9 -7
  113. package/gsd-core/bin/lib/docs.cjs +252 -0
  114. package/gsd-core/bin/lib/drift.cjs +364 -0
  115. package/gsd-core/bin/lib/fallow-runner.cjs +115 -0
  116. package/gsd-core/bin/lib/frontmatter.cjs +442 -0
  117. package/gsd-core/bin/lib/gap-checker.cjs +257 -0
  118. package/gsd-core/bin/lib/graphify.cjs +496 -0
  119. package/gsd-core/bin/lib/gsd2-import.cjs +456 -0
  120. package/gsd-core/bin/lib/init-command-router.cjs +62 -0
  121. package/gsd-core/bin/lib/init.cjs +1799 -0
  122. package/gsd-core/bin/lib/install-profiles.cjs +526 -0
  123. package/gsd-core/bin/lib/installer-migration-authoring.cjs +122 -0
  124. package/gsd-core/bin/lib/installer-migration-report.cjs +347 -0
  125. package/gsd-core/bin/lib/installer-migrations/000-first-time-baseline.cjs +218 -0
  126. package/gsd-core/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +48 -0
  127. package/gsd-core/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +94 -0
  128. package/gsd-core/bin/lib/installer-migrations/003-rename-get-shit-done-to-gsd-core.cjs +108 -0
  129. package/gsd-core/bin/lib/installer-migrations.cjs +784 -0
  130. package/gsd-core/bin/lib/intel.cjs +607 -0
  131. package/gsd-core/bin/lib/learnings.cjs +270 -0
  132. package/gsd-core/bin/lib/legacy-cleanup.cjs +253 -0
  133. package/gsd-core/bin/lib/milestone.cjs +373 -0
  134. package/gsd-core/bin/lib/model-catalog.cjs +154 -0
  135. package/gsd-core/bin/lib/model-profiles.cjs +24 -0
  136. package/gsd-core/bin/lib/observability/event.cjs +51 -0
  137. package/gsd-core/bin/lib/observability/logger.cjs +146 -0
  138. package/{get-shit-done → gsd-core}/bin/lib/observability/redaction.cjs +19 -21
  139. package/{get-shit-done → gsd-core}/bin/lib/package-identity.cjs +5 -1
  140. package/gsd-core/bin/lib/phase-command-router.cjs +189 -0
  141. package/gsd-core/bin/lib/phase-lifecycle.cjs +74 -0
  142. package/gsd-core/bin/lib/phase.cjs +1307 -0
  143. package/gsd-core/bin/lib/phases-command-router.cjs +43 -0
  144. package/{get-shit-done → gsd-core}/bin/lib/plan-scan.cjs +18 -24
  145. package/gsd-core/bin/lib/planning-workspace.cjs +245 -0
  146. package/gsd-core/bin/lib/profile-output.cjs +1120 -0
  147. package/gsd-core/bin/lib/profile-pipeline.cjs +517 -0
  148. package/gsd-core/bin/lib/project-root.cjs +119 -0
  149. package/gsd-core/bin/lib/prompt-budget.cjs +305 -0
  150. package/gsd-core/bin/lib/review-reviewer-selection.cjs +121 -0
  151. package/gsd-core/bin/lib/roadmap-command-router.cjs +166 -0
  152. package/gsd-core/bin/lib/roadmap-upgrade.cjs +491 -0
  153. package/gsd-core/bin/lib/roadmap.cjs +600 -0
  154. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +254 -0
  155. package/gsd-core/bin/lib/runtime-homes.cjs +169 -0
  156. package/gsd-core/bin/lib/runtime-name-policy.cjs +96 -0
  157. package/gsd-core/bin/lib/runtime-slash.cjs +119 -0
  158. package/{get-shit-done → gsd-core}/bin/lib/schema-detect.cjs +20 -26
  159. package/gsd-core/bin/lib/secrets.cjs +34 -0
  160. package/gsd-core/bin/lib/security.cjs +407 -0
  161. package/gsd-core/bin/lib/semver-compare.cjs +42 -0
  162. package/gsd-core/bin/lib/shell-command-projection.cjs +524 -0
  163. package/gsd-core/bin/lib/state-command-router.cjs +160 -0
  164. package/{get-shit-done → gsd-core}/bin/lib/state-document.cjs +78 -82
  165. package/gsd-core/bin/lib/state.cjs +2010 -0
  166. package/gsd-core/bin/lib/surface.cjs +406 -0
  167. package/gsd-core/bin/lib/task-command-router.cjs +85 -0
  168. package/gsd-core/bin/lib/template.cjs +237 -0
  169. package/gsd-core/bin/lib/uat.cjs +297 -0
  170. package/gsd-core/bin/lib/ui-safety-gate.cjs +98 -0
  171. package/gsd-core/bin/lib/update-context.cjs +218 -0
  172. package/gsd-core/bin/lib/validate-command-router.cjs +91 -0
  173. package/gsd-core/bin/lib/validate.cjs +112 -0
  174. package/gsd-core/bin/lib/verify-command-router.cjs +44 -0
  175. package/gsd-core/bin/lib/verify.cjs +1451 -0
  176. package/{get-shit-done → gsd-core}/bin/lib/workstream-inventory-builder.cjs +19 -12
  177. package/gsd-core/bin/lib/workstream-inventory.cjs +147 -0
  178. package/{get-shit-done → gsd-core}/bin/lib/workstream-name-policy.cjs +28 -31
  179. package/gsd-core/bin/lib/workstream.cjs +380 -0
  180. package/gsd-core/bin/lib/worktree-safety.cjs +912 -0
  181. package/{get-shit-done → gsd-core}/bin/shared/config-defaults.manifest.json +1 -0
  182. package/{get-shit-done → gsd-core}/bin/shared/config-schema.manifest.json +17 -1
  183. package/{get-shit-done → gsd-core}/bin/shared/model-catalog.json +27 -0
  184. package/{get-shit-done → gsd-core}/references/artifact-types.md +1 -1
  185. package/{get-shit-done → gsd-core}/references/checkpoints.md +1 -1
  186. package/{get-shit-done → gsd-core}/references/few-shot-examples/plan-checker.md +2 -2
  187. package/{get-shit-done → gsd-core}/references/few-shot-examples/verifier.md +12 -12
  188. package/{get-shit-done → gsd-core}/references/model-profile-resolution.md +1 -1
  189. package/{get-shit-done → gsd-core}/references/mvp-concepts.md +1 -1
  190. package/{get-shit-done → gsd-core}/references/planner-graphify-auto-update.md +2 -2
  191. package/{get-shit-done → gsd-core}/references/planner-human-verify-mode.md +1 -1
  192. package/{get-shit-done → gsd-core}/references/planner-mvp-mode.md +1 -1
  193. package/{get-shit-done → gsd-core}/references/ui-brand.md +4 -2
  194. package/{get-shit-done → gsd-core}/references/verification-patterns.md +1 -1
  195. package/gsd-core/references/worktree-branch-check.md +38 -0
  196. package/{get-shit-done → gsd-core}/references/worktree-path-safety.md +4 -26
  197. package/{get-shit-done → gsd-core}/templates/README.md +2 -2
  198. package/{get-shit-done → gsd-core}/templates/codebase/structure.md +10 -10
  199. package/{get-shit-done → gsd-core}/templates/copilot-instructions.md +1 -1
  200. package/{get-shit-done → gsd-core}/templates/phase-prompt.md +10 -10
  201. package/gsd-core/workflows/_runtime-launcher.snippet.sh +1 -0
  202. package/{get-shit-done → gsd-core}/workflows/add-backlog.md +1 -1
  203. package/{get-shit-done → gsd-core}/workflows/add-phase.md +1 -1
  204. package/{get-shit-done → gsd-core}/workflows/add-tests.md +1 -1
  205. package/{get-shit-done → gsd-core}/workflows/add-todo.md +1 -1
  206. package/{get-shit-done → gsd-core}/workflows/ai-integration-phase.md +4 -4
  207. package/{get-shit-done → gsd-core}/workflows/audit-fix.md +2 -2
  208. package/{get-shit-done → gsd-core}/workflows/audit-milestone.md +3 -1
  209. package/{get-shit-done → gsd-core}/workflows/audit-uat.md +1 -1
  210. package/{get-shit-done → gsd-core}/workflows/autonomous.md +10 -8
  211. package/{get-shit-done → gsd-core}/workflows/check-todos.md +1 -1
  212. package/{get-shit-done → gsd-core}/workflows/cleanup.md +44 -4
  213. package/{get-shit-done → gsd-core}/workflows/code-review-fix.md +4 -4
  214. package/{get-shit-done → gsd-core}/workflows/code-review.md +6 -4
  215. package/{get-shit-done → gsd-core}/workflows/complete-milestone.md +2 -2
  216. package/{get-shit-done → gsd-core}/workflows/debug.md +7 -2
  217. package/{get-shit-done → gsd-core}/workflows/diagnose-issues.md +6 -2
  218. package/{get-shit-done → gsd-core}/workflows/discovery-phase.md +5 -5
  219. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/advisor.md +5 -5
  220. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/auto.md +1 -1
  221. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/chain.md +1 -1
  222. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/power.md +1 -1
  223. package/{get-shit-done → gsd-core}/workflows/discuss-phase-assumptions.md +4 -4
  224. package/{get-shit-done → gsd-core}/workflows/discuss-phase.md +6 -6
  225. package/{get-shit-done → gsd-core}/workflows/do.md +1 -1
  226. package/{get-shit-done → gsd-core}/workflows/docs-update.md +19 -5
  227. package/{get-shit-done → gsd-core}/workflows/edit-phase.md +1 -1
  228. package/{get-shit-done → gsd-core}/workflows/eval-review.md +3 -3
  229. package/{get-shit-done → gsd-core}/workflows/execute-phase/steps/codebase-drift-gate.md +16 -3
  230. package/{get-shit-done → gsd-core}/workflows/execute-phase/steps/post-merge-gate.md +1 -1
  231. package/{get-shit-done → gsd-core}/workflows/execute-phase.md +89 -57
  232. package/{get-shit-done → gsd-core}/workflows/execute-plan.md +8 -8
  233. package/{get-shit-done → gsd-core}/workflows/explore.md +5 -3
  234. package/{get-shit-done → gsd-core}/workflows/extract-learnings.md +1 -1
  235. package/{get-shit-done → gsd-core}/workflows/forensics.md +1 -1
  236. package/{get-shit-done → gsd-core}/workflows/graduation.md +1 -1
  237. package/{get-shit-done → gsd-core}/workflows/health.md +1 -1
  238. package/{get-shit-done → gsd-core}/workflows/help/modes/default.md +3 -3
  239. package/{get-shit-done → gsd-core}/workflows/help/modes/full.md +6 -6
  240. package/{get-shit-done → gsd-core}/workflows/import.md +3 -1
  241. package/{get-shit-done → gsd-core}/workflows/ingest-docs.md +5 -5
  242. package/{get-shit-done → gsd-core}/workflows/insert-phase.md +1 -1
  243. package/{get-shit-done → gsd-core}/workflows/list-workspaces.md +1 -1
  244. package/{get-shit-done → gsd-core}/workflows/manager.md +3 -3
  245. package/{get-shit-done → gsd-core}/workflows/map-codebase.md +3 -1
  246. package/{get-shit-done → gsd-core}/workflows/milestone-summary.md +1 -1
  247. package/{get-shit-done → gsd-core}/workflows/mvp-phase.md +7 -7
  248. package/{get-shit-done → gsd-core}/workflows/new-milestone.md +5 -5
  249. package/{get-shit-done → gsd-core}/workflows/new-project.md +8 -8
  250. package/{get-shit-done → gsd-core}/workflows/new-workspace.md +1 -1
  251. package/{get-shit-done → gsd-core}/workflows/next.md +1 -1
  252. package/{get-shit-done → gsd-core}/workflows/pause-work.md +1 -1
  253. package/{get-shit-done → gsd-core}/workflows/plan-milestone-gaps.md +1 -1
  254. package/{get-shit-done → gsd-core}/workflows/plan-phase.md +29 -28
  255. package/{get-shit-done → gsd-core}/workflows/plan-review-convergence.md +10 -10
  256. package/{get-shit-done → gsd-core}/workflows/plant-seed.md +1 -1
  257. package/{get-shit-done → gsd-core}/workflows/profile-user.md +11 -11
  258. package/{get-shit-done → gsd-core}/workflows/progress.md +1 -1
  259. package/{get-shit-done → gsd-core}/workflows/quick.md +7 -29
  260. package/{get-shit-done → gsd-core}/workflows/reapply-patches.md +2 -2
  261. package/{get-shit-done → gsd-core}/workflows/remove-phase.md +1 -1
  262. package/{get-shit-done → gsd-core}/workflows/remove-workspace.md +1 -1
  263. package/{get-shit-done → gsd-core}/workflows/resume-project.md +2 -2
  264. package/{get-shit-done → gsd-core}/workflows/review.md +110 -2
  265. package/{get-shit-done → gsd-core}/workflows/scan.md +3 -1
  266. package/{get-shit-done → gsd-core}/workflows/secure-phase.md +5 -3
  267. package/{get-shit-done → gsd-core}/workflows/settings-advanced.md +196 -6
  268. package/{get-shit-done → gsd-core}/workflows/settings-integrations.md +2 -2
  269. package/{get-shit-done → gsd-core}/workflows/settings.md +16 -2
  270. package/{get-shit-done → gsd-core}/workflows/ship.md +56 -4
  271. package/{get-shit-done → gsd-core}/workflows/sketch-wrap-up.md +1 -1
  272. package/{get-shit-done → gsd-core}/workflows/sketch.md +5 -5
  273. package/{get-shit-done → gsd-core}/workflows/spec-phase.md +2 -2
  274. package/{get-shit-done → gsd-core}/workflows/spike-wrap-up.md +1 -1
  275. package/{get-shit-done → gsd-core}/workflows/spike.md +1 -1
  276. package/{get-shit-done → gsd-core}/workflows/stats.md +1 -1
  277. package/{get-shit-done → gsd-core}/workflows/sync-skills.md +3 -3
  278. package/{get-shit-done → gsd-core}/workflows/thread.md +1 -1
  279. package/{get-shit-done → gsd-core}/workflows/transition.md +2 -2
  280. package/{get-shit-done → gsd-core}/workflows/ui-phase.md +5 -5
  281. package/{get-shit-done → gsd-core}/workflows/ui-review.md +3 -3
  282. package/{get-shit-done → gsd-core}/workflows/ultraplan-phase.md +1 -1
  283. package/{get-shit-done → gsd-core}/workflows/undo.md +2 -2
  284. package/{get-shit-done → gsd-core}/workflows/update.md +41 -16
  285. package/{get-shit-done → gsd-core}/workflows/validate-phase.md +5 -3
  286. package/{get-shit-done → gsd-core}/workflows/verify-phase.md +4 -4
  287. package/{get-shit-done → gsd-core}/workflows/verify-work.md +7 -7
  288. package/hooks/dist/gsd-check-update-worker.js +16 -3
  289. package/hooks/dist/gsd-check-update.js +7 -5
  290. package/hooks/dist/gsd-context-monitor.js +2 -2
  291. package/hooks/dist/gsd-statusline.js +39 -21
  292. package/hooks/dist/gsd-update-banner.js +6 -2
  293. package/hooks/dist/gsd-worktree-path-guard.js +169 -0
  294. package/hooks/dist/managed-hooks-registry.cjs +35 -0
  295. package/hooks/gsd-check-update-worker.js +16 -3
  296. package/hooks/gsd-check-update.js +7 -5
  297. package/hooks/gsd-context-monitor.js +2 -2
  298. package/hooks/gsd-statusline.js +39 -21
  299. package/hooks/gsd-update-banner.js +6 -2
  300. package/hooks/gsd-worktree-path-guard.js +169 -0
  301. package/hooks/managed-hooks-registry.cjs +1 -0
  302. package/package.json +17 -11
  303. package/scripts/affected-tests-lib.cjs +1 -1
  304. package/scripts/base64-scan.sh +12 -0
  305. package/scripts/build-hooks.js +5 -1
  306. package/scripts/changeset/cli.cjs +2 -2
  307. package/scripts/changeset/github-release-notes.cjs +1 -1
  308. package/scripts/changeset/lint.cjs +1 -1
  309. package/scripts/check-alias-drift.cjs +8 -8
  310. package/scripts/check-env.cjs +5 -1
  311. package/scripts/ci-test-scope.cjs +34 -9
  312. package/scripts/command-contract-helpers.cjs +1 -1
  313. package/scripts/fix-slash-commands.cjs +5 -5
  314. package/scripts/gen-inventory-manifest.cjs +3 -3
  315. package/scripts/generate-package-identity.cjs +28 -7
  316. package/scripts/lib/allowlist-ratchet.cjs +136 -0
  317. package/scripts/lint-command-contract.cjs +1 -1
  318. package/scripts/lint-legacy-dir-name.cjs +156 -0
  319. package/scripts/lint-package-identity-drift.cjs +8 -8
  320. package/scripts/lint-pr-check-project-dir.cjs +0 -1
  321. package/scripts/lint-shell-command-projection-drift.cjs +1 -1
  322. package/scripts/lint-skill-deps.cjs +1 -1
  323. package/scripts/lint-test-file-count.allowlist.json +129 -32
  324. package/scripts/lint-test-file-count.cjs +85 -30
  325. package/scripts/mutation-matrix.cjs +219 -0
  326. package/scripts/prompt-injection-scan.sh +5 -1
  327. package/scripts/release-notes/format-github-release-notes.cjs +256 -0
  328. package/scripts/release-tarball-smoke.cjs +9 -9
  329. package/scripts/run-tests.cjs +34 -2
  330. package/scripts/strip-prose-atrefs.cjs +2 -2
  331. package/scripts/sync-runtime-launcher.cjs +2 -2
  332. package/scripts/verify-npm-publish.cjs +252 -0
  333. package/get-shit-done/bin/lib/active-workstream-store.cjs +0 -302
  334. package/get-shit-done/bin/lib/adr-parser.cjs +0 -394
  335. package/get-shit-done/bin/lib/agent-command-router.cjs +0 -65
  336. package/get-shit-done/bin/lib/artifacts.cjs +0 -53
  337. package/get-shit-done/bin/lib/audit.cjs +0 -755
  338. package/get-shit-done/bin/lib/check-command-router.cjs +0 -333
  339. package/get-shit-done/bin/lib/cjs-command-router-adapter.cjs +0 -118
  340. package/get-shit-done/bin/lib/clock.cjs +0 -96
  341. package/get-shit-done/bin/lib/clusters.cjs +0 -135
  342. package/get-shit-done/bin/lib/code-review-flags.cjs +0 -74
  343. package/get-shit-done/bin/lib/command-aliases.cjs +0 -815
  344. package/get-shit-done/bin/lib/command-arg-projection.cjs +0 -62
  345. package/get-shit-done/bin/lib/command-routing-hub.cjs +0 -388
  346. package/get-shit-done/bin/lib/commands.cjs +0 -1188
  347. package/get-shit-done/bin/lib/config-schema.cjs +0 -31
  348. package/get-shit-done/bin/lib/config.cjs +0 -728
  349. package/get-shit-done/bin/lib/context-utilization.cjs +0 -47
  350. package/get-shit-done/bin/lib/core.cjs +0 -2121
  351. package/get-shit-done/bin/lib/docs.cjs +0 -270
  352. package/get-shit-done/bin/lib/drift.cjs +0 -388
  353. package/get-shit-done/bin/lib/fallow-runner.cjs +0 -109
  354. package/get-shit-done/bin/lib/frontmatter.cjs +0 -389
  355. package/get-shit-done/bin/lib/gap-checker.cjs +0 -205
  356. package/get-shit-done/bin/lib/graphify.cjs +0 -592
  357. package/get-shit-done/bin/lib/gsd2-import.cjs +0 -514
  358. package/get-shit-done/bin/lib/init-command-router.cjs +0 -58
  359. package/get-shit-done/bin/lib/init.cjs +0 -2112
  360. package/get-shit-done/bin/lib/install-profiles.cjs +0 -603
  361. package/get-shit-done/bin/lib/installer-migration-authoring.cjs +0 -117
  362. package/get-shit-done/bin/lib/installer-migration-report.cjs +0 -354
  363. package/get-shit-done/bin/lib/installer-migrations/000-first-time-baseline.cjs +0 -220
  364. package/get-shit-done/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +0 -41
  365. package/get-shit-done/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +0 -80
  366. package/get-shit-done/bin/lib/installer-migrations.cjs +0 -778
  367. package/get-shit-done/bin/lib/intel.cjs +0 -708
  368. package/get-shit-done/bin/lib/learnings.cjs +0 -421
  369. package/get-shit-done/bin/lib/milestone.cjs +0 -314
  370. package/get-shit-done/bin/lib/model-catalog.cjs +0 -212
  371. package/get-shit-done/bin/lib/model-profiles.cjs +0 -31
  372. package/get-shit-done/bin/lib/observability/event.cjs +0 -82
  373. package/get-shit-done/bin/lib/observability/logger.cjs +0 -174
  374. package/get-shit-done/bin/lib/phase-command-router.cjs +0 -191
  375. package/get-shit-done/bin/lib/phase-lifecycle.cjs +0 -80
  376. package/get-shit-done/bin/lib/phase.cjs +0 -1607
  377. package/get-shit-done/bin/lib/phases-command-router.cjs +0 -39
  378. package/get-shit-done/bin/lib/planning-workspace.cjs +0 -238
  379. package/get-shit-done/bin/lib/profile-output.cjs +0 -1141
  380. package/get-shit-done/bin/lib/profile-pipeline.cjs +0 -539
  381. package/get-shit-done/bin/lib/project-root.cjs +0 -112
  382. package/get-shit-done/bin/lib/prompt-budget.cjs +0 -399
  383. package/get-shit-done/bin/lib/review-reviewer-selection.cjs +0 -125
  384. package/get-shit-done/bin/lib/roadmap-command-router.cjs +0 -28
  385. package/get-shit-done/bin/lib/roadmap.cjs +0 -650
  386. package/get-shit-done/bin/lib/runtime-artifact-layout.cjs +0 -301
  387. package/get-shit-done/bin/lib/runtime-homes.cjs +0 -222
  388. package/get-shit-done/bin/lib/runtime-name-policy.cjs +0 -83
  389. package/get-shit-done/bin/lib/runtime-slash.cjs +0 -112
  390. package/get-shit-done/bin/lib/secrets.cjs +0 -32
  391. package/get-shit-done/bin/lib/security.cjs +0 -600
  392. package/get-shit-done/bin/lib/semver-compare.cjs +0 -35
  393. package/get-shit-done/bin/lib/shell-command-projection.cjs +0 -500
  394. package/get-shit-done/bin/lib/state-command-router.cjs +0 -252
  395. package/get-shit-done/bin/lib/state.cjs +0 -2038
  396. package/get-shit-done/bin/lib/surface.cjs +0 -470
  397. package/get-shit-done/bin/lib/task-command-router.cjs +0 -81
  398. package/get-shit-done/bin/lib/template.cjs +0 -228
  399. package/get-shit-done/bin/lib/uat.cjs +0 -289
  400. package/get-shit-done/bin/lib/update-context.cjs +0 -209
  401. package/get-shit-done/bin/lib/validate-command-router.cjs +0 -83
  402. package/get-shit-done/bin/lib/validate.cjs +0 -92
  403. package/get-shit-done/bin/lib/verify-command-router.cjs +0 -40
  404. package/get-shit-done/bin/lib/verify.cjs +0 -1511
  405. package/get-shit-done/bin/lib/workstream-inventory.cjs +0 -146
  406. package/get-shit-done/bin/lib/workstream.cjs +0 -389
  407. package/get-shit-done/bin/lib/worktree-safety.cjs +0 -985
  408. package/get-shit-done/workflows/_runtime-launcher.snippet.sh +0 -1
  409. package/scripts/lint-no-source-grep-extras.cjs +0 -81
  410. package/scripts/lint-no-source-grep.cjs +0 -174
  411. package/scripts/lint-shared-module-handsync.cjs +0 -388
  412. package/scripts/shared-module-handsync-allowlist.json +0 -183
  413. /package/{get-shit-done → gsd-core}/bin/shared/runtime-aliases.manifest.json +0 -0
  414. /package/{get-shit-done → gsd-core}/bin/verify-reapply-patches.cjs +0 -0
  415. /package/{get-shit-done → gsd-core}/contexts/dev.md +0 -0
  416. /package/{get-shit-done → gsd-core}/contexts/research.md +0 -0
  417. /package/{get-shit-done → gsd-core}/contexts/review.md +0 -0
  418. /package/{get-shit-done → gsd-core}/references/agent-contracts.md +0 -0
  419. /package/{get-shit-done → gsd-core}/references/ai-evals.md +0 -0
  420. /package/{get-shit-done → gsd-core}/references/ai-frameworks.md +0 -0
  421. /package/{get-shit-done → gsd-core}/references/autonomous-smart-discuss.md +0 -0
  422. /package/{get-shit-done → gsd-core}/references/common-bug-patterns.md +0 -0
  423. /package/{get-shit-done → gsd-core}/references/context-budget.md +0 -0
  424. /package/{get-shit-done → gsd-core}/references/continuation-format.md +0 -0
  425. /package/{get-shit-done → gsd-core}/references/debugger-philosophy.md +0 -0
  426. /package/{get-shit-done → gsd-core}/references/decimal-phase-calculation.md +0 -0
  427. /package/{get-shit-done → gsd-core}/references/doc-conflict-engine.md +0 -0
  428. /package/{get-shit-done → gsd-core}/references/domain-probes.md +0 -0
  429. /package/{get-shit-done → gsd-core}/references/execute-mvp-tdd.md +0 -0
  430. /package/{get-shit-done → gsd-core}/references/executor-examples.md +0 -0
  431. /package/{get-shit-done → gsd-core}/references/gate-prompts.md +0 -0
  432. /package/{get-shit-done → gsd-core}/references/gates.md +0 -0
  433. /package/{get-shit-done → gsd-core}/references/git-integration.md +0 -0
  434. /package/{get-shit-done → gsd-core}/references/git-planning-commit.md +0 -0
  435. /package/{get-shit-done → gsd-core}/references/ios-scaffold.md +0 -0
  436. /package/{get-shit-done → gsd-core}/references/mandatory-initial-read.md +0 -0
  437. /package/{get-shit-done → gsd-core}/references/model-profiles.md +0 -0
  438. /package/{get-shit-done → gsd-core}/references/phase-argument-parsing.md +0 -0
  439. /package/{get-shit-done → gsd-core}/references/planner-antipatterns.md +0 -0
  440. /package/{get-shit-done → gsd-core}/references/planner-chunked.md +0 -0
  441. /package/{get-shit-done → gsd-core}/references/planner-gap-closure.md +0 -0
  442. /package/{get-shit-done → gsd-core}/references/planner-interface-context.md +0 -0
  443. /package/{get-shit-done → gsd-core}/references/planner-reviews.md +0 -0
  444. /package/{get-shit-done → gsd-core}/references/planner-revision.md +0 -0
  445. /package/{get-shit-done → gsd-core}/references/planner-source-audit.md +0 -0
  446. /package/{get-shit-done → gsd-core}/references/planning-config.md +0 -0
  447. /package/{get-shit-done → gsd-core}/references/project-skills-discovery.md +0 -0
  448. /package/{get-shit-done → gsd-core}/references/questioning.md +0 -0
  449. /package/{get-shit-done → gsd-core}/references/revision-loop.md +0 -0
  450. /package/{get-shit-done → gsd-core}/references/scout-codebase.md +0 -0
  451. /package/{get-shit-done → gsd-core}/references/skeleton-template.md +0 -0
  452. /package/{get-shit-done → gsd-core}/references/sketch-interactivity.md +0 -0
  453. /package/{get-shit-done → gsd-core}/references/sketch-theme-system.md +0 -0
  454. /package/{get-shit-done → gsd-core}/references/sketch-tooling.md +0 -0
  455. /package/{get-shit-done → gsd-core}/references/sketch-variant-patterns.md +0 -0
  456. /package/{get-shit-done → gsd-core}/references/spidr-splitting.md +0 -0
  457. /package/{get-shit-done → gsd-core}/references/tdd.md +0 -0
  458. /package/{get-shit-done → gsd-core}/references/thinking-models-debug.md +0 -0
  459. /package/{get-shit-done → gsd-core}/references/thinking-models-execution.md +0 -0
  460. /package/{get-shit-done → gsd-core}/references/thinking-models-planning.md +0 -0
  461. /package/{get-shit-done → gsd-core}/references/thinking-models-research.md +0 -0
  462. /package/{get-shit-done → gsd-core}/references/thinking-models-verification.md +0 -0
  463. /package/{get-shit-done → gsd-core}/references/thinking-partner.md +0 -0
  464. /package/{get-shit-done → gsd-core}/references/universal-anti-patterns.md +0 -0
  465. /package/{get-shit-done → gsd-core}/references/user-profiling.md +0 -0
  466. /package/{get-shit-done → gsd-core}/references/user-story-template.md +0 -0
  467. /package/{get-shit-done → gsd-core}/references/verification-overrides.md +0 -0
  468. /package/{get-shit-done → gsd-core}/references/verify-mvp-mode.md +0 -0
  469. /package/{get-shit-done → gsd-core}/references/workstream-flag.md +0 -0
  470. /package/{get-shit-done → gsd-core}/templates/AI-SPEC.md +0 -0
  471. /package/{get-shit-done → gsd-core}/templates/DEBUG.md +0 -0
  472. /package/{get-shit-done → gsd-core}/templates/SECURITY.md +0 -0
  473. /package/{get-shit-done → gsd-core}/templates/UAT.md +0 -0
  474. /package/{get-shit-done → gsd-core}/templates/UI-SPEC.md +0 -0
  475. /package/{get-shit-done → gsd-core}/templates/VALIDATION.md +0 -0
  476. /package/{get-shit-done → gsd-core}/templates/claude-md.md +0 -0
  477. /package/{get-shit-done → gsd-core}/templates/codebase/architecture.md +0 -0
  478. /package/{get-shit-done → gsd-core}/templates/codebase/concerns.md +0 -0
  479. /package/{get-shit-done → gsd-core}/templates/codebase/conventions.md +0 -0
  480. /package/{get-shit-done → gsd-core}/templates/codebase/integrations.md +0 -0
  481. /package/{get-shit-done → gsd-core}/templates/codebase/stack.md +0 -0
  482. /package/{get-shit-done → gsd-core}/templates/codebase/testing.md +0 -0
  483. /package/{get-shit-done → gsd-core}/templates/config.json +0 -0
  484. /package/{get-shit-done → gsd-core}/templates/context.md +0 -0
  485. /package/{get-shit-done → gsd-core}/templates/continue-here.md +0 -0
  486. /package/{get-shit-done → gsd-core}/templates/debug-subagent-prompt.md +0 -0
  487. /package/{get-shit-done → gsd-core}/templates/dev-preferences.md +0 -0
  488. /package/{get-shit-done → gsd-core}/templates/discovery.md +0 -0
  489. /package/{get-shit-done → gsd-core}/templates/discussion-log.md +0 -0
  490. /package/{get-shit-done → gsd-core}/templates/milestone-archive.md +0 -0
  491. /package/{get-shit-done → gsd-core}/templates/milestone.md +0 -0
  492. /package/{get-shit-done → gsd-core}/templates/planner-subagent-prompt.md +0 -0
  493. /package/{get-shit-done → gsd-core}/templates/project.md +0 -0
  494. /package/{get-shit-done → gsd-core}/templates/requirements.md +0 -0
  495. /package/{get-shit-done → gsd-core}/templates/research-project/ARCHITECTURE.md +0 -0
  496. /package/{get-shit-done → gsd-core}/templates/research-project/FEATURES.md +0 -0
  497. /package/{get-shit-done → gsd-core}/templates/research-project/PITFALLS.md +0 -0
  498. /package/{get-shit-done → gsd-core}/templates/research-project/STACK.md +0 -0
  499. /package/{get-shit-done → gsd-core}/templates/research-project/SUMMARY.md +0 -0
  500. /package/{get-shit-done → gsd-core}/templates/research.md +0 -0
  501. /package/{get-shit-done → gsd-core}/templates/retrospective.md +0 -0
  502. /package/{get-shit-done → gsd-core}/templates/roadmap.md +0 -0
  503. /package/{get-shit-done → gsd-core}/templates/spec.md +0 -0
  504. /package/{get-shit-done → gsd-core}/templates/state.md +0 -0
  505. /package/{get-shit-done → gsd-core}/templates/summary-complex.md +0 -0
  506. /package/{get-shit-done → gsd-core}/templates/summary-minimal.md +0 -0
  507. /package/{get-shit-done → gsd-core}/templates/summary-standard.md +0 -0
  508. /package/{get-shit-done → gsd-core}/templates/summary.md +0 -0
  509. /package/{get-shit-done → gsd-core}/templates/user-profile.md +0 -0
  510. /package/{get-shit-done → gsd-core}/templates/user-setup.md +0 -0
  511. /package/{get-shit-done → gsd-core}/templates/verification-report.md +0 -0
  512. /package/{get-shit-done → gsd-core}/workflows/analyze-dependencies.md +0 -0
  513. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/all.md +0 -0
  514. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/analyze.md +0 -0
  515. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/batch.md +0 -0
  516. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/default.md +0 -0
  517. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/text.md +0 -0
  518. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/templates/checkpoint.json +0 -0
  519. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/templates/context.md +0 -0
  520. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/templates/discussion-log.md +0 -0
  521. /package/{get-shit-done → gsd-core}/workflows/discuss-phase-power.md +0 -0
  522. /package/{get-shit-done → gsd-core}/workflows/execute-phase/steps/per-plan-worktree-gate.md +0 -0
  523. /package/{get-shit-done → gsd-core}/workflows/fast.md +0 -0
  524. /package/{get-shit-done → gsd-core}/workflows/help/modes/brief.md +0 -0
  525. /package/{get-shit-done → gsd-core}/workflows/help/modes/topic.md +0 -0
  526. /package/{get-shit-done → gsd-core}/workflows/help.md +0 -0
  527. /package/{get-shit-done → gsd-core}/workflows/inbox.md +0 -0
  528. /package/{get-shit-done → gsd-core}/workflows/list-phase-assumptions.md +0 -0
  529. /package/{get-shit-done → gsd-core}/workflows/node-repair.md +0 -0
  530. /package/{get-shit-done → gsd-core}/workflows/note.md +0 -0
  531. /package/{get-shit-done → gsd-core}/workflows/pr-branch.md +0 -0
  532. /package/{get-shit-done → gsd-core}/workflows/session-report.md +0 -0
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: gsd:review
3
3
  description: Request cross-AI peer review of phase plans from external AI CLIs
4
- argument-hint: "--phase N [--gemini] [--claude] [--codex] [--opencode] [--qwen] [--cursor] [--all]"
4
+ argument-hint: "--phase N [--gemini] [--claude] [--codex] [--opencode] [--qwen] [--cursor] [--agy] [--all]"
5
5
  allowed-tools:
6
6
  - Read
7
7
  - Write
@@ -20,7 +20,7 @@ planning via /gsd:plan-phase --reviews.
20
20
  </objective>
21
21
 
22
22
  <execution_context>
23
- @~/.claude/get-shit-done/workflows/review.md
23
+ @~/.claude/gsd-core/workflows/review.md
24
24
  </execution_context>
25
25
 
26
26
  <context>
@@ -33,6 +33,7 @@ Phase number: extracted from $ARGUMENTS (required)
33
33
  - `--opencode` — Include OpenCode review (uses model from user's OpenCode config)
34
34
  - `--qwen` — Include Qwen Code review (Alibaba Qwen models)
35
35
  - `--cursor` — Include Cursor agent review
36
+ - `--agy` / `--antigravity` — Include Antigravity CLI review
36
37
  - `--all` — Include all available CLIs
37
38
  </context>
38
39
 
@@ -23,7 +23,7 @@ Output: updated SECURITY.md.
23
23
  </objective>
24
24
 
25
25
  <execution_context>
26
- @~/.claude/get-shit-done/workflows/secure-phase.md
26
+ @~/.claude/gsd-core/workflows/secure-phase.md
27
27
  </execution_context>
28
28
 
29
29
  <context>
@@ -21,7 +21,7 @@ Routes to the settings workflow which handles:
21
21
  </objective>
22
22
 
23
23
  <execution_context>
24
- @~/.claude/get-shit-done/workflows/settings.md
24
+ @~/.claude/gsd-core/workflows/settings.md
25
25
  </execution_context>
26
26
 
27
27
  <process>
@@ -18,7 +18,7 @@ Closes the plan → execute → verify → ship loop.
18
18
  </objective>
19
19
 
20
20
  <execution_context>
21
- @~/.claude/get-shit-done/workflows/ship.md
21
+ @~/.claude/gsd-core/workflows/ship.md
22
22
  </execution_context>
23
23
 
24
- Execute the ship workflow from @~/.claude/get-shit-done/workflows/ship.md end-to-end.
24
+ Execute the ship workflow from @~/.claude/gsd-core/workflows/ship.md end-to-end.
@@ -30,13 +30,13 @@ Does not require prior new-project setup — auto-creates `.planning/sketches/`
30
30
  </objective>
31
31
 
32
32
  <execution_context>
33
- @~/.claude/get-shit-done/workflows/sketch.md
34
- @~/.claude/get-shit-done/workflows/sketch-wrap-up.md
35
- @~/.claude/get-shit-done/references/ui-brand.md
36
- @~/.claude/get-shit-done/references/sketch-theme-system.md
37
- @~/.claude/get-shit-done/references/sketch-interactivity.md
38
- @~/.claude/get-shit-done/references/sketch-tooling.md
39
- @~/.claude/get-shit-done/references/sketch-variant-patterns.md
33
+ @~/.claude/gsd-core/workflows/sketch.md
34
+ @~/.claude/gsd-core/workflows/sketch-wrap-up.md
35
+ @~/.claude/gsd-core/references/ui-brand.md
36
+ @~/.claude/gsd-core/references/sketch-theme-system.md
37
+ @~/.claude/gsd-core/references/sketch-interactivity.md
38
+ @~/.claude/gsd-core/references/sketch-tooling.md
39
+ @~/.claude/gsd-core/references/sketch-variant-patterns.md
40
40
  </execution_context>
41
41
 
42
42
  <runtime_note>
@@ -29,8 +29,8 @@ Clarify phase requirements through structured Socratic questioning with quantita
29
29
  </objective>
30
30
 
31
31
  <execution_context>
32
- @~/.claude/get-shit-done/workflows/spec-phase.md
33
- @~/.claude/get-shit-done/templates/spec.md
32
+ @~/.claude/gsd-core/workflows/spec-phase.md
33
+ @~/.claude/gsd-core/templates/spec.md
34
34
  </execution_context>
35
35
 
36
36
  <runtime_note>
@@ -30,9 +30,9 @@ Does not require prior new-project setup — auto-creates `.planning/spikes/` if
30
30
  </objective>
31
31
 
32
32
  <execution_context>
33
- @~/.claude/get-shit-done/workflows/spike.md
34
- @~/.claude/get-shit-done/workflows/spike-wrap-up.md
35
- @~/.claude/get-shit-done/references/ui-brand.md
33
+ @~/.claude/gsd-core/workflows/spike.md
34
+ @~/.claude/gsd-core/workflows/spike-wrap-up.md
35
+ @~/.claude/gsd-core/references/ui-brand.md
36
36
  </execution_context>
37
37
 
38
38
  <runtime_note>
@@ -11,7 +11,7 @@ Display comprehensive project statistics including phase progress, plan executio
11
11
  </objective>
12
12
 
13
13
  <execution_context>
14
- @~/.claude/get-shit-done/workflows/stats.md
14
+ @~/.claude/gsd-core/workflows/stats.md
15
15
  </execution_context>
16
16
 
17
17
  <process>
@@ -37,7 +37,7 @@ Parse the first token of $ARGUMENTS:
37
37
  ## list / status
38
38
 
39
39
  Call `listSurface(runtimeConfigDir, manifest, CLUSTERS)` from
40
- `get-shit-done/bin/lib/surface.cjs`. Display:
40
+ `gsd-core/bin/lib/surface.cjs`. Display:
41
41
 
42
42
  ```
43
43
  Enabled (N skills, ~T tokens):
@@ -144,12 +144,12 @@ All paths can be overridden by reading the `CLAUDE_CONFIG_DIR` env var if set.
144
144
 
145
145
  - Unknown cluster name → list valid cluster names, exit without writing.
146
146
  - Unknown profile name → list known profiles (`core`, `standard`, `full`), exit.
147
- - Missing `surface.cjs` → prompt: "Run `npm i -g get-shit-done` to reinstall GSD."
147
+ - Missing `surface.cjs` → prompt: "Run `npm i -g gsd-core` to reinstall GSD."
148
148
 
149
149
  <execution_context>
150
150
  Surface state file: `~/.claude/.gsd-surface.json`
151
151
  Install profile marker: `~/.claude/.gsd-profile`
152
152
  Skill dirs: `~/.claude/skills/gsd-*/`
153
- Engine module: `~/.claude/get-shit-done/bin/lib/surface.cjs`
154
- Cluster definitions: `~/.claude/get-shit-done/bin/lib/clusters.cjs`
153
+ Engine module: `~/.claude/gsd-core/bin/lib/surface.cjs`
154
+ Cluster definitions: `~/.claude/gsd-core/bin/lib/clusters.cjs`
155
155
  </execution_context>
@@ -16,7 +16,7 @@ doesn't belong to any specific phase.
16
16
  </objective>
17
17
 
18
18
  <execution_context>
19
- @~/.claude/get-shit-done/workflows/thread.md
19
+ @~/.claude/gsd-core/workflows/thread.md
20
20
  </execution_context>
21
21
 
22
22
  <process>
@@ -21,8 +21,8 @@ Flow: Validate → Research UI → Verify UI-SPEC → Done
21
21
  </objective>
22
22
 
23
23
  <execution_context>
24
- @~/.claude/get-shit-done/workflows/ui-phase.md
25
- @~/.claude/get-shit-done/references/ui-brand.md
24
+ @~/.claude/gsd-core/workflows/ui-phase.md
25
+ @~/.claude/gsd-core/references/ui-brand.md
26
26
  </execution_context>
27
27
 
28
28
  <context>
@@ -19,8 +19,8 @@ Output: {phase_num}-UI-REVIEW.md
19
19
  </objective>
20
20
 
21
21
  <execution_context>
22
- @~/.claude/get-shit-done/workflows/ui-review.md
23
- @~/.claude/get-shit-done/references/ui-brand.md
22
+ @~/.claude/gsd-core/workflows/ui-review.md
23
+ @~/.claude/gsd-core/references/ui-brand.md
24
24
  </execution_context>
25
25
 
26
26
  <context>
@@ -21,8 +21,8 @@ Requirements: Claude Code v2.1.91+, claude.ai account, GitHub repository.
21
21
  </objective>
22
22
 
23
23
  <execution_context>
24
- @~/.claude/get-shit-done/workflows/ultraplan-phase.md
25
- @~/.claude/get-shit-done/references/ui-brand.md
24
+ @~/.claude/gsd-core/workflows/ultraplan-phase.md
25
+ @~/.claude/gsd-core/references/ui-brand.md
26
26
  </execution_context>
27
27
 
28
28
  <context>
@@ -21,9 +21,9 @@ Three modes:
21
21
  </objective>
22
22
 
23
23
  <execution_context>
24
- @~/.claude/get-shit-done/workflows/undo.md
25
- @~/.claude/get-shit-done/references/ui-brand.md
26
- @~/.claude/get-shit-done/references/gate-prompts.md
24
+ @~/.claude/gsd-core/workflows/undo.md
25
+ @~/.claude/gsd-core/references/ui-brand.md
26
+ @~/.claude/gsd-core/references/gate-prompts.md
27
27
  </execution_context>
28
28
 
29
29
  <context>
@@ -25,7 +25,7 @@ Routes to the update workflow which handles:
25
25
  </objective>
26
26
 
27
27
  <execution_context>
28
- @~/.claude/get-shit-done/workflows/update.md
28
+ @~/.claude/gsd-core/workflows/update.md
29
29
  </execution_context>
30
30
 
31
31
  <flags>
@@ -43,6 +43,6 @@ Parse the first token of $ARGUMENTS:
43
43
  </process>
44
44
 
45
45
  <execution_context_extended>
46
- @~/.claude/get-shit-done/workflows/sync-skills.md
47
- @~/.claude/get-shit-done/workflows/reapply-patches.md
46
+ @~/.claude/gsd-core/workflows/sync-skills.md
47
+ @~/.claude/gsd-core/workflows/reapply-patches.md
48
48
  </execution_context_extended>
@@ -23,7 +23,7 @@ Output: updated VALIDATION.md + generated test files.
23
23
  </objective>
24
24
 
25
25
  <execution_context>
26
- @~/.claude/get-shit-done/workflows/validate-phase.md
26
+ @~/.claude/gsd-core/workflows/validate-phase.md
27
27
  </execution_context>
28
28
 
29
29
  <context>
@@ -21,8 +21,8 @@ Output: {phase_num}-UAT.md tracking all test results. If issues found: diagnosed
21
21
  </objective>
22
22
 
23
23
  <execution_context>
24
- @~/.claude/get-shit-done/workflows/verify-work.md
25
- @~/.claude/get-shit-done/templates/UAT.md
24
+ @~/.claude/gsd-core/workflows/verify-work.md
25
+ @~/.claude/gsd-core/templates/UAT.md
26
26
  </execution_context>
27
27
 
28
28
  <context>
@@ -29,10 +29,10 @@ Mode routing:
29
29
  </routing>
30
30
 
31
31
  <execution_context>
32
- @~/.claude/get-shit-done/workflows/new-workspace.md
33
- @~/.claude/get-shit-done/workflows/list-workspaces.md
34
- @~/.claude/get-shit-done/workflows/remove-workspace.md
35
- @~/.claude/get-shit-done/references/ui-brand.md
32
+ @~/.claude/gsd-core/workflows/new-workspace.md
33
+ @~/.claude/gsd-core/workflows/list-workspaces.md
34
+ @~/.claude/gsd-core/workflows/remove-workspace.md
35
+ @~/.claude/gsd-core/references/ui-brand.md
36
36
  </execution_context>
37
37
 
38
38
  <context>
@@ -7,7 +7,7 @@
7
7
  * The /gsd-update workflow's check_latest_version step was previously
8
8
  * prescribed in LLM-driven prose ("run `npm view gsd-core
9
9
  * version`"). The executing model could shortcut the prescription and
10
- * invent npm queries against wrong-shaped names (`@get-shit-done/cli`,
10
+ * invent npm queries against wrong-shaped names (`@gsd-core/cli`,
11
11
  * `get-shit-done-cli`, `gsd`), all of which 404 or — worse — return an
12
12
  * unrelated typosquat package.
13
13
  *
@@ -46,6 +46,8 @@
46
46
  * roadmap analyze Full roadmap parse with disk status
47
47
  * roadmap update-plan-progress <N> Update progress table row from disk (PLAN vs SUMMARY counts)
48
48
  * roadmap annotate-dependencies <N> Add wave dependency notes + cross-cutting constraints to ROADMAP.md
49
+ * roadmap validate Validate phase ID convention compliance
50
+ * roadmap upgrade [--apply] --convention milestone-prefixed Migrate phase IDs to M-NN convention
49
51
  *
50
52
  * Requirements Operations:
51
53
  * requirements mark-complete <ids> Mark requirement IDs as complete in REQUIREMENTS.md
@@ -169,7 +171,12 @@
169
171
  const fs = require('fs');
170
172
  const path = require('path');
171
173
  const core = require('./lib/core.cjs');
172
- const { error, findProjectRoot, ERROR_REASON } = core;
174
+ const { error, ERROR_REASON } = core;
175
+ // Resolve findProjectRoot lazily at call time rather than binding it at module
176
+ // load. It is a re-export from core.cjs (sourced from project-root.cjs); a
177
+ // call-time lookup is robust against any require/load-ordering edge where the
178
+ // re-export isn't bound yet when this entrypoint is first required (#604).
179
+ const findProjectRoot = (...args) => core.findProjectRoot(...args);
173
180
  const { getActiveWorkstream } = require('./lib/planning-workspace.cjs');
174
181
  const { resolveActiveWorkstream, applyResolvedWorkstreamEnv } = require('./lib/active-workstream-store.cjs');
175
182
  const state = require('./lib/state.cjs');
@@ -368,11 +375,11 @@ async function main() {
368
375
  const TOP_LEVEL_USAGE = 'Usage: gsd-tools <command> [args] [--raw] [--pick <field>] [--cwd <path>] [--ws <name>] [--json-errors]\n' +
369
376
  'Commands: agent, agent-skills, audit-open, audit-uat, check, check-commit, commit, commit-to-subrepo, ' +
370
377
  'config-ensure-section, config-get, config-new-project, config-path, config-set, migrate-config, ' +
371
- 'current-timestamp, detect-custom-files, docs-init, extract-messages, find-phase, ' +
378
+ 'current-timestamp, detect-custom-files, docs-init, effort, extract-messages, find-phase, ' +
372
379
  'from-gsd2, frontmatter, gap-analysis, generate-claude-md, generate-claude-profile, ' +
373
380
  'generate-dev-preferences, generate-slug, graphify, history-digest, init, intel, ' +
374
381
  'learnings, list-todos, milestone, phase, phase-plan-index, phases, profile-questionnaire, ' +
375
- 'profile-sample, progress, prompt-budget, requirements, resolve-model, roadmap, scaffold, state, ' +
382
+ 'profile-sample, progress, prompt-budget, requirements, resolve-granularity, resolve-model, roadmap, scaffold, state, ' +
376
383
  'task, template, validate, verify, verify-path-exists, verify-summary, workstream, worktree\n\n' +
377
384
  'Global flags:\n' +
378
385
  ' --raw Emit raw output without post-processing\n' +
@@ -539,6 +546,11 @@ async function runCommand(command, args, cwd, raw, defaultValue, originalCommand
539
546
  break;
540
547
  }
541
548
 
549
+ case 'resolve-granularity': {
550
+ commands.cmdResolveGranularity(cwd, args[1], raw);
551
+ break;
552
+ }
553
+
542
554
  case 'resolve-execution': {
543
555
  // Deterministic flag parsing: consume --flag <value> pairs first,
544
556
  // then the AGENT is the single remaining positional.
@@ -1400,7 +1412,7 @@ async function runCommand(command, args, cwd, raw, defaultValue, originalCommand
1400
1412
  // GSD-managed directories to scan for user-added files.
1401
1413
  // These are the directories the installer wipes on update.
1402
1414
  const GSD_MANAGED_DIRS = [
1403
- 'get-shit-done',
1415
+ 'gsd-core',
1404
1416
  'agents',
1405
1417
  path.join('commands', 'gsd'),
1406
1418
  'hooks',
@@ -1651,6 +1663,40 @@ async function runCommand(command, args, cwd, raw, defaultValue, originalCommand
1651
1663
  break;
1652
1664
  }
1653
1665
 
1666
+ case 'effort': {
1667
+ const subcommand = args[1];
1668
+ if (subcommand === 'sync') {
1669
+ const effortSyncArgs = args.slice(2);
1670
+ let dryRun = true;
1671
+ let effortSyncConfigDir;
1672
+ let effortSyncRuntime;
1673
+ for (let i = 0; i < effortSyncArgs.length; i++) {
1674
+ const a = effortSyncArgs[i];
1675
+ if (a === '--apply') { dryRun = false; continue; }
1676
+ if (a === '--dry-run') { dryRun = true; continue; }
1677
+ if (a.startsWith('--config-dir=')) { effortSyncConfigDir = a.slice('--config-dir='.length); continue; }
1678
+ if (a === '--config-dir') {
1679
+ const v = effortSyncArgs[i + 1];
1680
+ if (!v || v.startsWith('--')) error('Missing value for --config-dir', ERROR_REASON.USAGE);
1681
+ effortSyncConfigDir = v; i++; continue;
1682
+ }
1683
+ if (a.startsWith('--runtime=')) { effortSyncRuntime = a.slice('--runtime='.length); continue; }
1684
+ if (a === '--runtime') {
1685
+ const v = effortSyncArgs[i + 1];
1686
+ if (!v || v.startsWith('--')) error('Missing value for --runtime', ERROR_REASON.USAGE);
1687
+ effortSyncRuntime = v; i++; continue;
1688
+ }
1689
+ if (a === '--raw') continue;
1690
+ if (a.startsWith('-')) error(`Unknown flag for effort sync: ${a}`, ERROR_REASON.USAGE);
1691
+ error(`effort sync takes no positional arguments; got: ${a}`, ERROR_REASON.USAGE);
1692
+ }
1693
+ commands.cmdEffortSync(cwd, raw, { dryRun, configDir: effortSyncConfigDir, runtime: effortSyncRuntime });
1694
+ } else {
1695
+ error('Unknown effort subcommand. Available: sync', ERROR_REASON.SDK_UNKNOWN_COMMAND);
1696
+ }
1697
+ break;
1698
+ }
1699
+
1654
1700
  default: {
1655
1701
  // #3243: if the caller passed a dotted form (e.g. "foo.bar"), the shim
1656
1702
  // above split it so `command` here is the head ("foo"). Use
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ /**
3
+ * Active Workstream Pointer Store Module
4
+ *
5
+ * Owns active workstream source precedence, session identity, and pointer IO:
6
+ * CLI --ws > GSD_WORKSTREAM env > stored active workstream pointer.
7
+ *
8
+ * ADR-457 build-at-publish: the hand-written bin/lib/active-workstream-store.cjs
9
+ * collapsed to a TypeScript source of truth. Behaviour is preserved
10
+ * byte-for-behaviour from the prior hand-written .cjs; only types are added.
11
+ */
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ const node_fs_1 = __importDefault(require("node:fs"));
16
+ const node_os_1 = __importDefault(require("node:os"));
17
+ const node_path_1 = __importDefault(require("node:path"));
18
+ const node_crypto_1 = __importDefault(require("node:crypto"));
19
+ const shell_command_projection_cjs_1 = require("./shell-command-projection.cjs");
20
+ const workstream_name_policy_cjs_1 = require("./workstream-name-policy.cjs");
21
+ const WORKSTREAM_SESSION_ENV_KEYS = [
22
+ 'GSD_SESSION_KEY',
23
+ 'CODEX_THREAD_ID',
24
+ 'CLAUDE_SESSION_ID',
25
+ 'CLAUDE_CODE_SSE_PORT',
26
+ 'OPENCODE_SESSION_ID',
27
+ 'GEMINI_SESSION_ID',
28
+ 'CURSOR_SESSION_ID',
29
+ 'WINDSURF_SESSION_ID',
30
+ 'TERM_SESSION_ID',
31
+ 'WT_SESSION',
32
+ 'TMUX_PANE',
33
+ 'ZELLIJ_SESSION_NAME',
34
+ ];
35
+ let cachedControllingTtyToken = null;
36
+ let didProbeControllingTtyToken = false;
37
+ function planningRoot(cwd) {
38
+ return node_path_1.default.join(cwd, '.planning');
39
+ }
40
+ function validateWorkstreamName(name) {
41
+ return (0, workstream_name_policy_cjs_1.isValidActiveWorkstreamName)(name);
42
+ }
43
+ function sanitizeWorkstreamSessionToken(value) {
44
+ if (value === null || value === undefined)
45
+ return null;
46
+ const raw = typeof value === 'string' ? value : `${value}`;
47
+ const token = raw.trim().replace(/[^a-zA-Z0-9._-]+/g, '_').replace(/^_+|_+$/g, '');
48
+ return token ? token.slice(0, 160) : null;
49
+ }
50
+ function probeControllingTtyToken() {
51
+ if (didProbeControllingTtyToken)
52
+ return cachedControllingTtyToken;
53
+ didProbeControllingTtyToken = true;
54
+ if (!(process.stdin && process.stdin.isTTY)) {
55
+ return cachedControllingTtyToken;
56
+ }
57
+ const ttyPath = (0, shell_command_projection_cjs_1.probeTty)();
58
+ if (ttyPath) {
59
+ const token = sanitizeWorkstreamSessionToken(ttyPath.replace(/^\/dev\//, ''));
60
+ if (token)
61
+ cachedControllingTtyToken = `tty-${token}`;
62
+ }
63
+ return cachedControllingTtyToken;
64
+ }
65
+ function getControllingTtyToken() {
66
+ for (const envKey of ['TTY', 'SSH_TTY']) {
67
+ const token = sanitizeWorkstreamSessionToken(process.env[envKey]);
68
+ if (token)
69
+ return `tty-${token.replace(/^dev_/, '')}`;
70
+ }
71
+ return probeControllingTtyToken();
72
+ }
73
+ function getWorkstreamSessionKey() {
74
+ for (const envKey of WORKSTREAM_SESSION_ENV_KEYS) {
75
+ const raw = process.env[envKey];
76
+ const token = sanitizeWorkstreamSessionToken(raw);
77
+ if (token)
78
+ return `${envKey.toLowerCase().replace(/[^a-z0-9]+/g, '-')}-${token}`;
79
+ }
80
+ return getControllingTtyToken();
81
+ }
82
+ function getSessionScopedWorkstreamFile(cwd, fixedSessionKey) {
83
+ const sessionKey = fixedSessionKey || getWorkstreamSessionKey();
84
+ if (!sessionKey)
85
+ return null;
86
+ let planningAbs;
87
+ try {
88
+ planningAbs = node_fs_1.default.realpathSync.native(planningRoot(cwd));
89
+ }
90
+ catch {
91
+ planningAbs = node_path_1.default.resolve(planningRoot(cwd));
92
+ }
93
+ const projectId = node_crypto_1.default
94
+ .createHash('sha1')
95
+ .update(planningAbs)
96
+ .digest('hex')
97
+ .slice(0, 16);
98
+ const dirPath = node_path_1.default.join(node_os_1.default.tmpdir(), 'gsd-workstream-sessions', projectId);
99
+ return {
100
+ sessionKey,
101
+ dirPath,
102
+ filePath: node_path_1.default.join(dirPath, sessionKey),
103
+ };
104
+ }
105
+ function createSharedPointerAdapter(cwd) {
106
+ const filePath = node_path_1.default.join(planningRoot(cwd), 'active-workstream');
107
+ return {
108
+ read() {
109
+ const raw = (0, shell_command_projection_cjs_1.platformReadSync)(filePath);
110
+ return raw ? raw.trim() || null : null;
111
+ },
112
+ write(name) {
113
+ (0, shell_command_projection_cjs_1.platformWriteSync)(filePath, name + '\n');
114
+ },
115
+ clear() {
116
+ try {
117
+ node_fs_1.default.unlinkSync(filePath);
118
+ }
119
+ catch { }
120
+ },
121
+ };
122
+ }
123
+ function createSessionScopedPointerAdapter(cwd, fixedSessionKey) {
124
+ const scoped = getSessionScopedWorkstreamFile(cwd, fixedSessionKey);
125
+ if (!scoped)
126
+ return null;
127
+ return {
128
+ read() {
129
+ const raw = (0, shell_command_projection_cjs_1.platformReadSync)(scoped.filePath);
130
+ return raw ? raw.trim() || null : null;
131
+ },
132
+ write(name) {
133
+ (0, shell_command_projection_cjs_1.platformEnsureDir)(scoped.dirPath);
134
+ (0, shell_command_projection_cjs_1.platformWriteSync)(scoped.filePath, name + '\n');
135
+ },
136
+ clear() {
137
+ try {
138
+ node_fs_1.default.unlinkSync(scoped.filePath);
139
+ }
140
+ catch { }
141
+ try {
142
+ const remaining = node_fs_1.default.readdirSync(scoped.dirPath);
143
+ if (remaining.length === 0) {
144
+ node_fs_1.default.rmdirSync(scoped.dirPath);
145
+ }
146
+ }
147
+ catch { }
148
+ },
149
+ };
150
+ }
151
+ function createMemoryPointerAdapter(initialName = null) {
152
+ let value = initialName;
153
+ return {
154
+ read() {
155
+ return value;
156
+ },
157
+ write(name) {
158
+ value = name;
159
+ },
160
+ clear() {
161
+ value = null;
162
+ },
163
+ };
164
+ }
165
+ function pickActiveWorkstreamAdapter(cwd, opts = {}) {
166
+ if (opts.activeWorkstreamAdapter) {
167
+ return opts.activeWorkstreamAdapter;
168
+ }
169
+ const sessionKey = getWorkstreamSessionKey();
170
+ if (sessionKey) {
171
+ if (opts.activeWorkstreamAdapters && opts.activeWorkstreamAdapters.session) {
172
+ return opts.activeWorkstreamAdapters.session;
173
+ }
174
+ return createSessionScopedPointerAdapter(cwd, sessionKey);
175
+ }
176
+ if (opts.activeWorkstreamAdapters && opts.activeWorkstreamAdapters.shared) {
177
+ return opts.activeWorkstreamAdapters.shared;
178
+ }
179
+ return createSharedPointerAdapter(cwd);
180
+ }
181
+ function getActiveWorkstream(cwd, opts = {}) {
182
+ const adapter = pickActiveWorkstreamAdapter(cwd, opts);
183
+ if (!adapter)
184
+ return null;
185
+ const name = adapter.read();
186
+ if (!name || !validateWorkstreamName(name)) {
187
+ adapter.clear();
188
+ return null;
189
+ }
190
+ const wsDir = node_path_1.default.join(planningRoot(cwd), 'workstreams', name);
191
+ if (!node_fs_1.default.existsSync(wsDir)) {
192
+ adapter.clear();
193
+ return null;
194
+ }
195
+ return name;
196
+ }
197
+ function setActiveWorkstream(cwd, name, opts = {}) {
198
+ const adapter = pickActiveWorkstreamAdapter(cwd, opts);
199
+ if (!adapter)
200
+ return;
201
+ if (!name) {
202
+ adapter.clear();
203
+ return;
204
+ }
205
+ if (!validateWorkstreamName(name)) {
206
+ throw new Error('Invalid workstream name: must be alphanumeric, hyphens, underscores, or dots');
207
+ }
208
+ const wsDir = node_path_1.default.join(planningRoot(cwd), 'workstreams', name);
209
+ (0, shell_command_projection_cjs_1.platformEnsureDir)(wsDir);
210
+ adapter.write(name);
211
+ }
212
+ function clearActiveWorkstream(cwd, opts = {}) {
213
+ const adapter = pickActiveWorkstreamAdapter(cwd, opts);
214
+ if (!adapter)
215
+ return;
216
+ adapter.clear();
217
+ }
218
+ function parseCliWorkstream(args) {
219
+ const wsEqArg = args.find((arg) => arg.startsWith('--ws='));
220
+ const wsIdx = args.indexOf('--ws');
221
+ if (wsEqArg) {
222
+ const value = wsEqArg.slice('--ws='.length).trim();
223
+ if (!value)
224
+ throw new Error('Missing value for --ws');
225
+ return {
226
+ value,
227
+ source: 'cli',
228
+ args: args.filter((arg) => arg !== wsEqArg),
229
+ };
230
+ }
231
+ if (wsIdx !== -1) {
232
+ const value = args[wsIdx + 1];
233
+ if (!value || value.startsWith('--'))
234
+ throw new Error('Missing value for --ws');
235
+ return {
236
+ value,
237
+ source: 'cli',
238
+ args: args.filter((_, idx) => idx !== wsIdx && idx !== wsIdx + 1),
239
+ };
240
+ }
241
+ return {
242
+ value: null,
243
+ source: null,
244
+ args: args.slice(),
245
+ };
246
+ }
247
+ function resolveActiveWorkstream(cwd, args, env = process.env, deps = {}) {
248
+ const parsed = parseCliWorkstream(args);
249
+ const getStored = deps.getStored || ((dir) => getActiveWorkstream(dir, deps));
250
+ let ws = null;
251
+ let source = 'none';
252
+ if (parsed.value) {
253
+ ws = parsed.value;
254
+ source = parsed.source ?? 'cli';
255
+ }
256
+ else if (env && typeof env['GSD_WORKSTREAM'] === 'string' && env['GSD_WORKSTREAM'].trim()) {
257
+ ws = env['GSD_WORKSTREAM'].trim();
258
+ source = 'env';
259
+ }
260
+ else {
261
+ ws = getStored(cwd) || null;
262
+ source = ws ? 'store' : 'none';
263
+ }
264
+ if (ws && !validateWorkstreamName(ws)) {
265
+ throw new Error('Invalid workstream name: must be alphanumeric, hyphens, underscores, or dots');
266
+ }
267
+ return {
268
+ ws,
269
+ source,
270
+ args: parsed.args,
271
+ };
272
+ }
273
+ function applyResolvedWorkstreamEnv(resolution, env = process.env) {
274
+ if (!resolution || !resolution.ws)
275
+ return;
276
+ env['GSD_WORKSTREAM'] = resolution.ws;
277
+ }
278
+ module.exports = {
279
+ validateWorkstreamName,
280
+ getWorkstreamSessionKey,
281
+ createSharedPointerAdapter,
282
+ createSessionScopedPointerAdapter,
283
+ createMemoryPointerAdapter,
284
+ pickActiveWorkstreamAdapter,
285
+ getActiveWorkstream,
286
+ setActiveWorkstream,
287
+ clearActiveWorkstream,
288
+ parseCliWorkstream,
289
+ resolveActiveWorkstream,
290
+ applyResolvedWorkstreamEnv,
291
+ };