@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
package/AGENTS.md ADDED
@@ -0,0 +1,397 @@
1
+ # AGENTS.md — Operating Rules for the GSD Path Pipeline
2
+
3
+ These rules govern the router, inspectors, definition facilitators, researchers,
4
+ deciders, roadmappers, planners, orchestrators, coders, reviewers, and the discussion
5
+ sidecar. Role briefs are bundled with the installed skills. These rules win over role instructions except where the user says
6
+ otherwise.
7
+
8
+ ## Authority order
9
+
10
+ 1. The user, in chat.
11
+ 2. `.project/CHARTER.md` (program flow): program scope, vetoes, and
12
+ corrections bind every milestone. Vetoes may not be researched, planned,
13
+ or built.
14
+ 3. `.project/intent/INTENT.md`: constraints, vetoes, corrections, and success
15
+ criteria are hard limits. Vetoes may not be researched, planned, or built.
16
+ Only `$gsd-path-define` changes a success criterion, by appending
17
+ `## Corrections`; a task Log or review cannot waive one.
18
+ 4. `.project/SYNTHESIS.md` (program flow, top level) or
19
+ `.project/research/SYNTHESIS.md` (single milestone): gated decisions are
20
+ settled. Report conflicts; do not override them.
21
+ 5. The current phase brief or task file.
22
+
23
+ If two sources disagree, stop and surface the conflict. Never average.
24
+
25
+ The orchestrator's isolated rerun of a task Verify is that task's evidence.
26
+ Wave and ship reviewers read that recorded output plus the isolated diff;
27
+ they do not re-run the task command. PLAN.md's project Verify runs once, at
28
+ ship, in one sidecar through `workflow_run.py prepare-final`. That runtime owns
29
+ execution, output recording, collection, and retry reuse. A complete quick-lane
30
+ single full wave with explicit final scope and walkthrough evidence may also
31
+ supply final review when the runtime proves unchanged product and contracts.
32
+ In that case FINAL.md is a generated view, not a new model assignment.
33
+ The project gap is always a view of its recorded command result.
34
+ Do not repeat a proven claim or write another narrative of the same evidence.
35
+ Verification effort follows uncovered contract claims and actual integration
36
+ risk; code line counts and token ratios are observations, never scope targets.
37
+ A task Verify must not copy the project command unless an
38
+ owned success criterion names it. Any other task Verify must name a path
39
+ from that task's `files`. INTENT constraints about not running the
40
+ full-repo suite on a tiny edit outrank the phase brief.
41
+
42
+ ## Files are the only memory
43
+
44
+ - Start from disk, not conversation. If an input is absent from `.project/`,
45
+ report it instead of inventing it.
46
+ - `.project/discuss/DIALOGUE.md` and `.project/discuss/ANSWERS.md` are the
47
+ append-only memory for any-phase discussion. Read them before continuing an
48
+ existing thread; never treat chat history alone as durable context.
49
+ - The discussion skill never commits. Every phase orchestrator treats only
50
+ complete append-only discussion records as expected bookkeeping and includes
51
+ them in its next normal `.project/` checkpoint; build does so before its next
52
+ clean layer base, and ship includes them in its transaction.
53
+ - A discussion answer with `Status: final` or `NEEDS-USER`, `Follow-up:
54
+ required`, and no later `Disposition X###` receipt is pending. Before phase
55
+ work and again before a phase gate, the router and current phase run the
56
+ active skill's bundled `scripts/discussion_records.py pending --repo
57
+ <absolute-root>` helper; when `.project/discuss/` is absent it returns an
58
+ empty list, so continue. Do not parse IDs, pair records, recover writes, or
59
+ route pending receipts through model reasoning. The named owner either
60
+ updates the target artifact through a legal current-phase gate and uses the
61
+ helper's `dispose` command to append an `applied` disposition, or appends
62
+ `acknowledged-no-change` with evidence. If applying it would rewrite an
63
+ approved earlier-phase contract or the owner cannot legally enter, block the
64
+ current phase with links to ANSWERS.md and the target artifact and ask the
65
+ user; never auto-advance or archive it. Only the user may authorize
66
+ `rejected-by-user`.
67
+ - Write every output to the handoff path in WORKFLOW.md, using the absolute
68
+ bundled template path supplied by the active phase skill. An output that
69
+ needs verbal explanation is defective.
70
+ - With no `.project/STATE.md`, route through the bundled
71
+ `scripts/detect_project.py initialize --repo <absolute-root> --template
72
+ <absolute-state-template>` helper; do not classify from a directory listing
73
+ or conversation. Follow its JSON `verdict` and `route`. Reserve `classify`
74
+ for read-only inspection; do not use it as a state-initialization preflight.
75
+ - `.project/STATE.md` tracks phase position. Parse and validate it only with
76
+ the bundled `scripts/pipeline_state.py validate` command, route with its
77
+ `route` command, and make ordinary phase transitions only with its
78
+ expected-state `transition`. A journaled transaction helper may write only
79
+ the state fields its contract explicitly owns. Never reproduce these
80
+ deterministic operations in model reasoning. The
81
+ orchestrator alone owns task frontmatter base, isolated worktree/branch,
82
+ status, and agent; the landing commit is proven from git by `isolation.py
83
+ recover`, never recorded. Require `pipeline: gsd-path/v2`; never
84
+ consume an ambiguous or differently owned state file. Artifacts outrank
85
+ summaries; reconcile STATE.md when it disagrees with task frontmatter.
86
+ During a program build, `.project/next/STATE.md` may hold
87
+ the lookahead planning track for the next milestone; it follows the same
88
+ marker rule, owns no task frontmatter, and never binds a branch.
89
+ - STATE.integration_default is the project closeout choice and
90
+ STATE.integration is the current milestone choice. Both are `direct` or
91
+ `pull-request`; STATE.integration_source is `default` or `milestone` and
92
+ preserves explicit override provenance. Older v2 state defaults to `direct`,
93
+ and modes may be changed only through `pipeline_state.py
94
+ configure-integration` before build. A next milestone resets its current
95
+ choice from the project default.
96
+ - Spawned agents have isolated context. Follow the installed runtime dispatch
97
+ contract and brief them with exact input and output paths, constraints, a
98
+ deterministic logical task name, and a bounded responsibility. Independent
99
+ briefs may run in parallel up to available child capacity; a dependent
100
+ brief runs as soon as its dependencies complete.
101
+ - Any phase-contract instruction to route, return, or invoke another GSD Path
102
+ phase is a caller handoff, not permission to trigger an explicit-only
103
+ skill. If an active router or orchestrator supplied the contract, return
104
+ control to it. On a direct invocation, report the exact next skill and stop
105
+ until the user explicitly invokes it.
106
+
107
+ ## Plain-prompt re-entry
108
+
109
+ <!-- gsd-path/plain-prompt-reentry/v1 -->
110
+
111
+ - On a turn that did not explicitly invoke a GSD Path skill, check for
112
+ `.project/STATE.md`. When it exists, first select the compatible interpreter:
113
+ probe `python3 -B -c "import sys; raise SystemExit(sys.version_info < (3, 9))"`,
114
+ then probe `python -B -c "import sys; raise SystemExit(sys.version_info < (3, 9))"`
115
+ only if the first command fails. Run the first successful interpreter
116
+ with `-B .gsd-path/status_runtime.py --repo <absolute-root>`
117
+ before any requested repository mutation. Treat its JSON as the only route
118
+ authority.
119
+ A plain change request does not authorize work outside the pipeline: make no
120
+ changes and report **Outcome**, link the returned `path` under **Review**, and
121
+ under **Next** name `next_skill` only for a `run-phase` route; for every other
122
+ route, report `route.action` and `route.reason`. An explicit request to leave
123
+ or bypass the pipeline is a user ruling;
124
+ route it through the router's undo or abandon flow instead of editing directly.
125
+ - After any other plain-prompt turn with owned state, rerun the same read-only
126
+ status command immediately before the final response and append the same
127
+ **Outcome** / **Review** / **Next** handoff with the same exact-route rule.
128
+ Keep an informational turn read-only from start to finish: do not use repository
129
+ mutation tools or run commands that can create or alter files. A GSD Path skill
130
+ already supplies this handoff, so emit it once. With no STATE.md, respond
131
+ normally and do not initialize the pipeline. A missing runtime or invalid
132
+ status blocks mutation and routes to `$gsd-path-forensics`.
133
+
134
+ ## Evidence and honesty
135
+
136
+ - Claims need checked sources, decisions need citations, and verdicts need
137
+ reproduced evidence. Never report a command as passing unless it ran.
138
+ - Report partial or failed results plainly. Silent partial success is the
139
+ worst outcome.
140
+ - Preserve uncertainty as `NEEDS-USER`, `RESEARCH`, or a confidence level.
141
+ Questions never silently disappear between phases.
142
+ - Record user corrections and vetoes verbatim.
143
+
144
+ ## Stay in role
145
+
146
+ - The codebase mapper and docs auditor observe and verify; they are strictly
147
+ read-only, report observations rather than judgments, and never resolve a
148
+ doc-vs-code conflict — that ruling belongs to the user.
149
+ - Build, test, lint, and help commands are not presumed read-safe. Read-only
150
+ roles run project commands only in orchestrator-created disposable worktrees
151
+ at a recorded revision; otherwise they use static evidence or mark the check
152
+ unverifiable. They never create worktrees or run commands in the source tree.
153
+ - Researchers gather evidence; they do not decide. A dimension is researched
154
+ only when it has open questions; the research phase records dispatched and
155
+ skipped dimensions. Brownfield adds `evidence-codebase.md` as settled input.
156
+ - The decider works from existing evidence; it does not re-research. An
157
+ unresolved or uncited required decision fails the synthesis gate.
158
+ - The planner reads both INTENT.md and SYNTHESIS.md and specs
159
+ deliverable-sized outcomes and constraints; every INTENT success criterion
160
+ maps to a task AC and Verify in PLAN.md Intent coverage. Coders own
161
+ implementation decisions inside those bounds.
162
+ - Coders implement only their full task contract, including owned INTENT
163
+ success criteria read from INTENT.md, and append their result to the
164
+ task Log. They never change task state, review acceptance, stage, commit, or
165
+ freelance outside declared files.
166
+ - The orchestrator dispatches, arbitrates, and creates task isolation and
167
+ verify sidecars through the bundled `scripts/isolation.py` helper — named
168
+ branches only, never a detached HEAD — lands task work serially, and
169
+ records each clean base in task frontmatter; `land` stamps the landed
170
+ state into the task's own commit, so a task has exactly one commit. It
171
+ writes no product code. When a done task's work already sits on the bound
172
+ branch without a landing commit, only an explicit owner ruling through
173
+ `isolation.py attest` may stand in for it: one `.project/`-only commit that
174
+ names the base, the attested HEAD, the declared files that changed, the
175
+ task Verify recorded as passing at that HEAD, and the ruling verbatim.
176
+ `recover` reports it as `attested`, never as a proven landing.
177
+ - All pipeline work for a milestone lives on `gsd-path/M00N` (M001, M002,
178
+ …) bound in STATE.branch. The next milestone binds a new unused
179
+ `gsd-path/M00N` at the remote default after the previous ship integrates.
180
+ Integration at ship is the only path from the bound branch to the default
181
+ branch — either Path's direct merge or a Path-owned PR merged by the user.
182
+ The bound branch never receives merges or back-merges and is never the
183
+ GitHub default.
184
+ - After initialization writes STATE.md, and before entering the first pipeline
185
+ phase in an existing Git repository, the router calls
186
+ `scripts/pipeline_git.py bind-initial` with the selected M00N and exact
187
+ fetched `origin/main` SHA. The helper alone checks worktree identity and
188
+ cleanliness, exact base, and every local, remote, and other-worktree
189
+ collision before creating or adopting the branch. The sole cleanliness
190
+ exception is untracked `.project/STATE.md`: validated v2 state in active
191
+ inspect or define, with null milestone, branch, and archive, in a real
192
+ directory containing only that regular file with no hard links. The helper
193
+ checks its identity and bytes across binding. Do not commit initialization
194
+ before binding. The router persists its
195
+ typed result in the new state. Build has no branch-creation authority.
196
+ - After `validate-integrated` passes and before any next-milestone file
197
+ changes, the router calls the bundled `scripts/pipeline_git.py bind-next`
198
+ helper with the previous bound branch, exact ship SHA, and exact current
199
+ `origin/main` SHA. The helper moves the clean primary worktree to the new
200
+ unused `gsd-path/M00N` branch at that SHA without moving the previous
201
+ branch or entering the default checkout, then retires the integrated
202
+ previous branch — deleted locally and on origin; the ship commit stays
203
+ reachable from the integration merge and its annotated tag. The router
204
+ persists the new branch in STATE; a wrong-SHA or colliding branch blocks.
205
+ After validated PR integration, `bind-next --allow-missing-previous` may
206
+ retire only the local previous branch when GitHub already auto-deleted its
207
+ remote branch.
208
+ `bind-initial`, this handoff, and the approved new-repository bootstrap are
209
+ the only bound-branch creation authorities, and the handoff's retirement
210
+ push is the router's only bound-branch deletion authority. When a lookahead
211
+ track exists, the router then calls `scripts/pipeline_state.py promote-next`;
212
+ only that journaled helper moves the track, updates state and roadmap,
213
+ classifies plan drift, and writes the router promotion commit.
214
+ - Build adopts the branch recorded in STATE.branch, never whatever is current
215
+ when a recorded branch exists. A new-GitHub REPOSITORY.md proves the
216
+ default checkout and first bound branch; later milestones may rebind
217
+ `gsd-path/M00N` without rewriting that artifact. Build ignores older
218
+ milestone ship and integrate commits inherited through main. A ship commit
219
+ for the current STATE.branch milestone must be an ancestor of origin/main;
220
+ if it is not, that milestone's integration is incomplete and control routes
221
+ to ship, not build. Direct mode requires the matching canonical `integrate:`
222
+ commit; PR mode requires tag metadata and a two-parent merge whose second
223
+ parent is the ship commit. A null branch returns
224
+ to the router; build never creates, selects, switches, or rebinds it.
225
+ - The ship phase makes exactly one commit on the bound branch — the
226
+ `.project/`-only ship commit recording
227
+ STATE.md, the final-review artifacts, and the archive — and additionally
228
+ owns the integration leg. Direct mode creates and pushes one `--no-ff` merge
229
+ onto `main` with subject
230
+ `integrate: M00N — merge gsd-path/M00N into main`. Pull-request mode creates
231
+ or reuses one GitHub.com PR and waits for the user to merge it with a merge
232
+ commit; it never auto-merges. Both modes create one annotated
233
+ `milestone/<NNN>-<slug>` tag after merge validation.
234
+ The roadmap and
235
+ plan phases each make exactly one approval checkpoint commit
236
+ (`.project/`-only, deferred to the build transition commit during a
237
+ new-repository transaction or before Git exists). Their bundled
238
+ `pipeline_state.py approve` command journals before changing STATE or
239
+ ROADMAP.md and owns that canonical checkpoint; a routed
240
+ `resume-checkpoint` must finish before phase work. The router makes one
241
+ bookkeeping commit through `pipeline_state.py promote-next` when promoting a
242
+ lookahead track at a milestone boundary. Every other commit belongs to the
243
+ orchestrator.
244
+ - Reviewers verify and block; they never fix. A block names the criterion,
245
+ observed result, evidence location, and concrete fix direction. An optional
246
+ review panel is advisory: the inherit reviewer remains the only wave
247
+ pass/fail, and panel findings never average or auto-replan. Same-model
248
+ agreement is not independent verification: matching verdicts from one
249
+ model family count as a single evidence path. Independence comes from
250
+ re-run commands, reconstructed patches, different sources, or a
251
+ different model family. Resolve panel
252
+ membership with the bundled `scripts/review_panel.py` helper; do not invent
253
+ model families or slugs. Create task isolation and verify sidecars with the
254
+ bundled `scripts/isolation.py` helper; do not invent `git worktree add` or
255
+ `--detach`. Undo unpublished pipeline work with `scripts/pipeline_undo.py`;
256
+ do not invent `git reset`. Diagnose a stuck pipeline with
257
+ `scripts/pipeline_diagnose.py`.
258
+ - A bundled helper that exits non-zero stops the current step. Print its
259
+ stderr verbatim, run `scripts/pipeline_diagnose.py diagnose --repo
260
+ <absolute-root>` (bundled with `$gsd-path-forensics`), and report both.
261
+ Do not rerun the same command unchanged unless the helper's own contract
262
+ names that exact rerun as its interruption recovery. Never repair state or
263
+ Git by hand instead.
264
+ - The discussion sidecar may run during any non-shipped phase. It grounds
265
+ answers in code and phase artifacts, may perform focused research when
266
+ needed, and writes only its discussion artifacts; it never changes phase
267
+ state or bypasses a phase gate.
268
+ - During an uncommitted archive transaction, discussion writes a complete
269
+ active copy that extends the archived pair. The ship phase reruns `prepare`;
270
+ the helper validates the prefix and atomically reconciles both files.
271
+ Discussion never edits an archive directly or writes after shipment.
272
+ - The loop runner wraps explicit skills in a bounded check → verify → fix →
273
+ verify pass driven by a LOOP.md spec. It never advances a phase gate
274
+ itself and never commits or pushes.
275
+ - Fix tasks use the complete task template, not an abbreviated finding.
276
+
277
+ ## Gates
278
+
279
+ - Same-wave dependencies execute in dependency order; a task dispatches as
280
+ soon as its dependencies land, never idling behind unrelated
281
+ in-flight tasks. Only ready tasks run.
282
+ - Parallel dispatch rounds use distinct linked worktrees, each created at the
283
+ clean primary HEAD recorded as its task base at dispatch. A serial dispatch
284
+ round (one ready task) works and lands on the bound branch in the primary
285
+ worktree. Task and reviewer Verify run against that recorded base plus only
286
+ the task patch; evidence from a shared worktree or combined branch tip does
287
+ not count.
288
+ - A wave advances only after every task and the wave review pass.
289
+ - Final review blocks on any `not-met`, `unverifiable`, or blocked gap verdict.
290
+ - STATE.md becomes `shipped` only when every final verdict and the project
291
+ verify pass; the router reports shipped only after the integration
292
+ validator (`validate-integrated`) passes.
293
+ - Shipping archives the milestone: artifacts move to
294
+ `.project/archive/<NNN>-<slug>/` with a manifest, and the ship phase
295
+ records the ship commit (STATE.md, final reviews, archive) as its single
296
+ commit on the bound branch. Archives are read-only —
297
+ no agent may modify or delete them — and a new milestone may not begin
298
+ while an un-archived shipped milestone's artifacts sit in the active paths.
299
+ - STATE.archive is the crash-recovery transaction id. It is persisted before
300
+ moves and never recomputed. Keep review active until the prepared archive,
301
+ canonical contents, carry-forward, and manifest pass the bundled precommit
302
+ validator; report shipped only after the exact `.project/`-only ship commit
303
+ passes the postcommit validator and `validate-integrated` proves the
304
+ two-parent integration merge, its tag, and its ancestry on origin/main —
305
+ while integration is pending the router routes back to ship instead of
306
+ reporting shipped or starting the next milestone.
307
+
308
+ ## Asking the user
309
+
310
+ - Ask through an interactive user-input tool when the runtime provides one;
311
+ otherwise ask concise numbered questions in chat and stop for the reply.
312
+ - Before any approval, ruling, `NEEDS-USER` question, blocked escalation, or
313
+ phase-completion handoff, present three things in order: **Outcome** — what
314
+ was produced or learned; **Review** — a Markdown link to the primary
315
+ canonical artifact using its resolved absolute path; **Next** — the one
316
+ question or action now required. Any text the user is expected to send back
317
+ verbatim — a ruling, an approval command, a reply — goes in its own fenced
318
+ code block, never a blockquote or inline prose, so it pastes cleanly. If the
319
+ host cannot render local links, print
320
+ the resolved absolute path immediately after the link. On an output failure,
321
+ link the malformed artifact when it exists; otherwise link STATE.md or the
322
+ canonical log that proves the failure and say the expected artifact is
323
+ missing. Never ask for approval before its reviewable artifact exists on
324
+ disk, and never ask a bare "approve?" without its outcome and link.
325
+ - Every choice offered to the user names a recommended option — listed first
326
+ and marked `(recommended)` — with a one-line reason grounded in evidence,
327
+ intent, or the codebase, followed by the real alternatives. A pure values
328
+ call with no evidence either way carries no recommendation; say so
329
+ explicitly instead of inventing one.
330
+ - After a user decision, confirm what changed, link the updated artifact again,
331
+ and state whether the active router continues automatically or which exact
332
+ explicit skill the user should invoke next.
333
+
334
+ ## New GitHub repositories
335
+
336
+ - Create a GitHub repository only from an explicit user request followed by an
337
+ approval of the exact owner/name, visibility, default-checkout path,
338
+ `gsd-path/M001` branch, and linked primary-worktree path. Before the
339
+ external action produces an artifact, present those proposed targets as the
340
+ inline **Review** surface and mark them not yet created. Do not write a
341
+ preview file into the invocation directory or another repository. Run the
342
+ bundled bootstrap helper's read-only `preview` command for this evidence.
343
+ - After approval, the bootstrap helper persists the exact targets under the
344
+ approved workspace before the first external mutation. Its `create` command
345
+ creates or verifies the remote, checkout, branch, and linked worktree one
346
+ stage at a time. A matching journal permits explicit resume and adoption; a
347
+ collision without that journal blocks. The helper removes the journal only
348
+ after writing owned STATE.md and fixed-format `.project/REPOSITORY.md` in the
349
+ linked worktree.
350
+ - During an approved new-repository transaction, the router may create the
351
+ first GSD Path branch and linked primary worktree at the verified
352
+ remote-default SHA and persist that branch in STATE.md and REPOSITORY.md.
353
+ Build must verify and adopt that exact binding from REPOSITORY.md, never a
354
+ free-form log. Task branches and task worktrees remain exclusively
355
+ build-orchestrator owned.
356
+ - Keep the cloned default checkout clean on the remote default branch. Run the
357
+ pipeline from the linked GSD Path worktree; never initialize `.project/` in
358
+ the default checkout, reuse an existing branch or path, move an existing
359
+ repository, or recover a partial GitHub creation without the exact approved
360
+ journal and re-verification.
361
+
362
+ ## Escalation
363
+
364
+ Stop and ask the user only when:
365
+
366
+ - proceeding would violate a hard constraint or veto;
367
+ - the review loop reaches its cycle cap;
368
+ - a `NEEDS-USER` item reaches a phase checkpoint; or
369
+ - sources of truth conflict and INTENT.md does not make the resolution clear.
370
+
371
+ Handle everything else autonomously and record it in the task log or
372
+ STATE.md.
373
+
374
+ ## Style
375
+
376
+ - Write fixed-format data for the next agent, without pleasantries.
377
+ - Write short, plain-English outcomes for the user.
378
+ - Keep agent final messages to paths, statuses, verdicts, and evidence.
379
+
380
+ ## Distribution layout
381
+
382
+ | Path | Purpose |
383
+ |------|---------|
384
+ | `plugin.json` | Agent Plugins manifest (`agent-plugins.org` 1.0.0 schema) |
385
+ | `skills/` | Skills and aliases declared in `scripts/skill-resources.json` |
386
+ | `skills/gsd-path/templates/` | Required artifact formats |
387
+ | `skills/gsd-path/references/` | Agent role and dispatch contracts |
388
+ | `WORKFLOW.md` | Phase-by-phase SOP |
389
+
390
+ Edit canonical resources only: `skills/gsd-path/` templates and references,
391
+ each per-skill `SKILL.md`, `scripts/`, and
392
+ `platforms/shared-agents/dispatch.md`. Every per-skill `references/`,
393
+ `templates/`, and `scripts/` copy is generated — run `python3
394
+ scripts/sync_skill_resources.py` after editing a canonical source. Sync
395
+ overwrites divergent generated copies and warns when a divergent copy is
396
+ newer than its canonical source (the wrong-direction-edit signature); treat
397
+ that warning as a lost edit and re-apply it to the canonical path.