@opengsd/gsd-core 1.17.0 → 1.19.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 (369) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +2 -1
  3. package/.opencode/plugins/gsd-core.js +2 -3
  4. package/agents/gsd-advisor-researcher.compact.md +1 -1
  5. package/agents/gsd-advisor-researcher.md +1 -1
  6. package/agents/gsd-assumptions-analyzer.compact.md +1 -1
  7. package/agents/gsd-assumptions-analyzer.md +1 -1
  8. package/agents/gsd-code-fixer.compact.md +3 -3
  9. package/agents/gsd-code-fixer.md +5 -4
  10. package/agents/gsd-code-reviewer.compact.md +1 -1
  11. package/agents/gsd-code-reviewer.md +1 -1
  12. package/agents/gsd-codebase-mapper.compact.md +1 -1
  13. package/agents/gsd-codebase-mapper.md +1 -1
  14. package/agents/gsd-debugger.md +1 -1
  15. package/agents/gsd-doc-verifier.compact.md +4 -4
  16. package/agents/gsd-doc-verifier.md +4 -3
  17. package/agents/gsd-doc-writer.compact.md +23 -5
  18. package/agents/gsd-doc-writer.md +19 -6
  19. package/agents/gsd-eval-auditor.compact.md +1 -1
  20. package/agents/gsd-eval-auditor.md +1 -1
  21. package/agents/gsd-executor.md +7 -3
  22. package/agents/gsd-integration-checker.compact.md +1 -1
  23. package/agents/gsd-integration-checker.md +1 -1
  24. package/agents/gsd-nyquist-auditor.compact.md +1 -1
  25. package/agents/gsd-nyquist-auditor.md +1 -1
  26. package/agents/gsd-phase-researcher.md +1 -1
  27. package/agents/gsd-plan-checker.md +2 -1
  28. package/agents/gsd-planner.md +5 -4
  29. package/agents/gsd-project-researcher.compact.md +1 -1
  30. package/agents/gsd-project-researcher.md +1 -1
  31. package/agents/gsd-research-synthesizer.compact.md +5 -5
  32. package/agents/gsd-research-synthesizer.md +5 -5
  33. package/agents/gsd-roadmapper.compact.md +1 -1
  34. package/agents/gsd-roadmapper.md +1 -1
  35. package/agents/gsd-security-auditor.compact.md +1 -1
  36. package/agents/gsd-security-auditor.md +1 -1
  37. package/agents/gsd-ui-auditor.compact.md +1 -1
  38. package/agents/gsd-ui-auditor.md +1 -1
  39. package/agents/gsd-ui-checker.compact.md +1 -1
  40. package/agents/gsd-ui-checker.md +1 -1
  41. package/agents/gsd-ui-researcher.compact.md +13 -1
  42. package/agents/gsd-ui-researcher.md +28 -1
  43. package/agents/gsd-verifier.md +2 -2
  44. package/bin/install.js +460 -105
  45. package/commands/gsd/code-review.md +8 -0
  46. package/commands/gsd/pause-work.md +1 -1
  47. package/gsd-core/bin/gsd-tools.cjs +124 -18
  48. package/gsd-core/bin/lib/agent-install-check.cjs +29 -3
  49. package/gsd-core/bin/lib/args-terminator.cjs +114 -0
  50. package/gsd-core/bin/lib/broken-windows.cjs +59 -1
  51. package/gsd-core/bin/lib/capability-ledger.cjs +25 -0
  52. package/gsd-core/bin/lib/capability-lock.cjs +41 -8
  53. package/gsd-core/bin/lib/capability-registry.cjs +162 -74
  54. package/gsd-core/bin/lib/capability-source.cjs +3 -1
  55. package/gsd-core/bin/lib/capability-state.cjs +20 -11
  56. package/gsd-core/bin/lib/capability-validator.cjs +23 -4
  57. package/gsd-core/bin/lib/commands.cjs +5 -1
  58. package/gsd-core/bin/lib/config-loader.cjs +13 -3
  59. package/gsd-core/bin/lib/config.cjs +256 -58
  60. package/gsd-core/bin/lib/core-utils.cjs +34 -0
  61. package/gsd-core/bin/lib/decision-coverage-support.cjs +93 -0
  62. package/gsd-core/bin/lib/gate-context-drift.cjs +8 -3
  63. package/gsd-core/bin/lib/gate-decision-coverage-plan.cjs +21 -1
  64. package/gsd-core/bin/lib/gate-decision-coverage-verify.cjs +19 -1
  65. package/gsd-core/bin/lib/gate-evaluation-scope.cjs +134 -13
  66. package/gsd-core/bin/lib/gate-predicate-evaluator.cjs +23 -3
  67. package/gsd-core/bin/lib/gate-predicate.cjs +8 -12
  68. package/gsd-core/bin/lib/gate-tdd-review-checkpoint.cjs +114 -18
  69. package/gsd-core/bin/lib/gate-ui-safety.cjs +23 -5
  70. package/gsd-core/bin/lib/git-info-exclude.cjs +57 -0
  71. package/gsd-core/bin/lib/health-diagnostic-rules/phase-structure.cjs +18 -3
  72. package/gsd-core/bin/lib/health-diagnostic-types.cjs +4 -0
  73. package/gsd-core/bin/lib/health-diagnostic.cjs +52 -1
  74. package/gsd-core/bin/lib/host-integration.cjs +13 -6
  75. package/gsd-core/bin/lib/init.cjs +76 -5
  76. package/gsd-core/bin/lib/install-effort-resolver.cjs +2 -2
  77. package/gsd-core/bin/lib/install-engine.cjs +246 -32
  78. package/gsd-core/bin/lib/install-model-override-resolver.cjs +4 -3
  79. package/gsd-core/bin/lib/install-profiles.cjs +14 -7
  80. package/gsd-core/bin/lib/installer-migration-report.cjs +2 -0
  81. package/gsd-core/bin/lib/markdown-line-diff.cjs +147 -0
  82. package/gsd-core/bin/lib/markdown-sectionizer.cjs +113 -0
  83. package/gsd-core/bin/lib/milestone-lock.cjs +8 -1
  84. package/gsd-core/bin/lib/milestone-release-map.cjs +244 -0
  85. package/gsd-core/bin/lib/milestone-release-tags.cjs +440 -0
  86. package/gsd-core/bin/lib/milestone.cjs +43 -1
  87. package/gsd-core/bin/lib/model-catalog.cjs +8 -0
  88. package/gsd-core/bin/lib/normalize-test-command.cjs +67 -0
  89. package/gsd-core/bin/lib/phase-id.cjs +21 -4
  90. package/gsd-core/bin/lib/phase-lifecycle.cjs +37 -4
  91. package/gsd-core/bin/lib/phase.cjs +235 -37
  92. package/gsd-core/bin/lib/planning-snapshot.cjs +3 -1
  93. package/gsd-core/bin/lib/planning-workspace.cjs +18 -0
  94. package/gsd-core/bin/lib/pristine-baseline.cjs +11 -3
  95. package/gsd-core/bin/lib/read-only-git-env.cjs +58 -0
  96. package/gsd-core/bin/lib/report-parser.cjs +57 -1
  97. package/gsd-core/bin/lib/review-lane-descriptor.cjs +35 -2
  98. package/gsd-core/bin/lib/review-lane-invocation.cjs +40 -0
  99. package/gsd-core/bin/lib/review-lane-runner.cjs +33 -4
  100. package/gsd-core/bin/lib/review-reviewer-selection.cjs +20 -1
  101. package/gsd-core/bin/lib/roadmap-parser.cjs +12 -0
  102. package/gsd-core/bin/lib/roadmap-upgrade.cjs +39 -2
  103. package/gsd-core/bin/lib/roadmap.cjs +89 -30
  104. package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +428 -16
  105. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +8 -4
  106. package/gsd-core/bin/lib/runtime-homes.cjs +18 -0
  107. package/gsd-core/bin/lib/runtime-hooks-surface.cjs +60 -16
  108. package/gsd-core/bin/lib/shell-command-projection.cjs +123 -16
  109. package/gsd-core/bin/lib/smart-entry.cjs +37 -16
  110. package/gsd-core/bin/lib/state-contract.cjs +29 -9
  111. package/gsd-core/bin/lib/state-document.cjs +47 -5
  112. package/gsd-core/bin/lib/state-transition.cjs +150 -34
  113. package/gsd-core/bin/lib/state.cjs +140 -88
  114. package/gsd-core/bin/lib/surface.cjs +9 -0
  115. package/gsd-core/bin/lib/task-command-router.cjs +7 -28
  116. package/gsd-core/bin/lib/task-content-resolution.cjs +46 -1
  117. package/gsd-core/bin/lib/tdd-red-evidence.cjs +5 -0
  118. package/gsd-core/bin/lib/tdd-test-files.cjs +42 -0
  119. package/gsd-core/bin/lib/verification.cjs +96 -9
  120. package/gsd-core/bin/lib/verify.cjs +38 -1
  121. package/gsd-core/bin/lib/worktree-safety.cjs +22 -1
  122. package/gsd-core/bin/shared/config-defaults.manifest.json +1 -0
  123. package/gsd-core/bin/shared/config-schema.manifest.json +1 -0
  124. package/gsd-core/references/agent-contracts.md +1 -1
  125. package/gsd-core/references/agent-skills-bootstrap.md +26 -7
  126. package/gsd-core/references/git-integration.md +14 -3
  127. package/gsd-core/references/loop-hook-dispatch.md +13 -6
  128. package/gsd-core/references/planner-reversibility.md +18 -4
  129. package/gsd-core/references/planner-verify-command-grounding.md +18 -0
  130. package/gsd-core/references/planning-config.md +2 -0
  131. package/gsd-core/references/tdd.md +5 -4
  132. package/gsd-core/references/verifier-phase-gates.md +8 -1
  133. package/gsd-core/templates/DEBUG.md +16 -0
  134. package/gsd-core/templates/config.json +2 -1
  135. package/gsd-core/templates/verification-report.md +1 -1
  136. package/gsd-core/workflows/add-backlog.md +10 -2
  137. package/gsd-core/workflows/add-phase.md +5 -1
  138. package/gsd-core/workflows/add-tests.md +5 -1
  139. package/gsd-core/workflows/add-todo.md +5 -1
  140. package/gsd-core/workflows/ai-integration-phase.md +5 -1
  141. package/gsd-core/workflows/audit-fix.md +2 -1
  142. package/gsd-core/workflows/audit-milestone.md +21 -9
  143. package/gsd-core/workflows/autonomous/templates/minimal-context.md +41 -0
  144. package/gsd-core/workflows/autonomous.md +52 -64
  145. package/gsd-core/workflows/check-todos.md +5 -1
  146. package/gsd-core/workflows/code-review/steps/structural-pre-pass.md +10 -1
  147. package/gsd-core/workflows/code-review-fix.md +5 -1
  148. package/gsd-core/workflows/code-review.md +66 -8
  149. package/gsd-core/workflows/complete-milestone/detail/elaboration.md +5 -1
  150. package/gsd-core/workflows/complete-milestone/steps/project-md-evolution-review.md +145 -0
  151. package/gsd-core/workflows/complete-milestone/steps/release-map.md +80 -0
  152. package/gsd-core/workflows/complete-milestone.md +64 -157
  153. package/gsd-core/workflows/debug.md +5 -1
  154. package/gsd-core/workflows/diagnose-issues.md +34 -6
  155. package/gsd-core/workflows/discuss-phase/modes/chain.md +5 -1
  156. package/gsd-core/workflows/discuss-phase/modes/power.md +1 -1
  157. package/gsd-core/workflows/discuss-phase-assumptions.md +44 -5
  158. package/gsd-core/workflows/discuss-phase-power.md +19 -2
  159. package/gsd-core/workflows/discuss-phase.md +11 -11
  160. package/gsd-core/workflows/docs-update/detail/elaboration.md +7 -6
  161. package/gsd-core/workflows/docs-update.md +27 -5
  162. package/gsd-core/workflows/edit-phase.md +5 -1
  163. package/gsd-core/workflows/eval-review.md +11 -3
  164. package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +5 -1
  165. package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +13 -7
  166. package/gsd-core/workflows/execute-phase/steps/post-merge-gate.md +19 -8
  167. package/gsd-core/workflows/execute-phase/steps/regression-gate-run.md +21 -3
  168. package/gsd-core/workflows/execute-phase/steps/regression-gate.md +18 -1
  169. package/gsd-core/workflows/execute-phase/steps/verify-phase-goal.md +7 -3
  170. package/gsd-core/workflows/execute-phase/steps/wave-post-gate-hooks.md +11 -2
  171. package/gsd-core/workflows/execute-phase.md +46 -11
  172. package/gsd-core/workflows/execute-plan.md +8 -4
  173. package/gsd-core/workflows/extract-learnings.md +6 -2
  174. package/gsd-core/workflows/forensics.md +5 -1
  175. package/gsd-core/workflows/health.md +2 -1
  176. package/gsd-core/workflows/import.md +6 -2
  177. package/gsd-core/workflows/insert-phase.md +5 -1
  178. package/gsd-core/workflows/manager.md +10 -2
  179. package/gsd-core/workflows/map-codebase.md +5 -1
  180. package/gsd-core/workflows/milestone-summary.md +10 -2
  181. package/gsd-core/workflows/new-milestone.md +13 -5
  182. package/gsd-core/workflows/new-project.md +9 -5
  183. package/gsd-core/workflows/next.md +8 -4
  184. package/gsd-core/workflows/pause-work.md +3 -3
  185. package/gsd-core/workflows/plan-phase/steps/auto-advance-check.md +70 -0
  186. package/gsd-core/workflows/plan-phase/steps/chunked-planning-mode.md +7 -3
  187. package/gsd-core/workflows/plan-phase/steps/closed-phase-gate.md +6 -2
  188. package/gsd-core/workflows/plan-phase.md +54 -86
  189. package/gsd-core/workflows/plan-review-convergence.md +17 -5
  190. package/gsd-core/workflows/plant-seed.md +8 -4
  191. package/gsd-core/workflows/progress.md +6 -2
  192. package/gsd-core/workflows/quick/steps/plan-checker-loop.md +1 -1
  193. package/gsd-core/workflows/quick/steps/worktree-pre-dispatch-commit.md +8 -1
  194. package/gsd-core/workflows/quick-batch/steps/plan-checker-loop.md +2 -1
  195. package/gsd-core/workflows/quick-batch.md +5 -1
  196. package/gsd-core/workflows/quick.md +23 -8
  197. package/gsd-core/workflows/remove-phase.md +5 -1
  198. package/gsd-core/workflows/resume-project.md +5 -1
  199. package/gsd-core/workflows/review.md +22 -15
  200. package/gsd-core/workflows/scan.md +5 -1
  201. package/gsd-core/workflows/section-manifest.json +5 -0
  202. package/gsd-core/workflows/secure-phase.md +6 -2
  203. package/gsd-core/workflows/settings.md +4 -3
  204. package/gsd-core/workflows/ship.md +16 -14
  205. package/gsd-core/workflows/spec-phase.md +3 -6
  206. package/gsd-core/workflows/thread.md +10 -2
  207. package/gsd-core/workflows/transition.md +5 -1
  208. package/gsd-core/workflows/ui-phase.md +5 -1
  209. package/gsd-core/workflows/ui-review.md +6 -2
  210. package/gsd-core/workflows/ultraplan-phase.md +5 -1
  211. package/gsd-core/workflows/update.md +5 -1
  212. package/gsd-core/workflows/validate-phase.md +6 -2
  213. package/gsd-core/workflows/verify-work/detail/elaboration.md +1 -1
  214. package/gsd-core/workflows/verify-work/steps/mvp-uat-framing.md +5 -1
  215. package/gsd-core/workflows/verify-work.md +15 -6
  216. package/hooks/dist/gsd-agent-isolation-guard.js +14 -2
  217. package/hooks/dist/gsd-cursor-subagent-start.js +8 -3
  218. package/hooks/dist/gsd-path-export.js +95 -0
  219. package/hooks/dist/gsd-secret-read-guard.js +244 -53
  220. package/hooks/dist/gsd-statusline.js +35 -2
  221. package/hooks/dist/gsd-validate-commit.sh +27 -5
  222. package/hooks/dist/gsd-windsurf-pre-write.js +28 -1
  223. package/hooks/dist/gsd-workflow-guard.js +1 -1
  224. package/hooks/dist/gsd-worktree-path-guard.js +28 -1
  225. package/hooks/dist/lib/isolation-sentinel.js +44 -0
  226. package/hooks/dist/managed-hooks-registry.cjs +1 -0
  227. package/hooks/gsd-agent-isolation-guard.js +14 -2
  228. package/hooks/gsd-cursor-subagent-start.js +8 -3
  229. package/hooks/gsd-path-export.js +95 -0
  230. package/hooks/gsd-secret-read-guard.js +244 -53
  231. package/hooks/gsd-statusline.js +35 -2
  232. package/hooks/gsd-validate-commit.sh +27 -5
  233. package/hooks/gsd-windsurf-pre-write.js +28 -1
  234. package/hooks/gsd-workflow-guard.js +1 -1
  235. package/hooks/gsd-worktree-path-guard.js +28 -1
  236. package/hooks/hooks.json +1 -0
  237. package/hooks/lib/isolation-sentinel.js +44 -0
  238. package/hooks/managed-hooks-registry.cjs +1 -0
  239. package/package.json +13 -6
  240. package/pi/gsd.cjs +1047 -10
  241. package/pi/package-agents/gsd-advisor-researcher.md +113 -0
  242. package/pi/package-agents/gsd-ai-researcher.md +111 -0
  243. package/pi/package-agents/gsd-assumptions-analyzer.md +110 -0
  244. package/pi/package-agents/gsd-code-fixer.md +769 -0
  245. package/pi/package-agents/gsd-code-reviewer.md +402 -0
  246. package/pi/package-agents/gsd-codebase-mapper.md +850 -0
  247. package/pi/package-agents/gsd-debug-session-manager.md +416 -0
  248. package/pi/package-agents/gsd-debugger.md +1274 -0
  249. package/pi/package-agents/gsd-doc-classifier.md +269 -0
  250. package/pi/package-agents/gsd-doc-synthesizer.md +259 -0
  251. package/pi/package-agents/gsd-doc-verifier.md +212 -0
  252. package/pi/package-agents/gsd-doc-writer.md +626 -0
  253. package/pi/package-agents/gsd-dom-verifier.md +164 -0
  254. package/pi/package-agents/gsd-domain-researcher.md +144 -0
  255. package/pi/package-agents/gsd-eval-auditor.md +185 -0
  256. package/pi/package-agents/gsd-eval-planner.md +149 -0
  257. package/pi/package-agents/gsd-executor.md +894 -0
  258. package/pi/package-agents/gsd-framework-selector.md +159 -0
  259. package/pi/package-agents/gsd-integration-checker.md +476 -0
  260. package/pi/package-agents/gsd-intel-updater.md +338 -0
  261. package/pi/package-agents/gsd-mempalace-curator.md +49 -0
  262. package/pi/package-agents/gsd-nyquist-auditor.md +200 -0
  263. package/pi/package-agents/gsd-pattern-mapper.md +340 -0
  264. package/pi/package-agents/gsd-phase-researcher.md +897 -0
  265. package/pi/package-agents/gsd-plan-checker.md +1077 -0
  266. package/pi/package-agents/gsd-planner.md +1003 -0
  267. package/pi/package-agents/gsd-project-researcher.md +611 -0
  268. package/pi/package-agents/gsd-research-synthesizer.md +259 -0
  269. package/pi/package-agents/gsd-roadmapper.md +779 -0
  270. package/pi/package-agents/gsd-security-auditor.md +171 -0
  271. package/pi/package-agents/gsd-ui-auditor.md +581 -0
  272. package/pi/package-agents/gsd-ui-checker.md +417 -0
  273. package/pi/package-agents/gsd-ui-researcher.md +469 -0
  274. package/pi/package-agents/gsd-user-profiler.md +174 -0
  275. package/pi/package-agents/gsd-verifier.md +963 -0
  276. package/pi/package-agents/manifest.json +39 -0
  277. package/pi/package-skills/gsd-add-tests/SKILL.md +39 -0
  278. package/pi/package-skills/gsd-ai-integration-phase/SKILL.md +36 -0
  279. package/pi/package-skills/gsd-audit-fix/SKILL.md +34 -0
  280. package/pi/package-skills/gsd-audit-milestone/SKILL.md +40 -0
  281. package/pi/package-skills/gsd-audit-uat/SKILL.md +26 -0
  282. package/pi/package-skills/gsd-autonomous/SKILL.md +52 -0
  283. package/pi/package-skills/gsd-capture/SKILL.md +68 -0
  284. package/pi/package-skills/gsd-cleanup/SKILL.md +25 -0
  285. package/pi/package-skills/gsd-code-review/SKILL.md +71 -0
  286. package/pi/package-skills/gsd-complete-milestone/SKILL.md +147 -0
  287. package/pi/package-skills/gsd-config/SKILL.md +60 -0
  288. package/pi/package-skills/gsd-debug/SKILL.md +64 -0
  289. package/pi/package-skills/gsd-discuss-phase/SKILL.md +74 -0
  290. package/pi/package-skills/gsd-docs-update/SKILL.md +50 -0
  291. package/pi/package-skills/gsd-eval-review/SKILL.md +35 -0
  292. package/pi/package-skills/gsd-execute-phase/SKILL.md +62 -0
  293. package/pi/package-skills/gsd-explore/SKILL.md +26 -0
  294. package/pi/package-skills/gsd-extract-learnings/SKILL.md +25 -0
  295. package/pi/package-skills/gsd-fast/SKILL.md +33 -0
  296. package/pi/package-skills/gsd-forensics/SKILL.md +59 -0
  297. package/pi/package-skills/gsd-graphify/SKILL.md +210 -0
  298. package/pi/package-skills/gsd-health/SKILL.md +36 -0
  299. package/pi/package-skills/gsd-help/SKILL.md +37 -0
  300. package/pi/package-skills/gsd-import/SKILL.md +46 -0
  301. package/pi/package-skills/gsd-inbox/SKILL.md +42 -0
  302. package/pi/package-skills/gsd-ingest-docs/SKILL.md +43 -0
  303. package/pi/package-skills/gsd-manager/SKILL.md +46 -0
  304. package/pi/package-skills/gsd-map-codebase/SKILL.md +85 -0
  305. package/pi/package-skills/gsd-mempalace-capture/SKILL.md +111 -0
  306. package/pi/package-skills/gsd-mempalace-recall/SKILL.md +111 -0
  307. package/pi/package-skills/gsd-milestone-summary/SKILL.md +54 -0
  308. package/pi/package-skills/gsd-mvp-phase/SKILL.md +45 -0
  309. package/pi/package-skills/gsd-new-milestone/SKILL.md +49 -0
  310. package/pi/package-skills/gsd-new-project/SKILL.md +49 -0
  311. package/pi/package-skills/gsd-next/SKILL.md +34 -0
  312. package/pi/package-skills/gsd-ns-context/SKILL.md +31 -0
  313. package/pi/package-skills/gsd-ns-ideate/SKILL.md +30 -0
  314. package/pi/package-skills/gsd-ns-manage/SKILL.md +42 -0
  315. package/pi/package-skills/gsd-ns-project/SKILL.md +34 -0
  316. package/pi/package-skills/gsd-ns-review/SKILL.md +35 -0
  317. package/pi/package-skills/gsd-ns-workflow/SKILL.md +44 -0
  318. package/pi/package-skills/gsd-onboard/SKILL.md +46 -0
  319. package/pi/package-skills/gsd-pause-work/SKILL.md +48 -0
  320. package/pi/package-skills/gsd-phase/SKILL.md +61 -0
  321. package/pi/package-skills/gsd-plan-phase/SKILL.md +62 -0
  322. package/pi/package-skills/gsd-plan-review-convergence/SKILL.md +63 -0
  323. package/pi/package-skills/gsd-pr-branch/SKILL.md +31 -0
  324. package/pi/package-skills/gsd-profile-user/SKILL.md +48 -0
  325. package/pi/package-skills/gsd-progress/SKILL.md +51 -0
  326. package/pi/package-skills/gsd-quick/SKILL.md +179 -0
  327. package/pi/package-skills/gsd-quick-batch/SKILL.md +114 -0
  328. package/pi/package-skills/gsd-resume-work/SKILL.md +31 -0
  329. package/pi/package-skills/gsd-review/SKILL.md +50 -0
  330. package/pi/package-skills/gsd-review-backlog/SKILL.md +65 -0
  331. package/pi/package-skills/gsd-secure-phase/SKILL.md +37 -0
  332. package/pi/package-skills/gsd-settings/SKILL.md +30 -0
  333. package/pi/package-skills/gsd-ship/SKILL.md +27 -0
  334. package/pi/package-skills/gsd-sketch/SKILL.md +56 -0
  335. package/pi/package-skills/gsd-spec-phase/SKILL.md +63 -0
  336. package/pi/package-skills/gsd-spike/SKILL.md +53 -0
  337. package/pi/package-skills/gsd-stats/SKILL.md +22 -0
  338. package/pi/package-skills/gsd-surface/SKILL.md +177 -0
  339. package/pi/package-skills/gsd-thread/SKILL.md +29 -0
  340. package/pi/package-skills/gsd-ui-phase/SKILL.md +35 -0
  341. package/pi/package-skills/gsd-ui-review/SKILL.md +35 -0
  342. package/pi/package-skills/gsd-ultraplan-phase/SKILL.md +38 -0
  343. package/pi/package-skills/gsd-undo/SKILL.md +38 -0
  344. package/pi/package-skills/gsd-update/SKILL.md +51 -0
  345. package/pi/package-skills/gsd-validate-phase/SKILL.md +37 -0
  346. package/pi/package-skills/gsd-verify-work/SKILL.md +41 -0
  347. package/pi/package-skills/gsd-workspace/SKILL.md +57 -0
  348. package/pi/package-skills/gsd-workstreams/SKILL.md +73 -0
  349. package/scripts/audit-workflow-script-paths.cjs +1 -1
  350. package/scripts/build-hooks.js +4 -0
  351. package/scripts/command-contract-helpers.cjs +1 -1
  352. package/scripts/diagnose-windows-spawn-watcher.cjs +317 -0
  353. package/scripts/docs-guard-registry.cjs +22 -7
  354. package/scripts/gen-health-docs.cjs +13 -1
  355. package/scripts/gen-pi-package-skills.cjs +217 -0
  356. package/scripts/lib/macos-conformance-tier.generated.cjs +19 -0
  357. package/scripts/lib/platform-conformance-tier.generated.cjs +41 -0
  358. package/scripts/lint-docs-guard-registration.exempt-baseline.cjs +3 -3
  359. package/scripts/lint-phase-arg-assignment.cjs +2 -2
  360. package/scripts/lint-retired-runtime-name.cjs +5 -0
  361. package/scripts/lint-workflow-shellcheck-baseline.json +16 -16
  362. package/scripts/npm-audit-baseline.cjs +41 -7
  363. package/scripts/release-tarball-smoke.cjs +1 -0
  364. package/scripts/reviewed-or-maintainer-policy.cjs +181 -0
  365. package/scripts/select-docs-guards.cjs +1 -1
  366. package/scripts/self-test-report-policy.cjs +350 -0
  367. package/skills/gsd-code-review/SKILL.md +8 -0
  368. package/skills/gsd-pause-work/SKILL.md +1 -1
  369. package/vscode/package.json +1 -1
@@ -32,6 +32,8 @@ const node_os_1 = __importDefault(require("node:os"));
32
32
  const node_https_1 = __importDefault(require("node:https"));
33
33
  const node_crypto_1 = __importDefault(require("node:crypto"));
34
34
  // eslint-disable-next-line @typescript-eslint/no-require-imports
35
+ const { resolveGsdHome } = require('./runtime-homes.cjs');
36
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
35
37
  const shellSeam = require('./shell-command-projection.cjs');
36
38
  // eslint-disable-next-line @typescript-eslint/no-require-imports
37
39
  const capValidator = require('./capability-validator.cjs');
@@ -984,7 +986,7 @@ async function resolveTarball(parsed, opts, gsdHome, hostVersion) {
984
986
  async function resolveCapabilitySource(spec, opts = {}) {
985
987
  const parsed = parseSpec(spec);
986
988
  const hostVersion = opts.hostVersion ?? readHostVersion();
987
- const gsdHome = opts.gsdHome ?? process.env['GSD_HOME'] ?? node_os_1.default.homedir();
989
+ const gsdHome = opts.gsdHome || resolveGsdHome();
988
990
  switch (parsed.kind) {
989
991
  case 'local':
990
992
  return resolveLocal(parsed, opts, gsdHome, hostVersion);
@@ -47,6 +47,8 @@ const { loadConfig } = configLoaderMod;
47
47
  const installProfilesMod = require("./install-profiles.cjs");
48
48
  const { readActiveProfile, loadSkillsManifest, resolveProfile, parseRequires, parseCallsAgents, workflowAgentRefs } = installProfilesMod;
49
49
  // eslint-disable-next-line @typescript-eslint/no-require-imports
50
+ const ledgerMod = require("./capability-ledger.cjs");
51
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
50
52
  const surfaceMod = require("./surface.cjs");
51
53
  const { resolveSurface } = surfaceMod;
52
54
  // ─── Prototype-pollution guard (inline literal, CodeQL barrier) ───────────────
@@ -231,14 +233,17 @@ function _resolveCommandsGsdDir() {
231
233
  * Only directories whose names start with gsd- are included so user-created
232
234
  * skills (without the gsd- prefix) are not accidentally pulled in.
233
235
  *
234
- * The requires: field is parsed via the shared parseRequires helper (the same
235
- * parser loadSkillsManifest uses), so the two paths cannot drift.
236
+ * Dependencies use the same parseRequires, parseCallsAgents, and
237
+ * workflowAgentRefs helpers as loadSkillsManifest. Workflow references resolve
238
+ * against this runtime's own gsd-core/workflows tree, including its fragments,
239
+ * so a custom config directory never borrows another installation's agents.
236
240
  *
237
241
  * Returns an empty Map when the skills dir does not exist.
238
242
  */
239
243
  function _loadInstalledSkillsManifest(configDir) {
240
244
  const manifest = new Map();
241
245
  const skillsDir = node_path_1.default.join(configDir, 'skills');
246
+ const workflowsDir = node_path_1.default.join(configDir, 'gsd-core', 'workflows');
242
247
  if (!node_fs_1.default.existsSync(skillsDir))
243
248
  return manifest;
244
249
  let entries;
@@ -265,26 +270,30 @@ function _loadInstalledSkillsManifest(configDir) {
265
270
  // SKILL.md must NOT register the stem — otherwise the capability would be
266
271
  // wrongly reported surfaced/enabled and a verify:post hook would render
267
272
  // for a skill that cannot run.
268
- if (!node_fs_1.default.existsSync(skillMdPath))
269
- continue;
273
+ // #5121: bounded read — a missing, non-regular (FIFO/device) or oversized SKILL.md registers no stem.
270
274
  let content = '';
271
275
  try {
272
- content = node_fs_1.default.readFileSync(skillMdPath, 'utf8');
276
+ content = ledgerMod.readSkillFile(skillMdPath);
273
277
  }
274
278
  catch {
275
279
  // SKILL.md present but unreadable — register with no deps (parity with
276
280
  // loadSkillsManifest's readFileSync catch branch).
277
281
  }
282
+ if (content === null)
283
+ continue;
278
284
  // Parse requires: via the SAME shared parser loadSkillsManifest uses, so
279
285
  // installed-runtime dependency resolution can never silently diverge from
280
286
  // the source-tree path (single source of truth — no duplicated regex).
281
287
  manifest.set(stem, content ? parseRequires(content) : []);
282
- // Mirror loadSkillsManifest's Map shape: it always sets a companion
283
- // `_calls_agents_<stem>` key. Installed SKILL.md bodies carry no
284
- // recoverable agent-call refs, so [] (the no-agents case) keeps the two
285
- // manifest shapes identical and prevents undefined-vs-[] drift for any
286
- // consumer that reads the agent-refs companion key.
287
- manifest.set(`_calls_agents_${stem}`, []);
288
+ // Installed skills delegate to workflows just as source commands do.
289
+ // Preserve their agent closure so surface materialization only prunes
290
+ // agents no retained skill requires (#5356).
291
+ manifest.set(`_calls_agents_${stem}`, [
292
+ ...new Set([
293
+ ...parseCallsAgents(content),
294
+ ...workflowAgentRefs(content, workflowsDir),
295
+ ]),
296
+ ]);
288
297
  }
289
298
  return manifest;
290
299
  }
@@ -856,6 +856,7 @@ const VALID_CONVERTER_NAMES = new Set([
856
856
  'convertClaudeCommandToKimiSkill',
857
857
  'convertClaudeCommandToKimiCodeSkill',
858
858
  'convertClaudeCommandToOpencodeSkill',
859
+ 'convertClaudeCommandToPiSkill',
859
860
  'convertClaudeCommandToTraeSkill',
860
861
  'convertClaudeCommandToWindsurfSkill',
861
862
  'convertClaudeCommandToWindsurfWorkflow',
@@ -879,6 +880,8 @@ const VALID_CONVERTER_NAMES = new Set([
879
880
  // and the kilo/opencode agent converters (shared with those runtimes'
880
881
  // commands-kind entries, options-bag signature `(content, {isAgent, modelOverride})`).
881
882
  'convertClaudeAgentToHermesAgent',
883
+ // #5569 (ADR-5559 §3) — the role file Pi's gsd_dispatch loads.
884
+ 'convertClaudeAgentToPiAgent',
882
885
  'convertClaudeToKiloFrontmatter',
883
886
  'convertClaudeToOpencodeFrontmatter',
884
887
  ]);
@@ -1236,6 +1239,20 @@ function validateArtifactKindEntry(capId, entry, prefix) {
1236
1239
  }
1237
1240
  }
1238
1241
 
1242
+ // excludeSuffixes — optional; filename suffixes the agents staging skips (#5569: Pi omits .compact.md)
1243
+ if (entry.excludeSuffixes !== undefined) {
1244
+ if (!Array.isArray(entry.excludeSuffixes)) {
1245
+ errors.push(ctx + '.excludeSuffixes must be an array of non-empty strings if present');
1246
+ } else {
1247
+ for (let i = 0; i < entry.excludeSuffixes.length; i++) {
1248
+ const s = entry.excludeSuffixes[i];
1249
+ if (typeof s !== 'string' || s.length === 0 || s.includes('/') || s.includes('\\')) {
1250
+ errors.push(ctx + '.excludeSuffixes[' + i + '] must be a non-empty string without path separators');
1251
+ }
1252
+ }
1253
+ }
1254
+ }
1255
+
1239
1256
  // converter — required; must be a string or null (closed ConverterName enum — now enforced in phase 5e)
1240
1257
  if (!Object.prototype.hasOwnProperty.call(entry, 'converter')) {
1241
1258
  errors.push(ctx + '.converter is required (must be a string or null)');
@@ -1899,6 +1916,10 @@ const REVIEWER_EFFORT_LEVELS = new Set(['minimal', 'low', 'medium', 'high', 'xhi
1899
1916
  * silently rot away from reality (DEFECT.GENERATIVE-FIX).
1900
1917
  */
1901
1918
  const KNOWN_HOST_BEHAVIORS = new Set([
1919
+ // #2586: declares runtime-level feature axes GSD does not/cannot support on
1920
+ // omitting the key on every other runtime carries no inverted meaning.
1921
+ // this host (e.g. Codex's `["context-warnings","phase-lifecycle-display"]`)
1922
+ // — present-and-populated / absent-is-unsupported-empty convention, so
1902
1923
  'agentFileExtension',
1903
1924
  'agentFrontmatterExtensions',
1904
1925
  'agentManifestStyle',
@@ -1916,6 +1937,7 @@ const KNOWN_HOST_BEHAVIORS = new Set([
1916
1937
  'combinedFamilyInstall',
1917
1938
  'commandBodyConverter',
1918
1939
  'contentRewriteProfile',
1940
+ 'defaultHomeIncludeRoot',
1919
1941
  'doneBannerStyle',
1920
1942
  'flatCommandDir',
1921
1943
  'frontmatterDialect',
@@ -1953,6 +1975,7 @@ const KNOWN_HOST_BEHAVIORS = new Set([
1953
1975
  'requiresSubagentPair',
1954
1976
  'restoreAtRefTildeInAgents',
1955
1977
  'restoreAtRefTildeInSpecTree',
1978
+ 'retargetsGsdCoreProsePath',
1956
1979
  'retiredArtifacts',
1957
1980
  'rewriteClaudeAtIncludes',
1958
1981
  'settingsFileByScope',
@@ -1972,10 +1995,6 @@ const KNOWN_HOST_BEHAVIORS = new Set([
1972
1995
  'specRootSkillPass',
1973
1996
  'tomlConfigInstall',
1974
1997
  'trackCategoryDescription',
1975
- // #2586: declares runtime-level feature axes GSD does not/cannot support on
1976
- // this host (e.g. Codex's `["context-warnings","phase-lifecycle-display"]`)
1977
- // — present-and-populated / absent-is-unsupported-empty convention, so
1978
- // omitting the key on every other runtime carries no inverted meaning.
1979
1998
  'unsupportedFeatures',
1980
1999
  'verificationStyle',
1981
2000
  'writeCategoryDescription',
@@ -2986,6 +2986,8 @@ async function cmdWebsearch(query, options, raw) {
2986
2986
  'Accept': 'application/json',
2987
2987
  'X-Subscription-Token': apiKey
2988
2988
  },
2989
+ // never follow redirects: X-Subscription-Token must not leave api.search.brave.com (#5409)
2990
+ redirect: 'manual',
2989
2991
  signal: ac.signal
2990
2992
  });
2991
2993
  }
@@ -3011,7 +3013,9 @@ async function cmdWebsearch(query, options, raw) {
3011
3013
  const status = response.status;
3012
3014
  const isRetryable = status === 429 || status >= 500;
3013
3015
  if (!isRetryable) {
3014
- // Non-retryable 4xx — fail immediately, no attempts field
3016
+ // Non-retryable 4xx and every 3xx (redirect: 'manual' hands them back as-is, #5409) —
3017
+ // fail immediately, no attempts field. Keep 3xx out of isRetryable.
3018
+ response.body?.cancel().catch(() => { });
3015
3019
  output({ available: false, error: `API error: ${status}` }, raw, '');
3016
3020
  return;
3017
3021
  }
@@ -25,11 +25,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
25
25
  return (mod && mod.__esModule) ? mod : { "default": mod };
26
26
  };
27
27
  const node_fs_1 = __importDefault(require("node:fs"));
28
- const node_os_1 = __importDefault(require("node:os"));
29
28
  const node_path_1 = __importDefault(require("node:path"));
30
29
  const shell_command_projection_cjs_1 = require("./shell-command-projection.cjs");
31
30
  // #4717: runtime-identity fill — env rung + per-install marker rung.
32
31
  const runtime_slash_cjs_1 = require("./runtime-slash.cjs");
32
+ const runtime_homes_cjs_1 = require("./runtime-homes.cjs");
33
33
  const runtime_name_policy_cjs_1 = require("./runtime-name-policy.cjs");
34
34
  // eslint-disable-next-line @typescript-eslint/no-require-imports
35
35
  const planningWorkspace = require("./planning-workspace.cjs");
@@ -156,6 +156,15 @@ const CONFIG_DEFAULTS = {
156
156
  planner_stall_detection_enabled: _getNestedConfigDefault('planner', 'stall_detection_enabled'),
157
157
  max_prompt_tokens: _getNestedConfigDefault('review', 'max_prompt_tokens'),
158
158
  };
159
+ /**
160
+ * Resolve `git.repo_tagging` (#5706) from hand-edited configuration. Only the
161
+ * two documented enum members are honored; any other stored value (a number,
162
+ * null, an unknown string, a wrong-case spelling) reads as the default `single`
163
+ * and never throws, so a bad hand edit cannot enable per-repository tagging.
164
+ */
165
+ function resolveRepoTagging(value) {
166
+ return value === 'per_repo' ? 'per_repo' : 'single';
167
+ }
159
168
  /**
160
169
  * Resolve the planner watchdog policy from hand-edited configuration.
161
170
  * Only a real JSON boolean may override the default; strings/numbers/null
@@ -849,6 +858,7 @@ function loadConfigResolvedInternal(cwd, options = {}) {
849
858
  base_branch: get('base_branch', { section: 'git', field: 'base_branch' }),
850
859
  protected_branches: getNested('git', 'protected_branches'),
851
860
  allow_default_branch_commits: getNested('git', 'allow_default_branch_commits'),
861
+ repo_tagging: resolveRepoTagging(getNested('git', 'repo_tagging')),
852
862
  phase_branch_template: get('phase_branch_template', { section: 'git', field: 'phase_branch_template' }) ?? defaults.phase_branch_template,
853
863
  milestone_branch_template: get('milestone_branch_template', { section: 'git', field: 'milestone_branch_template' }) ?? defaults.milestone_branch_template,
854
864
  quick_branch_template: get('quick_branch_template', { section: 'git', field: 'quick_branch_template' }) ?? defaults.quick_branch_template,
@@ -935,7 +945,7 @@ function loadConfigResolvedInternal(cwd, options = {}) {
935
945
  // untouched. Faults in the global file stay silent in this branch (the
936
946
  // project config governs; the nearer file is the actionable one).
937
947
  try {
938
- const shadowHome = process.env['GSD_HOME'] || node_os_1.default.homedir();
948
+ const shadowHome = (0, runtime_homes_cjs_1.resolveGsdHome)();
939
949
  const shadowPath = node_path_1.default.join(shadowHome, '.gsd', 'defaults.json');
940
950
  const shadowRead = _readConfigFile(shadowPath);
941
951
  if (shadowRead.kind === 'ok') {
@@ -997,7 +1007,7 @@ function loadConfigResolvedInternal(cwd, options = {}) {
997
1007
  }
998
1008
  // Branch D or E: no .planning/
999
1009
  try {
1000
- const home = process.env['GSD_HOME'] || node_os_1.default.homedir();
1010
+ const home = (0, runtime_homes_cjs_1.resolveGsdHome)();
1001
1011
  const globalDefaultsPath = node_path_1.default.join(home, '.gsd', 'defaults.json');
1002
1012
  const globalRead = _readConfigFile(globalDefaultsPath);
1003
1013
  if (globalRead.kind === 'fault') {