@therocketcode/gsd-core 1.4.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 (568) hide show
  1. package/.claude-plugin/plugin.json +23 -0
  2. package/GEMINI.md +53 -0
  3. package/LICENSE +21 -0
  4. package/README.ja-JP.md +125 -0
  5. package/README.ko-KR.md +125 -0
  6. package/README.md +144 -0
  7. package/README.pt-BR.md +125 -0
  8. package/README.zh-CN.md +125 -0
  9. package/agents/gsd-advisor-researcher.md +108 -0
  10. package/agents/gsd-ai-researcher.md +114 -0
  11. package/agents/gsd-assumptions-analyzer.md +105 -0
  12. package/agents/gsd-code-fixer.md +668 -0
  13. package/agents/gsd-code-reviewer.md +387 -0
  14. package/agents/gsd-codebase-mapper.md +853 -0
  15. package/agents/gsd-debug-session-manager.md +314 -0
  16. package/agents/gsd-debugger.md +1452 -0
  17. package/agents/gsd-doc-classifier.md +168 -0
  18. package/agents/gsd-doc-synthesizer.md +204 -0
  19. package/agents/gsd-doc-verifier.md +217 -0
  20. package/agents/gsd-doc-writer.md +616 -0
  21. package/agents/gsd-domain-researcher.md +147 -0
  22. package/agents/gsd-eval-auditor.md +191 -0
  23. package/agents/gsd-eval-planner.md +154 -0
  24. package/agents/gsd-executor.md +785 -0
  25. package/agents/gsd-framework-selector.md +160 -0
  26. package/agents/gsd-integration-checker.md +470 -0
  27. package/agents/gsd-intel-updater.md +342 -0
  28. package/agents/gsd-nyquist-auditor.md +203 -0
  29. package/agents/gsd-pattern-mapper.md +335 -0
  30. package/agents/gsd-phase-researcher.md +867 -0
  31. package/agents/gsd-plan-checker.md +978 -0
  32. package/agents/gsd-planner.md +1204 -0
  33. package/agents/gsd-project-researcher.md +611 -0
  34. package/agents/gsd-research-synthesizer.md +259 -0
  35. package/agents/gsd-roadmapper.md +688 -0
  36. package/agents/gsd-security-auditor.md +155 -0
  37. package/agents/gsd-ui-auditor.md +495 -0
  38. package/agents/gsd-ui-checker.md +309 -0
  39. package/agents/gsd-ui-researcher.md +374 -0
  40. package/agents/gsd-user-profiler.md +171 -0
  41. package/agents/gsd-verifier.md +923 -0
  42. package/assets/gsd-logo-2000-transparent.png +0 -0
  43. package/assets/gsd-logo-2000-transparent.svg +17 -0
  44. package/assets/gsd-logo-2000.png +0 -0
  45. package/assets/gsd-logo-2000.svg +21 -0
  46. package/assets/terminal.svg +68 -0
  47. package/bin/install.js +12726 -0
  48. package/bin/lib/ui-safety-gate.cjs +107 -0
  49. package/commands/gsd/add-tests.md +42 -0
  50. package/commands/gsd/ai-integration-phase.md +37 -0
  51. package/commands/gsd/audit-fix.md +34 -0
  52. package/commands/gsd/audit-milestone.md +37 -0
  53. package/commands/gsd/audit-uat.md +24 -0
  54. package/commands/gsd/autonomous.md +48 -0
  55. package/commands/gsd/capture.md +62 -0
  56. package/commands/gsd/cleanup.md +24 -0
  57. package/commands/gsd/code-review.md +59 -0
  58. package/commands/gsd/complete-milestone.md +143 -0
  59. package/commands/gsd/config.md +56 -0
  60. package/commands/gsd/debug.md +52 -0
  61. package/commands/gsd/discover-product.md +65 -0
  62. package/commands/gsd/discuss-phase.md +77 -0
  63. package/commands/gsd/docs-update.md +49 -0
  64. package/commands/gsd/eval-review.md +33 -0
  65. package/commands/gsd/execute-phase.md +66 -0
  66. package/commands/gsd/explore.md +27 -0
  67. package/commands/gsd/extract-learnings.md +23 -0
  68. package/commands/gsd/fast.md +31 -0
  69. package/commands/gsd/forensics.md +57 -0
  70. package/commands/gsd/graphify.md +204 -0
  71. package/commands/gsd/health.md +31 -0
  72. package/commands/gsd/help.md +28 -0
  73. package/commands/gsd/import.md +45 -0
  74. package/commands/gsd/inbox.md +39 -0
  75. package/commands/gsd/ingest-docs.md +42 -0
  76. package/commands/gsd/manager.md +45 -0
  77. package/commands/gsd/map-codebase.md +83 -0
  78. package/commands/gsd/milestone-summary.md +51 -0
  79. package/commands/gsd/model-domain.md +65 -0
  80. package/commands/gsd/mvp-phase.md +45 -0
  81. package/commands/gsd/new-milestone.md +45 -0
  82. package/commands/gsd/new-project.md +47 -0
  83. package/commands/gsd/ns-context.md +23 -0
  84. package/commands/gsd/ns-ideate.md +24 -0
  85. package/commands/gsd/ns-manage.md +29 -0
  86. package/commands/gsd/ns-project.md +22 -0
  87. package/commands/gsd/ns-review.md +26 -0
  88. package/commands/gsd/ns-workflow.md +28 -0
  89. package/commands/gsd/pause-work.md +43 -0
  90. package/commands/gsd/phase.md +56 -0
  91. package/commands/gsd/plan-phase.md +64 -0
  92. package/commands/gsd/plan-review-convergence.md +59 -0
  93. package/commands/gsd/pr-branch.md +26 -0
  94. package/commands/gsd/profile-user.md +46 -0
  95. package/commands/gsd/progress.md +48 -0
  96. package/commands/gsd/quick.md +174 -0
  97. package/commands/gsd/recommend-architecture.md +64 -0
  98. package/commands/gsd/resume-work.md +30 -0
  99. package/commands/gsd/review-backlog.md +63 -0
  100. package/commands/gsd/review.md +42 -0
  101. package/commands/gsd/secure-phase.md +36 -0
  102. package/commands/gsd/settings.md +29 -0
  103. package/commands/gsd/ship.md +24 -0
  104. package/commands/gsd/sketch.md +60 -0
  105. package/commands/gsd/spec-phase.md +63 -0
  106. package/commands/gsd/spike.md +57 -0
  107. package/commands/gsd/stats.md +20 -0
  108. package/commands/gsd/surface.md +155 -0
  109. package/commands/gsd/testing-strategy.md +65 -0
  110. package/commands/gsd/thread.md +24 -0
  111. package/commands/gsd/ui-phase.md +35 -0
  112. package/commands/gsd/ui-review.md +33 -0
  113. package/commands/gsd/ultraplan-phase.md +34 -0
  114. package/commands/gsd/undo.md +35 -0
  115. package/commands/gsd/update.md +49 -0
  116. package/commands/gsd/validate-phase.md +36 -0
  117. package/commands/gsd/verify-work.md +39 -0
  118. package/commands/gsd/workspace.md +52 -0
  119. package/commands/gsd/workstreams.md +70 -0
  120. package/gemini-extension.json +6 -0
  121. package/gsd-core/bin/check-latest-version.cjs +161 -0
  122. package/gsd-core/bin/gsd-tools.cjs +1928 -0
  123. package/gsd-core/bin/lib/active-workstream-store.cjs +291 -0
  124. package/gsd-core/bin/lib/adr-parser.cjs +399 -0
  125. package/gsd-core/bin/lib/agent-command-router.cjs +68 -0
  126. package/gsd-core/bin/lib/artifacts.cjs +51 -0
  127. package/gsd-core/bin/lib/audit.cjs +743 -0
  128. package/gsd-core/bin/lib/check-command-router.cjs +343 -0
  129. package/gsd-core/bin/lib/cjs-command-router-adapter.cjs +81 -0
  130. package/gsd-core/bin/lib/cli-exit.cjs +42 -0
  131. package/gsd-core/bin/lib/clock.cjs +95 -0
  132. package/gsd-core/bin/lib/clusters.cjs +132 -0
  133. package/gsd-core/bin/lib/code-review-flags.cjs +59 -0
  134. package/gsd-core/bin/lib/command-aliases.cjs +809 -0
  135. package/gsd-core/bin/lib/command-arg-projection.cjs +55 -0
  136. package/gsd-core/bin/lib/command-routing-hub.cjs +300 -0
  137. package/gsd-core/bin/lib/commands.cjs +1203 -0
  138. package/gsd-core/bin/lib/config-schema.cjs +29 -0
  139. package/gsd-core/bin/lib/config-types.cjs +19 -0
  140. package/gsd-core/bin/lib/config.cjs +738 -0
  141. package/gsd-core/bin/lib/configuration.cjs +239 -0
  142. package/gsd-core/bin/lib/context-utilization.cjs +48 -0
  143. package/gsd-core/bin/lib/core.cjs +2051 -0
  144. package/gsd-core/bin/lib/decisions.cjs +118 -0
  145. package/gsd-core/bin/lib/docs.cjs +252 -0
  146. package/gsd-core/bin/lib/drift.cjs +364 -0
  147. package/gsd-core/bin/lib/fallow-runner.cjs +115 -0
  148. package/gsd-core/bin/lib/frontmatter.cjs +442 -0
  149. package/gsd-core/bin/lib/gap-checker.cjs +257 -0
  150. package/gsd-core/bin/lib/graphify.cjs +496 -0
  151. package/gsd-core/bin/lib/gsd2-import.cjs +456 -0
  152. package/gsd-core/bin/lib/init-command-router.cjs +62 -0
  153. package/gsd-core/bin/lib/init.cjs +1815 -0
  154. package/gsd-core/bin/lib/install-profiles.cjs +584 -0
  155. package/gsd-core/bin/lib/installer-migration-authoring.cjs +122 -0
  156. package/gsd-core/bin/lib/installer-migration-report.cjs +350 -0
  157. package/gsd-core/bin/lib/installer-migrations/000-first-time-baseline.cjs +218 -0
  158. package/gsd-core/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +48 -0
  159. package/gsd-core/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +94 -0
  160. package/gsd-core/bin/lib/installer-migrations/003-rename-get-shit-done-to-gsd-core.cjs +108 -0
  161. package/gsd-core/bin/lib/installer-migrations.cjs +823 -0
  162. package/gsd-core/bin/lib/intel.cjs +590 -0
  163. package/gsd-core/bin/lib/learnings.cjs +270 -0
  164. package/gsd-core/bin/lib/legacy-cleanup.cjs +253 -0
  165. package/gsd-core/bin/lib/milestone.cjs +373 -0
  166. package/gsd-core/bin/lib/model-catalog.cjs +154 -0
  167. package/gsd-core/bin/lib/model-profiles.cjs +24 -0
  168. package/gsd-core/bin/lib/observability/event.cjs +51 -0
  169. package/gsd-core/bin/lib/observability/logger.cjs +146 -0
  170. package/gsd-core/bin/lib/observability/redaction.cjs +48 -0
  171. package/gsd-core/bin/lib/package-identity.cjs +35 -0
  172. package/gsd-core/bin/lib/package-legitimacy.cjs +368 -0
  173. package/gsd-core/bin/lib/phase-command-router.cjs +189 -0
  174. package/gsd-core/bin/lib/phase-lifecycle.cjs +74 -0
  175. package/gsd-core/bin/lib/phase.cjs +1307 -0
  176. package/gsd-core/bin/lib/phases-command-router.cjs +43 -0
  177. package/gsd-core/bin/lib/plan-scan.cjs +91 -0
  178. package/gsd-core/bin/lib/planning-workspace.cjs +245 -0
  179. package/gsd-core/bin/lib/profile-output.cjs +1120 -0
  180. package/gsd-core/bin/lib/profile-pipeline.cjs +517 -0
  181. package/gsd-core/bin/lib/project-root.cjs +119 -0
  182. package/gsd-core/bin/lib/prompt-budget.cjs +305 -0
  183. package/gsd-core/bin/lib/research-provider.cjs +137 -0
  184. package/gsd-core/bin/lib/research-store.cjs +167 -0
  185. package/gsd-core/bin/lib/review-reviewer-selection.cjs +121 -0
  186. package/gsd-core/bin/lib/roadmap-command-router.cjs +166 -0
  187. package/gsd-core/bin/lib/roadmap-upgrade.cjs +476 -0
  188. package/gsd-core/bin/lib/roadmap.cjs +600 -0
  189. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +312 -0
  190. package/gsd-core/bin/lib/runtime-config-adapter-registry.cjs +56 -0
  191. package/gsd-core/bin/lib/runtime-homes.cjs +190 -0
  192. package/gsd-core/bin/lib/runtime-name-policy.cjs +96 -0
  193. package/gsd-core/bin/lib/runtime-slash.cjs +119 -0
  194. package/gsd-core/bin/lib/schema-detect.cjs +159 -0
  195. package/gsd-core/bin/lib/secrets.cjs +34 -0
  196. package/gsd-core/bin/lib/security.cjs +480 -0
  197. package/gsd-core/bin/lib/semver-compare.cjs +42 -0
  198. package/gsd-core/bin/lib/shell-command-projection.cjs +533 -0
  199. package/gsd-core/bin/lib/state-command-router.cjs +160 -0
  200. package/gsd-core/bin/lib/state-document.cjs +259 -0
  201. package/gsd-core/bin/lib/state.cjs +2010 -0
  202. package/gsd-core/bin/lib/surface.cjs +449 -0
  203. package/gsd-core/bin/lib/task-command-router.cjs +85 -0
  204. package/gsd-core/bin/lib/template.cjs +237 -0
  205. package/gsd-core/bin/lib/uat.cjs +297 -0
  206. package/gsd-core/bin/lib/ui-safety-gate.cjs +98 -0
  207. package/gsd-core/bin/lib/update-context.cjs +218 -0
  208. package/gsd-core/bin/lib/validate-command-router.cjs +91 -0
  209. package/gsd-core/bin/lib/validate.cjs +112 -0
  210. package/gsd-core/bin/lib/verification-command-router.cjs +31 -0
  211. package/gsd-core/bin/lib/verification.cjs +193 -0
  212. package/gsd-core/bin/lib/verify-command-router.cjs +44 -0
  213. package/gsd-core/bin/lib/verify.cjs +1451 -0
  214. package/gsd-core/bin/lib/workstream-inventory-builder.cjs +81 -0
  215. package/gsd-core/bin/lib/workstream-inventory.cjs +147 -0
  216. package/gsd-core/bin/lib/workstream-name-policy.cjs +91 -0
  217. package/gsd-core/bin/lib/workstream.cjs +380 -0
  218. package/gsd-core/bin/lib/worktree-base-ref.cjs +325 -0
  219. package/gsd-core/bin/lib/worktree-safety.cjs +943 -0
  220. package/gsd-core/bin/shared/config-defaults.manifest.json +98 -0
  221. package/gsd-core/bin/shared/config-schema.manifest.json +192 -0
  222. package/gsd-core/bin/shared/model-catalog.json +149 -0
  223. package/gsd-core/bin/shared/runtime-aliases.manifest.json +75 -0
  224. package/gsd-core/bin/verify-reapply-patches.cjs +349 -0
  225. package/gsd-core/contexts/dev.md +21 -0
  226. package/gsd-core/contexts/research.md +22 -0
  227. package/gsd-core/contexts/review.md +23 -0
  228. package/gsd-core/references/agent-contracts.md +79 -0
  229. package/gsd-core/references/ai-evals.md +156 -0
  230. package/gsd-core/references/ai-frameworks.md +186 -0
  231. package/gsd-core/references/architecture-decision.md +74 -0
  232. package/gsd-core/references/artifact-types.md +131 -0
  233. package/gsd-core/references/auth-in-tests.md +91 -0
  234. package/gsd-core/references/autonomous-smart-discuss.md +277 -0
  235. package/gsd-core/references/checkpoints.md +814 -0
  236. package/gsd-core/references/common-bug-patterns.md +114 -0
  237. package/gsd-core/references/context-budget.md +85 -0
  238. package/gsd-core/references/continuation-format.md +253 -0
  239. package/gsd-core/references/db-test-isolation.md +54 -0
  240. package/gsd-core/references/debugger-philosophy.md +76 -0
  241. package/gsd-core/references/decimal-phase-calculation.md +64 -0
  242. package/gsd-core/references/doc-conflict-engine.md +91 -0
  243. package/gsd-core/references/domain-modeling.md +80 -0
  244. package/gsd-core/references/domain-probes.md +125 -0
  245. package/gsd-core/references/e2e-tiering.md +35 -0
  246. package/gsd-core/references/execute-mvp-tdd.md +81 -0
  247. package/gsd-core/references/executor-examples.md +110 -0
  248. package/gsd-core/references/few-shot-examples/plan-checker.md +73 -0
  249. package/gsd-core/references/few-shot-examples/verifier.md +109 -0
  250. package/gsd-core/references/flaky-test-checklist.md +22 -0
  251. package/gsd-core/references/gate-prompts.md +100 -0
  252. package/gsd-core/references/gates.md +70 -0
  253. package/gsd-core/references/git-integration.md +298 -0
  254. package/gsd-core/references/git-planning-commit.md +40 -0
  255. package/gsd-core/references/ios-scaffold.md +123 -0
  256. package/gsd-core/references/mandatory-initial-read.md +2 -0
  257. package/gsd-core/references/model-profile-resolution.md +38 -0
  258. package/gsd-core/references/model-profiles.md +245 -0
  259. package/gsd-core/references/mvp-concepts.md +49 -0
  260. package/gsd-core/references/phase-argument-parsing.md +61 -0
  261. package/gsd-core/references/planner-antipatterns.md +89 -0
  262. package/gsd-core/references/planner-chunked.md +49 -0
  263. package/gsd-core/references/planner-gap-closure.md +62 -0
  264. package/gsd-core/references/planner-graphify-auto-update.md +67 -0
  265. package/gsd-core/references/planner-human-verify-mode.md +57 -0
  266. package/gsd-core/references/planner-interface-context.md +62 -0
  267. package/gsd-core/references/planner-load-graph-context.md +36 -0
  268. package/gsd-core/references/planner-mvp-mode.md +53 -0
  269. package/gsd-core/references/planner-reviews.md +39 -0
  270. package/gsd-core/references/planner-revision.md +87 -0
  271. package/gsd-core/references/planner-source-audit.md +73 -0
  272. package/gsd-core/references/planning-config.md +473 -0
  273. package/gsd-core/references/product-discovery.md +49 -0
  274. package/gsd-core/references/project-skills-discovery.md +19 -0
  275. package/gsd-core/references/questioning.md +162 -0
  276. package/gsd-core/references/realistic-test-data.md +44 -0
  277. package/gsd-core/references/research-documentation-lookup.md +29 -0
  278. package/gsd-core/references/research-philosophy.md +29 -0
  279. package/gsd-core/references/research-verification-protocol.md +27 -0
  280. package/gsd-core/references/revision-loop.md +97 -0
  281. package/gsd-core/references/scout-codebase.md +51 -0
  282. package/gsd-core/references/skeleton-template.md +48 -0
  283. package/gsd-core/references/sketch-interactivity.md +41 -0
  284. package/gsd-core/references/sketch-theme-system.md +94 -0
  285. package/gsd-core/references/sketch-tooling.md +45 -0
  286. package/gsd-core/references/sketch-variant-patterns.md +81 -0
  287. package/gsd-core/references/spidr-splitting.md +69 -0
  288. package/gsd-core/references/tdd.md +330 -0
  289. package/gsd-core/references/test-containers.md +55 -0
  290. package/gsd-core/references/test-strategy.md +75 -0
  291. package/gsd-core/references/thinking-models-debug.md +44 -0
  292. package/gsd-core/references/thinking-models-execution.md +50 -0
  293. package/gsd-core/references/thinking-models-planning.md +62 -0
  294. package/gsd-core/references/thinking-models-research.md +50 -0
  295. package/gsd-core/references/thinking-models-verification.md +55 -0
  296. package/gsd-core/references/thinking-partner.md +96 -0
  297. package/gsd-core/references/ui-brand.md +162 -0
  298. package/gsd-core/references/universal-anti-patterns.md +63 -0
  299. package/gsd-core/references/user-profiling.md +681 -0
  300. package/gsd-core/references/user-story-template.md +58 -0
  301. package/gsd-core/references/verification-overrides.md +227 -0
  302. package/gsd-core/references/verification-patterns.md +612 -0
  303. package/gsd-core/references/verify-mvp-mode.md +85 -0
  304. package/gsd-core/references/workstream-flag.md +111 -0
  305. package/gsd-core/references/worktree-branch-check.md +38 -0
  306. package/gsd-core/references/worktree-path-safety.md +67 -0
  307. package/gsd-core/templates/AI-SPEC.md +246 -0
  308. package/gsd-core/templates/DEBUG.md +169 -0
  309. package/gsd-core/templates/README.md +77 -0
  310. package/gsd-core/templates/SECURITY.md +61 -0
  311. package/gsd-core/templates/UAT.md +265 -0
  312. package/gsd-core/templates/UI-SPEC.md +100 -0
  313. package/gsd-core/templates/VALIDATION.md +76 -0
  314. package/gsd-core/templates/adr.md +58 -0
  315. package/gsd-core/templates/claude-md.md +145 -0
  316. package/gsd-core/templates/codebase/architecture.md +255 -0
  317. package/gsd-core/templates/codebase/concerns.md +310 -0
  318. package/gsd-core/templates/codebase/conventions.md +307 -0
  319. package/gsd-core/templates/codebase/integrations.md +280 -0
  320. package/gsd-core/templates/codebase/stack.md +186 -0
  321. package/gsd-core/templates/codebase/structure.md +285 -0
  322. package/gsd-core/templates/codebase/testing.md +480 -0
  323. package/gsd-core/templates/config.json +62 -0
  324. package/gsd-core/templates/context.md +352 -0
  325. package/gsd-core/templates/continue-here.md +78 -0
  326. package/gsd-core/templates/copilot-instructions.md +7 -0
  327. package/gsd-core/templates/debug-subagent-prompt.md +91 -0
  328. package/gsd-core/templates/dev-preferences.md +21 -0
  329. package/gsd-core/templates/discovery.md +146 -0
  330. package/gsd-core/templates/discussion-log.md +63 -0
  331. package/gsd-core/templates/domain-model.md +54 -0
  332. package/gsd-core/templates/milestone-archive.md +123 -0
  333. package/gsd-core/templates/milestone.md +115 -0
  334. package/gsd-core/templates/phase-prompt.md +610 -0
  335. package/gsd-core/templates/planner-subagent-prompt.md +117 -0
  336. package/gsd-core/templates/product-brief.md +55 -0
  337. package/gsd-core/templates/project.md +186 -0
  338. package/gsd-core/templates/requirements.md +231 -0
  339. package/gsd-core/templates/research-project/ARCHITECTURE.md +204 -0
  340. package/gsd-core/templates/research-project/FEATURES.md +147 -0
  341. package/gsd-core/templates/research-project/PITFALLS.md +200 -0
  342. package/gsd-core/templates/research-project/STACK.md +120 -0
  343. package/gsd-core/templates/research-project/SUMMARY.md +170 -0
  344. package/gsd-core/templates/research.md +592 -0
  345. package/gsd-core/templates/retrospective.md +54 -0
  346. package/gsd-core/templates/roadmap.md +202 -0
  347. package/gsd-core/templates/spec.md +307 -0
  348. package/gsd-core/templates/state.md +195 -0
  349. package/gsd-core/templates/summary-complex.md +59 -0
  350. package/gsd-core/templates/summary-minimal.md +41 -0
  351. package/gsd-core/templates/summary-standard.md +48 -0
  352. package/gsd-core/templates/summary.md +248 -0
  353. package/gsd-core/templates/test-strategy.md +50 -0
  354. package/gsd-core/templates/user-profile.md +146 -0
  355. package/gsd-core/templates/user-setup.md +311 -0
  356. package/gsd-core/templates/verification-report.md +322 -0
  357. package/gsd-core/workflows/_runtime-launcher.snippet.sh +1 -0
  358. package/gsd-core/workflows/add-backlog.md +91 -0
  359. package/gsd-core/workflows/add-phase.md +113 -0
  360. package/gsd-core/workflows/add-tests.md +355 -0
  361. package/gsd-core/workflows/add-todo.md +161 -0
  362. package/gsd-core/workflows/ai-integration-phase.md +295 -0
  363. package/gsd-core/workflows/analyze-dependencies.md +96 -0
  364. package/gsd-core/workflows/audit-fix.md +178 -0
  365. package/gsd-core/workflows/audit-milestone.md +360 -0
  366. package/gsd-core/workflows/audit-uat.md +110 -0
  367. package/gsd-core/workflows/autonomous.md +797 -0
  368. package/gsd-core/workflows/check-todos.md +180 -0
  369. package/gsd-core/workflows/cleanup.md +195 -0
  370. package/gsd-core/workflows/code-review-fix.md +502 -0
  371. package/gsd-core/workflows/code-review.md +658 -0
  372. package/gsd-core/workflows/complete-milestone.md +855 -0
  373. package/gsd-core/workflows/debug.md +237 -0
  374. package/gsd-core/workflows/diagnose-issues.md +245 -0
  375. package/gsd-core/workflows/discover-product.md +112 -0
  376. package/gsd-core/workflows/discovery-phase.md +291 -0
  377. package/gsd-core/workflows/discuss-phase/modes/advisor.md +176 -0
  378. package/gsd-core/workflows/discuss-phase/modes/all.md +28 -0
  379. package/gsd-core/workflows/discuss-phase/modes/analyze.md +44 -0
  380. package/gsd-core/workflows/discuss-phase/modes/auto.md +57 -0
  381. package/gsd-core/workflows/discuss-phase/modes/batch.md +52 -0
  382. package/gsd-core/workflows/discuss-phase/modes/chain.md +98 -0
  383. package/gsd-core/workflows/discuss-phase/modes/default.md +141 -0
  384. package/gsd-core/workflows/discuss-phase/modes/power.md +44 -0
  385. package/gsd-core/workflows/discuss-phase/modes/text.md +55 -0
  386. package/gsd-core/workflows/discuss-phase/templates/checkpoint.json +18 -0
  387. package/gsd-core/workflows/discuss-phase/templates/context.md +136 -0
  388. package/gsd-core/workflows/discuss-phase/templates/discussion-log.md +50 -0
  389. package/gsd-core/workflows/discuss-phase-assumptions.md +675 -0
  390. package/gsd-core/workflows/discuss-phase-power.md +291 -0
  391. package/gsd-core/workflows/discuss-phase.md +499 -0
  392. package/gsd-core/workflows/do.md +111 -0
  393. package/gsd-core/workflows/docs-update.md +1176 -0
  394. package/gsd-core/workflows/edit-phase.md +295 -0
  395. package/gsd-core/workflows/eval-review.md +156 -0
  396. package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +95 -0
  397. package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +94 -0
  398. package/gsd-core/workflows/execute-phase/steps/post-merge-gate.md +117 -0
  399. package/gsd-core/workflows/execute-phase.md +1752 -0
  400. package/gsd-core/workflows/execute-plan.md +526 -0
  401. package/gsd-core/workflows/explore.md +146 -0
  402. package/gsd-core/workflows/extract-learnings.md +243 -0
  403. package/gsd-core/workflows/fast.md +124 -0
  404. package/gsd-core/workflows/forensics.md +279 -0
  405. package/gsd-core/workflows/graduation.md +196 -0
  406. package/gsd-core/workflows/health.md +224 -0
  407. package/gsd-core/workflows/help/modes/brief.md +22 -0
  408. package/gsd-core/workflows/help/modes/default.md +50 -0
  409. package/gsd-core/workflows/help/modes/full.md +789 -0
  410. package/gsd-core/workflows/help/modes/topic.md +74 -0
  411. package/gsd-core/workflows/help.md +24 -0
  412. package/gsd-core/workflows/import.md +256 -0
  413. package/gsd-core/workflows/inbox.md +387 -0
  414. package/gsd-core/workflows/ingest-docs.md +340 -0
  415. package/gsd-core/workflows/insert-phase.md +152 -0
  416. package/gsd-core/workflows/list-phase-assumptions.md +178 -0
  417. package/gsd-core/workflows/list-workspaces.md +57 -0
  418. package/gsd-core/workflows/manager.md +393 -0
  419. package/gsd-core/workflows/map-codebase.md +446 -0
  420. package/gsd-core/workflows/milestone-summary.md +224 -0
  421. package/gsd-core/workflows/model-domain.md +162 -0
  422. package/gsd-core/workflows/mvp-phase.md +222 -0
  423. package/gsd-core/workflows/new-milestone.md +635 -0
  424. package/gsd-core/workflows/new-project.md +1555 -0
  425. package/gsd-core/workflows/new-workspace.md +240 -0
  426. package/gsd-core/workflows/next.md +299 -0
  427. package/gsd-core/workflows/node-repair.md +92 -0
  428. package/gsd-core/workflows/note.md +158 -0
  429. package/gsd-core/workflows/pause-work.md +244 -0
  430. package/gsd-core/workflows/plan-milestone-gaps.md +281 -0
  431. package/gsd-core/workflows/plan-phase.md +1814 -0
  432. package/gsd-core/workflows/plan-review-convergence.md +346 -0
  433. package/gsd-core/workflows/plant-seed.md +230 -0
  434. package/gsd-core/workflows/pr-branch.md +157 -0
  435. package/gsd-core/workflows/profile-user.md +453 -0
  436. package/gsd-core/workflows/progress.md +699 -0
  437. package/gsd-core/workflows/quick.md +1017 -0
  438. package/gsd-core/workflows/reapply-patches.md +426 -0
  439. package/gsd-core/workflows/recommend-architecture.md +135 -0
  440. package/gsd-core/workflows/remove-phase.md +156 -0
  441. package/gsd-core/workflows/remove-workspace.md +108 -0
  442. package/gsd-core/workflows/resume-project.md +332 -0
  443. package/gsd-core/workflows/review.md +748 -0
  444. package/gsd-core/workflows/scan.md +107 -0
  445. package/gsd-core/workflows/secure-phase.md +182 -0
  446. package/gsd-core/workflows/session-report.md +146 -0
  447. package/gsd-core/workflows/settings-advanced.md +810 -0
  448. package/gsd-core/workflows/settings-integrations.md +312 -0
  449. package/gsd-core/workflows/settings.md +566 -0
  450. package/gsd-core/workflows/ship.md +405 -0
  451. package/gsd-core/workflows/sketch-wrap-up.md +286 -0
  452. package/gsd-core/workflows/sketch.md +361 -0
  453. package/gsd-core/workflows/spec-phase.md +263 -0
  454. package/gsd-core/workflows/spike-wrap-up.md +307 -0
  455. package/gsd-core/workflows/spike.md +453 -0
  456. package/gsd-core/workflows/stats.md +80 -0
  457. package/gsd-core/workflows/sync-skills.md +182 -0
  458. package/gsd-core/workflows/testing-strategy.md +122 -0
  459. package/gsd-core/workflows/thread.md +222 -0
  460. package/gsd-core/workflows/transition.md +694 -0
  461. package/gsd-core/workflows/ui-phase.md +328 -0
  462. package/gsd-core/workflows/ui-review.md +193 -0
  463. package/gsd-core/workflows/ultraplan-phase.md +199 -0
  464. package/gsd-core/workflows/undo.md +314 -0
  465. package/gsd-core/workflows/update.md +496 -0
  466. package/gsd-core/workflows/validate-phase.md +181 -0
  467. package/gsd-core/workflows/verify-phase.md +544 -0
  468. package/gsd-core/workflows/verify-work.md +781 -0
  469. package/hooks/dist/gsd-check-update-worker.js +108 -0
  470. package/hooks/dist/gsd-check-update.js +66 -0
  471. package/hooks/dist/gsd-config-reload.js +133 -0
  472. package/hooks/dist/gsd-context-monitor.js +195 -0
  473. package/hooks/dist/gsd-cursor-post-tool.js +75 -0
  474. package/hooks/dist/gsd-cursor-session-start.js +52 -0
  475. package/hooks/dist/gsd-graphify-update.sh +158 -0
  476. package/hooks/dist/gsd-phase-boundary.sh +47 -0
  477. package/hooks/dist/gsd-prompt-guard.js +97 -0
  478. package/hooks/dist/gsd-read-guard.js +101 -0
  479. package/hooks/dist/gsd-read-injection-scanner.js +203 -0
  480. package/hooks/dist/gsd-session-state.sh +59 -0
  481. package/hooks/dist/gsd-statusline.js +566 -0
  482. package/hooks/dist/gsd-update-banner.js +138 -0
  483. package/hooks/dist/gsd-validate-commit.sh +57 -0
  484. package/hooks/dist/gsd-workflow-guard.js +167 -0
  485. package/hooks/dist/gsd-worktree-path-guard.js +169 -0
  486. package/hooks/dist/lib/git-cmd.js +150 -0
  487. package/hooks/dist/lib/gsd-graphify-rebuild.sh +65 -0
  488. package/hooks/dist/managed-hooks-registry.cjs +38 -0
  489. package/hooks/gsd-check-update-worker.js +108 -0
  490. package/hooks/gsd-check-update.js +66 -0
  491. package/hooks/gsd-config-reload.js +133 -0
  492. package/hooks/gsd-context-monitor.js +195 -0
  493. package/hooks/gsd-cursor-post-tool.js +75 -0
  494. package/hooks/gsd-cursor-session-start.js +52 -0
  495. package/hooks/gsd-graphify-update.sh +158 -0
  496. package/hooks/gsd-phase-boundary.sh +47 -0
  497. package/hooks/gsd-prompt-guard.js +97 -0
  498. package/hooks/gsd-read-guard.js +101 -0
  499. package/hooks/gsd-read-injection-scanner.js +203 -0
  500. package/hooks/gsd-session-state.sh +59 -0
  501. package/hooks/gsd-statusline.js +566 -0
  502. package/hooks/gsd-update-banner.js +138 -0
  503. package/hooks/gsd-validate-commit.sh +57 -0
  504. package/hooks/gsd-workflow-guard.js +167 -0
  505. package/hooks/gsd-worktree-path-guard.js +169 -0
  506. package/hooks/hooks.json +69 -0
  507. package/hooks/lib/git-cmd.js +150 -0
  508. package/hooks/lib/gsd-graphify-rebuild.sh +65 -0
  509. package/hooks/managed-hooks-registry.cjs +38 -0
  510. package/package.json +115 -0
  511. package/scripts/affected-tests-lib.cjs +542 -0
  512. package/scripts/audit-workflow-script-paths.cjs +73 -0
  513. package/scripts/base64-scan.sh +351 -0
  514. package/scripts/build-hooks.js +247 -0
  515. package/scripts/changeset/README.md +129 -0
  516. package/scripts/changeset/cli.cjs +590 -0
  517. package/scripts/changeset/github-release-notes.cjs +199 -0
  518. package/scripts/changeset/lint.cjs +111 -0
  519. package/scripts/changeset/new.cjs +137 -0
  520. package/scripts/changeset/parse.cjs +114 -0
  521. package/scripts/changeset/render.cjs +34 -0
  522. package/scripts/changeset/serialize.cjs +130 -0
  523. package/scripts/check-alias-drift.cjs +114 -0
  524. package/scripts/check-env.cjs +312 -0
  525. package/scripts/check-npm-integrity.cjs +215 -0
  526. package/scripts/ci-guard-runner.cjs +22 -0
  527. package/scripts/ci-prepare-test-scope.cjs +51 -0
  528. package/scripts/ci-rebase-check.cjs +86 -0
  529. package/scripts/ci-test-scope.cjs +431 -0
  530. package/scripts/command-contract-helpers.cjs +64 -0
  531. package/scripts/diff-touches-shipped-paths.cjs +155 -0
  532. package/scripts/fix-slash-commands.cjs +147 -0
  533. package/scripts/gen-inventory-manifest.cjs +115 -0
  534. package/scripts/gen-research-agents.cjs +276 -0
  535. package/scripts/generate-package-identity.cjs +125 -0
  536. package/scripts/issue-dedupe.cjs +278 -0
  537. package/scripts/lib/allowlist-ratchet.cjs +136 -0
  538. package/scripts/lib/cli-exit.cjs +56 -0
  539. package/scripts/lint-command-contract.cjs +114 -0
  540. package/scripts/lint-descriptions.cjs +87 -0
  541. package/scripts/lint-docs-required.cjs +222 -0
  542. package/scripts/lint-legacy-dir-name.cjs +160 -0
  543. package/scripts/lint-package-identity-drift.cjs +141 -0
  544. package/scripts/lint-pr-check-project-dir.cjs +99 -0
  545. package/scripts/lint-shell-command-projection-drift.cjs +62 -0
  546. package/scripts/lint-skill-deps.cjs +185 -0
  547. package/scripts/lint-test-file-count.allowlist.json +135 -0
  548. package/scripts/lint-test-file-count.cjs +246 -0
  549. package/scripts/mutation-matrix.cjs +222 -0
  550. package/scripts/pr-template-policy.cjs +268 -0
  551. package/scripts/prompt-injection-scan.sh +207 -0
  552. package/scripts/release-notes/discord-release-summary.cjs +373 -0
  553. package/scripts/release-notes/format-github-release-notes.cjs +261 -0
  554. package/scripts/release-tarball-smoke.cjs +629 -0
  555. package/scripts/research-profiles.cjs +149 -0
  556. package/scripts/run-affected-tests.cjs +7 -0
  557. package/scripts/run-cross-platform-tests.cjs +67 -0
  558. package/scripts/run-tests.cjs +315 -0
  559. package/scripts/secret-scan-lint.sh +231 -0
  560. package/scripts/secret-scan.sh +358 -0
  561. package/scripts/setup-branch-protection.sh +236 -0
  562. package/scripts/strip-prose-atrefs.cjs +106 -0
  563. package/scripts/sync-manifest-versions.cjs +119 -0
  564. package/scripts/sync-rulesets.sh +34 -0
  565. package/scripts/sync-runtime-launcher.cjs +399 -0
  566. package/scripts/test-failure-reasons.cjs +34 -0
  567. package/scripts/verify-npm-publish.cjs +240 -0
  568. package/scripts/workflow-policy.cjs +450 -0
@@ -0,0 +1,236 @@
1
+ #!/usr/bin/env bash
2
+ # setup-branch-protection.sh
3
+ #
4
+ # Apply branch protection rules to `main` and `next` for the GSD repo.
5
+ # Idempotent — run as many times as you like. Re-running brings the live
6
+ # rules back to what this script declares, so the script IS the source of
7
+ # truth for branch protection.
8
+ #
9
+ # Usage:
10
+ # bash scripts/setup-branch-protection.sh # apply both
11
+ # bash scripts/setup-branch-protection.sh main # apply only main
12
+ # bash scripts/setup-branch-protection.sh next # apply only next
13
+ # DRY_RUN=1 bash scripts/setup-branch-protection.sh # show payloads, don't apply
14
+ #
15
+ # Requirements:
16
+ # - gh CLI authenticated against TheRocketCodeMX/gsd-core with admin scope
17
+ # - jq installed
18
+ #
19
+ # What it sets:
20
+ #
21
+ # main (strict — production):
22
+ # - 2 required approving reviews
23
+ # - dismiss stale reviews on push
24
+ # - require code-owner review when CODEOWNERS applies
25
+ # - all required status checks must pass (defined in REQUIRED_CHECKS_MAIN below)
26
+ # - require branches to be up to date before merging (ON — `main` is production)
27
+ # - require linear history (OFF — release back-merges use merge commits)
28
+ # - require conversation resolution
29
+ # - require signed commits
30
+ # - block force-push and deletion
31
+ # - admins included
32
+ #
33
+ # next (loose — integration):
34
+ # - 1 required approving review
35
+ # - dismiss stale reviews on push
36
+ # - require code-owner review when CODEOWNERS applies
37
+ # - all required status checks must pass (defined in REQUIRED_CHECKS_NEXT below)
38
+ # - require branches to be up to date before merging (OFF — this is the whole point)
39
+ # - require linear history (OFF — auto-backmerge from main needs merge commits
40
+ # to preserve the link from next's history to main's release tags;
41
+ # feature PRs still squash-merge by repo merge-strategy setting)
42
+ # - require conversation resolution
43
+ # - require signed commits (OFF on next — easier for contributors)
44
+ # - block force-push and deletion
45
+ # - admins included
46
+ #
47
+ # See: docs/adr/XXXX-introduce-next-integration-branch.md
48
+ # See: docs/branching.md
49
+
50
+ set -euo pipefail
51
+
52
+ REPO="${REPO:-TheRocketCodeMX/gsd-core}"
53
+ DRY_RUN="${DRY_RUN:-0}"
54
+
55
+ # Required status checks. Adjust as your CI suite evolves.
56
+ # The names must match the JOB NAME (not the workflow name) that GitHub
57
+ # records — check existing PRs to confirm.
58
+ REQUIRED_CHECKS_MAIN=(
59
+ "test"
60
+ "install-smoke"
61
+ "security-scan"
62
+ "Changeset Required / changeset-lint"
63
+ "Docs Required / docs-lint"
64
+ "PR Gate / size-check"
65
+ "Validate Branch Name / check-branch"
66
+ )
67
+
68
+ REQUIRED_CHECKS_NEXT=(
69
+ "test"
70
+ "PR Gate / size-check"
71
+ "Validate Branch Name / check-branch"
72
+ "Changeset Required / changeset-lint"
73
+ "Docs Required / docs-lint"
74
+ "PR Target Validator / validate-target"
75
+ )
76
+
77
+ require_cmd() {
78
+ command -v "$1" >/dev/null 2>&1 || {
79
+ echo "ERROR: missing required command: $1" >&2
80
+ exit 1
81
+ }
82
+ }
83
+
84
+ require_cmd gh
85
+ require_cmd jq
86
+
87
+ verify_auth() {
88
+ if ! gh auth status >/dev/null 2>&1; then
89
+ echo "ERROR: gh CLI is not authenticated. Run 'gh auth login' first." >&2
90
+ exit 1
91
+ fi
92
+ }
93
+
94
+ build_payload() {
95
+ local branch="$1"
96
+ shift
97
+ local checks_array=("$@")
98
+
99
+ # Branch-specific knobs.
100
+ local approvals require_up_to_date linear_history signed_commits
101
+ case "$branch" in
102
+ main)
103
+ approvals=2
104
+ require_up_to_date=true
105
+ linear_history=false
106
+ signed_commits=true
107
+ ;;
108
+ next)
109
+ approvals=1
110
+ require_up_to_date=false
111
+ # linear_history=false: auto-backmerge from main needs merge commits to
112
+ # preserve the link to release tags. Feature PRs still produce one
113
+ # commit each via repo-level "squash and merge" default — that gives
114
+ # us a clean log without enforcing linearity at the protection layer.
115
+ linear_history=false
116
+ signed_commits=false
117
+ ;;
118
+ *)
119
+ echo "ERROR: unknown branch '$branch'" >&2
120
+ exit 1
121
+ ;;
122
+ esac
123
+
124
+ # Build the contexts array via jq for safe quoting.
125
+ local contexts_json
126
+ contexts_json=$(printf '%s\n' "${checks_array[@]}" | jq -R . | jq -s .)
127
+
128
+ jq -n \
129
+ --argjson contexts "$contexts_json" \
130
+ --argjson approvals "$approvals" \
131
+ --argjson require_up_to_date "$require_up_to_date" \
132
+ --argjson linear_history "$linear_history" \
133
+ --argjson signed_commits "$signed_commits" \
134
+ '{
135
+ required_status_checks: {
136
+ strict: $require_up_to_date,
137
+ contexts: $contexts
138
+ },
139
+ enforce_admins: true,
140
+ required_pull_request_reviews: {
141
+ dismiss_stale_reviews: true,
142
+ require_code_owner_reviews: true,
143
+ required_approving_review_count: $approvals,
144
+ require_last_push_approval: false
145
+ },
146
+ restrictions: null,
147
+ required_linear_history: $linear_history,
148
+ allow_force_pushes: false,
149
+ allow_deletions: false,
150
+ required_conversation_resolution: true,
151
+ required_signatures: $signed_commits,
152
+ lock_branch: false,
153
+ allow_fork_syncing: true
154
+ }'
155
+ }
156
+
157
+ apply_protection() {
158
+ local branch="$1"
159
+ local checks_var_name
160
+ if [ "$branch" = "main" ]; then
161
+ checks_var_name="REQUIRED_CHECKS_MAIN"
162
+ else
163
+ checks_var_name="REQUIRED_CHECKS_NEXT"
164
+ fi
165
+
166
+ # Expand the array indirectly (bash 3 compatible — macOS default).
167
+ eval "local checks=(\"\${${checks_var_name}[@]}\")"
168
+
169
+ local payload
170
+ payload=$(build_payload "$branch" "${checks[@]}")
171
+
172
+ echo "──────────────────────────────────────────"
173
+ echo "Branch: $branch"
174
+ echo "Required checks (${#checks[@]}):"
175
+ printf ' - %s\n' "${checks[@]}"
176
+ echo "──────────────────────────────────────────"
177
+
178
+ if [ "$DRY_RUN" = "1" ]; then
179
+ echo "[DRY RUN] Would PUT to /repos/${REPO}/branches/${branch}/protection:"
180
+ echo "$payload" | jq .
181
+ return 0
182
+ fi
183
+
184
+ echo "Applying branch protection..."
185
+ echo "$payload" | gh api \
186
+ -X PUT \
187
+ -H "Accept: application/vnd.github+json" \
188
+ -H "X-GitHub-Api-Version: 2022-11-28" \
189
+ --input - \
190
+ "/repos/${REPO}/branches/${branch}/protection" \
191
+ >/dev/null
192
+ echo "✓ Protection rules applied to $branch."
193
+ }
194
+
195
+ ensure_branch_exists() {
196
+ local branch="$1"
197
+ if ! gh api "/repos/${REPO}/branches/${branch}" >/dev/null 2>&1; then
198
+ echo "ERROR: branch '$branch' does not exist in $REPO." >&2
199
+ if [ "$branch" = "next" ]; then
200
+ cat <<EOF >&2
201
+
202
+ Create the next branch first:
203
+ git checkout main && git pull --ff-only
204
+ git checkout -b next && git push -u origin next
205
+
206
+ Then re-run this script.
207
+ EOF
208
+ fi
209
+ exit 1
210
+ fi
211
+ }
212
+
213
+ main() {
214
+ verify_auth
215
+
216
+ local targets=()
217
+ if [ $# -eq 0 ]; then
218
+ targets=(main next)
219
+ else
220
+ targets=("$@")
221
+ fi
222
+
223
+ for branch in "${targets[@]}"; do
224
+ if [ "$branch" != "main" ] && [ "$branch" != "next" ]; then
225
+ echo "ERROR: unsupported branch '$branch'. Use 'main' or 'next'." >&2
226
+ exit 1
227
+ fi
228
+ ensure_branch_exists "$branch"
229
+ apply_protection "$branch"
230
+ done
231
+
232
+ echo ""
233
+ echo "Done. To verify: gh api /repos/${REPO}/branches/<branch>/protection | jq ."
234
+ }
235
+
236
+ main "$@"
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * strip-prose-atrefs.cjs
4
+ *
5
+ * Removes redundant @~/.claude/gsd-core/ path tokens from prose lines
6
+ * in <process> and <context> blocks. The path is already declared in
7
+ * <execution_context> where it actually loads the file. Prose copies are
8
+ * inert and add ~900 tokens/invocation of dead weight.
9
+ *
10
+ * Transformation rules (applied per matching line):
11
+ * - "Execute the X workflow from @PATH end-to-end." → "Execute end-to-end."
12
+ * - "Execute @PATH end-to-end." → "Execute end-to-end."
13
+ * - "Read and execute the X workflow from @PATH end-to-end." → "Execute end-to-end."
14
+ * - "Follow the X workflow at @PATH." → "Execute end-to-end."
15
+ * - "Output the X reference from @PATH." → "Execute end-to-end."
16
+ * - "**Follow the X** from `@PATH`." → "**Follow the X.**"
17
+ * - "- If it is '...': ... from @PATH end-to-end." → strip path token only
18
+ * - "- Otherwise: ... from @PATH end-to-end." → strip path token only
19
+ * - "- @PATH (label)" → "- (label)"
20
+ *
21
+ * Run with --dry-run to preview without writing.
22
+ */
23
+
24
+ 'use strict';
25
+
26
+ const fs = require('fs');
27
+ const path = require('path');
28
+
29
+ const DRY_RUN = process.argv.includes('--dry-run');
30
+ const ROOT = path.join(__dirname, '..');
31
+ const COMMANDS_DIR = path.join(ROOT, 'commands', 'gsd');
32
+
33
+ const AT_PATH_PATTERN = /@(?:~|\$HOME)\/.+?gsd-core\/[^\s`)]+/;
34
+ const mkAtRe = () => new RegExp(AT_PATH_PATTERN.source, 'g');
35
+
36
+ function transformLine(line) {
37
+ if (!AT_PATH_PATTERN.test(line)) return line;
38
+
39
+ const trimmed = line.trim();
40
+
41
+ // "- @PATH (label)" → "- (label)"
42
+ if (/^- @(?:~|\$HOME)\//.test(trimmed)) {
43
+ return line.replace(/^(\s*- )@(?:~|\$HOME)\/[^\s(]+\s*/, '$1');
44
+ }
45
+
46
+ // "**Follow the X workflow** from `@PATH`." → "**Follow the X workflow.**"
47
+ // "**Follow the X workflow** from `@PATH`" → "**Follow the X workflow.**"
48
+ if (/\*\*Follow the .+ workflow\*\* from `@/.test(trimmed)) {
49
+ return line.replace(/\s+from `@(?:~|\$HOME)\/[^`]+`\.?/, '.');
50
+ }
51
+
52
+ // Routing bullet: keep everything except "from @PATH" or bare "@PATH"
53
+ // "- If …: … from @PATH end-to-end." → strip path, keep bullet
54
+ // "- Otherwise: … from @PATH end-to-end." → strip path, keep bullet
55
+ if (/^- (?:If |Otherwise:|pass all)/.test(trimmed)) {
56
+ return line
57
+ .replace(/\s+from\s+@(?:~|\$HOME)\/\S+/g, '')
58
+ .replace(/@(?:~|\$HOME)\/\S+/g, '');
59
+ }
60
+
61
+ // "Execute [the X workflow] [from] @PATH [end-to-end]."
62
+ // "Read and execute …" / "Follow …" / "Output …"
63
+ // → collapse to leading indent + "Execute end-to-end."
64
+ const indent = line.match(/^(\s*)/)[1];
65
+ return `${indent}Execute end-to-end.`;
66
+ }
67
+
68
+ function processFile(filePath) {
69
+ const original = fs.readFileSync(filePath, 'utf-8');
70
+ const lines = original.split('\n');
71
+ const out = [];
72
+ let inProse = false; // true when inside <process> or <context> (not execution_context)
73
+
74
+ for (const line of lines) {
75
+ const t = line.trim();
76
+ if (/<(process|context)>/.test(t) && !t.includes('execution_context')) inProse = true;
77
+ if (/<\/(process|context)>/.test(t) && !t.includes('execution_context')) inProse = false;
78
+
79
+ if (inProse && AT_PATH_PATTERN.test(line)) {
80
+ const re = mkAtRe();
81
+ re.lastIndex = 0;
82
+ out.push(transformLine(line));
83
+ } else {
84
+ out.push(line);
85
+ }
86
+ }
87
+
88
+ const result = out.join('\n');
89
+ if (result === original) return false; // no change
90
+
91
+ if (!DRY_RUN) fs.writeFileSync(filePath, result, 'utf-8');
92
+ return true;
93
+ }
94
+
95
+ const files = fs.readdirSync(COMMANDS_DIR)
96
+ .filter(f => f.endsWith('.md'))
97
+ .map(f => path.join(COMMANDS_DIR, f));
98
+
99
+ let changed = 0;
100
+ for (const f of files) {
101
+ if (processFile(f)) {
102
+ console.log(`${DRY_RUN ? '[dry]' : 'fixed'}: ${path.basename(f)}`);
103
+ changed++;
104
+ }
105
+ }
106
+ console.log(`\n${changed} file(s) ${DRY_RUN ? 'would be' : 'were'} modified.`);
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /**
5
+ * sync-manifest-versions.cjs
6
+ *
7
+ * Stamps the package.json version into every runtime-integration manifest whose
8
+ * top-level `version` field MUST track the package version. Called automatically
9
+ * by the `version` npm lifecycle script so that `npm version X.Y.Z` keeps all
10
+ * registered manifests in sync.
11
+ *
12
+ * Usage:
13
+ * node scripts/sync-manifest-versions.cjs # stamp + report
14
+ * node scripts/sync-manifest-versions.cjs --stage # stamp + git-stage manifests
15
+ * node scripts/sync-manifest-versions.cjs --check # report drift, exit 1 if any
16
+ */
17
+
18
+ const fs = require('fs');
19
+ const path = require('path');
20
+ const { execFileSync } = require('child_process');
21
+
22
+ const ROOT = path.resolve(__dirname, '..');
23
+
24
+ // Single source of truth: runtime-integration manifests whose top-level `version`
25
+ // MUST track package.json. Add a new manifest here so `npm version` keeps it in
26
+ // sync — the regression guard test (issue 844) fails if you forget.
27
+ const VERSIONED_MANIFESTS = [
28
+ '.claude-plugin/plugin.json',
29
+ 'gemini-extension.json',
30
+ ];
31
+
32
+ function readJson(p) {
33
+ return JSON.parse(fs.readFileSync(p, 'utf8'));
34
+ }
35
+
36
+ function getPackageVersion(root) {
37
+ const r = root || ROOT;
38
+ return readJson(path.join(r, 'package.json')).version;
39
+ }
40
+
41
+ // Stamp `version` into each registered manifest, preserving field order and
42
+ // 2-space + trailing-newline formatting. Returns the list of changed rel paths.
43
+ function syncManifestVersions(opts) {
44
+ const root = (opts && opts.root) || ROOT;
45
+ const v = (opts && opts.version) != null ? opts.version : getPackageVersion(root);
46
+ const changed = [];
47
+ for (const rel of VERSIONED_MANIFESTS) {
48
+ const abs = path.join(root, rel);
49
+ const manifest = readJson(abs);
50
+ if (manifest.version !== v) {
51
+ manifest.version = v;
52
+ fs.writeFileSync(abs, JSON.stringify(manifest, null, 2) + '\n');
53
+ changed.push(rel);
54
+ }
55
+ }
56
+ return changed;
57
+ }
58
+
59
+ // Registered manifests whose version != package version.
60
+ function findDrift(opts) {
61
+ const root = (opts && opts.root) || ROOT;
62
+ const v = (opts && opts.version) != null ? opts.version : getPackageVersion(root);
63
+ const drift = [];
64
+ for (const rel of VERSIONED_MANIFESTS) {
65
+ const found = readJson(path.join(root, rel)).version;
66
+ if (found !== v) drift.push({ manifest: rel, found, expected: v });
67
+ }
68
+ return drift;
69
+ }
70
+
71
+ // Best-effort outside git; fail-closed inside a work tree so a release never
72
+ // ships a stale manifest that the working-tree test already accepted.
73
+ function stageManifests(opts) {
74
+ const root = (opts && opts.root) || ROOT;
75
+ let insideWorkTree = false;
76
+ try {
77
+ insideWorkTree = execFileSync('git', ['rev-parse', '--is-inside-work-tree'], {
78
+ cwd: root,
79
+ stdio: ['ignore', 'pipe', 'ignore'],
80
+ }).toString().trim() === 'true';
81
+ } catch {}
82
+ if (!insideWorkTree) {
83
+ console.warn('sync-manifest-versions: not a git work tree; skipping staging.');
84
+ return;
85
+ }
86
+ try {
87
+ execFileSync('git', ['add', '--', ...VERSIONED_MANIFESTS], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] });
88
+ } catch (err) {
89
+ const detail = err && err.stderr ? err.stderr.toString().trim() : (err && err.message) || 'unknown error';
90
+ throw new Error(`sync-manifest-versions: failed to git-add manifests inside a work tree: ${detail}`);
91
+ }
92
+ }
93
+
94
+ module.exports = { VERSIONED_MANIFESTS, syncManifestVersions, findDrift, getPackageVersion, stageManifests };
95
+
96
+ if (require.main === module) {
97
+ const args = process.argv.slice(2);
98
+ const version = getPackageVersion();
99
+ if (args.includes('--check')) {
100
+ const drift = findDrift({ version });
101
+ if (drift.length) {
102
+ for (const d of drift) {
103
+ console.error('Manifest ' + d.manifest + ' version ' + d.found + ' != package.json ' + d.expected);
104
+ }
105
+ console.error('Run `node scripts/sync-manifest-versions.cjs` to fix.');
106
+ process.exitCode = 1;
107
+ } else {
108
+ console.log('All ' + VERSIONED_MANIFESTS.length + ' versioned manifests in sync at ' + version + '.');
109
+ }
110
+ } else {
111
+ const changed = syncManifestVersions({ version });
112
+ if (changed.length) {
113
+ console.log('Stamped ' + version + ' into: ' + changed.join(', '));
114
+ } else {
115
+ console.log('Versioned manifests already at ' + version + '.');
116
+ }
117
+ if (args.includes('--stage')) stageManifests();
118
+ }
119
+ }
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ REPO="${REPO:-TheRocketCodeMX/gsd-core}"
5
+ ENFORCEMENT="${ENFORCEMENT:-evaluate}"
6
+
7
+ case "$ENFORCEMENT" in
8
+ disabled|evaluate|active) ;;
9
+ *)
10
+ echo "ERROR: ENFORCEMENT must be one of: disabled|evaluate|active" >&2
11
+ exit 1
12
+ ;;
13
+ esac
14
+
15
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
16
+ RULESETS_DIR="$SCRIPT_DIR/../.github/rulesets"
17
+
18
+ for ruleset_file in "$RULESETS_DIR"/*.json; do
19
+ name="$(jq -r '.name' "$ruleset_file")"
20
+
21
+ body="$(jq --arg enforcement "$ENFORCEMENT" '.enforcement = $enforcement' "$ruleset_file")"
22
+
23
+ existing_id="$(gh api "repos/$REPO/rulesets" --jq ".[] | select(.name==\"$name\") | .id" 2>/dev/null || true)"
24
+
25
+ if [ -n "$existing_id" ]; then
26
+ gh api --method PUT "repos/$REPO/rulesets/$existing_id" \
27
+ --input - <<< "$body" > /dev/null
28
+ echo "[update] $name -> enforcement=$ENFORCEMENT"
29
+ else
30
+ gh api --method POST "repos/$REPO/rulesets" \
31
+ --input - <<< "$body" > /dev/null
32
+ echo "[create] $name -> enforcement=$ENFORCEMENT"
33
+ fi
34
+ done