@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
@@ -0,0 +1,177 @@
1
+ ---
2
+ name: gsd-surface
3
+ description: "Toggle which skills are surfaced — apply a profile, list, or disable a cluster without reinstall"
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-surface`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ <arguments>(the text typed after the skill name)</arguments>
14
+
15
+ The text inside `<arguments>` is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.
16
+
17
+ <objective>
18
+ Manage the runtime skill surface without reinstall. Reads/writes `__GSD_PI_ENGINE_ROOT__/.gsd-surface.json`
19
+ (sibling to `__GSD_PI_ENGINE_ROOT__/.gsd-profile`) and re-stages the active skills directory in place.
20
+ Skill dirs live at `__GSD_PI_ENGINE_ROOT__/skills/gsd-*/`.
21
+
22
+ Sub-commands: list · status · profile · disable · enable · reset
23
+ </objective>
24
+
25
+ ## Sub-command routing
26
+
27
+ Parse the first token of the `<arguments>` block:
28
+
29
+ | Token | Action |
30
+ |---|---|
31
+ | `list` | Show enabled + disabled clusters and skills |
32
+ | `status` | Alias for `list` plus token cost summary |
33
+ | `profile <name>` | Write `baseProfile` and re-stage |
34
+ | `profile <n1>,<n2>` | Composed profiles (comma-separated, no spaces) |
35
+ | `disable <cluster>` | Add cluster to `disabledClusters`, re-stage |
36
+ | `enable <cluster>` | Remove cluster from `disabledClusters`, re-stage |
37
+ | `reset` | Delete `.gsd-surface.json`, return to install-time profile |
38
+ | *(none)* | Treat as `list` |
39
+
40
+ ---
41
+
42
+ ## list / status
43
+
44
+ Load the capability registry and call `listSurface(runtimeConfigDir, manifest, CLUSTERS, registry)` from
45
+ the engine module at `${runtimeConfigDir}/gsd-core/bin/lib/surface.cjs`. The registry is loaded via:
46
+ ```js
47
+ const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.cjs');
48
+ ```
49
+ Display:
50
+
51
+ ```
52
+ Enabled (N skills, ~T tokens):
53
+ core_loop: new-project discuss-phase plan-phase execute-phase help update
54
+ audit_review: …
55
+ …
56
+
57
+ Disabled:
58
+ utility: health stats settings …
59
+
60
+ Token cost: ~T (budget cap ~500 tokens for 200k context @ 1%)
61
+ ```
62
+
63
+ For `status` also append:
64
+
65
+ ```
66
+ Base profile: standard (from .gsd-surface.json)
67
+ Install profile: standard (from .gsd-profile)
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Mutation protocol
73
+
74
+ Derive the next `surfaceState` in memory and pass it to `applySurface` as
75
+ `opts.surfaceState`. Do not call `writeSurface` first: `applySurface` stages all
76
+ artifact kinds before mutation and publishes the candidate state only after
77
+ materialization succeeds. Pass `null` to reset to the install-time profile.
78
+
79
+ ---
80
+
81
+ ## profile \<name\>
82
+
83
+ 1. Read current surface: `readSurface(runtimeConfigDir)` → if null, seed from `readActiveProfile(runtimeConfigDir)`.
84
+ 2. Set `surfaceState.baseProfile = name`.
85
+ 3. Keep the new state in memory; do not write it directly.
86
+ 4. Resolve and re-apply:
87
+ ```js
88
+ const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.cjs');
89
+ const layout = resolveRuntimeArtifactLayout(runtime, runtimeConfigDir, scope);
90
+ applySurface(runtimeConfigDir, layout, manifest, CLUSTERS, registry, { surfaceState });
91
+ ```
92
+ 5. Confirm: "Surface updated to profile `<name>`. N skills enabled."
93
+
94
+ ---
95
+
96
+ ## disable \<cluster\>
97
+
98
+ Valid cluster names: `core_loop`, `audit_review`, `milestone`, `research_ideate`,
99
+ `workspace_state`, `docs`, `ui`, `ai_eval`, `ns_meta`, `utility`.
100
+
101
+ 1. Validate cluster name against `Object.keys(CLUSTERS)`.
102
+ 2. Read or initialize surface state.
103
+ 3. Add cluster to `surfaceState.disabledClusters` (deduplicate).
104
+ 4. Resolve layout and apply the in-memory candidate:
105
+ ```js
106
+ const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.cjs');
107
+ const layout = resolveRuntimeArtifactLayout(runtime, runtimeConfigDir, scope);
108
+ applySurface(runtimeConfigDir, layout, manifest, CLUSTERS, registry, { surfaceState });
109
+ ```
110
+ 5. Confirm: "Disabled cluster `<cluster>`. N skills removed from surface."
111
+
112
+ ---
113
+
114
+ ## enable \<cluster\>
115
+
116
+ 1. Read surface state; if null, nothing to enable — print "No surface delta active."
117
+ 2. Remove cluster from `surfaceState.disabledClusters`.
118
+ 3. Resolve layout and apply the in-memory candidate:
119
+ ```js
120
+ const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.cjs');
121
+ const layout = resolveRuntimeArtifactLayout(runtime, runtimeConfigDir, scope);
122
+ applySurface(runtimeConfigDir, layout, manifest, CLUSTERS, registry, { surfaceState });
123
+ ```
124
+ 4. Confirm: "Enabled cluster `<cluster>`. N skills added back to surface."
125
+
126
+ ---
127
+
128
+ ## reset
129
+
130
+ 1. Check if `.gsd-surface.json` exists.
131
+ 2. Do not delete it directly.
132
+ 3. Re-apply with `{ surfaceState: null }`; the state file is removed only after
133
+ the install-time profile materializes successfully.
134
+ 4. Confirm: "Surface reset to install-time profile `<name>`."
135
+
136
+ ---
137
+
138
+ ## runtimeConfigDir resolution
139
+
140
+ The `runtimeConfigDir` for `applySurface` is the **base Claude config directory**
141
+ (`__GSD_PI_ENGINE_ROOT__`), NOT the skills sub-directory (`__GSD_PI_ENGINE_ROOT__/skills`).
142
+
143
+ This matches `installRuntimeArtifacts` and `uninstallRuntimeArtifacts`, which also
144
+ receive `__GSD_PI_ENGINE_ROOT__` as `configDir`. The skill dirs themselves live at
145
+ `__GSD_PI_ENGINE_ROOT__/skills/gsd-*/` because the `claude global` layout has `destSubpath =
146
+ 'skills'` — they are derived from `configDir`, not the root for it.
147
+
148
+ ```bash
149
+ # Claude Code — global install
150
+ RUNTIME_CONFIG_DIR="${CLAUDE_CONFIG_DIR:-__GSD_PI_ENGINE_ROOT__}"
151
+ SCOPE="global"
152
+
153
+ # Artifact destinations are derived from runtime layout
154
+ # via resolveRuntimeArtifactLayout(runtime, RUNTIME_CONFIG_DIR, SCOPE)
155
+ # then applySurface(RUNTIME_CONFIG_DIR, layout, manifest, CLUSTERS)
156
+ ```
157
+
158
+ Surface state is stored at `${RUNTIME_CONFIG_DIR}/.gsd-surface.json`
159
+ (i.e. `__GSD_PI_ENGINE_ROOT__/.gsd-surface.json`).
160
+
161
+ All paths can be overridden by reading the `CLAUDE_CONFIG_DIR` env var if set.
162
+
163
+ ---
164
+
165
+ ## Error handling
166
+
167
+ - Unknown cluster name → list valid cluster names, exit without writing.
168
+ - Unknown profile name → list known profiles (`core`, `standard`, `full`), exit.
169
+ - Missing `surface.cjs` → prompt: "Run `npm i -g @opengsd/gsd-core` to reinstall GSD."
170
+
171
+ <execution_context>
172
+ Surface state file: `__GSD_PI_ENGINE_ROOT__/.gsd-surface.json`
173
+ Install profile marker: `__GSD_PI_ENGINE_ROOT__/.gsd-profile`
174
+ Skill dirs: `__GSD_PI_ENGINE_ROOT__/skills/gsd-*/`
175
+ Engine module: `__GSD_PI_ENGINE_ROOT__/gsd-core/bin/lib/surface.cjs`
176
+ Cluster definitions: `__GSD_PI_ENGINE_ROOT__/gsd-core/bin/lib/clusters.cjs`
177
+ </execution_context>
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: gsd-thread
3
+ description: "Manage persistent context threads for cross-session work"
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-thread`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ <arguments>(the text typed after the skill name)</arguments>
14
+
15
+ The text inside `<arguments>` is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.
16
+
17
+ <objective>
18
+ Create, list, close, or resume persistent context threads. Threads are lightweight
19
+ cross-session knowledge stores for work that spans multiple sessions but
20
+ doesn't belong to any specific phase.
21
+ </objective>
22
+
23
+ <execution_context>
24
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/thread.md
25
+ </execution_context>
26
+
27
+ <process>
28
+ Execute end-to-end.
29
+ </process>
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: gsd-ui-phase
3
+ description: "Generate UI design contract (UI-SPEC.md) for frontend phases"
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-ui-phase`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ <arguments>(the text typed after the skill name)</arguments>
14
+
15
+ The text inside `<arguments>` is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.
16
+
17
+ <objective>
18
+ Create a UI design contract (UI-SPEC.md) for a frontend phase.
19
+ Orchestrates gsd-ui-researcher and gsd-ui-checker.
20
+ Flow: Validate → Research UI → Verify UI-SPEC → Done
21
+ </objective>
22
+
23
+ <execution_context>
24
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/ui-phase.md
25
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/references/ui-brand.md
26
+ </execution_context>
27
+
28
+ <context>
29
+ Phase number: the `<arguments>` block — optional, auto-detects next unplanned phase if omitted.
30
+ </context>
31
+
32
+ <process>
33
+ Execute end-to-end.
34
+ Preserve all workflow gates.
35
+ </process>
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: gsd-ui-review
3
+ description: "Retroactive 6-pillar visual audit of implemented frontend code"
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-ui-review`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ <arguments>(the text typed after the skill name)</arguments>
14
+
15
+ The text inside `<arguments>` is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.
16
+
17
+ <objective>
18
+ Conduct a retroactive 6-pillar visual audit. Produces UI-REVIEW.md with
19
+ graded assessment (1-4 per pillar). Works on any project.
20
+ Output: {phase_num}-UI-REVIEW.md
21
+ </objective>
22
+
23
+ <execution_context>
24
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/ui-review.md
25
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/references/ui-brand.md
26
+ </execution_context>
27
+
28
+ <context>
29
+ Phase: the `<arguments>` block — optional, defaults to last completed phase.
30
+ </context>
31
+
32
+ <process>
33
+ Execute end-to-end.
34
+ Preserve all workflow gates.
35
+ </process>
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: gsd-ultraplan-phase
3
+ description: "[BETA] Offload plan phase to Claude Code's ultraplan cloud; review in browser and import back."
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-ultraplan-phase`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ <arguments>(the text typed after the skill name)</arguments>
14
+
15
+ The text inside `<arguments>` is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.
16
+
17
+ <objective>
18
+ Offload GSD's plan phase to Claude Code's ultraplan cloud infrastructure.
19
+
20
+ Ultraplan drafts the plan in a remote cloud session while your terminal stays free.
21
+ Review and comment on the plan in your browser, then import it back via /skill:gsd-import --from.
22
+
23
+ ⚠ BETA: ultraplan is in research preview. Use /skill:gsd-plan-phase for stable local planning.
24
+ Requirements: Claude Code v2.1.91+, claude.ai account, GitHub repository.
25
+ </objective>
26
+
27
+ <execution_context>
28
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/ultraplan-phase.md
29
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/references/ui-brand.md
30
+ </execution_context>
31
+
32
+ <context>
33
+ Arguments: see the `<arguments>` block above.
34
+ </context>
35
+
36
+ <process>
37
+ Execute the ultraplan-phase workflow end-to-end.
38
+ </process>
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: gsd-undo
3
+ description: "Safe git revert. Roll back phase or plan commits using the phase manifest with dependency checks."
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-undo`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ <arguments>(the text typed after the skill name)</arguments>
14
+
15
+ The text inside `<arguments>` is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.
16
+
17
+ <objective>
18
+ Safe git revert — roll back GSD phase or plan commits using the phase manifest, with dependency checks and a confirmation gate before execution.
19
+
20
+ Three modes:
21
+ - **--last N**: Show recent GSD commits for interactive selection
22
+ - **--phase NN**: Revert all commits for a phase (manifest + git log fallback)
23
+ - **--plan NN-MM**: Revert all commits for a specific plan
24
+ </objective>
25
+
26
+ <execution_context>
27
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/undo.md
28
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/references/ui-brand.md
29
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/references/gate-prompts.md
30
+ </execution_context>
31
+
32
+ <context>
33
+ Arguments: see the `<arguments>` block above.
34
+ </context>
35
+
36
+ <process>
37
+ Execute end-to-end.
38
+ </process>
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: gsd-update
3
+ description: "Update GSD to latest version with changelog display"
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-update`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ <arguments>(the text typed after the skill name)</arguments>
14
+
15
+ The text inside `<arguments>` is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.
16
+
17
+ <objective>
18
+ Check for GSD updates, install if available, and display what changed.
19
+
20
+ Routes to the update workflow which handles:
21
+ - Version detection (local vs global installation)
22
+ - npm version checking
23
+ - Changelog fetching and display
24
+ - User confirmation with clean install warning
25
+ - Update execution and cache clearing
26
+ - Restart reminder
27
+ </objective>
28
+
29
+ <execution_context>
30
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/update.md
31
+ </execution_context>
32
+
33
+ <flags>
34
+ - **--sync**: Sync managed GSD skills across runtime roots so multi-runtime users stay aligned after an update. Runs the sync-skills workflow (--from, --to, --dry-run, --apply flags supported).
35
+ - **--reapply**: Reapply local modifications after a GSD update. Uses three-way comparison (pristine baseline, user-modified backup, newly installed version) to merge user customizations back. Runs the reapply-patches workflow.
36
+ - **--next** (alias **--rc**): Target the `@next` RC dist-tag instead of `@latest` so you can install or refresh a release candidate (e.g. `1.4.0-rc.1`) through the normal update flow — scope/runtime detection, changelog preview, custom-file backup, and cache clearing all still apply. Omitting it keeps targeting `@latest` (no change). See ADR #660 for the RC channel.
37
+ - **(no flag)**: Standard update — check for new version, show changelog, install.
38
+ </flags>
39
+
40
+ <process>
41
+ Parse the first token of the `<arguments>` block:
42
+ - If it is `--sync`: strip the flag, execute the sync-skills workflow (passing remaining args for --from/--to/--dry-run/--apply).
43
+ - If it is `--reapply`: strip the flag, execute the reapply-patches workflow.
44
+ - Otherwise (including `--next` / `--rc`): execute the update workflow end-to-end, passing the `<arguments>` block through so the workflow's parse_update_channel step can select the release channel.
45
+
46
+ </process>
47
+
48
+ <execution_context_extended>
49
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/sync-skills.md
50
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/reapply-patches.md
51
+ </execution_context_extended>
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: gsd-validate-phase
3
+ description: "Retroactively audit and fill Nyquist validation gaps for a completed phase"
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-validate-phase`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ <arguments>(the text typed after the skill name)</arguments>
14
+
15
+ The text inside `<arguments>` is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.
16
+
17
+ <objective>
18
+ Audit Nyquist validation coverage for a completed phase. Three states:
19
+ - (A) VALIDATION.md exists — audit and fill gaps
20
+ - (B) No VALIDATION.md, SUMMARY.md exists — reconstruct from artifacts
21
+ - (C) Phase not executed — exit with guidance
22
+
23
+ Output: updated VALIDATION.md + generated test files.
24
+ </objective>
25
+
26
+ <execution_context>
27
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/validate-phase.md
28
+ </execution_context>
29
+
30
+ <context>
31
+ Phase: the `<arguments>` block — optional, defaults to last completed phase.
32
+ </context>
33
+
34
+ <process>
35
+ Execute end-to-end.
36
+ Preserve all workflow gates.
37
+ </process>
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: gsd-verify-work
3
+ description: "Validate built features through conversational UAT"
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-verify-work`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ <arguments>(the text typed after the skill name)</arguments>
14
+
15
+ The text inside `<arguments>` is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.
16
+
17
+ <objective>
18
+ Validate built features through conversational testing with persistent state.
19
+
20
+ Purpose: Confirm what Claude built actually works from user's perspective. One test at a time, plain text responses, no interrogation. When issues are found, automatically diagnose, plan fixes, and prepare for execution.
21
+
22
+ Output: {phase_num}-UAT.md tracking all test results. If issues found: diagnosed gaps, verified fix plans ready for /skill:gsd-execute-phase
23
+ </objective>
24
+
25
+ <execution_context>
26
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/verify-work.md
27
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/templates/UAT.md
28
+ </execution_context>
29
+
30
+ <context>
31
+ Phase: the `<arguments>` block (optional)
32
+ - If provided: Test specific phase (e.g., "4")
33
+ - If not provided: Check for active sessions or prompt for phase
34
+
35
+ Context files are resolved inside the workflow (`init verify-work`) and delegated via `<required_reading>` blocks.
36
+ </context>
37
+
38
+ <process>
39
+ Execute end-to-end.
40
+ Preserve all workflow gates (session management, test presentation, diagnosis, fix planning, routing).
41
+ </process>
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: gsd-workspace
3
+ description: "Manage GSD workspaces — create, list, or remove isolated workspace environments"
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-workspace`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ <arguments>(the text typed after the skill name)</arguments>
14
+
15
+ The text inside `<arguments>` is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.
16
+
17
+ <objective>
18
+ Manage GSD workspaces with a single consolidated command.
19
+
20
+ Mode routing:
21
+ - **--new**: Create an isolated workspace with repo copies and independent .planning/ → new-workspace workflow
22
+ - **--list**: List active GSD workspaces and their status → list-workspaces workflow
23
+ - **--remove**: Remove a GSD workspace and clean up worktrees → remove-workspace workflow
24
+ </objective>
25
+
26
+ <routing>
27
+
28
+ | Flag | Action | Workflow |
29
+ |------|--------|----------|
30
+ | --new | Create workspace with worktree/clone strategy | new-workspace |
31
+ | --list | Scan ~/gsd-workspaces/, show summary table | list-workspaces |
32
+ | --remove | Confirm and remove workspace directory | remove-workspace |
33
+
34
+ </routing>
35
+
36
+ <execution_context>
37
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/new-workspace.md
38
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/list-workspaces.md
39
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/workflows/remove-workspace.md
40
+ @__GSD_PI_ENGINE_ROOT__/gsd-core/references/ui-brand.md
41
+ </execution_context>
42
+
43
+ <context>
44
+ Arguments: see the `<arguments>` block above.
45
+
46
+ Parse the first token of the `<arguments>` block:
47
+ - If it is `--new`: strip the flag, pass remainder (--name, --repos, --path, --strategy, --branch, --auto flags) to new-workspace workflow
48
+ - If it is `--list`: execute list-workspaces workflow (no argument needed)
49
+ - If it is `--remove`: strip the flag, pass remainder (workspace-name) to remove-workspace workflow
50
+ - Otherwise (no flag): show usage — one of --new, --list, or --remove is required
51
+ </context>
52
+
53
+ <process>
54
+ 1. Parse the leading flag from the `<arguments>` block.
55
+ 2. Load and execute the appropriate workflow end-to-end based on the routing table above.
56
+ 3. Preserve all workflow gates from the target workflow (validation, approvals, commits, routing).
57
+ </process>
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: gsd-workstreams
3
+ description: "Manage parallel workstreams — list, create, switch, status, progress, complete, and resume"
4
+ ---
5
+ Invoke this Pi skill with `/skill:gsd-workstreams`.
6
+
7
+ **Pi dispatch (fail closed).** Pi has no built-in subagent API; GSD provides the `gsd_dispatch` tool. Where a workflow step dispatches a named `gsd-*` role, call `gsd_dispatch` with `role` (the installed role name) and `task` (the full task text). A workflow that still writes the step as an `Agent(...)` call means the same: its `subagent_type` is the `role` and its `prompt` is the `task`. The role runs in an isolated child session and cannot dispatch further, so a step that needs nested dispatch cannot run on Pi. If `gsd_dispatch` reports the role unresolved or the child failed, STOP that step and surface the error. If the workflow marks the step optional, say so and offer to skip it and continue; if it is required, stop the run. Never execute the role's work inline as a substitute.
8
+
9
+ **Pi includes.** Pi does not expand `@path` references in a skill. Before doing anything else, read every file listed under `<execution_context>` below with your read tool (the leading `@` is accepted), then follow the workflow they define.
10
+
11
+
12
+
13
+ # /skill:gsd-workstreams
14
+
15
+ Manage parallel workstreams for concurrent milestone work.
16
+
17
+ ## Usage
18
+
19
+ `/skill:gsd-workstreams [subcommand] [args]`
20
+
21
+ ### Subcommands
22
+
23
+ | Command | Description |
24
+ |---------|-------------|
25
+ | `list` | List all workstreams with status |
26
+ | `create <name>` | Create a new workstream |
27
+ | `status <name>` | Detailed status for one workstream |
28
+ | `switch <name>` | Set active workstream |
29
+ | `progress` | Progress summary across all workstreams |
30
+ | `complete <name>` | Archive a completed workstream |
31
+ | `resume <name>` | Resume work in a workstream |
32
+
33
+ ## Step 1: Parse Subcommand
34
+
35
+ Parse the user's input to determine which workstream operation to perform.
36
+ If no subcommand given, default to `list`.
37
+
38
+ ## Step 2: Execute Operation
39
+
40
+ ### list
41
+ Run: `gsd-tools query workstream.list --raw --cwd "$CWD"`
42
+ Display the workstreams in a table format showing name, status, current phase, and progress.
43
+
44
+ ### create
45
+ Run: `gsd-tools query workstream.create <name> --raw --cwd "$CWD"`
46
+ After creation, display the new workstream path and suggest next steps:
47
+ - `/skill:gsd-new-milestone --ws <name>` to set up the milestone
48
+
49
+ ### status
50
+ Run: `gsd-tools query workstream.status <name> --raw --cwd "$CWD"`
51
+ Display detailed phase breakdown and state information.
52
+
53
+ ### switch
54
+ Run: `gsd-tools query workstream.set <name> --raw --cwd "$CWD"`
55
+ Also set `GSD_WORKSTREAM` for the current session when the runtime supports it.
56
+ If the runtime exposes a session identifier, GSD also stores the active workstream
57
+ session-locally so concurrent sessions do not overwrite each other.
58
+
59
+ ### progress
60
+ Run: `gsd-tools query workstream.progress --raw --cwd "$CWD"`
61
+ Display a progress overview across all workstreams.
62
+
63
+ ### complete
64
+ Run: `gsd-tools query workstream.complete <name> --raw --cwd "$CWD"`
65
+ Archive the workstream to milestones/.
66
+
67
+ ### resume
68
+ Set the workstream as active and suggest `/skill:gsd-resume-work --ws <name>`.
69
+
70
+ ## Step 3: Display Results
71
+
72
+ Format the JSON output from gsd-tools query into a human-readable display.
73
+ Include the `${GSD_WS}` flag in any routing suggestions.
@@ -24,7 +24,7 @@ const AUDIT_FINDING = Object.freeze({
24
24
  // Match `${GSD_HOME}` or `${GSD_HOME:-...}` followed by a /-rooted path
25
25
  // ending in .cjs/.js/.sh. The path is captured verbatim (relative to
26
26
  // the install root).
27
- const REF_RE = /\$\{GSD_HOME(?::-[^}]*)?\}\/([A-Za-z0-9_./-]+\.(?:cjs|js|sh))/g;
27
+ const REF_RE = /\$\{GSD_HOME(?::-[^}]*)?\}\/([A-Za-z0-9_./-]+\.(?:cjs|js|sh)(?![A-Za-z0-9_]))/g;
28
28
 
29
29
  function listWorkflowFiles(dir) {
30
30
  if (!fs.existsSync(dir)) return [];
@@ -42,6 +42,10 @@ const HOOKS_TO_COPY = [
42
42
  // plugin's bundled gsd-core/ tree; no-op in classic installs. Must ship to
43
43
  // dist so the installer copies it into the target hooks/ dir.
44
44
  'gsd-ensure-canonical-path.js',
45
+ // SessionStart PATH persistence (#5465): appends the installed gsd-core/bin to $CLAUDE_ENV_FILE,
46
+ // which Claude Code provides to SessionStart hooks but not to workflow Bash blocks. Must ship
47
+ // to dist so the installer copies it into the target hooks/ dir and registers SessionStart.
48
+ 'gsd-path-export.js',
45
49
  // Required by gsd-check-update-worker.js at runtime — must ship alongside it
46
50
  // so require('./managed-hooks-registry.cjs') resolves in the installed hooks/ dir.
47
51
  'managed-hooks-registry.cjs',
@@ -927,7 +927,7 @@ const REMEDIES = Object.freeze({
927
927
  legacy_read_tag:
928
928
  'replace <files_to_read> with <required_reading> (#3423 standardized on the gate tag)',
929
929
  read_tag_gate_missing:
930
- "add the <required_reading> MUST-Read gate clause to this agent's instructions (see docs/AGENTS.md)",
930
+ "add the <required_reading> MUST-Read gate clause to this agent's instructions (see docs/reference/agents.md)",
931
931
  unmatched_consumer_token:
932
932
  'declare the producing agent and marker in the registry, or remove the dispatch — nothing emits this token',
933
933
  unresolved_reference_include: