@opengsd/gsd-path 1.0.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 (398) hide show
  1. package/AGENTS.md +397 -0
  2. package/DOCS.md +341 -0
  3. package/FULL.md +475 -0
  4. package/GUIDE.md +23 -0
  5. package/HOOKS.md +273 -0
  6. package/LICENSE +21 -0
  7. package/MIGRATE.md +100 -0
  8. package/QUICK.md +146 -0
  9. package/README.md +280 -0
  10. package/RUNTIME.md +229 -0
  11. package/UPDATE.md +196 -0
  12. package/WORKFLOW.md +683 -0
  13. package/package.json +80 -0
  14. package/platforms/claude/dispatch.md +63 -0
  15. package/platforms/copilot/dispatch.md +61 -0
  16. package/platforms/cursor/agent.md +17 -0
  17. package/platforms/cursor/dispatch.md +63 -0
  18. package/platforms/grok/dispatch.md +61 -0
  19. package/platforms/kimi/dispatch.md +64 -0
  20. package/platforms/kiro/dispatch.md +58 -0
  21. package/platforms/opencode/dispatch.md +62 -0
  22. package/platforms/qwen/dispatch.md +60 -0
  23. package/platforms/shared-agents/dispatch.md +131 -0
  24. package/plugin.json +14 -0
  25. package/scripts/_common.py +180 -0
  26. package/scripts/archive_milestone.py +2265 -0
  27. package/scripts/bootstrap_repository.py +710 -0
  28. package/scripts/build_state.py +854 -0
  29. package/scripts/check_docs_audit.py +463 -0
  30. package/scripts/check_handoffs.py +1855 -0
  31. package/scripts/check_task_briefs.py +376 -0
  32. package/scripts/check_update.py +93 -0
  33. package/scripts/core_hook_gate.py +34 -0
  34. package/scripts/core_hook_settings.py +119 -0
  35. package/scripts/detect_project.py +1517 -0
  36. package/scripts/discussion_records.py +619 -0
  37. package/scripts/discussion_validate.py +1321 -0
  38. package/scripts/dispatch_driver.py +1812 -0
  39. package/scripts/git_guard.py +759 -0
  40. package/scripts/guard_hook.py +2124 -0
  41. package/scripts/install.mjs +3239 -0
  42. package/scripts/install.py +3008 -0
  43. package/scripts/integration.py +1433 -0
  44. package/scripts/isolation.py +3538 -0
  45. package/scripts/lean_verification.py +256 -0
  46. package/scripts/loop_run.py +837 -0
  47. package/scripts/migrate_core.py +169 -0
  48. package/scripts/pipeline_diagnose.py +715 -0
  49. package/scripts/pipeline_git.py +940 -0
  50. package/scripts/pipeline_state.py +2291 -0
  51. package/scripts/pipeline_undo.py +1039 -0
  52. package/scripts/promote_lookahead.py +415 -0
  53. package/scripts/review_findings.py +714 -0
  54. package/scripts/review_panel.py +553 -0
  55. package/scripts/skill-resources.json +340 -0
  56. package/scripts/state_checkpoint.py +1039 -0
  57. package/scripts/state_promote.py +743 -0
  58. package/scripts/status_runtime.py +122 -0
  59. package/scripts/sync_skill_resources.py +259 -0
  60. package/scripts/token_budget.py +146 -0
  61. package/scripts/wizard.mjs +179 -0
  62. package/scripts/workflow_run.py +117 -0
  63. package/skills/gsd-path/BUILD.md +700 -0
  64. package/skills/gsd-path/DECIDE.md +115 -0
  65. package/skills/gsd-path/DEFINE.md +297 -0
  66. package/skills/gsd-path/DOCS-AUDIT.md +190 -0
  67. package/skills/gsd-path/INSPECT.md +167 -0
  68. package/skills/gsd-path/PLAN.md +411 -0
  69. package/skills/gsd-path/RESEARCH.md +159 -0
  70. package/skills/gsd-path/ROADMAP.md +215 -0
  71. package/skills/gsd-path/SHIP.md +412 -0
  72. package/skills/gsd-path/SKILL.md +471 -0
  73. package/skills/gsd-path/agents/openai.yaml +6 -0
  74. package/skills/gsd-path/references/codebase-mapper.md +52 -0
  75. package/skills/gsd-path/references/coder.md +90 -0
  76. package/skills/gsd-path/references/decider.md +36 -0
  77. package/skills/gsd-path/references/dispatch.md +131 -0
  78. package/skills/gsd-path/references/docs-auditor.md +60 -0
  79. package/skills/gsd-path/references/planner.md +104 -0
  80. package/skills/gsd-path/references/researcher.md +42 -0
  81. package/skills/gsd-path/references/reviewer.md +188 -0
  82. package/skills/gsd-path/references/roadmapper.md +48 -0
  83. package/skills/gsd-path/scripts/_common.py +180 -0
  84. package/skills/gsd-path/scripts/archive_milestone.py +2265 -0
  85. package/skills/gsd-path/scripts/bootstrap_repository.py +710 -0
  86. package/skills/gsd-path/scripts/build_state.py +854 -0
  87. package/skills/gsd-path/scripts/check_docs_audit.py +463 -0
  88. package/skills/gsd-path/scripts/check_handoffs.py +1855 -0
  89. package/skills/gsd-path/scripts/check_task_briefs.py +376 -0
  90. package/skills/gsd-path/scripts/check_update.py +93 -0
  91. package/skills/gsd-path/scripts/detect_project.py +1517 -0
  92. package/skills/gsd-path/scripts/discussion_records.py +619 -0
  93. package/skills/gsd-path/scripts/discussion_validate.py +1321 -0
  94. package/skills/gsd-path/scripts/dispatch_driver.py +1812 -0
  95. package/skills/gsd-path/scripts/integration.py +1433 -0
  96. package/skills/gsd-path/scripts/isolation.py +3538 -0
  97. package/skills/gsd-path/scripts/lean_verification.py +256 -0
  98. package/skills/gsd-path/scripts/loop_run.py +837 -0
  99. package/skills/gsd-path/scripts/pipeline_git.py +940 -0
  100. package/skills/gsd-path/scripts/pipeline_state.py +2291 -0
  101. package/skills/gsd-path/scripts/promote_lookahead.py +415 -0
  102. package/skills/gsd-path/scripts/review_findings.py +714 -0
  103. package/skills/gsd-path/scripts/review_panel.py +553 -0
  104. package/skills/gsd-path/scripts/state_checkpoint.py +1039 -0
  105. package/skills/gsd-path/scripts/state_promote.py +743 -0
  106. package/skills/gsd-path/scripts/token_budget.py +146 -0
  107. package/skills/gsd-path/scripts/workflow_run.py +117 -0
  108. package/skills/gsd-path/templates/answers.md +29 -0
  109. package/skills/gsd-path/templates/archive-manifest.md +37 -0
  110. package/skills/gsd-path/templates/charter.md +50 -0
  111. package/skills/gsd-path/templates/codebase.md +46 -0
  112. package/skills/gsd-path/templates/dialogue.md +21 -0
  113. package/skills/gsd-path/templates/docs-audit.md +69 -0
  114. package/skills/gsd-path/templates/evidence.md +24 -0
  115. package/skills/gsd-path/templates/final-review.md +27 -0
  116. package/skills/gsd-path/templates/gap-review.md +20 -0
  117. package/skills/gsd-path/templates/intent.md +98 -0
  118. package/skills/gsd-path/templates/loop.md +59 -0
  119. package/skills/gsd-path/templates/patch-findings.md +16 -0
  120. package/skills/gsd-path/templates/plan-panel.md +25 -0
  121. package/skills/gsd-path/templates/plan.md +89 -0
  122. package/skills/gsd-path/templates/repository.md +16 -0
  123. package/skills/gsd-path/templates/research-handoff.md +25 -0
  124. package/skills/gsd-path/templates/roadmap.md +38 -0
  125. package/skills/gsd-path/templates/skeptic.md +36 -0
  126. package/skills/gsd-path/templates/state.md +27 -0
  127. package/skills/gsd-path/templates/synthesis.md +36 -0
  128. package/skills/gsd-path/templates/task.md +74 -0
  129. package/skills/gsd-path/templates/wave-panel.md +25 -0
  130. package/skills/gsd-path/templates/wave-review.md +64 -0
  131. package/skills/gsd-path-build/SKILL.md +700 -0
  132. package/skills/gsd-path-build/agents/openai.yaml +6 -0
  133. package/skills/gsd-path-build/references/coder.md +90 -0
  134. package/skills/gsd-path-build/references/dispatch.md +131 -0
  135. package/skills/gsd-path-build/references/reviewer.md +188 -0
  136. package/skills/gsd-path-build/scripts/_common.py +180 -0
  137. package/skills/gsd-path-build/scripts/archive_milestone.py +2265 -0
  138. package/skills/gsd-path-build/scripts/build_state.py +854 -0
  139. package/skills/gsd-path-build/scripts/check_handoffs.py +1855 -0
  140. package/skills/gsd-path-build/scripts/check_task_briefs.py +376 -0
  141. package/skills/gsd-path-build/scripts/discussion_records.py +619 -0
  142. package/skills/gsd-path-build/scripts/discussion_validate.py +1321 -0
  143. package/skills/gsd-path-build/scripts/dispatch_driver.py +1812 -0
  144. package/skills/gsd-path-build/scripts/integration.py +1433 -0
  145. package/skills/gsd-path-build/scripts/isolation.py +3538 -0
  146. package/skills/gsd-path-build/scripts/loop_run.py +837 -0
  147. package/skills/gsd-path-build/scripts/pipeline_git.py +940 -0
  148. package/skills/gsd-path-build/scripts/pipeline_state.py +2291 -0
  149. package/skills/gsd-path-build/scripts/review_findings.py +714 -0
  150. package/skills/gsd-path-build/scripts/review_panel.py +553 -0
  151. package/skills/gsd-path-build/scripts/state_checkpoint.py +1039 -0
  152. package/skills/gsd-path-build/scripts/state_promote.py +743 -0
  153. package/skills/gsd-path-build/scripts/token_budget.py +146 -0
  154. package/skills/gsd-path-build/scripts/workflow_run.py +117 -0
  155. package/skills/gsd-path-build/templates/skeptic.md +36 -0
  156. package/skills/gsd-path-build/templates/task.md +74 -0
  157. package/skills/gsd-path-build/templates/wave-panel.md +25 -0
  158. package/skills/gsd-path-build/templates/wave-review.md +64 -0
  159. package/skills/gsd-path-decide/SKILL.md +115 -0
  160. package/skills/gsd-path-decide/agents/openai.yaml +6 -0
  161. package/skills/gsd-path-decide/references/decider.md +36 -0
  162. package/skills/gsd-path-decide/references/dispatch.md +131 -0
  163. package/skills/gsd-path-decide/scripts/_common.py +180 -0
  164. package/skills/gsd-path-decide/scripts/check_handoffs.py +1855 -0
  165. package/skills/gsd-path-decide/scripts/check_task_briefs.py +376 -0
  166. package/skills/gsd-path-decide/scripts/discussion_records.py +619 -0
  167. package/skills/gsd-path-decide/scripts/isolation.py +3538 -0
  168. package/skills/gsd-path-decide/scripts/pipeline_git.py +940 -0
  169. package/skills/gsd-path-decide/scripts/pipeline_state.py +2291 -0
  170. package/skills/gsd-path-decide/scripts/state_checkpoint.py +1039 -0
  171. package/skills/gsd-path-decide/scripts/state_promote.py +743 -0
  172. package/skills/gsd-path-decide/templates/synthesis.md +36 -0
  173. package/skills/gsd-path-define/SKILL.md +297 -0
  174. package/skills/gsd-path-define/agents/openai.yaml +6 -0
  175. package/skills/gsd-path-define/scripts/_common.py +180 -0
  176. package/skills/gsd-path-define/scripts/check_handoffs.py +1855 -0
  177. package/skills/gsd-path-define/scripts/check_task_briefs.py +376 -0
  178. package/skills/gsd-path-define/scripts/detect_project.py +1517 -0
  179. package/skills/gsd-path-define/scripts/discussion_records.py +619 -0
  180. package/skills/gsd-path-define/scripts/isolation.py +3538 -0
  181. package/skills/gsd-path-define/scripts/pipeline_git.py +940 -0
  182. package/skills/gsd-path-define/scripts/pipeline_state.py +2291 -0
  183. package/skills/gsd-path-define/scripts/state_checkpoint.py +1039 -0
  184. package/skills/gsd-path-define/scripts/state_promote.py +743 -0
  185. package/skills/gsd-path-define/templates/charter.md +50 -0
  186. package/skills/gsd-path-define/templates/intent.md +98 -0
  187. package/skills/gsd-path-define/templates/state.md +27 -0
  188. package/skills/gsd-path-discuss/SKILL.md +162 -0
  189. package/skills/gsd-path-discuss/agents/openai.yaml +6 -0
  190. package/skills/gsd-path-discuss/scripts/_common.py +180 -0
  191. package/skills/gsd-path-discuss/scripts/discussion_records.py +619 -0
  192. package/skills/gsd-path-discuss/templates/answers.md +29 -0
  193. package/skills/gsd-path-discuss/templates/dialogue.md +21 -0
  194. package/skills/gsd-path-docs-audit/SKILL.md +190 -0
  195. package/skills/gsd-path-docs-audit/agents/openai.yaml +6 -0
  196. package/skills/gsd-path-docs-audit/references/dispatch.md +131 -0
  197. package/skills/gsd-path-docs-audit/references/docs-auditor.md +60 -0
  198. package/skills/gsd-path-docs-audit/scripts/_common.py +180 -0
  199. package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +463 -0
  200. package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +1855 -0
  201. package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +376 -0
  202. package/skills/gsd-path-docs-audit/scripts/discussion_records.py +619 -0
  203. package/skills/gsd-path-docs-audit/scripts/isolation.py +3538 -0
  204. package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +940 -0
  205. package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +2291 -0
  206. package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +1039 -0
  207. package/skills/gsd-path-docs-audit/scripts/state_promote.py +743 -0
  208. package/skills/gsd-path-docs-audit/templates/docs-audit.md +69 -0
  209. package/skills/gsd-path-forensics/SKILL.md +39 -0
  210. package/skills/gsd-path-forensics/agents/openai.yaml +6 -0
  211. package/skills/gsd-path-forensics/scripts/_common.py +180 -0
  212. package/skills/gsd-path-forensics/scripts/discussion_records.py +619 -0
  213. package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +715 -0
  214. package/skills/gsd-path-forensics/scripts/pipeline_undo.py +1039 -0
  215. package/skills/gsd-path-inspect/SKILL.md +167 -0
  216. package/skills/gsd-path-inspect/agents/openai.yaml +6 -0
  217. package/skills/gsd-path-inspect/references/codebase-mapper.md +52 -0
  218. package/skills/gsd-path-inspect/references/dispatch.md +131 -0
  219. package/skills/gsd-path-inspect/references/docs-auditor.md +60 -0
  220. package/skills/gsd-path-inspect/scripts/_common.py +180 -0
  221. package/skills/gsd-path-inspect/scripts/check_docs_audit.py +463 -0
  222. package/skills/gsd-path-inspect/scripts/check_handoffs.py +1855 -0
  223. package/skills/gsd-path-inspect/scripts/check_task_briefs.py +376 -0
  224. package/skills/gsd-path-inspect/scripts/detect_project.py +1517 -0
  225. package/skills/gsd-path-inspect/scripts/discussion_records.py +619 -0
  226. package/skills/gsd-path-inspect/scripts/isolation.py +3538 -0
  227. package/skills/gsd-path-inspect/scripts/pipeline_git.py +940 -0
  228. package/skills/gsd-path-inspect/scripts/pipeline_state.py +2291 -0
  229. package/skills/gsd-path-inspect/scripts/state_checkpoint.py +1039 -0
  230. package/skills/gsd-path-inspect/scripts/state_promote.py +743 -0
  231. package/skills/gsd-path-inspect/templates/codebase.md +46 -0
  232. package/skills/gsd-path-inspect/templates/docs-audit.md +69 -0
  233. package/skills/gsd-path-inspect/templates/state.md +27 -0
  234. package/skills/gsd-path-loop/SKILL.md +98 -0
  235. package/skills/gsd-path-loop/agents/openai.yaml +6 -0
  236. package/skills/gsd-path-loop/examples/ci-repair.LOOP.md +61 -0
  237. package/skills/gsd-path-loop/scripts/_common.py +180 -0
  238. package/skills/gsd-path-loop/scripts/discussion_records.py +619 -0
  239. package/skills/gsd-path-loop/scripts/loop_run.py +837 -0
  240. package/skills/gsd-path-loop/templates/loop.md +59 -0
  241. package/skills/gsd-path-migrate/SKILL.md +134 -0
  242. package/skills/gsd-path-migrate/agents/openai.yaml +6 -0
  243. package/skills/gsd-path-migrate/scripts/core_hook_gate.py +34 -0
  244. package/skills/gsd-path-migrate/scripts/core_hook_settings.py +119 -0
  245. package/skills/gsd-path-migrate/scripts/discussion_records.py +619 -0
  246. package/skills/gsd-path-migrate/scripts/migrate_core.py +169 -0
  247. package/skills/gsd-path-plan/SKILL.md +411 -0
  248. package/skills/gsd-path-plan/agents/openai.yaml +6 -0
  249. package/skills/gsd-path-plan/references/dispatch.md +131 -0
  250. package/skills/gsd-path-plan/references/planner.md +104 -0
  251. package/skills/gsd-path-plan/scripts/_common.py +180 -0
  252. package/skills/gsd-path-plan/scripts/check_handoffs.py +1855 -0
  253. package/skills/gsd-path-plan/scripts/check_task_briefs.py +376 -0
  254. package/skills/gsd-path-plan/scripts/discussion_records.py +619 -0
  255. package/skills/gsd-path-plan/scripts/isolation.py +3538 -0
  256. package/skills/gsd-path-plan/scripts/pipeline_git.py +940 -0
  257. package/skills/gsd-path-plan/scripts/pipeline_state.py +2291 -0
  258. package/skills/gsd-path-plan/scripts/review_panel.py +553 -0
  259. package/skills/gsd-path-plan/scripts/state_checkpoint.py +1039 -0
  260. package/skills/gsd-path-plan/scripts/state_promote.py +743 -0
  261. package/skills/gsd-path-plan/scripts/workflow_run.py +117 -0
  262. package/skills/gsd-path-plan/templates/patch-findings.md +16 -0
  263. package/skills/gsd-path-plan/templates/plan-panel.md +25 -0
  264. package/skills/gsd-path-plan/templates/plan.md +89 -0
  265. package/skills/gsd-path-plan/templates/task.md +74 -0
  266. package/skills/gsd-path-research/SKILL.md +159 -0
  267. package/skills/gsd-path-research/agents/openai.yaml +6 -0
  268. package/skills/gsd-path-research/references/dispatch.md +131 -0
  269. package/skills/gsd-path-research/references/researcher.md +42 -0
  270. package/skills/gsd-path-research/scripts/_common.py +180 -0
  271. package/skills/gsd-path-research/scripts/check_handoffs.py +1855 -0
  272. package/skills/gsd-path-research/scripts/check_task_briefs.py +376 -0
  273. package/skills/gsd-path-research/scripts/discussion_records.py +619 -0
  274. package/skills/gsd-path-research/scripts/isolation.py +3538 -0
  275. package/skills/gsd-path-research/scripts/pipeline_git.py +940 -0
  276. package/skills/gsd-path-research/scripts/pipeline_state.py +2291 -0
  277. package/skills/gsd-path-research/scripts/state_checkpoint.py +1039 -0
  278. package/skills/gsd-path-research/scripts/state_promote.py +743 -0
  279. package/skills/gsd-path-research/templates/evidence.md +24 -0
  280. package/skills/gsd-path-research/templates/research-handoff.md +25 -0
  281. package/skills/gsd-path-roadmap/SKILL.md +215 -0
  282. package/skills/gsd-path-roadmap/agents/openai.yaml +6 -0
  283. package/skills/gsd-path-roadmap/references/dispatch.md +131 -0
  284. package/skills/gsd-path-roadmap/references/roadmapper.md +48 -0
  285. package/skills/gsd-path-roadmap/scripts/_common.py +180 -0
  286. package/skills/gsd-path-roadmap/scripts/archive_milestone.py +2265 -0
  287. package/skills/gsd-path-roadmap/scripts/check_handoffs.py +1855 -0
  288. package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +376 -0
  289. package/skills/gsd-path-roadmap/scripts/detect_project.py +1517 -0
  290. package/skills/gsd-path-roadmap/scripts/discussion_records.py +619 -0
  291. package/skills/gsd-path-roadmap/scripts/discussion_validate.py +1321 -0
  292. package/skills/gsd-path-roadmap/scripts/integration.py +1433 -0
  293. package/skills/gsd-path-roadmap/scripts/isolation.py +3538 -0
  294. package/skills/gsd-path-roadmap/scripts/pipeline_git.py +940 -0
  295. package/skills/gsd-path-roadmap/scripts/pipeline_state.py +2291 -0
  296. package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +415 -0
  297. package/skills/gsd-path-roadmap/scripts/review_panel.py +553 -0
  298. package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +1039 -0
  299. package/skills/gsd-path-roadmap/scripts/state_promote.py +743 -0
  300. package/skills/gsd-path-roadmap/templates/roadmap.md +38 -0
  301. package/skills/gsd-path-ship/SKILL.md +412 -0
  302. package/skills/gsd-path-ship/agents/openai.yaml +6 -0
  303. package/skills/gsd-path-ship/references/dispatch.md +131 -0
  304. package/skills/gsd-path-ship/references/reviewer.md +188 -0
  305. package/skills/gsd-path-ship/scripts/_common.py +180 -0
  306. package/skills/gsd-path-ship/scripts/archive_milestone.py +2265 -0
  307. package/skills/gsd-path-ship/scripts/build_state.py +854 -0
  308. package/skills/gsd-path-ship/scripts/check_handoffs.py +1855 -0
  309. package/skills/gsd-path-ship/scripts/check_task_briefs.py +376 -0
  310. package/skills/gsd-path-ship/scripts/discussion_records.py +619 -0
  311. package/skills/gsd-path-ship/scripts/discussion_validate.py +1321 -0
  312. package/skills/gsd-path-ship/scripts/integration.py +1433 -0
  313. package/skills/gsd-path-ship/scripts/isolation.py +3538 -0
  314. package/skills/gsd-path-ship/scripts/lean_verification.py +256 -0
  315. package/skills/gsd-path-ship/scripts/pipeline_git.py +940 -0
  316. package/skills/gsd-path-ship/scripts/pipeline_state.py +2291 -0
  317. package/skills/gsd-path-ship/scripts/review_panel.py +553 -0
  318. package/skills/gsd-path-ship/scripts/state_checkpoint.py +1039 -0
  319. package/skills/gsd-path-ship/scripts/state_promote.py +743 -0
  320. package/skills/gsd-path-ship/scripts/workflow_run.py +117 -0
  321. package/skills/gsd-path-ship/templates/archive-manifest.md +37 -0
  322. package/skills/gsd-path-ship/templates/final-review.md +27 -0
  323. package/skills/gsd-path-ship/templates/gap-review.md +20 -0
  324. package/skills/gsd-path-ship/templates/patch-findings.md +16 -0
  325. package/skills/gsd-path-ship/templates/wave-review.md +64 -0
  326. package/skills/gsd-path-undo/SKILL.md +45 -0
  327. package/skills/gsd-path-undo/agents/openai.yaml +6 -0
  328. package/skills/gsd-path-undo/scripts/_common.py +180 -0
  329. package/skills/gsd-path-undo/scripts/discussion_records.py +619 -0
  330. package/skills/gsd-path-undo/scripts/pipeline_undo.py +1039 -0
  331. package/skills/path/BUILD.md +700 -0
  332. package/skills/path/DECIDE.md +115 -0
  333. package/skills/path/DEFINE.md +297 -0
  334. package/skills/path/DOCS-AUDIT.md +190 -0
  335. package/skills/path/INSPECT.md +167 -0
  336. package/skills/path/PLAN.md +411 -0
  337. package/skills/path/RESEARCH.md +159 -0
  338. package/skills/path/ROADMAP.md +215 -0
  339. package/skills/path/SHIP.md +412 -0
  340. package/skills/path/SKILL.md +471 -0
  341. package/skills/path/agents/openai.yaml +6 -0
  342. package/skills/path/references/codebase-mapper.md +52 -0
  343. package/skills/path/references/coder.md +90 -0
  344. package/skills/path/references/decider.md +36 -0
  345. package/skills/path/references/dispatch.md +131 -0
  346. package/skills/path/references/docs-auditor.md +60 -0
  347. package/skills/path/references/planner.md +104 -0
  348. package/skills/path/references/researcher.md +42 -0
  349. package/skills/path/references/reviewer.md +188 -0
  350. package/skills/path/references/roadmapper.md +48 -0
  351. package/skills/path/scripts/_common.py +180 -0
  352. package/skills/path/scripts/archive_milestone.py +2265 -0
  353. package/skills/path/scripts/bootstrap_repository.py +710 -0
  354. package/skills/path/scripts/build_state.py +854 -0
  355. package/skills/path/scripts/check_docs_audit.py +463 -0
  356. package/skills/path/scripts/check_handoffs.py +1855 -0
  357. package/skills/path/scripts/check_task_briefs.py +376 -0
  358. package/skills/path/scripts/check_update.py +93 -0
  359. package/skills/path/scripts/detect_project.py +1517 -0
  360. package/skills/path/scripts/discussion_records.py +619 -0
  361. package/skills/path/scripts/discussion_validate.py +1321 -0
  362. package/skills/path/scripts/dispatch_driver.py +1812 -0
  363. package/skills/path/scripts/integration.py +1433 -0
  364. package/skills/path/scripts/isolation.py +3538 -0
  365. package/skills/path/scripts/lean_verification.py +256 -0
  366. package/skills/path/scripts/loop_run.py +837 -0
  367. package/skills/path/scripts/pipeline_git.py +940 -0
  368. package/skills/path/scripts/pipeline_state.py +2291 -0
  369. package/skills/path/scripts/promote_lookahead.py +415 -0
  370. package/skills/path/scripts/review_findings.py +714 -0
  371. package/skills/path/scripts/review_panel.py +553 -0
  372. package/skills/path/scripts/state_checkpoint.py +1039 -0
  373. package/skills/path/scripts/state_promote.py +743 -0
  374. package/skills/path/scripts/token_budget.py +146 -0
  375. package/skills/path/scripts/workflow_run.py +117 -0
  376. package/skills/path/templates/answers.md +29 -0
  377. package/skills/path/templates/archive-manifest.md +37 -0
  378. package/skills/path/templates/charter.md +50 -0
  379. package/skills/path/templates/codebase.md +46 -0
  380. package/skills/path/templates/dialogue.md +21 -0
  381. package/skills/path/templates/docs-audit.md +69 -0
  382. package/skills/path/templates/evidence.md +24 -0
  383. package/skills/path/templates/final-review.md +27 -0
  384. package/skills/path/templates/gap-review.md +20 -0
  385. package/skills/path/templates/intent.md +98 -0
  386. package/skills/path/templates/loop.md +59 -0
  387. package/skills/path/templates/patch-findings.md +16 -0
  388. package/skills/path/templates/plan-panel.md +25 -0
  389. package/skills/path/templates/plan.md +89 -0
  390. package/skills/path/templates/repository.md +16 -0
  391. package/skills/path/templates/research-handoff.md +25 -0
  392. package/skills/path/templates/roadmap.md +38 -0
  393. package/skills/path/templates/skeptic.md +36 -0
  394. package/skills/path/templates/state.md +27 -0
  395. package/skills/path/templates/synthesis.md +36 -0
  396. package/skills/path/templates/task.md +74 -0
  397. package/skills/path/templates/wave-panel.md +25 -0
  398. package/skills/path/templates/wave-review.md +64 -0
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: gsd-path-decide
3
+ description: Decide implementation direction from approved intent and complete research evidence, recording settled choices in SYNTHESIS.md. Use only when the user explicitly invokes $gsd-path-decide or an active $gsd-path router explicitly routes to this phase.
4
+ ---
5
+
6
+ # GSD Path Decide Phase
7
+
8
+ Dispatch one reasoning-intensive decider and validate its decision artifact.
9
+
10
+ Routing instructions below are caller handoffs under the AGENTS.md handoff
11
+ rule; never invoke an explicit-only sibling skill yourself.
12
+
13
+ Before dispatch and again before completion, apply the AGENTS.md
14
+ pending-answer rule with the bundled `scripts/discussion_records.py`; a
15
+ follow-up owned by decide is resolved in SYNTHESIS.md, or the phase blocks.
16
+
17
+ ## Preconditions
18
+
19
+ Require `pipeline_state.py validate --repo <absolute root> [--project-dir
20
+ .project/next]` to pass; otherwise return to `$gsd-path` for ownership
21
+ checking. Legal entry is `research/done` or `decide/active|blocked`. On
22
+ `research/done`, enter with `pipeline_state.py transition`, expected
23
+ phase/status `research/done`, exact branch and archive values, event `decision
24
+ synthesis started`, and set phase/status `decide/active` (plus the same
25
+ lookahead project dir); never edit STATE directly. `decide/done` or any later phase blocks rather
26
+ than replacing decisions beneath an existing plan. When an active router
27
+ supplies the lookahead track root `.project/next/`, evaluate these
28
+ preconditions against the track instead; see Lookahead mode. Require
29
+ `.project/intent/INTENT.md`, `.project/research/RESEARCH.md`, and every
30
+ `evidence-*.md` file named as `dispatched` there. In program flow (CHARTER.md
31
+ exists, no milestone INTENT yet) require `.project/CHARTER.md` in INTENT.md's
32
+ place. A standard file may be absent
33
+ only when the handoff manifest records that dimension as skipped; a missing or
34
+ invalid manifest or dispatched file routes to `$gsd-path-research`. Include
35
+ every additional `evidence-*.md` file present only when the manifest names it.
36
+
37
+ Output path: when `.project/CHARTER.md` exists and `.project/ROADMAP.md` does
38
+ not, this is program scope — the required output is `.project/SYNTHESIS.md`
39
+ at the `.project/` top level; it persists across milestones and never
40
+ archives. Otherwise the required output is `.project/research/SYNTHESIS.md`,
41
+ which archives with its milestone.
42
+
43
+ ## Lookahead mode
44
+
45
+ Entered only when an active router supplies the lookahead track root
46
+ `.project/next/` while the active STATE.md is `build/active` in program
47
+ flow. Evaluate every state and artifact precondition against the track:
48
+ `.project/next/STATE.md` is the state file, and INTENT.md, RESEARCH.md, and
49
+ the evidence files are read from `.project/next/`. The output is always
50
+ milestone scope: `.project/next/research/SYNTHESIS.md` — the program
51
+ SYNTHESIS.md already exists at the active `.project/` top level and is
52
+ never rewritten here, so the program-scope output-path rule above does not
53
+ apply. Run the research hand-off validator with `--project-dir
54
+ .project/next`. Dispatch, gates, `NEEDS-USER` handling, and completion
55
+ rules are unchanged; never write an active-path artifact.
56
+
57
+ ## Process
58
+
59
+ 1. Read the local [synthesis template](templates/synthesis.md),
60
+ `.project/research/RESEARCH.md`, and the bundled `scripts/check_handoffs.py`;
61
+ resolve each to an absolute path. Run the research hand-off validator before
62
+ dispatch so decide receives a complete, intentional evidence set.
63
+ 2. Read the local [decider role](references/decider.md), then follow
64
+ the local [runtime dispatch contract](references/dispatch.md) with
65
+ deterministic logical task name `decide`. Give it absolute paths to the role,
66
+ `AGENTS.md`, `WORKFLOW.md`, INTENT.md (or CHARTER.md in program flow),
67
+ RESEARCH.md, every evidence file, the
68
+ template, and the required output path from the Preconditions.
69
+ 3. Validate SYNTHESIS.md with `python3 <absolute check_handoffs.py> decide
70
+ --repo <absolute root> [--project-dir .project/next]`. Require one decision block for every genuinely open
71
+ choice in INTENT.md and the evidence, including stack and architecture
72
+ shape plus build-vs-buy when open. A choice already settled by an intent
73
+ constraint or the existing codebase belongs under `## Settled` as one line
74
+ citing the settling source — never a full block with an invented
75
+ runner-up. Require Decision, Runner-up, Evidence, and
76
+ Confidence in every decision block. Require `## For the planner` with wave-1
77
+ blockers, walking skeleton, and pitfall-to-task guidance.
78
+ 4. If structural validation fails, redispatch one complete corrected brief
79
+ under logical task name `decide`, following the runtime dispatch
80
+ contract, and validate again. If it still fails, use
81
+ `pipeline_state.py transition` with expected `decide/active`, exact branch
82
+ and archive values, `--set-status blocked`, and an event naming the failed
83
+ synthesis gate, and
84
+ present **Outcome** with the failed gate, **Review** linking SYNTHESIS.md or
85
+ STATE.md when it is missing, and **Next** naming the one correction or user
86
+ decision required; then stop.
87
+ 5. Present the decision-list outcome and a Markdown link to the resolved
88
+ absolute SYNTHESIS.md output path before every `NEEDS-USER`
89
+ item. Use an interactive user-input tool when available; otherwise ask in
90
+ chat and wait. Present
91
+ each item's options with the evidence-preferred option first, marked
92
+ `(recommended)` and justified in one line; a pure values call with no
93
+ evidence either way carries no recommendation, stated as such. For each
94
+ answer, append the ruling under `## User rulings`, revise every affected
95
+ decision so it reflects the ruling, and only then remove its tag.
96
+ 6. Re-run the structural gate. When it passes with no unresolved user items,
97
+ use `pipeline_state.py transition` with expected `decide/active`, exact
98
+ branch and archive values, `--set-phase decide --set-status done`, and an
99
+ event naming the validated synthesis path. Include `--project-dir
100
+ .project/next` in lookahead and require returned `decide/done`. Confirm the
101
+ settled outcome, link SYNTHESIS.md again, and name
102
+ the next phase: the roadmap phase in program scope, planning otherwise.
103
+ When routed by an active `$gsd-path`, return control to
104
+ that router. When invoked directly, stop and tell the user to explicitly
105
+ invoke `$gsd-path`, which routes to that next phase; do not invoke an
106
+ explicit-only sibling skill yourself.
107
+
108
+ ## Rules
109
+
110
+ - Make commitments, not option lists. Name the runner-up and why it lost
111
+ when a real alternative was weighed; never invent one.
112
+ - Cite evidence by file and finding heading for every decision.
113
+ - Route low-confidence decisions to wave 1 for verification. Reject uncited
114
+ decisions.
115
+ - Resolve evidence conflicts or escalate a true values decision; never average.
@@ -0,0 +1,297 @@
1
+ ---
2
+ name: gsd-path-define
3
+ description: Define and approve project or milestone intent through an interview or milestone confirmation, writing .project/CHARTER.md or .project/intent/INTENT.md. Use only when the user explicitly invokes $gsd-path-define or an active $gsd-path router explicitly routes to this phase.
4
+ ---
5
+
6
+ # GSD Path Define Phase
7
+
8
+ Turn a project idea or approved roadmap entry into an approved intent artifact.
9
+ Run this phase in the main conversation; never delegate its interview or
10
+ confirmation.
11
+
12
+ Primary modes: **standard** (single milestone, below), **program** (a
13
+ multi-milestone program — interview into `.project/CHARTER.md`), and
14
+ **milestone** (derive one milestone's INTENT.md from the approved roadmap; no
15
+ re-interview). Modifiers: **brownfield** when the track's
16
+ `research/evidence-codebase.md` exists, and **supplied-spec** when the user
17
+ hands in a PRD, issue, or design doc. Apply every matching modifier on top of
18
+ the primary mode.
19
+
20
+ Routing instructions below are caller handoffs under the AGENTS.md handoff
21
+ rule; never invoke an explicit-only sibling skill yourself.
22
+
23
+ Before interview work and again before approval, apply the AGENTS.md
24
+ pending-answer rule with the bundled `scripts/discussion_records.py`; a
25
+ follow-up owned by define is resolved in INTENT.md, or the phase blocks.
26
+
27
+ ## State ownership
28
+
29
+ If STATE.md exists, require `pipeline_state.py validate --repo <absolute root>
30
+ [--project-dir .project/next]` to pass; otherwise return to `$gsd-path` for
31
+ ownership checking. Legal existing-state
32
+ entry is `inspect/done` (transition to `define/active`; milestone mode when
33
+ ROADMAP.md exists), `roadmap/done`
34
+ (transition to `define/active`, milestone mode), or
35
+ `define/active|blocked`. When ROADMAP.md exists, a later milestone or
36
+ lookahead track at `define/active|blocked` also requires both current-track
37
+ inspection artifacts and a Log entry proving `inspect/done` for the same
38
+ milestone after its latest activation; otherwise route to inspect.
39
+ `define/done` or any later phase blocks rather than overwriting approved
40
+ intent and leaving downstream artifacts stale. When an active router supplies
41
+ the lookahead track root `.project/next/`, require its STATE.md to be a regular
42
+ non-symlink file and evaluate this section against that track's state and
43
+ paths; see Lookahead mode. If STATE.md is missing, run the bundled
44
+ `python3 <absolute-bundled-script> initialize --repo <absolute-root>
45
+ --template <absolute-state-template>` helper (`scripts/detect_project.py`) and
46
+ follow its returned JSON `verdict` / `route`. This is the only no-state
47
+ boundary; do not run `classify` first or classify from a directory listing or
48
+ conversation. If the command exits nonzero, returns `error`, or returns
49
+ `wrote_state: false`, report the error and block without routing or claiming
50
+ STATE.md was written.
51
+ - `owned` — continue under the existing-state rules above.
52
+ - `orphan` — return to `$gsd-path` for orphaned-state recovery; existing
53
+ evidence does not prove its pipeline version or phase and must not be reused
54
+ or overwritten by inference.
55
+ - `brownfield` — the helper writes STATE.md at `inspect/active`; route to
56
+ `$gsd-path-inspect` from this returned verdict.
57
+ - `greenfield` — require `wrote_state: true`, then continue with the helper's
58
+ STATE.md at `define/active`. Do not create STATE.md yourself.
59
+
60
+ Enter from `inspect/done` or `roadmap/done` only with `pipeline_state.py
61
+ transition`: pass the exact expected phase/status/branch/archive values, event
62
+ `definition started`, and `--set-phase define --set-status active` (plus
63
+ `--project-dir .project/next` for lookahead). This helper is the only ordinary
64
+ STATE mutation; direct template writing is limited to the missing-state
65
+ greenfield initialization above.
66
+
67
+ The router's verified new-GitHub-repository transaction is the sole greenfield
68
+ exception: STATE.md already exists at `define/active`, `branch` is the approved
69
+ `gsd-path/M001` branch, and `.project/REPOSITORY.md` contains the
70
+ fixed-format remote, remote-default SHA, clean default checkout, branch, and
71
+ primary worktree. Verify that artifact and the current branch/worktree before
72
+ interviewing. The required classifier returns `owned` before signal scanning,
73
+ so the bootstrap README is not a brownfield signal. A missing or mismatched binding
74
+ returns to `$gsd-path`; never infer it from STATE log prose or repair it
75
+ inside define.
76
+
77
+ ## Coverage checklist
78
+
79
+ Obtain a confident answer in every area before finishing:
80
+
81
+ 1. **Problem** — what hurts, for whom, and how badly.
82
+ 2. **Users** — who uses this, how many, how technical, and what they use now.
83
+ 3. **Success** — what observable result makes the first release complete.
84
+ 4. **Scope in** — the smallest version that achieves that result.
85
+ 5. **Scope out** — explicit vetoes that downstream phases must not include.
86
+ 6. **Constraints** — stack, deadline, budget, code, integrations, compliance.
87
+ 7. **Risks** — the assumptions and unknowns research must investigate.
88
+ 8. **Surfaces** — what a person opens, sees, or types into to get the
89
+ result: screens, commands, endpoints. Record them on INTENT.md
90
+ `Surfaces:` (`none` only when nobody touches this work directly), and
91
+ give every named surface at least one success criterion observable
92
+ there. A criterion satisfied by a passing test alone does not cover a
93
+ surface.
94
+
95
+ ## Program mode
96
+
97
+ When the user frames the work as a large multi-milestone program — or the
98
+ interview reveals scope that cannot ship as one milestone — interview against
99
+ the charter instead of the single-milestone checklist:
100
+
101
+ 1. **Vision** — the program's end state and why it matters.
102
+ 2. **Full scope in** — every capability area the program will deliver.
103
+ 3. **Vetoes** — what no milestone may include.
104
+ 4. **Constraints** — program-level stack, budget, deadline, integrations.
105
+ 5. **Program success criteria** — observable when the last milestone ships.
106
+ 6. **Review panel** — optional durable default (`off` | `detected` | named
107
+ families). Default `off`. This value persists on CHARTER.md; later
108
+ milestone INTENT files copy it and may override.
109
+
110
+ Read the local [charter template](templates/charter.md), write the approval
111
+ draft to `.project/CHARTER.md` including `Review panel:` (default `off`;
112
+ never invent `detected` or a named list), and run the same playback-approval
113
+ loop as the standard Process. On approval, retain the reviewed
114
+ `Review panel:` value on CHARTER.md, run `pipeline_state.py transition` with
115
+ expected `define/active`, milestone/branch/archive all at their exact current
116
+ values, event `program charter approved`, and `--set-phase define --set-status
117
+ done`; require milestone to remain null. Report that research (program
118
+ scope) is next. Research, decide, and the roadmap phase slice the program;
119
+ per-milestone INTENT.md files come later, in milestone mode. Do not write
120
+ INTENT.md in program mode.
121
+
122
+ ## Milestone mode
123
+
124
+ Legal entry: `roadmap/done` only for the first milestone after initial roadmap
125
+ approval, or `inspect/done` when `.project/ROADMAP.md` exists. Recovery from
126
+ `define/active|blocked` follows the current inspection-evidence requirement in
127
+ State ownership. There is no re-interview of charter or roadmap scope:
128
+ 1. Read the applicable track STATE.md, `.project/CHARTER.md`, and
129
+ `.project/ROADMAP.md`. Select the entry whose slug matches `STATE.milestone`.
130
+ Require exactly one match. In ordinary milestone mode,
131
+ require that entry to be `active`; in lookahead mode, require it to be
132
+ `pending`. A missing, duplicate, or wrong-status match blocks: record the
133
+ failure in the applicable STATE.md and return to the router. When
134
+ brownfield, also read the track's
135
+ `research/evidence-codebase.md` and `research/DOCS-AUDIT.md` first.
136
+ 2. Draft INTENT.md from the resolved entry: Summary from its Goal, Scope
137
+ in/out and Success criteria from the entry, Constraints inherited from the charter,
138
+ Risks and Open questions from the entry (tagged `RESEARCH`/`NEEDS-USER`),
139
+ `Lane: milestone`, `Surfaces:` copied verbatim from the entry, and
140
+ `Review panel:` copied from CHARTER.md (default
141
+ `off` when CHARTER omits it). The confirmation may override the copied
142
+ panel value; do not invent `detected` or a named list. When brownfield,
143
+ fill `## Current state` from the map, record doc-vs-code rulings as in
144
+ Brownfield mode, and add protected existing behavior under Scope out.
145
+ Write Ground truth paths from the track root: `.project` normally, or
146
+ `.project/next` in Lookahead mode — never the building milestone's
147
+ active `research/` paths.
148
+ 3. Present one confirmation, not an interview: playback the derivation (and
149
+ brownfield ground truth when present), link the resolved absolute INTENT.md
150
+ path, and ask approve or adjust. A requested change that contradicts the
151
+ charter or the resolved roadmap entry is a scope change — this phase never
152
+ edits the roadmap; surface it to the user for a `$gsd-path-roadmap` re-slice
153
+ at the next milestone boundary.
154
+ 4. On approval, finalize per the Output contract, setting `milestone` to the
155
+ resolved entry's slug. The router continues with milestone-scoped research
156
+ when the entry lists open questions, otherwise planning.
157
+
158
+ ## Lookahead mode
159
+
160
+ Entered only when an active router supplies the lookahead track root
161
+ `.project/next/` while the active STATE.md is `build/active` in program
162
+ flow. Evaluate every state and artifact precondition in this contract
163
+ against the track — `.project/next/STATE.md` is the state file and
164
+ INTENT.md is `.project/next/intent/INTENT.md` — never against active-path
165
+ artifacts. This is milestone mode run against the track, with two
166
+ differences:
167
+
168
+ - Read CHARTER.md and ROADMAP.md from their active `.project/` paths, but
169
+ resolve the milestone only from `.project/next/STATE.md` as described above;
170
+ never use the building milestone's `active` entry and never create or modify
171
+ any active-path artifact.
172
+ - Never mark the lookahead milestone's roadmap entry `active`; the router
173
+ does that at promotion.
174
+
175
+ All other milestone-mode rules apply unchanged. Brownfield evidence for
176
+ this track is `.project/next/research/evidence-codebase.md`.
177
+
178
+ ## Supplied-spec mode
179
+
180
+ When the user supplies a document at entry — a PRD, issue, or design doc —
181
+ read it fully before the first question and map it against the coverage
182
+ checklist. Present what the document settles per checklist area for
183
+ correction — stated, not asked, exactly like brownfield ground truth — then
184
+ interview only the gaps and contradictions. Note the source document path in
185
+ INTENT.md's Summary. A supplied spec composes with brownfield mode: ground
186
+ truth first, then the spec, then delta questions only.
187
+
188
+ ## Brownfield mode
189
+
190
+ When the track's `research/evidence-codebase.md` exists (inspect already
191
+ ran), read it and the matching `research/DOCS-AUDIT.md` before the first
192
+ question. The rules change for every primary mode:
193
+
194
+ - Established facts are not questions. Never ask what the stack is or what
195
+ the code does — the map answers that. State it and let the user correct.
196
+ - Standard and program interviews cover only deltas: what should change, what
197
+ must not break, and — standard — the goal of THIS milestone against the
198
+ code that already exists. Program interviews still use the charter
199
+ checklist, but skip any area the map already settled.
200
+ - Milestone mode still does not re-interview; it still collects the rulings
201
+ below before confirmation.
202
+ - Work through the mapper's `## Open questions for define` and the
203
+ audit's `NEEDS-USER` remediation rows — each doc-vs-code conflict gets a
204
+ ruling (`fix-doc`, `fix-code`, or `accept-drift`) recorded verbatim in
205
+ INTENT.md and appended to DOCS-AUDIT.md's `## User rulings` table.
206
+ `fix-doc` and `fix-code` rows receive `planned: no`; `accept-drift` receives
207
+ `planned: n/a (accept-drift)`. Never leave the durable alignment queue only
208
+ in INTENT.md. Program mode records those rulings on CHARTER.md Constraints
209
+ or Corrections and still writes the DOCS-AUDIT.md table.
210
+ - Existing behavior the user wants preserved is recorded under Scope out as
211
+ a veto ("do not break X"); accepted `fix-code` items become scope.
212
+ - Fill INTENT.md's `## Current state` from the codebase map so downstream
213
+ phases inherit ground truth without re-scanning. Set Ground truth to the
214
+ track's `research/evidence-codebase.md` and `research/DOCS-AUDIT.md`
215
+ (`.project/next/research/` in Lookahead mode). Omit that section for
216
+ greenfield. Do not add it to CHARTER.md.
217
+
218
+ ## Process
219
+
220
+ 1. Open in this order, then stop for the reply:
221
+ - **Brownfield (any primary):** present the one-screen ground truth from
222
+ inspect before any question.
223
+ - **Standard, no brownfield:** ask for a one-paragraph idea if missing.
224
+ - **Program, no brownfield:** ask for the program vision if missing.
225
+ - **Milestone:** do not ask for an idea; continue at Milestone mode
226
+ (ground truth already presented when brownfield).
227
+ - **Supplied spec:** after the opening above, present settled coverage
228
+ for correction, then interview only its gaps.
229
+ - **Standard + brownfield:** after ground truth, ask what this milestone
230
+ should achieve against the code that exists.
231
+ 2. For standard and program modes, ask small rounds of questions aimed at the
232
+ weakest checklist areas that the opening did not already settle. Never ask
233
+ a fact the map, audit, or supplied spec already answered. Use an
234
+ interactive user-input tool when available. Otherwise ask concise numbered
235
+ questions in chat and stop for the reply. Keep each round small enough to
236
+ answer in one reply. When a question offers options, list the recommended
237
+ one first marked `(recommended)` with a one-line reason; leave open
238
+ questions open. Milestone mode skips this step; collect brownfield rulings
239
+ if brownfield, then use the Milestone mode confirmation.
240
+ 3. Surface contradictions immediately and ask the user to choose. Never
241
+ average incompatible answers.
242
+ 4. In standard and program modes, challenge the largest remaining assumption
243
+ at least once: ask what happens if it is false. Do not challenge a fact
244
+ the brownfield map already established. Milestone mode skips this step.
245
+ 5. Stop when coverage is complete or the user says `enough`. Record remaining
246
+ uncertainty under `## Open questions` with `RESEARCH` or `NEEDS-USER`.
247
+ 6. Classify the proposed milestone lane before writing the approval draft.
248
+ Milestone mode keeps `Lane: milestone` and skips this classification.
249
+ Program mode writes CHARTER.md instead of INTENT.md. Otherwise choose
250
+ `quick` when scope fits at most two deliverable-sized tasks (project
251
+ policy) in one wave with
252
+ no `RESEARCH` or `NEEDS-USER` items and no cross-wave integration risk;
253
+ otherwise `standard`. Read the local [intent template](templates/intent.md),
254
+ write that proposed lane and the complete draft to
255
+ `.project/intent/INTENT.md`, then ask for approval. Present an
256
+ **Outcome** playback of the Summary and proposed lane, a **Review** Markdown
257
+ link to the resolved absolute INTENT.md path, and one **Next** approval
258
+ question with approve first as `(recommended)` only when the evidence
259
+ supports it. Record corrections verbatim under `## Corrections`, update the
260
+ file, and present the new link before asking again. When STATE records a new
261
+ new-GitHub REPOSITORY.md binding, include its remote, default checkout, GSD
262
+ Path branch, and primary worktree under `## Constraints`. Recompute and write
263
+ the lane after every correction before relinking the file.
264
+
265
+ ## Output contract
266
+
267
+ At approval, retain the already reviewed `Lane:` value and its one-line reason.
268
+ Retain `Review panel:` as reviewed: the CHARTER copy or the user's override
269
+ in milestone/lookahead mode, the CHARTER value in program mode, or `off`
270
+ when the user did not choose a panel and no CHARTER default exists.
271
+
272
+ After approval, finalize `.project/intent/INTENT.md` and run
273
+ `pipeline_state.py transition` with expected `define/active`, the exact
274
+ current milestone/branch/archive values, event `milestone intent approved`,
275
+ `--set-phase define --set-status done --set-milestone <milestone slug>`, and
276
+ `--project-dir .project/next` in lookahead. Require returned `define/done` and
277
+ the exact milestone. Report the next phase
278
+ from the approved lane. For `Lane: standard`, research is next. For
279
+ `Lane: quick`, planning is next and research and decide are skipped. For
280
+ `Lane: milestone`, use the resolved roadmap entry matching the track STATE's
281
+ `milestone`: milestone-scoped research is next when that entry lists open
282
+ questions; otherwise planning is next and research and decide are skipped.
283
+ Confirm the approved outcome, link the final INTENT.md again, and name that
284
+ next phase before routing. When routed by an active `$gsd-path`, return control
285
+ to that router so its bundled next contract can auto-advance to the named
286
+ phase. When invoked directly, stop and tell the user to explicitly invoke
287
+ `$gsd-path`, which selects that next phase; do not invoke an explicit-only
288
+ sibling skill yourself.
289
+
290
+ ## Rules
291
+
292
+ - Trace every question to a checklist gap; omit curiosity questions.
293
+ - In brownfield mode, state mapped facts for correction; never re-ask them.
294
+ - Treat solution-shaped problems as hypotheses and uncover the underlying pain.
295
+ - Preserve vetoes and corrections verbatim.
296
+ - Wrap up when every coverage-checklist area is answered or the user signals
297
+ done, and tag remaining gaps.
@@ -0,0 +1,190 @@
1
+ ---
2
+ name: gsd-path-docs-audit
3
+ description: Verify Markdown claims against the actual code, commands, and GSD Path artifacts. Use only when the user explicitly invokes $gsd-path-docs-audit or an active $gsd-path router explicitly routes to this phase.
4
+ ---
5
+
6
+ # GSD Path Docs Audit
7
+
8
+ Answer one question with evidence: **does the project do what its documents
9
+ say it does?** Runs standalone at the safe checkpoints below, and as half of
10
+ `$gsd-path-inspect`. Output: `.project/research/DOCS-AUDIT.md`.
11
+
12
+ Routing instructions below are caller handoffs under the AGENTS.md handoff
13
+ rule; never invoke an explicit-only sibling skill yourself.
14
+
15
+ Before audit work and again before completion, apply the AGENTS.md
16
+ pending-answer rule with the bundled `scripts/discussion_records.py`; a
17
+ follow-up owned by docs audit is resolved in DOCS-AUDIT.md, or the phase
18
+ blocks.
19
+
20
+ Require an existing `.project/STATE.md` that passes `python3 <absolute
21
+ pipeline_state.py> validate --repo <absolute root>`; never
22
+ create pipeline state or write into an unowned `.project/`. A missing state
23
+ stops and offers explicit `$gsd-path` initialization; do not invoke it
24
+ automatically. A different marker blocks and reports ownership without writing.
25
+ Embedded inspect mode is legal only at `inspect/active|blocked`.
26
+ Standalone mode is legal only at a stable pre-build boundary
27
+ `inspect|define|research|decide|roadmap|plan` with `status: done`, or at
28
+ `ship/blocked` with no in-progress task. `build/*`, `ship/active`,
29
+ `shipped/done`, and every other state block: changing the canonical audit there
30
+ would dirty execution, invalidate review, or mutate shipped history.
31
+
32
+ ## Process
33
+
34
+ 1. Before writing the output, freeze the helper's exact stdout from `python3
35
+ <absolute check_docs_audit.py> --repo <absolute root> --emit-inventory`
36
+ (add `--alignment` in alignment mode) in a temporary file. Before any
37
+ rewrite, preserve an existing canonical audit in a separate temporary file
38
+ and record its SHA-256. When that audit records an `Audited HEAD` that Git
39
+ resolves as an ancestor of HEAD, also freeze the changed set — `git -c
40
+ core.quotePath=false diff --name-only --no-renames <prior HEAD>` plus
41
+ `git -c core.quotePath=false ls-files --others --exclude-standard`, one
42
+ path per line — in a temporary file; otherwise there is no changed set and
43
+ the auditor re-verifies every claim. The frozen inventory and
44
+ changed set travel inside the dispatch brief and
45
+ the gate below; never persist them as `.project/` sidecar files — the
46
+ audit's own path records are the durable copy. If a previous run left an
47
+ inventory sidecar under `.project/research/`, the orchestrator deletes it
48
+ when transferring the new audit — a leftover sidecar blocks the archive
49
+ transaction. Dispatch one docs auditor with deterministic logical task
50
+ name `docs_audit`, following the local
51
+ [runtime dispatch contract](references/dispatch.md): local role
52
+ [docs-auditor](references/docs-auditor.md), template
53
+ [docs-audit](templates/docs-audit.md), absolute repo root, exact frozen
54
+ inventory, the changed set when one exists, alignment flag, prior audit as
55
+ carry-forward input, and output
56
+ `.project/research/DOCS-AUDIT.md`. When Git has a resolvable HEAD and no
57
+ non-`.project` worktree changes, the orchestrator creates a verify sidecar
58
+ with `python3 <absolute isolation.py> isolate-verify --repo <absolute
59
+ primary> --base <HEAD> --name docs-audit` for project commands. The auditor
60
+ writes only its assigned output under that sidecar. Gate it there before
61
+ collection. Then run `python3 <absolute isolation.py> collect-artifact
62
+ --repo <absolute primary> --source <returned worktree> --base <recorded
63
+ HEAD> --branch <returned branch> --source-path
64
+ .project/research/DOCS-AUDIT.md --destination-path
65
+ .project/research/DOCS-AUDIT.md`, adding `--expected-destination <recorded
66
+ prior SHA-256>` when a prior audit existed. Require the returned base,
67
+ branch, source, and destination to match; then non-force retire that exact
68
+ worktree and branch with `isolation.py retire`. A corrected redispatch is
69
+ gated before collection and uses the same expected prior hash. Otherwise no
70
+ project command may run. The dispatch brief carries current HEAD as the
71
+ audit baseline only when that verify sidecar was created at HEAD; otherwise
72
+ it carries `none`. The auditor writes that baseline as `Audited HEAD`.
73
+ 2. Gate the artifact with the bundled helper: write the frozen inventory to
74
+ a temporary file (one path per line) and run
75
+ `python3 <absolute check_docs_audit.py> --repo <docs sidecar> --inventory
76
+ <file> [--prior-audit <temporary prior-audit file>] [--changed <temporary
77
+ changed-set file>]`.
78
+ It enforces the contract — every doc with at least one testable claim has
79
+ a claims table, every claim a valid type and verdict with evidence, every
80
+ claimless doc appears once in the `## Descriptive docs` list, the section
81
+ paths and that list are disjoint and together equal the frozen inventory
82
+ exactly, the Summary counts match the rows, the remediation queue
83
+ classifies every non-verified claim, every prior User-ruling row and
84
+ Planned value survives in order, and every `unchanged:` row satisfies
85
+ the Delta rule below. A non-zero exit names the failed
86
+ rule. Redispatch one complete corrected brief under logical task name
87
+ `docs_audit`, following the runtime dispatch contract. If it still fails,
88
+ present **Outcome** with the failed gate, **Review** linking DOCS-AUDIT.md or
89
+ STATE.md when it is missing, and **Next** naming the required correction.
90
+ 3. Report to the user: verdict counts, the drift list (stale + aspirational
91
+ claims), and the remediation queue. Link the resolved absolute
92
+ `.project/research/DOCS-AUDIT.md` path before asking for any ruling. Do not
93
+ fix anything in this skill.
94
+ 4. **Collect rulings** (standalone runs; during `$gsd-path-inspect` define
95
+ owns this). Walk the remediation queue with the user — batches of three,
96
+ an interactive input tool when available. Present the auditor's
97
+ classification as the first option marked `(recommended)` with its
98
+ recorded evidence as the one-line reason; a `NEEDS-USER` item where the
99
+ auditor cannot tell which side is wrong carries no recommendation, stated
100
+ as such. Each item gets one ruling:
101
+ - `fix-code` — the doc is the contract; the code must catch up
102
+ - `fix-doc` — reality is right; the doc must be corrected
103
+ - `accept-drift` — known and tolerated; recorded so the next audit
104
+ doesn't resurface it
105
+ Append every ruling to DOCS-AUDIT.md under `## User rulings`, verbatim.
106
+ A ruling that contradicts an INTENT.md veto stops the walk — the veto
107
+ wins until the user amends INTENT.md itself.
108
+ 5. **Queue, don't execute.** Every `fix-code` and `fix-doc` ruling enters
109
+ the alignment queue: its `## User rulings` row is marked
110
+ `planned: no`. Ruling and executing are separate decisions — the user
111
+ may not be ready to work the backlog. Close by offering once: plan the
112
+ patch wave now, or hold. If an active `$gsd-path` routed this audit and the
113
+ user chooses now, return control with DOCS-AUDIT.md as the patch findings
114
+ source. When invoked directly, do not invoke an explicit-only sibling;
115
+ tell a user who chooses now to explicitly invoke `$gsd-path`, which will
116
+ offer the queued source to plan. On hold — the default — report the queue
117
+ size and that `$gsd-path` will offer alignment until the
118
+ queue is drained. Only `accept-drift` rulings → nothing queued, done.
119
+ After the choice, link the updated DOCS-AUDIT.md and state whether planning
120
+ starts now or the queue remains for a later router pass.
121
+
122
+ ## The verification methodology
123
+
124
+ The auditor follows this checklist for every doc; the audit file is the
125
+ filled-in checklist, so the method and the artifact stay one thing.
126
+
127
+ **Inventory.** Every `.md` in the repo (root, `docs/`, nested), plus
128
+ `.project/` artifacts when present. Excluded: `node_modules`, build output,
129
+ vendored code, `.project/archive/`, and the output audit itself — archives are
130
+ read-only history and are never audited. The orchestrator freezes this list
131
+ before dispatch; the auditor uses it verbatim. Every file is accounted for —
132
+ a doc with no testable claims gets one line in `## Descriptive docs`, not its
133
+ own section and not skipped. Rewriting DOCS-AUDIT.md preserves any
134
+ existing `## User rulings` rows: rulings and `planned` markers carry forward
135
+ verbatim, so a re-audit never wipes the alignment queue.
136
+
137
+ **Delta.** A re-audit re-verifies only what could have moved: every doc in
138
+ the changed set, every claim whose evidence names a changed path, every
139
+ command claim, and every prior non-verified claim. Any other prior
140
+ `verified` row is carried with exactly one `unchanged: ` prefix on its
141
+ Evidence. An already-carried row is copied verbatim without adding another
142
+ prefix. The gate rejects a carried row that fails any of those conditions.
143
+ No recorded `Audited HEAD`, or one that is not an ancestor of HEAD, means no
144
+ changed set and a full re-audit.
145
+
146
+ **Extract claims.** A claim is any statement reality can contradict:
147
+
148
+ | Claim type | Example | Check |
149
+ |------------|---------|-------|
150
+ | command | "run `npm test`" | run it; record exit code |
151
+ | feature | "supports OAuth login" | find the implementing code path |
152
+ | structure | "parsers live in `src/parse/`" | path exists and matches |
153
+ | status | "phase 2 complete", checked box | artifact/commit/code exists |
154
+ | config | "set `API_URL` in `.env`" | variable is actually read |
155
+ | integration | "syncs to Linear" | client code + config present |
156
+
157
+ **Verify.** Each claim gets checked by the cheapest sufficient method, in
158
+ order: run the command; read the named code; run the relevant test; check
159
+ git history. Verdicts:
160
+
161
+ - `verified` — checked and true, evidence recorded (file:line or command + output)
162
+ - `stale` — was plausibly true once; code has moved on
163
+ - `aspirational` — describes something never built
164
+ - `unverifiable` — cannot be checked from the repo (external service, credentials)
165
+
166
+ **Alignment mode** (when `.project/` exists) — the pipeline audits itself:
167
+
168
+ - every INTENT.md success criterion → `met` so far / `not yet` / `contradicted`
169
+ - every task with `status: done` → `isolation.py recover` proves its landing
170
+ commit and its Verify command still passes
171
+ - SYNTHESIS.md decisions → the code actually uses the decided stack/shape
172
+ - STATE.md → agrees with task frontmatter and review files
173
+
174
+ **Remediate.** Every non-`verified` claim lands in the remediation queue,
175
+ classified `fix-doc` (reality is right, doc lies) or `fix-code`
176
+ (doc is the contract, code fell short) or `NEEDS-USER` when the auditor
177
+ cannot tell which side is wrong. The queue is input for the user's ruling —
178
+ during inspection it feeds define; mid-project, accepted `fix-code`
179
+ items become a patch wave through `$gsd-path-plan`.
180
+
181
+ ## Rules
182
+
183
+ - Audit is read-only; the auditor never edits docs or code.
184
+ - Build, test, lint, and help commands run only in an agent-specific verify
185
+ sidecar at a recorded clean revision. If that cannot faithfully
186
+ represent the claim, use static evidence or mark it `unverifiable`; never run
187
+ project commands in the source worktree.
188
+ - A verdict without recorded evidence is itself a defect — the audit must
189
+ meet the same evidence standard it enforces.
190
+ - Never let the auditor decide doc-vs-code conflicts; that is a user ruling.