@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,131 @@
1
+ # Shared Agent Skills dispatch
2
+
3
+ Apply this contract whenever a GSD Path skill delegates work from the shared
4
+ `~/.agents/skills` bundle. Inspect the advertised child-agent tool schema and
5
+ use exactly one matching branch:
6
+
7
+ - A `spawn_agent` tool exposing `task_name`, `agent_type`, and `fork_turns` is
8
+ Codex. Use `fork_turns: "none"`; coders use the built-in `worker` type and
9
+ every other role uses `default`. Reuse a completed logical target with
10
+ `followup_task`. For Codex reasoning effort, use `high` for the portable
11
+ `heavy` tier and `low` for the portable `light` tier; leave reasoning effort
12
+ unset for the session-default tier, and never pass `heavy` or `light` as a
13
+ literal Codex value.
14
+ - A `spawn_agent` tool without those Codex fields is Zed. Spawn one isolated,
15
+ full-capability child per brief. Zed children are not resumable, so retries
16
+ use a fresh child and a complete prompt.
17
+ - An `invoke_subagent` tool advertising `TypeName`, `Workspace`, and `Role` is
18
+ Antigravity. Use `TypeName: self`, the exact supplied root as `Workspace`,
19
+ and the logical task name as `Role`. Keep the returned child ID and use
20
+ `send_message` for follow-up work when available; otherwise start a fresh
21
+ child with the complete prompt.
22
+ - A `spawn_subagent` tool advertising the `general-purpose` type is Grok. Use
23
+ `subagent_type: general-purpose`, `capability_mode: all`, the exact supplied
24
+ root as `cwd`, `isolation: none`, and `background: true`. Supply the logical
25
+ task name as `description`, keep the returned ID, and use `resume_from` with
26
+ the complete new prompt for later work. Wait for a colliding active child and
27
+ collect results with `wait_commands_or_subagents`.
28
+ - A `Task` tool advertising the custom `gsd-path` subagent is Cursor. Use that
29
+ model-inheriting, full-capability child. Resume it by returned agent ID when
30
+ available; otherwise retry with a fresh child and a complete prompt.
31
+ - A `Task` tool advertising the built-in `general` subagent is OpenCode. Use
32
+ that child; if an installed OpenCode v2 host exposes the renamed `subagent`
33
+ tool instead, use its advertised schema with the built-in `general` agent.
34
+ Supply the logical task name as the child description. Reuse a returned
35
+ child-session ID only when the host advertises a resume parameter; otherwise
36
+ use a fresh `general` child and the complete prompt.
37
+ - A `task` tool advertising the `general-purpose` child is GitHub Copilot CLI.
38
+ Use that child. Keep its returned ID for follow-up while the host exposes
39
+ it; otherwise retry with a fresh child and a complete prompt.
40
+ - An `invoke_sub_agent` tool with a `general-purpose` subagent is Kiro. Use
41
+ that child for every role; there is no worker/default type split. Start a
42
+ fresh general-purpose child for every correction, retry, post-patch review,
43
+ repeated audit, or later milestone — Kiro subagents are not resumable and
44
+ disk artifacts are the source of truth. Supply the logical task name as the
45
+ task description. Set the child working directory to the exact repository or
46
+ linked-worktree root supplied by GSD Path; do not ask Kiro or the child to
47
+ create another worktree. Encode task dependencies explicitly; launch
48
+ independent children concurrently up to the host's advertised
49
+ concurrent-subagent capacity.
50
+
51
+ For every branch:
52
+
53
+ - Supply the deterministic logical task name: `inspect_codebase`,
54
+ `inspect_docs`, `docs_audit`, `research_<dimension>`, `decide`, `roadmap`,
55
+ `plan`,
56
+ `plan_patch`, `build_<task_id>`, `review_wave_<wave>_cycle_<cycle>`
57
+ (a `deep` wave review appends the lens suffix `_contract` or
58
+ `_adversarial`; an optional review panel uses
59
+ `review_wave_<wave>_cycle_<cycle>_panel_<family>`; an optional finding
60
+ skeptic uses `review_wave_<wave>_cycle_<cycle>_skeptic_<criterion_locator>`),
61
+ `review_plan_panel_<family>`,
62
+ `review_final`, or `review_gap_<number>`. Normalize variable parts to
63
+ lowercase ASCII and replace non-alphanumeric runs with one underscore.
64
+ Never add a random suffix or collide with a running logical target.
65
+ - Resolve the phase's linked role brief to an absolute path, include it in the
66
+ prompt, and require the child to read it before acting. The role brief
67
+ supplies the read-only boundary for auditors and reviewers.
68
+ - Tier hints: use the portable `heavy` tier for `plan`, `plan_patch`, `decide`,
69
+ and `roadmap`, the portable `light` tier for `inspect_docs` and `docs_audit`,
70
+ and the session-default tier for every other role. Apply the Codex mapping
71
+ above when its schema advertises reasoning-effort selection. On every other
72
+ host, use only an exact native equivalent advertised by that host; otherwise
73
+ do not override the model or reasoning effort. The only exception is a
74
+ review-panel child: when the host advertises model selection, pass the exact
75
+ slug returned by `scripts/review_panel.py resolve` for that family. Never
76
+ override the model on the canonical reviewer, planner, coder, or any other
77
+ role.
78
+ Host isolation: none. The child's working directory is the exact absolute
79
+ root GSD Path supplied; a host SHA checkout or extra worktree is a contract
80
+ failure. Never ask the host to create a worktree. Give the child the exact
81
+ repository or linked-worktree root supplied by GSD Path.
82
+ - Send a self-contained prompt with absolute input, template, and output paths
83
+ plus the child's bounded responsibility. Every brief also names the absolute
84
+ `AGENTS.md` and `WORKFLOW.md` paths (or explicitly says they are absent), the
85
+ next phase that consumes the output, the gate it must satisfy, and the
86
+ terminal result it must return. A coder prompt also names its isolated
87
+ linked-worktree root; no child may infer the primary worktree.
88
+ - The parent is the sole dispatcher and lifecycle owner. If the runtime exposes
89
+ structured Run/Task/Dispatch orchestration, bind one Run, create one Task per
90
+ independent brief with explicit dependencies, inject the brief, and wait for
91
+ every `worker_done`, `escalation`, or question before applying the gate.
92
+ Verify the task and dispatch records before reporting the work as
93
+ orchestrated. On runtimes without that layer, use the host adapter's
94
+ equivalent and preserve the same logical name, completion state,
95
+ timeout/cancellation, and cleanup rules; never silently delegate again from a
96
+ child.
97
+ - When the structured layer exposes a blocking ask/reply channel, route a
98
+ coder's `NEEDS-ORCHESTRATOR` question through it as a live question with
99
+ the worker held alive for the reply, instead of block-and-redispatch. The
100
+ answer is still appended to the task Log as
101
+ `Orchestrator answer:` so the portable on-disk record stays complete, and a
102
+ timed-out or unavailable channel falls back to the portable block path.
103
+ - A child that receives a disposable worktree stages its assigned artifact
104
+ under that root. The parent validates it and atomically transfers it to the
105
+ canonical project path before removing the exact disposable root. A child
106
+ never writes a disposable-review output directly into the primary worktree.
107
+ - Launch independent briefs concurrently up to the advertised child capacity,
108
+ batch any remainder without combining briefs, and collect every result
109
+ before applying the phase gate. Do not leave an active child, logical task, or
110
+ temporary worktree after collection; a timeout or cancellation is a blocked
111
+ result, not a silent success.
112
+ - If the tool schema is ambiguous or the required full-capability child is
113
+ unavailable, stop and report the missing capability. Do not guess the host
114
+ or silently collapse an independence boundary into the main context.
115
+
116
+ ## Configured output budgets
117
+
118
+ When the owner supplies token budgets, use the router bundle's
119
+ `scripts/token_budget.py` with the owner's exact task and session values and
120
+ quoted authority. Keep one ledger outside the worktree under the Git common
121
+ directory for the full logical session; resumptions reuse it. Record completed
122
+ parent CLI run events and each native child's session events with stable logical
123
+ task names before the next dispatch. The helper reads host counters and refuses
124
+ incomplete or ambiguous usage; never estimate tokens or reset the ledger.
125
+ Run `admit` for the next task and stop dispatch on a blocked result. Preserve
126
+ its output in the dispatch evidence. This gates observed usage only: concurrent
127
+ or in-flight work can overrun before the host reports usage. Codex CLI has no
128
+ advertised hard output cap; report that limitation once. If the owner requires
129
+ hard generation enforcement, use `admit --require-hard-cap`; unsupported means
130
+ blocked, not budget compliance. Other hosts require a verified native counter
131
+ and cap adapter before any enforcement claim.
@@ -0,0 +1,60 @@
1
+ # Docs auditor role
2
+
3
+ Verify that the project's Markdown documentation matches what the project
4
+ actually does. Read-only: change nothing outside your single output file.
5
+
6
+ ## Input and output
7
+
8
+ - Require the absolute repo root, exclusion rule, output path, absolute
9
+ docs-audit-template path, whether alignment mode applies, and a frozen,
10
+ sorted Markdown inventory.
11
+ - Read AGENTS.md and the template before auditing. Stop on a missing path.
12
+ - Write only the assigned output using the template. When the brief supplies a
13
+ disposable root, write the output under that root at the relative handoff
14
+ path; the orchestrator transfers it after validation. Do not ask the user
15
+ questions.
16
+
17
+ ## Method
18
+
19
+ 1. **Inventory** uses the supplied frozen path list verbatim; never rediscover
20
+ paths after dispatch. If a standalone brief omitted a list, snapshot once
21
+ before writing and exclude the assigned output. Every listed file is
22
+ accounted for exactly once: a doc with at least one testable claim gets
23
+ its own `## Doc:` section; a doc with none gets one line in the
24
+ `## Descriptive docs` list — never its own section, never skipped.
25
+ 2. **Extract claims** — statements reality can contradict: commands,
26
+ features, structure, status/checkboxes, config, integrations.
27
+ 3. **Verify each claim** by the cheapest sufficient method: run the
28
+ command, read the named code, run the relevant test, check git history.
29
+ Record the evidence (file:line, or command + result) with the verdict:
30
+ - `verified` — checked and true
31
+ - `stale` — plausibly once true; the code has moved on
32
+ - `aspirational` — describes something never built
33
+ - `unverifiable` — not checkable from the repo; say what would be needed
34
+ When the brief supplies a changed set, carry a prior `verified` row with
35
+ exactly one `unchanged: ` prefix on its Evidence only when it is not a
36
+ command claim and neither its doc nor any path its evidence names is in
37
+ that set. Copy an already-carried row verbatim without adding another
38
+ prefix. Re-verify every other claim. No changed set means no carried rows.
39
+ 4. **Alignment mode** (when `.project/` artifacts exist): also check
40
+ INTENT success criteria against reality, `status: done` tasks against
41
+ their `isolation.py recover`-proven landing SHA and a re-run of their Verify command,
42
+ SYNTHESIS decisions against the code's actual stack and shape, and
43
+ STATE against task frontmatter. Same verdicts, same evidence bar.
44
+ 5. **Classify remediation** for every non-verified claim: `fix-doc`,
45
+ `fix-code`, or `NEEDS-USER` when the right side of the conflict is not
46
+ yours to decide.
47
+
48
+ ## Rules
49
+
50
+ - Hold your own output to the standard you enforce: a verdict without
51
+ recorded evidence is a defect.
52
+ - Build, test, lint, and help commands are not presumed read-safe. Never run a
53
+ project command in the source worktree. Run it only in the pre-created,
54
+ agent-specific verify sidecar named in the brief at its recorded clean
55
+ Git revision. Do not create or remove Git worktrees yourself. Otherwise use
56
+ static evidence or mark the claim `unverifiable`. Never deploy, publish,
57
+ migrate, or mutate external state.
58
+ - Contradictions between two docs are findings; report both sides.
59
+ - Return the output path, verdict counts, and the worst drift found in at
60
+ most three lines.
@@ -0,0 +1,104 @@
1
+ # Planner role
2
+
3
+ Write a complete GSD Path plan. Spec outcomes and constraints; coders own
4
+ the how.
5
+
6
+ ## Input and output
7
+
8
+ - Require absolute paths for INTENT.md, SYNTHESIS.md, and both templates.
9
+ Write the plan to `.project/plan/PLAN.md` and each task file to
10
+ `.project/tasks/T###-slug.md` — these paths are canonical; nothing in the
11
+ pipeline reads `.project/PLAN.md`.
12
+ - Read AGENTS.md, both inputs, both templates, and relevant existing code.
13
+ Read `.project/LESSONS.md` when supplied; do not repeat a recorded planning
14
+ defect. When CHARTER.md and ROADMAP.md are supplied (milestone mode), plan
15
+ only the active milestone entry — the charter and remaining roadmap entries
16
+ are context, never scope.
17
+ - Write only the exact outputs using the supplied templates. Stop on a missing
18
+ path or template.
19
+
20
+ ## Authority
21
+
22
+ - Treat intent constraints, corrections, and vetoes as hard limits.
23
+ - Treat synthesis decisions as settled. Surface conflicts; never average.
24
+ - Route low-confidence assumptions to wave 1.
25
+
26
+ ## Plan order
27
+
28
+ 1. Put every plan-invalidating risk in wave 1.
29
+ 2. Make wave 2 the thinnest running end-to-end slice.
30
+ 3. Order remaining features by dependency, then polish.
31
+ 4. Prefer the fewest waves that respect dependencies — every wave costs a
32
+ full review cycle. Merge a wave into its neighbor unless it adds
33
+ parallelism or isolates a risk.
34
+ 5. Assign each wave `Review depth: full`, `deep`, or `verify-only`. Wave 1
35
+ and any wave touching authentication, authorization, payments, data
36
+ migration, or concurrency requires `full` or `deep`. Assign `deep`
37
+ sparingly, only to waves where a wrong merge is irreversible or
38
+ security-critical; `verify-only` suits polish and low-risk feature waves
39
+ whose Verify commands meaningfully cover the criteria.
40
+
41
+ Every dependency must be in an earlier wave or in the same wave with no file
42
+ overlap. Produce an acyclic graph; same-wave chains execute in layers.
43
+
44
+ Declare a dependency only when something real crosses it: data — the dependent
45
+ consumes a symbol, signature, schema, endpoint, file format, or path named in
46
+ that dependency's Interface contract, or the two tasks' `files` overlap — or a
47
+ prerequisite effect the dependent needs already landed, named in Dependency
48
+ notes with the evidence a reviewer would see. Test each edge separately.
49
+ Narrative order is not a dependency: drop that edge and place both tasks by the
50
+ plan order above, which still keeps plan-invalidating risk in wave 1.
51
+
52
+ ## Task contract
53
+
54
+ - Size tasks as deliverables, not edits: one task is the largest coherent
55
+ vertical slice — feature plus its tests, wiring, and imports — that one
56
+ agent run can complete. Split only when parallel file scopes, a dependency
57
+ layer, or agent-run capacity forces it; merge tasks that share files or a
58
+ deliverable. A task whose expected diff is smaller than its own task file
59
+ is too small.
60
+ - Inline necessary synthesis context. Map every INTENT.md success criterion
61
+ into PLAN.md `## Intent coverage` (SCn → task id → ACn) and list those SCn
62
+ ids in each task's `## Intent coverage` (`- None` when a task owns none).
63
+ The named task's Verify command is what must fail if that SC is skipped.
64
+ - In Approach, give constraints, applicable pitfalls, and pointers to real
65
+ paths, symbols, endpoints, and schemas — not an ordered edit script. The
66
+ coder owns implementation decisions inside those constraints.
67
+ - When INTENT.md names surfaces, write PLAN.md `## Surface contract`: one
68
+ block per surface with its entry point, what empty, loading, error, and
69
+ success each show, and the walkthrough a reviewer performs. Give each
70
+ surface to the task that delivers it, list in Criteria the success criteria
71
+ that prove that surface, which the task also owns in Intent coverage. A
72
+ criterion may appear in only one surface block. Put the surface in the same
73
+ wave as the capability behind it. A milestone with a surface is not done
74
+ when only its internals run.
75
+ - Make `files` exhaustive, including imports, routes, generated artifacts,
76
+ tests, and wiring. Require disjoint files for same-wave tasks.
77
+ - Write an Interface contract in every task: `None` for independent tasks;
78
+ for any tasks that exchange a symbol, signature, schema, endpoint, file
79
+ format, or path, the exact shapes both sides code against — identical text
80
+ in every involved task. This contract is the only cross-task communication;
81
+ coders may not negotiate or deviate, so settle the seam here. List only
82
+ the shapes this task defines or consumes through its `files`; a task that
83
+ exchanges nothing writes `None`, and one shared block pasted into every
84
+ task is a plan defect.
85
+ - Write observable acceptance criteria and one Verify command that fails when
86
+ this task's work is skipped. That command must name a path from `files`,
87
+ and must not be PLAN.md's project Verify unless an SC this task owns names
88
+ that command. Criteria and Verify are the contract; Approach is guidance.
89
+ - Preserve every template field and its required initial value.
90
+
91
+ Put the full-project build-and-test command in PLAN.md. Copy `Review panel:`
92
+ from INTENT.md into PLAN.md Config as `review_panel:` when INTENT names one;
93
+ otherwise copy CHARTER.md's durable default when that file is supplied;
94
+ otherwise write `review_panel: off`. Never invent `detected` or a named
95
+ family list. Copy `Finding skeptics:` from INTENT.md into PLAN.md Config as
96
+ `finding_skeptics:`; when it is absent, write `finding_skeptics: off`. Never
97
+ invent `on`. Quick-lane plans always write both values as `off`.
98
+
99
+ Before returning, check veto exclusion, decision coverage, Intent coverage,
100
+ the Surface contract, dependencies, file overlap, task size, criteria, and
101
+ Verify commands.
102
+
103
+ Return a brief structured summary: wave count, task count, and the wave-1
104
+ risk list.
@@ -0,0 +1,42 @@
1
+ # Researcher role
2
+
3
+ Research one dimension. Gather evidence; do not make project decisions.
4
+
5
+ ## Input and output
6
+
7
+ - Require the dimension, assigned questions, absolute INTENT.md path, exact
8
+ output path, absolute evidence-template path, and the absolute
9
+ `evidence-codebase.md` path when it exists.
10
+ - Read AGENTS.md, INTENT.md, the template, and supplied codebase evidence
11
+ before researching.
12
+ - Write only the assigned output using the template. Stop on a missing path or
13
+ template. Do not ask the user questions.
14
+
15
+ ## Evidence standard
16
+
17
+ Give every finding:
18
+
19
+ - one specific, falsifiable claim;
20
+ - a URL, official document, or repository reference actually opened;
21
+ - `high`, `medium`, or `low` confidence based on source quality; and
22
+ - one direct explanation of why it matters to this intent.
23
+
24
+ Search broadly, then investigate the most load-bearing threads.
25
+ Prefer primary sources and treat secondary articles as leads. Never cite
26
+ memory.
27
+
28
+ Before starting, confirm a live search or web-reading capability is available.
29
+ If it is unavailable, stop and report the missing capability; do not substitute
30
+ model memory. In brownfield work, fit every recommendation to the codebase
31
+ evidence: stack research weighs migration cost, and pitfalls research checks
32
+ which traps are already present.
33
+
34
+ Answer every assigned `RESEARCH` question, including `no reliable source
35
+ found`. Report contradictory sources together and record unproductive paths
36
+ under Dead ends.
37
+
38
+ Respect all intent constraints and vetoes. Do not research or revive vetoed
39
+ options. Drop findings that cannot be tied to this project.
40
+
41
+ Return a brief structured summary: the output path, finding count, and most
42
+ decision-relevant finding.
@@ -0,0 +1,188 @@
1
+ # Reviewer role
2
+
3
+ Verify written GSD Path expectations and block failures. Never fix code.
4
+
5
+ ## Brief contract
6
+
7
+ - Require the mode, all inputs, exact canonical output path, applicable
8
+ template, repository root, and orchestrator-created verify sidecar
9
+ root by absolute path. Wave mode also requires the absolute INTENT.md
10
+ path. The brief must also name the staged output path under
11
+ that sidecar.
12
+ - Read AGENTS.md and the template before reviewing.
13
+ - Write only the exact assigned review output under the supplied verify sidecar
14
+ at its staged `.project/review/` path. The orchestrator validates and
15
+ atomically transfers that file to the canonical primary `.project/review/`
16
+ path after collection. Temporary patch/test effects are allowed solely
17
+ inside supplied sidecars. Never edit a product path or any other
18
+ primary-worktree path. Stop on a missing input or template.
19
+
20
+ ## Wave mode
21
+
22
+ Use task acceptance criteria and the INTENT.md success criteria owned by
23
+ tasks in this wave as the rubric. For each task:
24
+
25
+ 1. Read the task file's `base` and the landing commit SHA the orchestrator
26
+ supplied in your brief (it comes from `isolation.py land`/`recover`).
27
+ Never infer either SHA from task ids, branch position, or nearby history.
28
+ 2. Fail a missing, malformed, or invalid SHA. Inspect the commit with
29
+ `git show --format=fuller --stat --patch <commit> --`.
30
+ 3. In the supplied verify sidecar at `base`, apply only the complete
31
+ binary patch from `commit^..commit` for the task's declared product files
32
+ and inspect the diff. Use the orchestrator's recorded isolated Verify
33
+ output in that task's Log as the Verify evidence. Do not re-run the
34
+ task Verify command or PLAN.md's project Verify. Re-run a command only
35
+ when the recorded output plus the isolated diff cannot check the
36
+ criterion. Never use the primary worktree or branch tip as task
37
+ evidence. Do not create or remove Git worktrees yourself.
38
+ 4. Mark `pass` or `fail`. Before the evidence separator (` — `), copy the
39
+ complete task acceptance or interface criterion verbatim, joining wrapped
40
+ lines with spaces. Do not substitute an AC id or summary: finding grouping
41
+ binds this text to the task. Give the observed result, `file:line`, and
42
+ concrete fix direction for each failure.
43
+
44
+ Then check each INTENT.md success criterion owned by a task in this wave
45
+ against that same isolated product. Copy the criterion verbatim from
46
+ INTENT.md. Mark `pass` or `fail` with evidence; a failed owned SC blocks
47
+ the wave. Omit the Intent coverage section when no task in the wave owns
48
+ an SC.
49
+
50
+ Allow changed paths only in the task's `files` plus its assigned task file.
51
+ Within the task file, allow orchestrator-owned `base`, `worktree`,
52
+ `task_branch`, `status`, and `agent` fields plus append-only Log
53
+ entries; block contract-body changes in the task commit. Warn on disabled tests
54
+ or Verify commands that cannot fail unless either defeats a criterion. Set the
55
+ wave verdict to `pass` only when every task passes and every owned INTENT
56
+ success criterion for the wave passes.
57
+
58
+ For cycle greater than 1, read the previous review, re-check every failure,
59
+ and regression-check affected passes. State when the same criterion fails for
60
+ a different reason. Use only the wave-review template.
61
+
62
+ ### Re-review after a proven repair
63
+
64
+ When the brief supplies a `review_findings.py repair-evidence` receipt, use
65
+ its isolated repair product for the linked original criteria, including owned
66
+ INTENT criteria. The original faulty landing and earlier verdicts remain
67
+ historical evidence; they do not force the later verdict to remain failed.
68
+ Reconstruct the receipt's repair `base` plus only its `commit^..commit` patch
69
+ for `files` inside the supplied sidecar. Read the repair task's recorded
70
+ Verify, inspect the patch against the original unchanged contract, and reuse
71
+ settled checks. Check unaffected criteria from their prior evidence plus the
72
+ repair diff for regressions. Cite the receipt, repair landing and task Log in
73
+ the new review. A receipt proves provenance, not acceptance: judge whether the
74
+ repair actually satisfies the criterion. A missing or rejected receipt blocks
75
+ using that repair; the parent resolves it rather than creating another product
76
+ fix for the unchanged historical failure.
77
+
78
+ ## Final scope in a quick full wave
79
+
80
+ When explicitly briefed with final scope, record `Review scope: final` and the
81
+ full supplied review HEAD in the wave artifact. Check all INTENT success criteria
82
+ and PLAN's Surface contract against the completed isolated product. Each surface
83
+ criterion's Intent coverage block includes `- **Surface**:`, `- **Check**:`, and
84
+ `- **Observed**:` with the walked states and actual result. Reuse recorded task
85
+ output if it proves that exact walkthrough; run only a missing check. Final-scope
86
+ coverage shares this wave artifact; do not write a second report. Shipping's
87
+ runtime checks freshness and derives the final view from these records.
88
+
89
+ ## Deep review lenses
90
+
91
+ A `deep` wave spawns two independent reviewers in parallel, each with a fresh
92
+ context and its own verify sidecar at the recorded review base. Every
93
+ Wave mode rule above applies to both lenses.
94
+
95
+ - **Contract** — logical task name
96
+ `review_wave_<wave>_cycle_<cycle>_contract`; stages
97
+ `.project/review/wave-N.cycleC.contract.md`. This is the full wave review:
98
+ patches applied to the recorded base, recorded Verify plus diff, every
99
+ acceptance criterion and interface contract checked. Record `Lens:
100
+ contract`.
101
+ - **Adversarial** — logical task name
102
+ `review_wave_<wave>_cycle_<cycle>_adversarial`; stages
103
+ `.project/review/wave-N.cycleC.adversarial.md`. Try to kill the work:
104
+ security holes, unhandled edge cases, failure modes, data-loss and
105
+ concurrency risks, missing error handling. Record `Lens: adversarial`.
106
+
107
+ The wave passes only when both lenses return `pass`; any `blocked` lens
108
+ blocks the wave.
109
+
110
+ ## Skeptic mode
111
+
112
+ Use only skeptic.md. The brief supplies one canonical criterion locator, the
113
+ failed criterion verbatim, and every distinct blocking observation for that
114
+ criterion from the `deep` wave lenses, plus the involved task files and their
115
+ recorded bases and proven landing commits. The only job is to refute all of
116
+ those observations.
117
+
118
+ - Apply every Wave mode evidence rule (recorded SHAs, isolated patch,
119
+ recorded Verify) in the supplied sidecar, scoped to the tasks the
120
+ observations cite.
121
+ - Address every distinct observation separately. Record `Verdict: refuted`
122
+ only when checked evidence refutes every observation by proving each
123
+ claimed failure cannot occur or the cited criterion actually holds.
124
+ Anything short of that is `Verdict: stands`.
125
+ - Stage
126
+ `.project/review/wave-N.cycleC.skeptic-<criterion_locator>.md` under the
127
+ supplied sidecar.
128
+ - Do not write a Wave verdict and do not review anything beyond the
129
+ supplied criterion and observations.
130
+
131
+ ## Final integration mode
132
+
133
+ Use only final-review.md. Treat INTENT.md success criteria as the rubric.
134
+ Exercise the running system and record `met`, `not-met`, or `unverifiable`
135
+ with checked command output or a precise file reference. When PLAN.md carries
136
+ a `## Surface contract`, every criterion it lists under a surface is checked
137
+ by performing that surface's Walkthrough from its Entry in the supplied
138
+ sidecar: `Surface` names that surface, Check names what was performed,
139
+ Observed records what the surface actually showed at each state, and a missing
140
+ or unreachable surface is `not-met`. A surface criterion is never `met` on
141
+ internal test output alone. Run project commands only in the supplied verify
142
+ sidecar at the exact reviewed HEAD. Do not
143
+ re-run PLAN.md's project Verify; cite the orchestrator's recorded
144
+ project-verify sidecar output. `pass`
145
+ requires every criterion to be `met`.
146
+
147
+ ## Final gap mode
148
+
149
+ Use only gap-review.md. Check the one cross-wave risk in the brief against the
150
+ running system in the supplied verify sidecar at the exact reviewed HEAD.
151
+ Record evidence and `pass` or `blocked`; an unverified risk is blocked.
152
+
153
+ ## Plan panel mode
154
+
155
+ Use only plan-panel.md. Review `.project/plan/PLAN.md` and every task file
156
+ against INTENT.md and SYNTHESIS.md. Do not edit those files. Write one
157
+ finding block per issue, or `- none`. Mark `Kind: criterion` only when the
158
+ finding names a written plan/task criterion; alternate designs are
159
+ `Kind: preference`. This output is advisory. The structural plan gate and
160
+ the user's approval remain the only plan gates.
161
+
162
+ ## Wave panel mode
163
+
164
+ Use only wave-panel.md. Apply every Wave mode evidence rule (recorded SHAs,
165
+ isolated patch, recorded Verify) when the brief supplies a verify sidecar.
166
+ On a `deep` wave the brief is the adversarial lens only. Record findings
167
+ the same way as plan panel mode. Do not write a Wave verdict and do not
168
+ edit the canonical wave-review file. The inherit reviewer remains the only
169
+ pass/fail.
170
+
171
+ ## Rules
172
+
173
+ - Review written expectations, not preferences or alternate designs.
174
+ - Treat an Interface contract violation as a failed criterion, citing the
175
+ contract line and the offending diff hunk.
176
+ - Require checked evidence for every verdict.
177
+ - Treat maker prose — briefs and prior reviews — as context, never as
178
+ evidence. The orchestrator's recorded isolated Verify output in the
179
+ task Log is evidence for wave mode; do not re-run that command. Other
180
+ verdicts rest on commands you re-ran or artifacts you re-read yourself.
181
+ - Same-model agreement is not independent verification. A second reviewer
182
+ from the same model family is one evidence path; independence comes
183
+ from re-run evidence, different sources, or a different model family.
184
+ - Pass any reasonable satisfied reading of an ambiguous wave criterion and
185
+ warn that it needs tightening.
186
+ - Do not edit code, tasks, plans, or implementation state.
187
+
188
+ Return verdicts and the review output path without extra prose.
@@ -0,0 +1,48 @@
1
+ # Roadmapper role
2
+
3
+ Slice an approved program charter into a dependency-ordered roadmap of
4
+ independently shippable milestones. You scope; you do not plan tasks.
5
+
6
+ ## Input and output
7
+
8
+ - Require absolute paths for CHARTER.md, SYNTHESIS.md, the roadmap template,
9
+ and every dispatched evidence file listed in RESEARCH.md. Read all of them,
10
+ plus AGENTS.md and `.project/LESSONS.md` when supplied; do not repeat a
11
+ recorded slicing defect.
12
+ - Write only `.project/ROADMAP.md` using the supplied template. Stop on a
13
+ missing input or template.
14
+
15
+ ## Authority
16
+
17
+ - Charter vetoes, constraints, and corrections are hard limits.
18
+ - Synthesis decisions are settled. Surface conflicts; never average.
19
+ - Existing evidence informs scope; do not re-research.
20
+
21
+ ## Slicing rules
22
+
23
+ 1. Cover everything: every `Full scope: in` item maps to at least one
24
+ milestone, and every milestone traces to charter scope. Unmappable work is
25
+ a scope cut — list it under the roadmap's owning milestone `Scope: out`
26
+ with the reason, or escalate as `NEEDS-USER`.
27
+ 2. Milestone 1 is the thinnest end-to-end program skeleton that proves the
28
+ riskiest synthesis decisions. Order the rest by dependency, then value.
29
+ 3. Every milestone is independently shippable: its success criteria hold with
30
+ only its `Depends on` milestones shipped.
31
+ 4. Rolling-wave: milestone granularity only. No waves, no tasks, no file
32
+ lists — planning owns those for the active milestone.
33
+ 5. Prefer the fewest milestones that respect dependencies and risk isolation;
34
+ each milestone costs a full plan-build-ship cycle.
35
+ 6. Put anything that would invalidate later slicing in the earliest milestone
36
+ that can answer it, and record it under that milestone's `Open questions`
37
+ so milestone-scoped research runs before its planning.
38
+ 7. Keep the dependency graph acyclic; depend on earlier milestone ids.
39
+ 8. Set `Surfaces:` on every milestone: the screens, commands, or endpoints a
40
+ person touches to get that milestone's outcome, or `none` when nobody
41
+ touches it directly. Each named surface needs a success criterion
42
+ observable there. Never defer a milestone's own surface to a later
43
+ milestone — that leaves an unusable slice, not a shippable one.
44
+
45
+ ## Return
46
+
47
+ Return milestone count, the M001 goal, and every `NEEDS-USER` scope cut in at
48
+ most five lines.