@opengsd/gsd-core 1.3.0-rc.1 → 1.3.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 (521) hide show
  1. package/README.ja-JP.md +44 -790
  2. package/README.ko-KR.md +41 -778
  3. package/README.md +39 -180
  4. package/README.pt-BR.md +45 -413
  5. package/README.zh-CN.md +43 -761
  6. package/agents/gsd-ai-researcher.md +1 -1
  7. package/agents/gsd-debugger.md +8 -8
  8. package/agents/gsd-domain-researcher.md +14 -1
  9. package/agents/gsd-eval-auditor.md +1 -1
  10. package/agents/gsd-eval-planner.md +1 -1
  11. package/agents/gsd-executor.md +21 -8
  12. package/agents/gsd-framework-selector.md +1 -1
  13. package/agents/gsd-intel-updater.md +4 -4
  14. package/agents/gsd-phase-researcher.md +18 -5
  15. package/agents/gsd-plan-checker.md +3 -3
  16. package/agents/gsd-planner.md +36 -23
  17. package/agents/gsd-project-researcher.md +13 -0
  18. package/agents/gsd-research-synthesizer.md +6 -2
  19. package/agents/gsd-roadmapper.md +6 -6
  20. package/agents/gsd-ui-researcher.md +15 -2
  21. package/agents/gsd-user-profiler.md +2 -2
  22. package/agents/gsd-verifier.md +7 -7
  23. package/bin/install.js +169 -59
  24. package/commands/gsd/add-tests.md +1 -1
  25. package/commands/gsd/ai-integration-phase.md +3 -3
  26. package/commands/gsd/audit-fix.md +1 -1
  27. package/commands/gsd/audit-milestone.md +1 -1
  28. package/commands/gsd/audit-uat.md +1 -1
  29. package/commands/gsd/autonomous.md +2 -2
  30. package/commands/gsd/capture.md +6 -6
  31. package/commands/gsd/cleanup.md +1 -1
  32. package/commands/gsd/code-review.md +1 -1
  33. package/commands/gsd/complete-milestone.md +2 -2
  34. package/commands/gsd/config.md +3 -3
  35. package/commands/gsd/debug.md +1 -1
  36. package/commands/gsd/discuss-phase.md +5 -4
  37. package/commands/gsd/docs-update.md +1 -1
  38. package/commands/gsd/eval-review.md +2 -2
  39. package/commands/gsd/execute-phase.md +2 -2
  40. package/commands/gsd/explore.md +1 -1
  41. package/commands/gsd/extract-learnings.md +2 -2
  42. package/commands/gsd/fast.md +1 -1
  43. package/commands/gsd/forensics.md +1 -1
  44. package/commands/gsd/graphify.md +9 -9
  45. package/commands/gsd/health.md +1 -1
  46. package/commands/gsd/help.md +2 -2
  47. package/commands/gsd/import.md +5 -5
  48. package/commands/gsd/inbox.md +1 -1
  49. package/commands/gsd/ingest-docs.md +4 -4
  50. package/commands/gsd/manager.md +3 -3
  51. package/commands/gsd/map-codebase.md +1 -1
  52. package/commands/gsd/milestone-summary.md +1 -1
  53. package/commands/gsd/mvp-phase.md +4 -4
  54. package/commands/gsd/new-milestone.md +5 -5
  55. package/commands/gsd/new-project.md +5 -5
  56. package/commands/gsd/pause-work.md +2 -2
  57. package/commands/gsd/phase.md +4 -4
  58. package/commands/gsd/plan-phase.md +2 -2
  59. package/commands/gsd/plan-review-convergence.md +4 -4
  60. package/commands/gsd/pr-branch.md +1 -1
  61. package/commands/gsd/profile-user.md +2 -2
  62. package/commands/gsd/progress.md +4 -4
  63. package/commands/gsd/quick.md +1 -1
  64. package/commands/gsd/resume-work.md +1 -1
  65. package/commands/gsd/review.md +1 -1
  66. package/commands/gsd/secure-phase.md +1 -1
  67. package/commands/gsd/settings.md +1 -1
  68. package/commands/gsd/ship.md +2 -2
  69. package/commands/gsd/sketch.md +7 -7
  70. package/commands/gsd/spec-phase.md +2 -2
  71. package/commands/gsd/spike.md +3 -3
  72. package/commands/gsd/stats.md +1 -1
  73. package/commands/gsd/surface.md +4 -4
  74. package/commands/gsd/thread.md +1 -1
  75. package/commands/gsd/ui-phase.md +2 -2
  76. package/commands/gsd/ui-review.md +2 -2
  77. package/commands/gsd/ultraplan-phase.md +2 -2
  78. package/commands/gsd/undo.md +3 -3
  79. package/commands/gsd/update.md +3 -3
  80. package/commands/gsd/validate-phase.md +1 -1
  81. package/commands/gsd/verify-work.md +2 -2
  82. package/commands/gsd/workspace.md +4 -4
  83. package/{get-shit-done → gsd-core}/bin/check-latest-version.cjs +1 -1
  84. package/{get-shit-done → gsd-core}/bin/gsd-tools.cjs +13 -3
  85. package/gsd-core/bin/lib/active-workstream-store.cjs +291 -0
  86. package/gsd-core/bin/lib/adr-parser.cjs +399 -0
  87. package/gsd-core/bin/lib/agent-command-router.cjs +68 -0
  88. package/gsd-core/bin/lib/artifacts.cjs +51 -0
  89. package/gsd-core/bin/lib/audit.cjs +743 -0
  90. package/gsd-core/bin/lib/check-command-router.cjs +342 -0
  91. package/gsd-core/bin/lib/cjs-command-router-adapter.cjs +81 -0
  92. package/gsd-core/bin/lib/clock.cjs +95 -0
  93. package/gsd-core/bin/lib/clusters.cjs +128 -0
  94. package/gsd-core/bin/lib/code-review-flags.cjs +59 -0
  95. package/gsd-core/bin/lib/command-aliases.cjs +809 -0
  96. package/gsd-core/bin/lib/command-arg-projection.cjs +55 -0
  97. package/gsd-core/bin/lib/command-routing-hub.cjs +300 -0
  98. package/gsd-core/bin/lib/commands.cjs +1202 -0
  99. package/gsd-core/bin/lib/config-schema.cjs +29 -0
  100. package/{get-shit-done → gsd-core}/bin/lib/config-types.cjs +1 -1
  101. package/gsd-core/bin/lib/config.cjs +714 -0
  102. package/{get-shit-done → gsd-core}/bin/lib/configuration.cjs +76 -85
  103. package/gsd-core/bin/lib/context-utilization.cjs +48 -0
  104. package/gsd-core/bin/lib/core.cjs +2007 -0
  105. package/{get-shit-done → gsd-core}/bin/lib/decisions.cjs +9 -7
  106. package/gsd-core/bin/lib/docs.cjs +252 -0
  107. package/gsd-core/bin/lib/drift.cjs +364 -0
  108. package/gsd-core/bin/lib/fallow-runner.cjs +115 -0
  109. package/gsd-core/bin/lib/frontmatter.cjs +442 -0
  110. package/gsd-core/bin/lib/gap-checker.cjs +257 -0
  111. package/gsd-core/bin/lib/graphify.cjs +496 -0
  112. package/gsd-core/bin/lib/gsd2-import.cjs +456 -0
  113. package/gsd-core/bin/lib/init-command-router.cjs +62 -0
  114. package/gsd-core/bin/lib/init.cjs +1799 -0
  115. package/gsd-core/bin/lib/install-profiles.cjs +526 -0
  116. package/gsd-core/bin/lib/installer-migration-authoring.cjs +122 -0
  117. package/gsd-core/bin/lib/installer-migration-report.cjs +347 -0
  118. package/gsd-core/bin/lib/installer-migrations/000-first-time-baseline.cjs +218 -0
  119. package/gsd-core/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +48 -0
  120. package/gsd-core/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +94 -0
  121. package/gsd-core/bin/lib/installer-migrations/003-rename-get-shit-done-to-gsd-core.cjs +108 -0
  122. package/gsd-core/bin/lib/installer-migrations.cjs +823 -0
  123. package/gsd-core/bin/lib/intel.cjs +607 -0
  124. package/gsd-core/bin/lib/learnings.cjs +270 -0
  125. package/gsd-core/bin/lib/legacy-cleanup.cjs +253 -0
  126. package/gsd-core/bin/lib/milestone.cjs +373 -0
  127. package/gsd-core/bin/lib/model-catalog.cjs +154 -0
  128. package/gsd-core/bin/lib/model-profiles.cjs +24 -0
  129. package/gsd-core/bin/lib/observability/event.cjs +51 -0
  130. package/gsd-core/bin/lib/observability/logger.cjs +146 -0
  131. package/{get-shit-done → gsd-core}/bin/lib/observability/redaction.cjs +19 -21
  132. package/{get-shit-done → gsd-core}/bin/lib/package-identity.cjs +5 -1
  133. package/gsd-core/bin/lib/phase-command-router.cjs +189 -0
  134. package/gsd-core/bin/lib/phase-lifecycle.cjs +74 -0
  135. package/gsd-core/bin/lib/phase.cjs +1307 -0
  136. package/gsd-core/bin/lib/phases-command-router.cjs +43 -0
  137. package/{get-shit-done → gsd-core}/bin/lib/plan-scan.cjs +18 -24
  138. package/gsd-core/bin/lib/planning-workspace.cjs +245 -0
  139. package/gsd-core/bin/lib/profile-output.cjs +1120 -0
  140. package/gsd-core/bin/lib/profile-pipeline.cjs +517 -0
  141. package/gsd-core/bin/lib/project-root.cjs +119 -0
  142. package/gsd-core/bin/lib/prompt-budget.cjs +305 -0
  143. package/gsd-core/bin/lib/review-reviewer-selection.cjs +121 -0
  144. package/gsd-core/bin/lib/roadmap-command-router.cjs +166 -0
  145. package/gsd-core/bin/lib/roadmap-upgrade.cjs +491 -0
  146. package/gsd-core/bin/lib/roadmap.cjs +600 -0
  147. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +254 -0
  148. package/gsd-core/bin/lib/runtime-homes.cjs +169 -0
  149. package/gsd-core/bin/lib/runtime-name-policy.cjs +96 -0
  150. package/gsd-core/bin/lib/runtime-slash.cjs +119 -0
  151. package/{get-shit-done → gsd-core}/bin/lib/schema-detect.cjs +20 -26
  152. package/gsd-core/bin/lib/secrets.cjs +34 -0
  153. package/gsd-core/bin/lib/security.cjs +407 -0
  154. package/{get-shit-done → gsd-core}/bin/lib/semver-compare.cjs +1 -1
  155. package/gsd-core/bin/lib/shell-command-projection.cjs +524 -0
  156. package/gsd-core/bin/lib/state-command-router.cjs +160 -0
  157. package/{get-shit-done → gsd-core}/bin/lib/state-document.cjs +78 -78
  158. package/gsd-core/bin/lib/state.cjs +2010 -0
  159. package/gsd-core/bin/lib/surface.cjs +406 -0
  160. package/gsd-core/bin/lib/task-command-router.cjs +85 -0
  161. package/gsd-core/bin/lib/template.cjs +237 -0
  162. package/gsd-core/bin/lib/uat.cjs +297 -0
  163. package/gsd-core/bin/lib/ui-safety-gate.cjs +98 -0
  164. package/gsd-core/bin/lib/update-context.cjs +218 -0
  165. package/gsd-core/bin/lib/validate-command-router.cjs +91 -0
  166. package/gsd-core/bin/lib/validate.cjs +112 -0
  167. package/gsd-core/bin/lib/verify-command-router.cjs +44 -0
  168. package/gsd-core/bin/lib/verify.cjs +1451 -0
  169. package/{get-shit-done → gsd-core}/bin/lib/workstream-inventory-builder.cjs +19 -12
  170. package/gsd-core/bin/lib/workstream-inventory.cjs +147 -0
  171. package/{get-shit-done → gsd-core}/bin/lib/workstream-name-policy.cjs +28 -31
  172. package/gsd-core/bin/lib/workstream.cjs +380 -0
  173. package/gsd-core/bin/lib/worktree-safety.cjs +912 -0
  174. package/{get-shit-done → gsd-core}/bin/shared/config-schema.manifest.json +5 -0
  175. package/{get-shit-done → gsd-core}/references/artifact-types.md +1 -1
  176. package/{get-shit-done → gsd-core}/references/few-shot-examples/plan-checker.md +2 -2
  177. package/{get-shit-done → gsd-core}/references/few-shot-examples/verifier.md +12 -12
  178. package/{get-shit-done → gsd-core}/references/model-profile-resolution.md +1 -1
  179. package/{get-shit-done → gsd-core}/references/mvp-concepts.md +1 -1
  180. package/{get-shit-done → gsd-core}/references/planner-graphify-auto-update.md +2 -2
  181. package/{get-shit-done → gsd-core}/references/planner-mvp-mode.md +1 -1
  182. package/{get-shit-done → gsd-core}/references/verification-patterns.md +1 -1
  183. package/gsd-core/references/worktree-branch-check.md +38 -0
  184. package/{get-shit-done → gsd-core}/references/worktree-path-safety.md +4 -26
  185. package/{get-shit-done → gsd-core}/templates/README.md +2 -2
  186. package/{get-shit-done → gsd-core}/templates/codebase/structure.md +10 -10
  187. package/{get-shit-done → gsd-core}/templates/copilot-instructions.md +1 -1
  188. package/{get-shit-done → gsd-core}/templates/phase-prompt.md +10 -10
  189. package/gsd-core/workflows/_runtime-launcher.snippet.sh +1 -0
  190. package/{get-shit-done → gsd-core}/workflows/add-backlog.md +1 -1
  191. package/{get-shit-done → gsd-core}/workflows/add-phase.md +1 -1
  192. package/{get-shit-done → gsd-core}/workflows/add-tests.md +1 -1
  193. package/{get-shit-done → gsd-core}/workflows/add-todo.md +1 -1
  194. package/{get-shit-done → gsd-core}/workflows/ai-integration-phase.md +4 -4
  195. package/{get-shit-done → gsd-core}/workflows/audit-fix.md +1 -1
  196. package/{get-shit-done → gsd-core}/workflows/audit-milestone.md +1 -1
  197. package/{get-shit-done → gsd-core}/workflows/audit-uat.md +1 -1
  198. package/{get-shit-done → gsd-core}/workflows/autonomous.md +4 -4
  199. package/{get-shit-done → gsd-core}/workflows/check-todos.md +1 -1
  200. package/{get-shit-done → gsd-core}/workflows/cleanup.md +1 -1
  201. package/{get-shit-done → gsd-core}/workflows/code-review-fix.md +1 -1
  202. package/{get-shit-done → gsd-core}/workflows/code-review.md +4 -4
  203. package/{get-shit-done → gsd-core}/workflows/complete-milestone.md +2 -2
  204. package/{get-shit-done → gsd-core}/workflows/debug.md +1 -1
  205. package/{get-shit-done → gsd-core}/workflows/diagnose-issues.md +4 -2
  206. package/{get-shit-done → gsd-core}/workflows/discovery-phase.md +5 -5
  207. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/advisor.md +4 -4
  208. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/auto.md +1 -1
  209. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/chain.md +1 -1
  210. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/power.md +1 -1
  211. package/{get-shit-done → gsd-core}/workflows/discuss-phase-assumptions.md +2 -2
  212. package/{get-shit-done → gsd-core}/workflows/discuss-phase.md +6 -6
  213. package/{get-shit-done → gsd-core}/workflows/do.md +1 -1
  214. package/{get-shit-done → gsd-core}/workflows/docs-update.md +1 -1
  215. package/{get-shit-done → gsd-core}/workflows/edit-phase.md +1 -1
  216. package/{get-shit-done → gsd-core}/workflows/eval-review.md +2 -2
  217. package/{get-shit-done → gsd-core}/workflows/execute-phase/steps/codebase-drift-gate.md +15 -2
  218. package/{get-shit-done → gsd-core}/workflows/execute-phase/steps/post-merge-gate.md +1 -1
  219. package/{get-shit-done → gsd-core}/workflows/execute-phase.md +68 -46
  220. package/{get-shit-done → gsd-core}/workflows/execute-plan.md +8 -8
  221. package/{get-shit-done → gsd-core}/workflows/explore.md +3 -3
  222. package/{get-shit-done → gsd-core}/workflows/extract-learnings.md +1 -1
  223. package/{get-shit-done → gsd-core}/workflows/forensics.md +1 -1
  224. package/{get-shit-done → gsd-core}/workflows/graduation.md +1 -1
  225. package/{get-shit-done → gsd-core}/workflows/health.md +1 -1
  226. package/{get-shit-done → gsd-core}/workflows/help/modes/full.md +1 -1
  227. package/{get-shit-done → gsd-core}/workflows/import.md +1 -1
  228. package/{get-shit-done → gsd-core}/workflows/ingest-docs.md +3 -3
  229. package/{get-shit-done → gsd-core}/workflows/insert-phase.md +1 -1
  230. package/{get-shit-done → gsd-core}/workflows/list-workspaces.md +1 -1
  231. package/{get-shit-done → gsd-core}/workflows/manager.md +1 -1
  232. package/{get-shit-done → gsd-core}/workflows/map-codebase.md +1 -1
  233. package/{get-shit-done → gsd-core}/workflows/milestone-summary.md +1 -1
  234. package/{get-shit-done → gsd-core}/workflows/mvp-phase.md +7 -7
  235. package/{get-shit-done → gsd-core}/workflows/new-milestone.md +3 -3
  236. package/{get-shit-done → gsd-core}/workflows/new-project.md +6 -6
  237. package/{get-shit-done → gsd-core}/workflows/new-workspace.md +1 -1
  238. package/{get-shit-done → gsd-core}/workflows/next.md +1 -1
  239. package/{get-shit-done → gsd-core}/workflows/pause-work.md +1 -1
  240. package/{get-shit-done → gsd-core}/workflows/plan-milestone-gaps.md +1 -1
  241. package/{get-shit-done → gsd-core}/workflows/plan-phase.md +15 -15
  242. package/{get-shit-done → gsd-core}/workflows/plan-review-convergence.md +7 -7
  243. package/{get-shit-done → gsd-core}/workflows/plant-seed.md +1 -1
  244. package/{get-shit-done → gsd-core}/workflows/profile-user.md +11 -11
  245. package/{get-shit-done → gsd-core}/workflows/progress.md +1 -1
  246. package/{get-shit-done → gsd-core}/workflows/quick.md +2 -26
  247. package/{get-shit-done → gsd-core}/workflows/reapply-patches.md +2 -2
  248. package/{get-shit-done → gsd-core}/workflows/remove-phase.md +1 -1
  249. package/{get-shit-done → gsd-core}/workflows/remove-workspace.md +1 -1
  250. package/{get-shit-done → gsd-core}/workflows/resume-project.md +2 -2
  251. package/{get-shit-done → gsd-core}/workflows/review.md +1 -1
  252. package/{get-shit-done → gsd-core}/workflows/scan.md +1 -1
  253. package/{get-shit-done → gsd-core}/workflows/secure-phase.md +3 -3
  254. package/{get-shit-done → gsd-core}/workflows/settings-advanced.md +1 -1
  255. package/{get-shit-done → gsd-core}/workflows/settings-integrations.md +2 -2
  256. package/{get-shit-done → gsd-core}/workflows/settings.md +1 -1
  257. package/{get-shit-done → gsd-core}/workflows/ship.md +56 -4
  258. package/{get-shit-done → gsd-core}/workflows/sketch-wrap-up.md +1 -1
  259. package/{get-shit-done → gsd-core}/workflows/sketch.md +5 -5
  260. package/{get-shit-done → gsd-core}/workflows/spec-phase.md +2 -2
  261. package/{get-shit-done → gsd-core}/workflows/spike-wrap-up.md +1 -1
  262. package/{get-shit-done → gsd-core}/workflows/spike.md +1 -1
  263. package/{get-shit-done → gsd-core}/workflows/stats.md +1 -1
  264. package/{get-shit-done → gsd-core}/workflows/sync-skills.md +3 -3
  265. package/{get-shit-done → gsd-core}/workflows/thread.md +1 -1
  266. package/{get-shit-done → gsd-core}/workflows/transition.md +2 -2
  267. package/{get-shit-done → gsd-core}/workflows/ui-phase.md +3 -3
  268. package/{get-shit-done → gsd-core}/workflows/ui-review.md +2 -2
  269. package/{get-shit-done → gsd-core}/workflows/ultraplan-phase.md +1 -1
  270. package/{get-shit-done → gsd-core}/workflows/undo.md +2 -2
  271. package/{get-shit-done → gsd-core}/workflows/update.md +41 -16
  272. package/{get-shit-done → gsd-core}/workflows/validate-phase.md +3 -3
  273. package/{get-shit-done → gsd-core}/workflows/verify-phase.md +4 -4
  274. package/{get-shit-done → gsd-core}/workflows/verify-work.md +5 -5
  275. package/hooks/dist/gsd-check-update-worker.js +16 -3
  276. package/hooks/dist/gsd-check-update.js +7 -5
  277. package/hooks/dist/gsd-context-monitor.js +2 -2
  278. package/hooks/dist/gsd-statusline.js +39 -21
  279. package/hooks/dist/gsd-update-banner.js +6 -2
  280. package/hooks/dist/managed-hooks-registry.cjs +35 -0
  281. package/hooks/gsd-check-update-worker.js +16 -3
  282. package/hooks/gsd-check-update.js +7 -5
  283. package/hooks/gsd-context-monitor.js +2 -2
  284. package/hooks/gsd-statusline.js +39 -21
  285. package/hooks/gsd-update-banner.js +6 -2
  286. package/package.json +9 -6
  287. package/scripts/affected-tests-lib.cjs +1 -1
  288. package/scripts/base64-scan.sh +12 -0
  289. package/scripts/build-hooks.js +4 -1
  290. package/scripts/changeset/cli.cjs +2 -2
  291. package/scripts/changeset/github-release-notes.cjs +1 -1
  292. package/scripts/changeset/lint.cjs +1 -1
  293. package/scripts/check-alias-drift.cjs +8 -8
  294. package/scripts/check-env.cjs +5 -1
  295. package/scripts/ci-test-scope.cjs +25 -10
  296. package/scripts/command-contract-helpers.cjs +1 -1
  297. package/scripts/fix-slash-commands.cjs +5 -5
  298. package/scripts/gen-inventory-manifest.cjs +3 -3
  299. package/scripts/generate-package-identity.cjs +28 -7
  300. package/scripts/lib/allowlist-ratchet.cjs +136 -0
  301. package/scripts/lint-command-contract.cjs +1 -1
  302. package/scripts/lint-legacy-dir-name.cjs +156 -0
  303. package/scripts/lint-package-identity-drift.cjs +8 -8
  304. package/scripts/lint-pr-check-project-dir.cjs +0 -1
  305. package/scripts/lint-shell-command-projection-drift.cjs +1 -1
  306. package/scripts/lint-skill-deps.cjs +1 -1
  307. package/scripts/lint-test-file-count.allowlist.json +129 -32
  308. package/scripts/lint-test-file-count.cjs +85 -30
  309. package/scripts/mutation-matrix.cjs +219 -0
  310. package/scripts/prompt-injection-scan.sh +5 -1
  311. package/scripts/release-notes/format-github-release-notes.cjs +256 -0
  312. package/scripts/release-tarball-smoke.cjs +9 -9
  313. package/scripts/run-tests.cjs +11 -3
  314. package/scripts/strip-prose-atrefs.cjs +2 -2
  315. package/scripts/sync-runtime-launcher.cjs +2 -2
  316. package/scripts/verify-npm-publish.cjs +252 -0
  317. package/get-shit-done/bin/lib/active-workstream-store.cjs +0 -302
  318. package/get-shit-done/bin/lib/adr-parser.cjs +0 -394
  319. package/get-shit-done/bin/lib/agent-command-router.cjs +0 -65
  320. package/get-shit-done/bin/lib/artifacts.cjs +0 -53
  321. package/get-shit-done/bin/lib/audit.cjs +0 -755
  322. package/get-shit-done/bin/lib/check-command-router.cjs +0 -333
  323. package/get-shit-done/bin/lib/cjs-command-router-adapter.cjs +0 -118
  324. package/get-shit-done/bin/lib/clock.cjs +0 -96
  325. package/get-shit-done/bin/lib/clusters.cjs +0 -135
  326. package/get-shit-done/bin/lib/code-review-flags.cjs +0 -74
  327. package/get-shit-done/bin/lib/command-aliases.cjs +0 -831
  328. package/get-shit-done/bin/lib/command-arg-projection.cjs +0 -62
  329. package/get-shit-done/bin/lib/command-routing-hub.cjs +0 -388
  330. package/get-shit-done/bin/lib/commands.cjs +0 -1292
  331. package/get-shit-done/bin/lib/config-schema.cjs +0 -31
  332. package/get-shit-done/bin/lib/config.cjs +0 -728
  333. package/get-shit-done/bin/lib/context-utilization.cjs +0 -47
  334. package/get-shit-done/bin/lib/core.cjs +0 -2513
  335. package/get-shit-done/bin/lib/docs.cjs +0 -270
  336. package/get-shit-done/bin/lib/drift.cjs +0 -388
  337. package/get-shit-done/bin/lib/fallow-runner.cjs +0 -109
  338. package/get-shit-done/bin/lib/frontmatter.cjs +0 -389
  339. package/get-shit-done/bin/lib/gap-checker.cjs +0 -254
  340. package/get-shit-done/bin/lib/graphify.cjs +0 -592
  341. package/get-shit-done/bin/lib/gsd2-import.cjs +0 -514
  342. package/get-shit-done/bin/lib/init-command-router.cjs +0 -58
  343. package/get-shit-done/bin/lib/init.cjs +0 -2112
  344. package/get-shit-done/bin/lib/install-profiles.cjs +0 -603
  345. package/get-shit-done/bin/lib/installer-migration-authoring.cjs +0 -117
  346. package/get-shit-done/bin/lib/installer-migration-report.cjs +0 -355
  347. package/get-shit-done/bin/lib/installer-migrations/000-first-time-baseline.cjs +0 -220
  348. package/get-shit-done/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +0 -41
  349. package/get-shit-done/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +0 -80
  350. package/get-shit-done/bin/lib/installer-migrations.cjs +0 -778
  351. package/get-shit-done/bin/lib/intel.cjs +0 -708
  352. package/get-shit-done/bin/lib/learnings.cjs +0 -421
  353. package/get-shit-done/bin/lib/milestone.cjs +0 -372
  354. package/get-shit-done/bin/lib/model-catalog.cjs +0 -229
  355. package/get-shit-done/bin/lib/model-profiles.cjs +0 -31
  356. package/get-shit-done/bin/lib/observability/event.cjs +0 -82
  357. package/get-shit-done/bin/lib/observability/logger.cjs +0 -174
  358. package/get-shit-done/bin/lib/phase-command-router.cjs +0 -191
  359. package/get-shit-done/bin/lib/phase-lifecycle.cjs +0 -79
  360. package/get-shit-done/bin/lib/phase.cjs +0 -1607
  361. package/get-shit-done/bin/lib/phases-command-router.cjs +0 -39
  362. package/get-shit-done/bin/lib/planning-workspace.cjs +0 -238
  363. package/get-shit-done/bin/lib/profile-output.cjs +0 -1141
  364. package/get-shit-done/bin/lib/profile-pipeline.cjs +0 -539
  365. package/get-shit-done/bin/lib/project-root.cjs +0 -112
  366. package/get-shit-done/bin/lib/prompt-budget.cjs +0 -399
  367. package/get-shit-done/bin/lib/review-reviewer-selection.cjs +0 -126
  368. package/get-shit-done/bin/lib/roadmap-command-router.cjs +0 -162
  369. package/get-shit-done/bin/lib/roadmap-upgrade.cjs +0 -569
  370. package/get-shit-done/bin/lib/roadmap.cjs +0 -651
  371. package/get-shit-done/bin/lib/runtime-artifact-layout.cjs +0 -301
  372. package/get-shit-done/bin/lib/runtime-homes.cjs +0 -222
  373. package/get-shit-done/bin/lib/runtime-name-policy.cjs +0 -83
  374. package/get-shit-done/bin/lib/runtime-slash.cjs +0 -112
  375. package/get-shit-done/bin/lib/secrets.cjs +0 -32
  376. package/get-shit-done/bin/lib/security.cjs +0 -600
  377. package/get-shit-done/bin/lib/shell-command-projection.cjs +0 -535
  378. package/get-shit-done/bin/lib/state-command-router.cjs +0 -252
  379. package/get-shit-done/bin/lib/state.cjs +0 -2073
  380. package/get-shit-done/bin/lib/surface.cjs +0 -470
  381. package/get-shit-done/bin/lib/task-command-router.cjs +0 -81
  382. package/get-shit-done/bin/lib/template.cjs +0 -228
  383. package/get-shit-done/bin/lib/uat.cjs +0 -289
  384. package/get-shit-done/bin/lib/ui-safety-gate.cjs +0 -111
  385. package/get-shit-done/bin/lib/update-context.cjs +0 -209
  386. package/get-shit-done/bin/lib/validate-command-router.cjs +0 -83
  387. package/get-shit-done/bin/lib/validate.cjs +0 -118
  388. package/get-shit-done/bin/lib/verify-command-router.cjs +0 -40
  389. package/get-shit-done/bin/lib/verify.cjs +0 -1614
  390. package/get-shit-done/bin/lib/workstream-inventory.cjs +0 -146
  391. package/get-shit-done/bin/lib/workstream.cjs +0 -389
  392. package/get-shit-done/bin/lib/worktree-safety.cjs +0 -985
  393. package/get-shit-done/workflows/_runtime-launcher.snippet.sh +0 -1
  394. package/scripts/lint-no-source-grep-extras.cjs +0 -81
  395. package/scripts/lint-no-source-grep.cjs +0 -174
  396. /package/{get-shit-done → gsd-core}/bin/shared/config-defaults.manifest.json +0 -0
  397. /package/{get-shit-done → gsd-core}/bin/shared/model-catalog.json +0 -0
  398. /package/{get-shit-done → gsd-core}/bin/shared/runtime-aliases.manifest.json +0 -0
  399. /package/{get-shit-done → gsd-core}/bin/verify-reapply-patches.cjs +0 -0
  400. /package/{get-shit-done → gsd-core}/contexts/dev.md +0 -0
  401. /package/{get-shit-done → gsd-core}/contexts/research.md +0 -0
  402. /package/{get-shit-done → gsd-core}/contexts/review.md +0 -0
  403. /package/{get-shit-done → gsd-core}/references/agent-contracts.md +0 -0
  404. /package/{get-shit-done → gsd-core}/references/ai-evals.md +0 -0
  405. /package/{get-shit-done → gsd-core}/references/ai-frameworks.md +0 -0
  406. /package/{get-shit-done → gsd-core}/references/autonomous-smart-discuss.md +0 -0
  407. /package/{get-shit-done → gsd-core}/references/checkpoints.md +0 -0
  408. /package/{get-shit-done → gsd-core}/references/common-bug-patterns.md +0 -0
  409. /package/{get-shit-done → gsd-core}/references/context-budget.md +0 -0
  410. /package/{get-shit-done → gsd-core}/references/continuation-format.md +0 -0
  411. /package/{get-shit-done → gsd-core}/references/debugger-philosophy.md +0 -0
  412. /package/{get-shit-done → gsd-core}/references/decimal-phase-calculation.md +0 -0
  413. /package/{get-shit-done → gsd-core}/references/doc-conflict-engine.md +0 -0
  414. /package/{get-shit-done → gsd-core}/references/domain-probes.md +0 -0
  415. /package/{get-shit-done → gsd-core}/references/execute-mvp-tdd.md +0 -0
  416. /package/{get-shit-done → gsd-core}/references/executor-examples.md +0 -0
  417. /package/{get-shit-done → gsd-core}/references/gate-prompts.md +0 -0
  418. /package/{get-shit-done → gsd-core}/references/gates.md +0 -0
  419. /package/{get-shit-done → gsd-core}/references/git-integration.md +0 -0
  420. /package/{get-shit-done → gsd-core}/references/git-planning-commit.md +0 -0
  421. /package/{get-shit-done → gsd-core}/references/ios-scaffold.md +0 -0
  422. /package/{get-shit-done → gsd-core}/references/mandatory-initial-read.md +0 -0
  423. /package/{get-shit-done → gsd-core}/references/model-profiles.md +0 -0
  424. /package/{get-shit-done → gsd-core}/references/phase-argument-parsing.md +0 -0
  425. /package/{get-shit-done → gsd-core}/references/planner-antipatterns.md +0 -0
  426. /package/{get-shit-done → gsd-core}/references/planner-chunked.md +0 -0
  427. /package/{get-shit-done → gsd-core}/references/planner-gap-closure.md +0 -0
  428. /package/{get-shit-done → gsd-core}/references/planner-human-verify-mode.md +0 -0
  429. /package/{get-shit-done → gsd-core}/references/planner-interface-context.md +0 -0
  430. /package/{get-shit-done → gsd-core}/references/planner-reviews.md +0 -0
  431. /package/{get-shit-done → gsd-core}/references/planner-revision.md +0 -0
  432. /package/{get-shit-done → gsd-core}/references/planner-source-audit.md +0 -0
  433. /package/{get-shit-done → gsd-core}/references/planning-config.md +0 -0
  434. /package/{get-shit-done → gsd-core}/references/project-skills-discovery.md +0 -0
  435. /package/{get-shit-done → gsd-core}/references/questioning.md +0 -0
  436. /package/{get-shit-done → gsd-core}/references/revision-loop.md +0 -0
  437. /package/{get-shit-done → gsd-core}/references/scout-codebase.md +0 -0
  438. /package/{get-shit-done → gsd-core}/references/skeleton-template.md +0 -0
  439. /package/{get-shit-done → gsd-core}/references/sketch-interactivity.md +0 -0
  440. /package/{get-shit-done → gsd-core}/references/sketch-theme-system.md +0 -0
  441. /package/{get-shit-done → gsd-core}/references/sketch-tooling.md +0 -0
  442. /package/{get-shit-done → gsd-core}/references/sketch-variant-patterns.md +0 -0
  443. /package/{get-shit-done → gsd-core}/references/spidr-splitting.md +0 -0
  444. /package/{get-shit-done → gsd-core}/references/tdd.md +0 -0
  445. /package/{get-shit-done → gsd-core}/references/thinking-models-debug.md +0 -0
  446. /package/{get-shit-done → gsd-core}/references/thinking-models-execution.md +0 -0
  447. /package/{get-shit-done → gsd-core}/references/thinking-models-planning.md +0 -0
  448. /package/{get-shit-done → gsd-core}/references/thinking-models-research.md +0 -0
  449. /package/{get-shit-done → gsd-core}/references/thinking-models-verification.md +0 -0
  450. /package/{get-shit-done → gsd-core}/references/thinking-partner.md +0 -0
  451. /package/{get-shit-done → gsd-core}/references/ui-brand.md +0 -0
  452. /package/{get-shit-done → gsd-core}/references/universal-anti-patterns.md +0 -0
  453. /package/{get-shit-done → gsd-core}/references/user-profiling.md +0 -0
  454. /package/{get-shit-done → gsd-core}/references/user-story-template.md +0 -0
  455. /package/{get-shit-done → gsd-core}/references/verification-overrides.md +0 -0
  456. /package/{get-shit-done → gsd-core}/references/verify-mvp-mode.md +0 -0
  457. /package/{get-shit-done → gsd-core}/references/workstream-flag.md +0 -0
  458. /package/{get-shit-done → gsd-core}/templates/AI-SPEC.md +0 -0
  459. /package/{get-shit-done → gsd-core}/templates/DEBUG.md +0 -0
  460. /package/{get-shit-done → gsd-core}/templates/SECURITY.md +0 -0
  461. /package/{get-shit-done → gsd-core}/templates/UAT.md +0 -0
  462. /package/{get-shit-done → gsd-core}/templates/UI-SPEC.md +0 -0
  463. /package/{get-shit-done → gsd-core}/templates/VALIDATION.md +0 -0
  464. /package/{get-shit-done → gsd-core}/templates/claude-md.md +0 -0
  465. /package/{get-shit-done → gsd-core}/templates/codebase/architecture.md +0 -0
  466. /package/{get-shit-done → gsd-core}/templates/codebase/concerns.md +0 -0
  467. /package/{get-shit-done → gsd-core}/templates/codebase/conventions.md +0 -0
  468. /package/{get-shit-done → gsd-core}/templates/codebase/integrations.md +0 -0
  469. /package/{get-shit-done → gsd-core}/templates/codebase/stack.md +0 -0
  470. /package/{get-shit-done → gsd-core}/templates/codebase/testing.md +0 -0
  471. /package/{get-shit-done → gsd-core}/templates/config.json +0 -0
  472. /package/{get-shit-done → gsd-core}/templates/context.md +0 -0
  473. /package/{get-shit-done → gsd-core}/templates/continue-here.md +0 -0
  474. /package/{get-shit-done → gsd-core}/templates/debug-subagent-prompt.md +0 -0
  475. /package/{get-shit-done → gsd-core}/templates/dev-preferences.md +0 -0
  476. /package/{get-shit-done → gsd-core}/templates/discovery.md +0 -0
  477. /package/{get-shit-done → gsd-core}/templates/discussion-log.md +0 -0
  478. /package/{get-shit-done → gsd-core}/templates/milestone-archive.md +0 -0
  479. /package/{get-shit-done → gsd-core}/templates/milestone.md +0 -0
  480. /package/{get-shit-done → gsd-core}/templates/planner-subagent-prompt.md +0 -0
  481. /package/{get-shit-done → gsd-core}/templates/project.md +0 -0
  482. /package/{get-shit-done → gsd-core}/templates/requirements.md +0 -0
  483. /package/{get-shit-done → gsd-core}/templates/research-project/ARCHITECTURE.md +0 -0
  484. /package/{get-shit-done → gsd-core}/templates/research-project/FEATURES.md +0 -0
  485. /package/{get-shit-done → gsd-core}/templates/research-project/PITFALLS.md +0 -0
  486. /package/{get-shit-done → gsd-core}/templates/research-project/STACK.md +0 -0
  487. /package/{get-shit-done → gsd-core}/templates/research-project/SUMMARY.md +0 -0
  488. /package/{get-shit-done → gsd-core}/templates/research.md +0 -0
  489. /package/{get-shit-done → gsd-core}/templates/retrospective.md +0 -0
  490. /package/{get-shit-done → gsd-core}/templates/roadmap.md +0 -0
  491. /package/{get-shit-done → gsd-core}/templates/spec.md +0 -0
  492. /package/{get-shit-done → gsd-core}/templates/state.md +0 -0
  493. /package/{get-shit-done → gsd-core}/templates/summary-complex.md +0 -0
  494. /package/{get-shit-done → gsd-core}/templates/summary-minimal.md +0 -0
  495. /package/{get-shit-done → gsd-core}/templates/summary-standard.md +0 -0
  496. /package/{get-shit-done → gsd-core}/templates/summary.md +0 -0
  497. /package/{get-shit-done → gsd-core}/templates/user-profile.md +0 -0
  498. /package/{get-shit-done → gsd-core}/templates/user-setup.md +0 -0
  499. /package/{get-shit-done → gsd-core}/templates/verification-report.md +0 -0
  500. /package/{get-shit-done → gsd-core}/workflows/analyze-dependencies.md +0 -0
  501. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/all.md +0 -0
  502. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/analyze.md +0 -0
  503. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/batch.md +0 -0
  504. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/default.md +0 -0
  505. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/text.md +0 -0
  506. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/templates/checkpoint.json +0 -0
  507. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/templates/context.md +0 -0
  508. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/templates/discussion-log.md +0 -0
  509. /package/{get-shit-done → gsd-core}/workflows/discuss-phase-power.md +0 -0
  510. /package/{get-shit-done → gsd-core}/workflows/execute-phase/steps/per-plan-worktree-gate.md +0 -0
  511. /package/{get-shit-done → gsd-core}/workflows/fast.md +0 -0
  512. /package/{get-shit-done → gsd-core}/workflows/help/modes/brief.md +0 -0
  513. /package/{get-shit-done → gsd-core}/workflows/help/modes/default.md +0 -0
  514. /package/{get-shit-done → gsd-core}/workflows/help/modes/topic.md +0 -0
  515. /package/{get-shit-done → gsd-core}/workflows/help.md +0 -0
  516. /package/{get-shit-done → gsd-core}/workflows/inbox.md +0 -0
  517. /package/{get-shit-done → gsd-core}/workflows/list-phase-assumptions.md +0 -0
  518. /package/{get-shit-done → gsd-core}/workflows/node-repair.md +0 -0
  519. /package/{get-shit-done → gsd-core}/workflows/note.md +0 -0
  520. /package/{get-shit-done → gsd-core}/workflows/pr-branch.md +0 -0
  521. /package/{get-shit-done → gsd-core}/workflows/session-report.md +0 -0
@@ -38,7 +38,7 @@ Key characteristics of the input:
38
38
  </input>
39
39
 
40
40
  <reference>
41
- @~/.claude/get-shit-done/references/user-profiling.md
41
+ @~/.claude/gsd-core/references/user-profiling.md
42
42
 
43
43
  This is the detection heuristics rubric. Read it in full before analyzing any messages. It defines:
44
44
  - The 8 dimensions and their rating spectrums
@@ -52,7 +52,7 @@ This is the detection heuristics rubric. Read it in full before analyzing any me
52
52
  <process>
53
53
 
54
54
  <step name="load_rubric">
55
- Read the user-profiling reference document at `~/.claude/get-shit-done/references/user-profiling.md` to load:
55
+ Read the user-profiling reference document at `~/.claude/gsd-core/references/user-profiling.md` to load:
56
56
  - All 8 dimension definitions with rating spectrums
57
57
  - Signal patterns and detection heuristics per dimension
58
58
  - Confidence scoring thresholds (HIGH: 10+ signals across 2+ projects, MEDIUM: 5-9, LOW: <5, UNSCORED: 0)
@@ -16,7 +16,7 @@ A completed phase has been submitted for goal-backward verification. Verify that
16
16
 
17
17
  Goal-backward verification. Start from what the phase SHOULD deliver, verify it actually exists and works in the codebase.
18
18
 
19
- @~/.claude/get-shit-done/references/mandatory-initial-read.md
19
+ @~/.claude/gsd-core/references/mandatory-initial-read.md
20
20
 
21
21
  **Critical mindset:** Do NOT trust SUMMARY.md claims. SUMMARYs document what Claude SAID it did. You verify what ACTUALLY exists in the code. These often differ.
22
22
 
@@ -39,8 +39,8 @@ Every truth must resolve to VERIFIED, FAILED (BLOCKER), or UNCERTAIN (WARNING wi
39
39
  </adversarial_stance>
40
40
 
41
41
  <required_reading>
42
- @~/.claude/get-shit-done/references/verification-overrides.md
43
- @~/.claude/get-shit-done/references/gates.md
42
+ @~/.claude/gsd-core/references/verification-overrides.md
43
+ @~/.claude/gsd-core/references/gates.md
44
44
  </required_reading>
45
45
 
46
46
  This agent implements the **Escalation Gate** pattern (surfaces unresolvable gaps to the developer for decision).
@@ -49,7 +49,7 @@ Before verifying, discover project context:
49
49
 
50
50
  **Project instructions:** Read `./CLAUDE.md` if it exists in the working directory. Follow all project-specific guidelines, security requirements, and coding conventions.
51
51
 
52
- **Project skills:** @~/.claude/get-shit-done/references/project-skills-discovery.md
52
+ **Project skills:** @~/.claude/gsd-core/references/project-skills-discovery.md
53
53
  - Load `rules/*.md` as needed during **verification**.
54
54
  - Apply skill rules when scanning for anti-patterns and verifying quality.
55
55
  </project_context>
@@ -71,10 +71,10 @@ Then verify each level against the actual codebase.
71
71
  <verification_process>
72
72
 
73
73
  At verification decision points, apply structured reasoning:
74
- @~/.claude/get-shit-done/references/thinking-models-verification.md
74
+ @~/.claude/gsd-core/references/thinking-models-verification.md
75
75
 
76
76
  At verification decision points, reference calibration examples:
77
- @~/.claude/get-shit-done/references/few-shot-examples/verifier.md
77
+ @~/.claude/gsd-core/references/few-shot-examples/verifier.md
78
78
 
79
79
  ## Step 0: Check for Previous Verification
80
80
 
@@ -644,7 +644,7 @@ Deferred items are informational only — they do not require closure plans.
644
644
 
645
645
  ## MVP Mode Verification
646
646
 
647
- **When the phase under verification has `mode: mvp` in ROADMAP.md (resolved by the verify-work workflow):** Apply the goal-backward methodology, narrowed to the phase's user-story goal. Required reading: `@~/.claude/get-shit-done/references/verify-mvp-mode.md`.
647
+ **When the phase under verification has `mode: mvp` in ROADMAP.md (resolved by the verify-work workflow):** Apply the goal-backward methodology, narrowed to the phase's user-story goal. Required reading: `@~/.claude/gsd-core/references/verify-mvp-mode.md`.
648
648
 
649
649
  **Core narrowing rule:** Goal-backward verification normally checks that the phase goal is observably true in the codebase. Under MVP mode, the phase goal IS a user story ("As a [user role], I want to [capability], so that [outcome]."). Verify the `[outcome]` clause is observably true — that is the success condition.
650
650
 
package/bin/install.js CHANGED
@@ -18,7 +18,7 @@ const {
18
18
  projectCodexHookTomlCommand,
19
19
  shellHookOmitsBashRunner,
20
20
  buildLocalShellHookCommand,
21
- } = require('../get-shit-done/bin/lib/shell-command-projection.cjs');
21
+ } = require('../gsd-core/bin/lib/shell-command-projection.cjs');
22
22
 
23
23
  // Bidirectional GSD slash-command namespace transformer (#3583).
24
24
  // Required at module scope so the command list can be computed once per install
@@ -30,7 +30,7 @@ const {
30
30
  } = require(path.join(__dirname, '..', 'scripts', 'fix-slash-commands.cjs'));
31
31
  const {
32
32
  resolveAntigravityGlobalDir,
33
- } = require('../get-shit-done/bin/lib/runtime-homes.cjs');
33
+ } = require('../gsd-core/bin/lib/runtime-homes.cjs');
34
34
 
35
35
  /**
36
36
  * Runtimes that register hyphen-form `name:` per #2808 AND copy agent bodies
@@ -75,7 +75,7 @@ const dim = '\x1b[2m';
75
75
  const reset = '\x1b[0m';
76
76
 
77
77
  // Codex config.toml constants
78
- const GSD_CODEX_MARKER = '# GSD Agent Configuration \u2014 managed by get-shit-done installer';
78
+ const GSD_CODEX_MARKER = '# GSD Agent Configuration \u2014 managed by gsd-core installer';
79
79
  const GSD_CODEX_HOOKS_OWNERSHIP_PREFIX = '# GSD codex_hooks ownership: ';
80
80
  // Codex's hook-enabling feature flag (issue #3566). Codex itself marks
81
81
  // `codex_hooks` as a `legacy_key` in codex-rs/features/src/legacy.rs; the
@@ -92,7 +92,7 @@ function isCodexHooksFeatureKey(key) {
92
92
  }
93
93
 
94
94
  // Copilot instructions marker constants
95
- const GSD_COPILOT_INSTRUCTIONS_MARKER = '<!-- GSD Configuration \u2014 managed by get-shit-done installer -->';
95
+ const GSD_COPILOT_INSTRUCTIONS_MARKER = '<!-- GSD Configuration \u2014 managed by gsd-core installer -->';
96
96
  const GSD_COPILOT_INSTRUCTIONS_CLOSE_MARKER = '<!-- /GSD Configuration -->';
97
97
 
98
98
  // GSD-managed files under hooks/lib/ (helpers required by gsd-*.sh hooks).
@@ -136,11 +136,11 @@ const pkg = require('../package.json');
136
136
  // #2517 — runtime-aware tier resolution shared with core.cjs.
137
137
  // Hoisted to top with absolute __dirname-based paths so `gsd install codex` works
138
138
  // when invoked via npm global install (cwd is the user's project, not the gsd repo
139
- // root). Inline `require('../get-shit-done/...')` from inside install functions
139
+ // root). Inline `require('../gsd-core/...')` from inside install functions
140
140
  // works only because Node resolves it relative to the install.js file regardless
141
141
  // of cwd, but keeping the require at the top makes the dependency explicit and
142
142
  // surfaces resolution failures at process start instead of at first install call.
143
- const _gsdLibDir = path.join(__dirname, '..', 'get-shit-done', 'bin', 'lib');
143
+ const _gsdLibDir = path.join(__dirname, '..', 'gsd-core', 'bin', 'lib');
144
144
  const { MODEL_PROFILES: GSD_MODEL_PROFILES } = require(path.join(_gsdLibDir, 'model-profiles.cjs'));
145
145
  const {
146
146
  RUNTIME_PROFILE_MAP: GSD_RUNTIME_PROFILE_MAP,
@@ -163,7 +163,7 @@ function _getGsdEffortCatalog() {
163
163
  const manifestPath = path.join(
164
164
  __dirname,
165
165
  '..',
166
- 'get-shit-done',
166
+ 'gsd-core',
167
167
  'bin',
168
168
  'shared',
169
169
  'config-defaults.manifest.json'
@@ -227,6 +227,13 @@ const {
227
227
  const {
228
228
  resolveRuntimeArtifactLayout,
229
229
  } = require(path.join(_gsdLibDir, 'runtime-artifact-layout.cjs'));
230
+ const {
231
+ planLegacyCleanup,
232
+ applyLegacyCleanup,
233
+ } = require(path.join(__dirname, '..', 'gsd-core', 'bin', 'lib', 'legacy-cleanup.cjs'));
234
+ const {
235
+ updateCacheFileName,
236
+ } = require(path.join(__dirname, '..', 'gsd-core', 'bin', 'lib', 'package-identity.cjs'));
230
237
 
231
238
  // Parse args
232
239
  const args = process.argv.slice(2);
@@ -253,6 +260,7 @@ const hasUninstall = args.includes('--uninstall') || args.includes('-u');
253
260
  const hasSkillsRoot = args.includes('--skills-root');
254
261
  const hasPortableHooks = args.includes('--portable-hooks') || process.env.GSD_PORTABLE_HOOKS === '1';
255
262
  const hasMinimal = args.includes('--minimal') || args.includes('--core-only');
263
+ const hasDryRun = args.includes('--dry-run');
256
264
  // --profile=<name> or --profile=<n1>,<n2> (composable); mutually exclusive with --minimal
257
265
  const _profileArgRaw = (() => {
258
266
  for (const arg of args) {
@@ -5226,14 +5234,14 @@ function installCodexConfig(targetDir, agentsSrc) {
5226
5234
  const agents = [];
5227
5235
 
5228
5236
  // Compute the Codex GSD install path (absolute, so subagents with empty $HOME work — #820)
5229
- const codexGsdPath = `${path.resolve(targetDir, 'get-shit-done').replace(/\\/g, '/')}/`;
5237
+ const codexGsdPath = `${path.resolve(targetDir, 'gsd-core').replace(/\\/g, '/')}/`;
5230
5238
 
5231
5239
  for (const file of agentEntries) {
5232
5240
  let content = fs.readFileSync(path.join(agentsSrc, file), 'utf8');
5233
- // Replace full .claude/get-shit-done prefix so path resolves to the Codex
5241
+ // Replace full .claude/gsd-core prefix so path resolves to the Codex
5234
5242
  // GSD install before generic .claude → .codex conversion rewrites it.
5235
- content = content.replace(/~\/\.claude\/get-shit-done\//g, codexGsdPath);
5236
- content = content.replace(/\$HOME\/\.claude\/get-shit-done\//g, codexGsdPath);
5243
+ content = content.replace(/~\/\.claude\/gsd-core\//g, codexGsdPath);
5244
+ content = content.replace(/\$HOME\/\.claude\/gsd-core\//g, codexGsdPath);
5237
5245
  // Route TOML emit through the same full Claude→Codex conversion pipeline
5238
5246
  // used on the `.md` emit path (#2639). Covers: slash-command rewrites,
5239
5247
  // $ARGUMENTS → {{GSD_ARGS}}, /clear removal, anchored and bare .claude/
@@ -6032,7 +6040,7 @@ function writeHermesCategoryDescription(categoryDir) {
6032
6040
  */
6033
6041
 
6034
6042
  /**
6035
- * Single source of truth for user-owned artifacts inside get-shit-done/.
6043
+ * Single source of truth for user-owned artifacts inside gsd-core/.
6036
6044
  *
6037
6045
  * These files are created/refreshed by user-facing workflows (e.g.
6038
6046
  * /gsd-profile-user) and must be preserved across reinstalls. Critically, they
@@ -6045,7 +6053,7 @@ function writeHermesCategoryDescription(categoryDir) {
6045
6053
  * both. Both preserveUserArtifacts call sites and writeManifest must agree on
6046
6054
  * this list, which is why it lives here as a single constant.
6047
6055
  *
6048
- * Paths are relative to the get-shit-done/ directory.
6056
+ * Paths are relative to the gsd-core/ directory.
6049
6057
  */
6050
6058
  const USER_OWNED_ARTIFACTS = ['USER-PROFILE.md'];
6051
6059
 
@@ -7178,8 +7186,8 @@ function uninstall(isGlobal, runtime = 'claude') {
7178
7186
  }
7179
7187
  }
7180
7188
 
7181
- // 2. Remove get-shit-done directory
7182
- const gsdDir = path.join(targetDir, 'get-shit-done');
7189
+ // 2. Remove gsd-core directory
7190
+ const gsdDir = path.join(targetDir, 'gsd-core');
7183
7191
  if (fs.existsSync(gsdDir)) {
7184
7192
  // Preserve user-generated files before wipe (#1423)
7185
7193
  const userProfilePath = path.join(gsdDir, 'USER-PROFILE.md');
@@ -7187,14 +7195,14 @@ function uninstall(isGlobal, runtime = 'claude') {
7187
7195
 
7188
7196
  fs.rmSync(gsdDir, { recursive: true });
7189
7197
  removedCount++;
7190
- console.log(` ${green}✓${reset} Removed get-shit-done/`);
7198
+ console.log(` ${green}✓${reset} Removed gsd-core/`);
7191
7199
 
7192
7200
  // Restore user-generated files
7193
7201
  if (preservedProfile) {
7194
7202
  try {
7195
7203
  fs.mkdirSync(gsdDir, { recursive: true });
7196
7204
  fs.writeFileSync(userProfilePath, preservedProfile);
7197
- console.log(` ${green}✓${reset} Preserved get-shit-done/USER-PROFILE.md`);
7205
+ console.log(` ${green}✓${reset} Preserved gsd-core/USER-PROFILE.md`);
7198
7206
  } catch (err) {
7199
7207
  console.error(` ${red}✗${reset} Failed to restore USER-PROFILE.md: ${err.message}`);
7200
7208
  }
@@ -7351,7 +7359,7 @@ function uninstall(isGlobal, runtime = 'claude') {
7351
7359
  if (config.permission[permType]) {
7352
7360
  const keys = Object.keys(config.permission[permType]);
7353
7361
  for (const key of keys) {
7354
- if (key.includes('get-shit-done')) {
7362
+ if (key.includes('gsd-core')) {
7355
7363
  delete config.permission[permType][key];
7356
7364
  modified = true;
7357
7365
  }
@@ -7392,7 +7400,7 @@ function uninstall(isGlobal, runtime = 'claude') {
7392
7400
  if (config.permission[permType]) {
7393
7401
  const keys = Object.keys(config.permission[permType]);
7394
7402
  for (const key of keys) {
7395
- if (key.includes('get-shit-done')) {
7403
+ if (key.includes('gsd-core')) {
7396
7404
  delete config.permission[permType][key];
7397
7405
  modified = true;
7398
7406
  }
@@ -7501,7 +7509,7 @@ function parseJsonc(content) {
7501
7509
 
7502
7510
  /**
7503
7511
  * Configure OpenCode permissions to allow reading GSD reference docs
7504
- * This prevents permission prompts when GSD accesses the get-shit-done directory
7512
+ * This prevents permission prompts when GSD accesses the gsd-core directory
7505
7513
  * @param {boolean} isGlobal - Whether this is a global or local install
7506
7514
  * @param {string|null} configDir - Resolved config directory when already known
7507
7515
  */
@@ -7547,8 +7555,8 @@ function configureOpencodePermissions(isGlobal = true, configDir = null) {
7547
7555
  // Use ~ shorthand if it's in the default location, otherwise use full path
7548
7556
  const defaultConfigDir = path.join(os.homedir(), '.config', 'opencode');
7549
7557
  const gsdPath = opencodeConfigDir === defaultConfigDir
7550
- ? '~/.config/opencode/get-shit-done/*'
7551
- : `${opencodeConfigDir.replace(/\\/g, '/')}/get-shit-done/*`;
7558
+ ? '~/.config/opencode/gsd-core/*'
7559
+ : `${opencodeConfigDir.replace(/\\/g, '/')}/gsd-core/*`;
7552
7560
 
7553
7561
  let modified = false;
7554
7562
 
@@ -7581,7 +7589,7 @@ function configureOpencodePermissions(isGlobal = true, configDir = null) {
7581
7589
 
7582
7590
  /**
7583
7591
  * Configure Kilo permissions to allow reading GSD reference docs
7584
- * This prevents permission prompts when GSD accesses the get-shit-done directory
7592
+ * This prevents permission prompts when GSD accesses the gsd-core directory
7585
7593
  * @param {boolean} isGlobal - Whether this is a global or local install
7586
7594
  * @param {string|null} configDir - Resolved config directory when already known
7587
7595
  */
@@ -7621,8 +7629,8 @@ function configureKiloPermissions(isGlobal = true, configDir = null) {
7621
7629
  // Use ~ shorthand if it's in the default location, otherwise use full path
7622
7630
  const defaultConfigDir = path.join(os.homedir(), '.config', 'kilo');
7623
7631
  const gsdPath = kiloConfigDir === defaultConfigDir
7624
- ? '~/.config/kilo/get-shit-done/*'
7625
- : `${kiloConfigDir.replace(/\\/g, '/')}/get-shit-done/*`;
7632
+ ? '~/.config/kilo/gsd-core/*'
7633
+ : `${kiloConfigDir.replace(/\\/g, '/')}/gsd-core/*`;
7626
7634
 
7627
7635
  let modified = false;
7628
7636
 
@@ -7793,7 +7801,7 @@ function writeManifest(configDir, runtime = 'claude', options = {}) {
7793
7801
  const isTrae = runtime === 'trae';
7794
7802
  const isCline = runtime === 'cline';
7795
7803
  const isHermes = runtime === 'hermes';
7796
- const gsdDir = path.join(configDir, 'get-shit-done');
7804
+ const gsdDir = path.join(configDir, 'gsd-core');
7797
7805
  const commandsDir = path.join(configDir, 'commands', 'gsd');
7798
7806
  const opencodeCommandDir = path.join(configDir, 'command');
7799
7807
  // Hermes nests GSD skills under skills/gsd/ as a single category (#2841).
@@ -7818,7 +7826,7 @@ function writeManifest(configDir, runtime = 'claude', options = {}) {
7818
7826
  // as a "local patch" (bug #2771). Single source of truth:
7819
7827
  // USER_OWNED_ARTIFACTS at top of file.
7820
7828
  if (USER_OWNED_ARTIFACTS.includes(rel)) continue;
7821
- manifest.files['get-shit-done/' + rel] = hash;
7829
+ manifest.files['gsd-core/' + rel] = hash;
7822
7830
  }
7823
7831
  // Record commands/gsd/ for any runtime that emits it (Gemini globally,
7824
7832
  // Claude Code locally — see #2923). Manifest must reflect everything on
@@ -7923,7 +7931,7 @@ function writeManifest(configDir, runtime = 'claude', options = {}) {
7923
7931
  function populatePristineDir({ packageSrc, pristineDir, modified, runtime, pathPrefix, isGlobal }) {
7924
7932
  if (!modified || modified.length === 0) return 0;
7925
7933
  // Modified paths come from manifest.files which can live under several
7926
- // install roots: get-shit-done/, commands/gsd/, command/, skills/, agents/,
7934
+ // install roots: gsd-core/, commands/gsd/, command/, skills/, agents/,
7927
7935
  // hooks/, plus runtime-specific root files (#3004 CR). Stage every
7928
7936
  // top-level dir that actually contains a modified path; root-level files
7929
7937
  // are copied directly without the transform pipeline (they don't need
@@ -8005,7 +8013,7 @@ function saveLocalPatches(configDir, pristineCtx) {
8005
8013
  // that were incorrectly recorded so refreshes don't surface false patches warnings.
8006
8014
  if (manifest.files) {
8007
8015
  for (const artifact of USER_OWNED_ARTIFACTS) {
8008
- delete manifest.files[`get-shit-done/${artifact}`];
8016
+ delete manifest.files[`gsd-core/${artifact}`];
8009
8017
  }
8010
8018
  }
8011
8019
 
@@ -8279,7 +8287,7 @@ function install(isGlobal, runtime = 'claude', options = {}) {
8279
8287
  : targetDir.replace(process.cwd(), '.');
8280
8288
 
8281
8289
  // Path prefix for file references in markdown content (e.g. gsd-tools.cjs).
8282
- // Replaces $HOME/.claude/ or ~/.claude/ so the result is <pathPrefix>get-shit-done/bin/...
8290
+ // Replaces $HOME/.claude/ or ~/.claude/ so the result is <pathPrefix>gsd-core/bin/...
8283
8291
  // For global installs: use $HOME/ so paths expand correctly inside double-quoted
8284
8292
  // shell commands (~ does NOT expand inside double quotes, causing MODULE_NOT_FOUND).
8285
8293
  // For local installs: use resolved absolute path (may be outside $HOME).
@@ -8406,7 +8414,7 @@ function install(isGlobal, runtime = 'claude', options = {}) {
8406
8414
  // codexPreInstallAgentFiles — Set of gsd-*.{md,toml} filenames in agents/
8407
8415
  // codexPreInstallAgentContents — Map<filename, Buffer> of pre-existing agent
8408
8416
  // file bytes, enabling full content restore (not just deletion) on rollback.
8409
- // codexPreInstallVersionBytes — Buffer (or null) of get-shit-done/VERSION
8417
+ // codexPreInstallVersionBytes — Buffer (or null) of gsd-core/VERSION
8410
8418
  //
8411
8419
  // These are referenced by restoreCodexSnapshot(), defined below inside the
8412
8420
  // config block. Defining the variables here (outer scope) makes them
@@ -8458,7 +8466,7 @@ function install(isGlobal, runtime = 'claude', options = {}) {
8458
8466
  }
8459
8467
  }
8460
8468
  }
8461
- const _preVersionPath = path.join(targetDir, 'get-shit-done', 'VERSION');
8469
+ const _preVersionPath = path.join(targetDir, 'gsd-core', 'VERSION');
8462
8470
  if (fs.existsSync(_preVersionPath)) {
8463
8471
  try { codexPreInstallVersionBytes = fs.readFileSync(_preVersionPath); } catch (_) { /* best-effort */ }
8464
8472
  }
@@ -8470,7 +8478,7 @@ function install(isGlobal, runtime = 'claude', options = {}) {
8470
8478
  // must also trigger rollback so the caller is never left in a partially-installed state.
8471
8479
  //
8472
8480
  // _codexPreConfigRollback covers the four surfaces that can be mutated before
8473
- // config.toml is touched: skills/, agents/, get-shit-done/VERSION, and orphaned
8481
+ // config.toml is touched: skills/, agents/, gsd-core/VERSION, and orphaned
8474
8482
  // atomic-write temp files. It is safe to call before any writes have happened.
8475
8483
  // The full restoreCodexSnapshot() (defined inside the config block) additionally
8476
8484
  // handles config.toml, which is not yet touched at this point in the pipeline.
@@ -8527,8 +8535,8 @@ function install(isGlobal, runtime = 'claude', options = {}) {
8527
8535
  }
8528
8536
  } catch (_) { /* best-effort */ }
8529
8537
  }
8530
- // get-shit-done/VERSION
8531
- const _earlyVersionPath = path.join(targetDir, 'get-shit-done', 'VERSION');
8538
+ // gsd-core/VERSION
8539
+ const _earlyVersionPath = path.join(targetDir, 'gsd-core', 'VERSION');
8532
8540
  if (codexPreInstallVersionBytes !== null) {
8533
8541
  try { fs.writeFileSync(_earlyVersionPath, codexPreInstallVersionBytes); } catch (_) { /* best-effort */ }
8534
8542
  } else if (fs.existsSync(_earlyVersionPath)) {
@@ -8783,24 +8791,24 @@ function install(isGlobal, runtime = 'claude', options = {}) {
8783
8791
  }
8784
8792
  }
8785
8793
 
8786
- // Copy get-shit-done skill with path replacement
8794
+ // Copy gsd-core skill with path replacement
8787
8795
  // Preserve user-generated files before the wipe-and-copy so they survive re-install
8788
- const skillSrc = path.join(src, 'get-shit-done');
8789
- const skillDest = path.join(targetDir, 'get-shit-done');
8796
+ const skillSrc = path.join(src, 'gsd-core');
8797
+ const skillDest = path.join(targetDir, 'gsd-core');
8790
8798
  const savedGsdArtifacts = preserveUserArtifacts(skillDest, USER_OWNED_ARTIFACTS);
8791
8799
  copyWithPathReplacement(skillSrc, skillDest, pathPrefix, runtime, false, isGlobal);
8792
8800
  restoreUserArtifacts(skillDest, savedGsdArtifacts);
8793
- if (verifyInstalled(skillDest, 'get-shit-done')) {
8801
+ if (verifyInstalled(skillDest, 'gsd-core')) {
8794
8802
  console.log(` ${green}✓${reset} Installed workflow assets`);
8795
8803
  } else {
8796
- failures.push('get-shit-done');
8804
+ failures.push('gsd-core');
8797
8805
  }
8798
8806
 
8799
- // Copy shared manifests into the get-shit-done payload
8807
+ // Copy shared manifests into the gsd-core payload
8800
8808
  // at the co-located path that CJS modules resolve first:
8801
- // get-shit-done/bin/shared/*.json
8809
+ // gsd-core/bin/shared/*.json
8802
8810
  //
8803
- // This source now lives under get-shit-done/bin/shared in-repo.
8811
+ // This source now lives under gsd-core/bin/shared in-repo.
8804
8812
  const sharedPayloadFiles = [
8805
8813
  'model-catalog.json',
8806
8814
  'config-defaults.manifest.json',
@@ -8808,9 +8816,9 @@ function install(isGlobal, runtime = 'claude', options = {}) {
8808
8816
  'runtime-aliases.manifest.json',
8809
8817
  ];
8810
8818
  for (const fileName of sharedPayloadFiles) {
8811
- const sharedSrc = path.join(src, 'get-shit-done', 'bin', 'shared', fileName);
8819
+ const sharedSrc = path.join(src, 'gsd-core', 'bin', 'shared', fileName);
8812
8820
  const sharedDest = path.join(skillDest, 'bin', 'shared', fileName);
8813
- const displayPath = `get-shit-done/bin/shared/${fileName}`;
8821
+ const displayPath = `gsd-core/bin/shared/${fileName}`;
8814
8822
  if (fs.existsSync(sharedSrc)) {
8815
8823
  fs.mkdirSync(path.dirname(sharedDest), { recursive: true });
8816
8824
  fs.copyFileSync(sharedSrc, sharedDest);
@@ -8820,7 +8828,7 @@ function install(isGlobal, runtime = 'claude', options = {}) {
8820
8828
  failures.push(displayPath);
8821
8829
  }
8822
8830
  } else {
8823
- failures.push(`get-shit-done/bin/shared/${fileName} (source missing)`);
8831
+ failures.push(`gsd-core/bin/shared/${fileName} (source missing)`);
8824
8832
  }
8825
8833
  }
8826
8834
 
@@ -8972,7 +8980,7 @@ function install(isGlobal, runtime = 'claude', options = {}) {
8972
8980
 
8973
8981
  // Copy CHANGELOG.md
8974
8982
  const changelogSrc = path.join(src, 'CHANGELOG.md');
8975
- const changelogDest = path.join(targetDir, 'get-shit-done', 'CHANGELOG.md');
8983
+ const changelogDest = path.join(targetDir, 'gsd-core', 'CHANGELOG.md');
8976
8984
  if (fs.existsSync(changelogSrc)) {
8977
8985
  fs.copyFileSync(changelogSrc, changelogDest);
8978
8986
  if (verifyFileInstalled(changelogDest, 'CHANGELOG.md')) {
@@ -8983,7 +8991,7 @@ function install(isGlobal, runtime = 'claude', options = {}) {
8983
8991
  }
8984
8992
 
8985
8993
  // Write VERSION file
8986
- const versionDest = path.join(targetDir, 'get-shit-done', 'VERSION');
8994
+ const versionDest = path.join(targetDir, 'gsd-core', 'VERSION');
8987
8995
  fs.writeFileSync(versionDest, pkg.version);
8988
8996
  if (verifyFileInstalled(versionDest, 'VERSION')) {
8989
8997
  console.log(` ${green}✓${reset} Wrote VERSION (${pkg.version})`);
@@ -9092,10 +9100,17 @@ function install(isGlobal, runtime = 'claude', options = {}) {
9092
9100
  console.log(` ${green}✓${reset} Installed hooks/lib/ helpers (git-cmd, graphify-rebuild, ...)`);
9093
9101
  }
9094
9102
 
9095
- // Clear stale update cache so next session re-evaluates hook versions
9096
- // Cache lives at ~/.cache/gsd/ (see hooks/gsd-check-update.js line 35-36)
9097
- const updateCacheFile = path.join(os.homedir(), '.cache', 'gsd', 'gsd-update-check.json');
9098
- try { fs.unlinkSync(updateCacheFile); } catch (e) { /* cache may not exist yet */ }
9103
+ // Remove legacy get-shit-done-cc artifacts and stale update caches (#607).
9104
+ // cleanupLegacyGsdCc handles both the legacy shared cache and the per-package
9105
+ // cache (formerly an inline unlinkSync here). A cleanup failure must never
9106
+ // abort a successful install — log a warning and continue.
9107
+ // install() is never reached in --dry-run mode (the early-exit at the CLI
9108
+ // dispatch handles preview), so cleanup here always applies for real.
9109
+ try {
9110
+ cleanupLegacyGsdCc({ dryRun: false });
9111
+ } catch (cleanupErr) {
9112
+ console.warn(` ${yellow}Warning: legacy cleanup failed: ${cleanupErr.message}${reset}`);
9113
+ }
9099
9114
 
9100
9115
  if (failures.length > 0) {
9101
9116
  console.error(`\n ${yellow}Installation incomplete!${reset} Failed: ${failures.join(', ')}`);
@@ -9210,7 +9225,7 @@ function install(isGlobal, runtime = 'claude', options = {}) {
9210
9225
  // newly-created dirs (i.e. those not in the pre-install Set)
9211
9226
  // agents/gsd-* — restore pre-existing files from content snapshot; remove
9212
9227
  // newly-created files
9213
- // get-shit-done/VERSION — restore or remove
9228
+ // gsd-core/VERSION — restore or remove
9214
9229
  // *.tmp-* — best-effort cleanup of installer-owned atomic-write temps
9215
9230
  //
9216
9231
  // Safe to call multiple times (idempotent): each remove/write is guarded by
@@ -9309,8 +9324,8 @@ function install(isGlobal, runtime = 'claude', options = {}) {
9309
9324
  } catch (_) { /* best-effort */ }
9310
9325
  }
9311
9326
 
9312
- // 4. get-shit-done/VERSION
9313
- const _rollbackVersionPath = path.join(targetDir, 'get-shit-done', 'VERSION');
9327
+ // 4. gsd-core/VERSION
9328
+ const _rollbackVersionPath = path.join(targetDir, 'gsd-core', 'VERSION');
9314
9329
  if (codexPreInstallVersionBytes !== null) {
9315
9330
  try { fs.writeFileSync(_rollbackVersionPath, codexPreInstallVersionBytes); }
9316
9331
  catch (_) { /* best-effort */ }
@@ -9529,7 +9544,7 @@ function install(isGlobal, runtime = 'claude', options = {}) {
9529
9544
 
9530
9545
  if (isCopilot) {
9531
9546
  // Generate copilot-instructions.md
9532
- const templatePath = path.join(targetDir, 'get-shit-done', 'templates', 'copilot-instructions.md');
9547
+ const templatePath = path.join(targetDir, 'gsd-core', 'templates', 'copilot-instructions.md');
9533
9548
  const instructionsPath = path.join(targetDir, 'copilot-instructions.md');
9534
9549
  if (fs.existsSync(templatePath)) {
9535
9550
  const template = fs.readFileSync(templatePath, 'utf8');
@@ -9565,10 +9580,10 @@ function install(isGlobal, runtime = 'claude', options = {}) {
9565
9580
  const clinerules = [
9566
9581
  '# GSD Core — Git. Ship. Done.',
9567
9582
  '',
9568
- '- GSD workflows live in `get-shit-done/workflows/`. Load the relevant workflow when',
9583
+ '- GSD workflows live in `gsd-core/workflows/`. Load the relevant workflow when',
9569
9584
  ' the user runs a `/gsd-*` command.',
9570
9585
  '- GSD agents live in `agents/`. Use the matching agent when spawning subagents.',
9571
- '- GSD tools are at `get-shit-done/bin/gsd-tools.cjs`. Run with `node`.',
9586
+ '- GSD tools are at `gsd-core/bin/gsd-tools.cjs`. Run with `node`.',
9572
9587
  '- Planning artifacts live in `.planning/`. Never edit them outside a GSD workflow.',
9573
9588
  '- Do not apply GSD workflows unless the user explicitly asks for them.',
9574
9589
  '- When a GSD command triggers a deliverable (feature, fix, docs), offer the next',
@@ -10697,6 +10712,86 @@ function maybeSuggestPathExport(globalBin, homeDir) {
10697
10712
  console.log('');
10698
10713
  }
10699
10714
 
10715
+ // Runtime subdir names to scan for legacy get-shit-done-cc artifacts (#607).
10716
+ // Covers both local (project-relative) and common global forms.
10717
+ const _LEGACY_SCAN_SUBDIR_NAMES = [
10718
+ '.claude',
10719
+ '.gemini',
10720
+ '.opencode',
10721
+ '.config/opencode',
10722
+ '.kilo',
10723
+ '.config/kilo',
10724
+ '.codex',
10725
+ '.copilot',
10726
+ '.github', // copilot local form
10727
+ '.agent', // antigravity local form
10728
+ '.cursor',
10729
+ '.windsurf',
10730
+ '.codeium/windsurf',
10731
+ '.augment',
10732
+ '.trae',
10733
+ '.qwen',
10734
+ '.hermes',
10735
+ '.codebuddy',
10736
+ '.cline',
10737
+ ];
10738
+
10739
+ /**
10740
+ * Detect and remove leftover get-shit-done-cc artifacts across ALL known
10741
+ * runtime config directories (issue #607).
10742
+ *
10743
+ * Exported so tests can call it directly without spawning a subprocess.
10744
+ *
10745
+ * Scans ONLY subdirs under homeDir — never cwd — to avoid touching the
10746
+ * user's active-project hooks when the installer is run from a project dir.
10747
+ *
10748
+ * @param {object} [opts]
10749
+ * @param {string} [opts.homeDir=os.homedir()] - home directory to scan
10750
+ * @param {boolean} [opts.dryRun=false] - preview only; no mutations
10751
+ * @param {object} [opts.logger=console] - injectable logger
10752
+ * @returns {{ plan: {path:string,reason:string}[], result: object }}
10753
+ */
10754
+ function cleanupLegacyGsdCc({ homeDir = os.homedir(), dryRun = false, logger = console } = {}) {
10755
+ // Build de-duplicated list of candidate config dirs to scan.
10756
+ // Only scan under homeDir — never cwd — to prevent accidental deletion of
10757
+ // the user's active-project hooks when the installer is invoked from a
10758
+ // project directory that has .claude/hooks or similar subdirs.
10759
+ const seen = new Set();
10760
+ const configDirs = [];
10761
+ for (const name of _LEGACY_SCAN_SUBDIR_NAMES) {
10762
+ const candidate = path.join(homeDir, name);
10763
+ if (!seen.has(candidate) && fs.existsSync(candidate)) {
10764
+ seen.add(candidate);
10765
+ configDirs.push(candidate);
10766
+ }
10767
+ }
10768
+
10769
+ // planLegacyCleanup scans each configDir and already includes the legacy
10770
+ // shared cache (gsd-update-check.json) as a plan entry.
10771
+ const plan = planLegacyCleanup(configDirs, { homeDir });
10772
+
10773
+ // Apply the plan (dryRun honors the flag).
10774
+ const result = applyLegacyCleanup(plan, { dryRun, logger });
10775
+
10776
+ // Also clear / preview the per-package cache so next session re-evaluates
10777
+ // hook versions (replaces the former inline unlinkSync on line ~9104).
10778
+ const perPkgCacheFile = path.join(homeDir, '.cache', 'gsd', updateCacheFileName);
10779
+ if (dryRun) {
10780
+ logger.log('[dry-run] would remove: ' + perPkgCacheFile + ' (per-package-update-cache)');
10781
+ } else {
10782
+ try { fs.unlinkSync(perPkgCacheFile); } catch (_e) { /* cache may not exist yet */ }
10783
+ }
10784
+
10785
+ // Concise summary
10786
+ if (plan.length > 0 || !dryRun) {
10787
+ const verb = dryRun ? 'Would remove' : 'Removed';
10788
+ const count = dryRun ? plan.length : result.removed.length;
10789
+ logger.log(`[legacy-cleanup] ${verb} ${count} legacy artifact(s).`);
10790
+ }
10791
+
10792
+ return { plan, result };
10793
+ }
10794
+
10700
10795
  /**
10701
10796
  * Install GSD for all selected runtimes
10702
10797
  */
@@ -10920,11 +11015,26 @@ module.exports = {
10920
11015
  installRuntimeArtifacts,
10921
11016
  uninstallRuntimeArtifacts,
10922
11017
  parseConfigDirFromArgs,
11018
+ cleanupLegacyGsdCc,
10923
11019
  };
10924
11020
 
10925
11021
  // Main logic — only run when not loaded as a module for testing
10926
11022
  if (require.main === module && !process.env.GSD_TEST_MODE) {
10927
- if (hasSkillsRoot) {
11023
+ if (hasDryRun) {
11024
+ // --dry-run: preview legacy cleanup and exit without installing.
11025
+ if (hasUninstall) {
11026
+ console.log('Note: --dry-run previews legacy get-shit-done-cc cleanup only; it does not preview --uninstall.');
11027
+ }
11028
+ console.log('Dry run — no files will be modified.\n');
11029
+ // cleanupLegacyGsdCc with dryRun:true is the single source of truth for
11030
+ // both the legacy artifacts and the per-package cache path — no duplicate
11031
+ // printing here.
11032
+ const { plan } = cleanupLegacyGsdCc({ dryRun: true });
11033
+ if (plan.length === 0) {
11034
+ console.log(' (no legacy get-shit-done-cc artifacts found)');
11035
+ }
11036
+ process.exit(0);
11037
+ } else if (hasSkillsRoot) {
10928
11038
  // Print the skills root directory for a given runtime (used by /gsd-sync-skills).
10929
11039
  // Usage: node install.js --skills-root <runtime>
10930
11040
  const runtimeArg = args[args.indexOf('--skills-root') + 1];
@@ -26,7 +26,7 @@ Output: Test files committed with message `test(phase-{N}): add unit and E2E tes
26
26
  </objective>
27
27
 
28
28
  <execution_context>
29
- @~/.claude/get-shit-done/workflows/add-tests.md
29
+ @~/.claude/gsd-core/workflows/add-tests.md
30
30
  </execution_context>
31
31
 
32
32
  <context>
@@ -22,9 +22,9 @@ Flow: Select Framework → Research Docs → Research Domain → Design Eval Str
22
22
  </objective>
23
23
 
24
24
  <execution_context>
25
- @~/.claude/get-shit-done/workflows/ai-integration-phase.md
26
- @~/.claude/get-shit-done/references/ai-frameworks.md
27
- @~/.claude/get-shit-done/references/ai-evals.md
25
+ @~/.claude/gsd-core/workflows/ai-integration-phase.md
26
+ @~/.claude/gsd-core/references/ai-frameworks.md
27
+ @~/.claude/gsd-core/references/ai-evals.md
28
28
  </execution_context>
29
29
 
30
30
  <context>
@@ -26,7 +26,7 @@ Flags:
26
26
  </objective>
27
27
 
28
28
  <execution_context>
29
- @~/.claude/get-shit-done/workflows/audit-fix.md
29
+ @~/.claude/gsd-core/workflows/audit-fix.md
30
30
  </execution_context>
31
31
 
32
32
  <process>
@@ -18,7 +18,7 @@ Verify milestone achieved its definition of done. Check requirements coverage, c
18
18
  </objective>
19
19
 
20
20
  <execution_context>
21
- @~/.claude/get-shit-done/workflows/audit-milestone.md
21
+ @~/.claude/gsd-core/workflows/audit-milestone.md
22
22
  </execution_context>
23
23
 
24
24
  <context>
@@ -12,7 +12,7 @@ Scan all phases for pending, skipped, blocked, and human_needed UAT items. Cross
12
12
  </objective>
13
13
 
14
14
  <execution_context>
15
- @~/.claude/get-shit-done/workflows/audit-uat.md
15
+ @~/.claude/gsd-core/workflows/audit-uat.md
16
16
  </execution_context>
17
17
 
18
18
  <context>