agentic-flow-kit 1.8.2 → 2.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 (936) hide show
  1. package/README.md +113 -148
  2. package/bin/flow-kit.mjs +5 -2
  3. package/locales/en/installer.json +25 -0
  4. package/locales/en/overrides/.agents/commands/deploy.md +52 -0
  5. package/locales/en/overrides/.agents/commands/maintain.md +76 -0
  6. package/locales/en/overrides/.agents/commands/new-task.md +89 -0
  7. package/locales/en/overrides/.agents/commands/pipeline-run.md +56 -0
  8. package/locales/en/overrides/.agents/commands/pr-review.md +30 -0
  9. package/locales/en/overrides/.agents/commands/review.md +93 -0
  10. package/locales/en/overrides/.agents/commands/stages.md +256 -0
  11. package/locales/en/overrides/.agents/notes/pr-review-cost-discipline.md +48 -0
  12. package/locales/en/overrides/.agents/notes/process-order-rule.md +21 -0
  13. package/locales/en/overrides/.agents/notes/runtime-env.local.example.md +21 -0
  14. package/locales/en/overrides/.agents/pipelines/_TEMPLATE.md +75 -0
  15. package/locales/en/overrides/.agents/pipelines/pipeline-closing.md +28 -0
  16. package/locales/en/overrides/.agents/roles/implementer.md +28 -0
  17. package/locales/en/overrides/.agents/roles/independent-reviewer.md +39 -0
  18. package/locales/en/overrides/.agents/roles/pr-adjudicator.md +27 -0
  19. package/locales/en/overrides/.agents/roles/pr-finder.md +51 -0
  20. package/locales/en/overrides/.agents/roles/pr-verifier.md +44 -0
  21. package/locales/en/overrides/.agents/roles/ui-verifier.md +22 -0
  22. package/locales/en/overrides/.agents/roles/wiki-compiler.md +47 -0
  23. package/locales/en/overrides/.agents/skills/arena/SKILL.md +50 -0
  24. package/locales/en/overrides/.agents/skills/autonomous-run/SKILL.md +45 -0
  25. package/locales/en/overrides/.agents/skills/blast-radius/SKILL.md +53 -0
  26. package/locales/en/overrides/.agents/skills/csharp-quality-gates/SKILL.md +109 -0
  27. package/locales/en/overrides/.agents/skills/dev-tour/SKILL.md +98 -0
  28. package/locales/en/overrides/.agents/skills/dream/SKILL.md +63 -0
  29. package/locales/en/overrides/.agents/skills/eval/SKILL.md +42 -0
  30. package/locales/en/overrides/.agents/skills/interrogate/SKILL.md +49 -0
  31. package/locales/en/overrides/.agents/skills/number-vetting/SKILL.md +35 -0
  32. package/locales/en/overrides/.agents/skills/page-refactor/SKILL.md +192 -0
  33. package/locales/en/overrides/.agents/skills/papercut-fix/SKILL.md +92 -0
  34. package/locales/en/overrides/.agents/skills/pause-safely/SKILL.md +31 -0
  35. package/locales/en/overrides/.agents/skills/perf/SKILL.md +42 -0
  36. package/locales/en/overrides/.agents/skills/review-method/SKILL.md +92 -0
  37. package/locales/en/overrides/.agents/skills/session-resume/SKILL.md +69 -0
  38. package/locales/en/overrides/.agents/skills/shipyard-workflow-closeout/SKILL.md +109 -0
  39. package/locales/en/overrides/.agents/skills/show-me-your-work/SKILL.md +57 -0
  40. package/locales/en/overrides/.agents/skills/tfs-pr/SKILL.md +95 -0
  41. package/locales/en/overrides/.agents/skills/verify-ui/SKILL.md +116 -0
  42. package/locales/en/overrides/.agents/skills/visual-parity/SKILL.md +35 -0
  43. package/locales/en/overrides/.agents/skills/why/SKILL.md +56 -0
  44. package/locales/en/overrides/.agents/skills/wiki/SKILL.md +53 -0
  45. package/locales/en/overrides/.claude/agents/implementer.md +9 -0
  46. package/locales/en/overrides/.claude/agents/independent-reviewer.md +10 -0
  47. package/locales/en/overrides/.claude/agents/pr-adjudicator.md +10 -0
  48. package/locales/en/overrides/.claude/agents/pr-finder.md +10 -0
  49. package/locales/en/overrides/.claude/agents/pr-verifier.md +10 -0
  50. package/locales/en/overrides/.claude/agents/ui-verifier.md +10 -0
  51. package/locales/en/overrides/.claude/agents/wiki-compiler.md +10 -0
  52. package/locales/en/overrides/.claude/commands/wf-deploy.md +8 -0
  53. package/locales/en/overrides/.claude/commands/wf-maintain.md +8 -0
  54. package/locales/en/overrides/.claude/commands/wf-new-task.md +8 -0
  55. package/locales/en/overrides/.claude/commands/wf-pipeline-run.md +8 -0
  56. package/locales/en/overrides/.claude/commands/wf-pr-review.md +8 -0
  57. package/locales/en/overrides/.claude/commands/wf-review.md +8 -0
  58. package/locales/en/overrides/.claude/commands/wf-stages.md +8 -0
  59. package/locales/en/overrides/.cline/agents/implementer.yml +13 -0
  60. package/locales/en/overrides/.cline/agents/independent-reviewer.yml +11 -0
  61. package/locales/en/overrides/.cline/agents/pr-adjudicator.yml +11 -0
  62. package/locales/en/overrides/.cline/agents/pr-finder.yml +11 -0
  63. package/locales/en/overrides/.cline/agents/pr-verifier.yml +11 -0
  64. package/locales/en/overrides/.cline/agents/ui-verifier.yml +8 -0
  65. package/locales/en/overrides/.cline/agents/wiki-compiler.yml +14 -0
  66. package/locales/en/overrides/.cline/workflows/wf-deploy.md +8 -0
  67. package/locales/en/overrides/.cline/workflows/wf-maintain.md +8 -0
  68. package/locales/en/overrides/.cline/workflows/wf-new-task.md +8 -0
  69. package/locales/en/overrides/.cline/workflows/wf-pipeline-run.md +8 -0
  70. package/locales/en/overrides/.cline/workflows/wf-pr-review.md +8 -0
  71. package/locales/en/overrides/.cline/workflows/wf-review.md +8 -0
  72. package/locales/en/overrides/.cline/workflows/wf-stages.md +8 -0
  73. package/locales/en/overrides/.codebuddy/CODEBUDDY.md +7 -0
  74. package/locales/en/overrides/.codebuddy/agents/implementer.md +9 -0
  75. package/locales/en/overrides/.codebuddy/agents/independent-reviewer.md +10 -0
  76. package/locales/en/overrides/.codebuddy/agents/pr-adjudicator.md +10 -0
  77. package/locales/en/overrides/.codebuddy/agents/pr-finder.md +10 -0
  78. package/locales/en/overrides/.codebuddy/agents/pr-verifier.md +10 -0
  79. package/locales/en/overrides/.codebuddy/agents/ui-verifier.md +11 -0
  80. package/locales/en/overrides/.codebuddy/agents/wiki-compiler.md +10 -0
  81. package/locales/en/overrides/.codebuddy/commands/wf-deploy.md +8 -0
  82. package/locales/en/overrides/.codebuddy/commands/wf-maintain.md +8 -0
  83. package/locales/en/overrides/.codebuddy/commands/wf-new-task.md +8 -0
  84. package/locales/en/overrides/.codebuddy/commands/wf-pipeline-run.md +8 -0
  85. package/locales/en/overrides/.codebuddy/commands/wf-pr-review.md +8 -0
  86. package/locales/en/overrides/.codebuddy/commands/wf-review.md +8 -0
  87. package/locales/en/overrides/.codebuddy/commands/wf-stages.md +8 -0
  88. package/locales/en/overrides/.codebuddy/rules/backend-scope.md +5 -0
  89. package/locales/en/overrides/.codebuddy/rules/frontend-scope.md +5 -0
  90. package/locales/en/overrides/.codebuddy/skills/tfs-pr/SKILL.md +6 -0
  91. package/locales/en/overrides/.commandcode/agents/implementer.md +10 -0
  92. package/locales/en/overrides/.commandcode/agents/independent-reviewer.md +9 -0
  93. package/locales/en/overrides/.commandcode/agents/pr-adjudicator.md +9 -0
  94. package/locales/en/overrides/.commandcode/agents/pr-finder.md +9 -0
  95. package/locales/en/overrides/.commandcode/agents/pr-verifier.md +9 -0
  96. package/locales/en/overrides/.commandcode/agents/ui-verifier.md +10 -0
  97. package/locales/en/overrides/.commandcode/agents/wiki-compiler.md +10 -0
  98. package/locales/en/overrides/.commandcode/commands/wf-deploy.md +7 -0
  99. package/locales/en/overrides/.commandcode/commands/wf-maintain.md +7 -0
  100. package/locales/en/overrides/.commandcode/commands/wf-new-task.md +7 -0
  101. package/locales/en/overrides/.commandcode/commands/wf-pipeline-run.md +7 -0
  102. package/locales/en/overrides/.commandcode/commands/wf-pr-review.md +7 -0
  103. package/locales/en/overrides/.commandcode/commands/wf-review.md +7 -0
  104. package/locales/en/overrides/.commandcode/commands/wf-stages.md +7 -0
  105. package/locales/en/overrides/.opencode/agents/implementer.md +51 -0
  106. package/locales/en/overrides/.opencode/agents/independent-reviewer.md +18 -0
  107. package/locales/en/overrides/.opencode/agents/pr-adjudicator.md +18 -0
  108. package/locales/en/overrides/.opencode/agents/pr-finder.md +18 -0
  109. package/locales/en/overrides/.opencode/agents/pr-verifier.md +18 -0
  110. package/locales/en/overrides/.opencode/agents/ui-verifier.md +45 -0
  111. package/locales/en/overrides/.opencode/agents/wiki-compiler.md +51 -0
  112. package/locales/en/overrides/.opencode/commands/wf-deploy.md +7 -0
  113. package/locales/en/overrides/.opencode/commands/wf-maintain.md +7 -0
  114. package/locales/en/overrides/.opencode/commands/wf-new-task.md +7 -0
  115. package/locales/en/overrides/.opencode/commands/wf-pipeline-run.md +7 -0
  116. package/locales/en/overrides/.opencode/commands/wf-pr-review.md +7 -0
  117. package/locales/en/overrides/.opencode/commands/wf-review.md +7 -0
  118. package/locales/en/overrides/.opencode/commands/wf-stages.md +7 -0
  119. package/locales/en/overrides/.pi/agents/implementer.md +11 -0
  120. package/locales/en/overrides/.pi/agents/independent-reviewer.md +12 -0
  121. package/locales/en/overrides/.pi/agents/pr-adjudicator.md +12 -0
  122. package/locales/en/overrides/.pi/agents/pr-finder.md +11 -0
  123. package/locales/en/overrides/.pi/agents/pr-verifier.md +11 -0
  124. package/locales/en/overrides/.pi/agents/ui-verifier.md +11 -0
  125. package/locales/en/overrides/.pi/agents/wiki-compiler.md +11 -0
  126. package/locales/en/overrides/.qoder/agents/implementer.md +9 -0
  127. package/locales/en/overrides/.qoder/agents/independent-reviewer.md +10 -0
  128. package/locales/en/overrides/.qoder/agents/pr-adjudicator.md +10 -0
  129. package/locales/en/overrides/.qoder/agents/pr-finder.md +10 -0
  130. package/locales/en/overrides/.qoder/agents/pr-verifier.md +10 -0
  131. package/locales/en/overrides/.qoder/agents/ui-verifier.md +10 -0
  132. package/locales/en/overrides/.qoder/agents/wiki-compiler.md +10 -0
  133. package/locales/en/overrides/.qoder/commands/wf-deploy.md +8 -0
  134. package/locales/en/overrides/.qoder/commands/wf-maintain.md +8 -0
  135. package/locales/en/overrides/.qoder/commands/wf-new-task.md +8 -0
  136. package/locales/en/overrides/.qoder/commands/wf-pipeline-run.md +8 -0
  137. package/locales/en/overrides/.qoder/commands/wf-pr-review.md +8 -0
  138. package/locales/en/overrides/.qoder/commands/wf-review.md +8 -0
  139. package/locales/en/overrides/.qoder/commands/wf-stages.md +8 -0
  140. package/locales/en/overrides/.qwen/agents/implementer.md +10 -0
  141. package/locales/en/overrides/.qwen/agents/independent-reviewer.md +10 -0
  142. package/locales/en/overrides/.qwen/agents/pr-adjudicator.md +10 -0
  143. package/locales/en/overrides/.qwen/agents/pr-finder.md +10 -0
  144. package/locales/en/overrides/.qwen/agents/pr-verifier.md +10 -0
  145. package/locales/en/overrides/.qwen/agents/ui-verifier.md +10 -0
  146. package/locales/en/overrides/.qwen/agents/wiki-compiler.md +13 -0
  147. package/locales/en/overrides/.qwen/commands/wf-deploy.md +7 -0
  148. package/locales/en/overrides/.qwen/commands/wf-maintain.md +7 -0
  149. package/locales/en/overrides/.qwen/commands/wf-new-task.md +7 -0
  150. package/locales/en/overrides/.qwen/commands/wf-pipeline-run.md +7 -0
  151. package/locales/en/overrides/.qwen/commands/wf-pr-review.md +7 -0
  152. package/locales/en/overrides/.qwen/commands/wf-review.md +7 -0
  153. package/locales/en/overrides/.qwen/commands/wf-stages.md +7 -0
  154. package/locales/en/overrides/.trae/agents/implementer.md +9 -0
  155. package/locales/en/overrides/.trae/agents/independent-reviewer.md +10 -0
  156. package/locales/en/overrides/.trae/agents/pr-adjudicator.md +10 -0
  157. package/locales/en/overrides/.trae/agents/pr-finder.md +10 -0
  158. package/locales/en/overrides/.trae/agents/pr-verifier.md +10 -0
  159. package/locales/en/overrides/.trae/agents/ui-verifier.md +10 -0
  160. package/locales/en/overrides/.trae/agents/wiki-compiler.md +10 -0
  161. package/locales/en/overrides/.trae/commands/wf-deploy.md +8 -0
  162. package/locales/en/overrides/.trae/commands/wf-maintain.md +8 -0
  163. package/locales/en/overrides/.trae/commands/wf-new-task.md +8 -0
  164. package/locales/en/overrides/.trae/commands/wf-pipeline-run.md +8 -0
  165. package/locales/en/overrides/.trae/commands/wf-pr-review.md +8 -0
  166. package/locales/en/overrides/.trae/commands/wf-review.md +8 -0
  167. package/locales/en/overrides/.trae/commands/wf-stages.md +8 -0
  168. package/locales/en/overrides/.trae/rules/backend-scope.md +5 -0
  169. package/locales/en/overrides/.trae/rules/frontend-scope.md +5 -0
  170. package/locales/en/overrides/.zcode/agents/implementer.md +8 -0
  171. package/locales/en/overrides/.zcode/agents/independent-reviewer.md +8 -0
  172. package/locales/en/overrides/.zcode/agents/ui-verifier.md +8 -0
  173. package/locales/en/overrides/.zcode/agents/wiki-compiler.md +8 -0
  174. package/locales/en/overrides/AGENTS.md +52 -0
  175. package/locales/en/overrides/CLAUDE.md +20 -0
  176. package/locales/en/overrides/wiki/INDEX.md +33 -0
  177. package/locales/en/overrides/wiki/drafts-archive/README.md +6 -0
  178. package/locales/en/overrides/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +22 -0
  179. package/locales/en/overrides/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +230 -0
  180. package/locales/en/overrides/workflow/INDEX.md +13 -0
  181. package/locales/en/overrides/workflow/README.md +67 -0
  182. package/locales/en/overrides/workflow/archive/README.md +3 -0
  183. package/locales/en/overrides/workflow/delegations.md +4 -0
  184. package/locales/en/overrides/workflow/effective-policy.md +4 -0
  185. package/locales/en/overrides/workflow/gate-cost.md +4 -0
  186. package/locales/en/overrides/workflow/incidents/_TEMPLATE.md +49 -0
  187. package/locales/en/overrides/workflow/intents/_TEMPLATE.md +43 -0
  188. package/locales/en/overrides/workflow/metrics.md +4 -0
  189. package/locales/en/overrides/workflow/papercuts.md +3 -0
  190. package/locales/en/overrides/workflow/plans/_TEMPLATE.md +47 -0
  191. package/locales/en/overrides/workflow/regression-checklist.md +3 -0
  192. package/locales/en/overrides/workflow/specs/_TEMPLATE.md +86 -0
  193. package/locales/en/overrides/workflow/verify-evidence.md +4 -0
  194. package/locales/zh-CN/installer.json +25 -0
  195. package/package.json +23 -36
  196. package/schemas/install-manifest.schema.json +24 -0
  197. package/schemas/project-profile.schema.json +28 -0
  198. package/src/cli/args.mjs +41 -0
  199. package/src/cli/main.mjs +72 -0
  200. package/src/commands/add-host.mjs +29 -0
  201. package/src/commands/doctor.mjs +80 -0
  202. package/src/commands/install.mjs +149 -0
  203. package/src/commands/upgrade.mjs +30 -0
  204. package/src/git/config.mjs +61 -0
  205. package/src/hosts/registry.mjs +26 -0
  206. package/src/i18n.mjs +32 -0
  207. package/src/install/apply.mjs +124 -0
  208. package/src/install/manifest.mjs +40 -0
  209. package/src/install/plan.mjs +83 -0
  210. package/src/render/tokens.mjs +58 -0
  211. package/templates/engine/.agents/board/dev-tour.html +1940 -0
  212. package/templates/engine/.agents/board/index.html +835 -0
  213. package/templates/engine/.agents/commands/deploy.md +52 -0
  214. package/templates/engine/.agents/commands/maintain.md +76 -0
  215. package/templates/engine/.agents/commands/new-task.md +89 -0
  216. package/templates/engine/.agents/commands/pipeline-run.md +56 -0
  217. package/templates/engine/.agents/commands/pr-review.md +30 -0
  218. package/templates/engine/.agents/commands/review.md +93 -0
  219. package/templates/engine/.agents/commands/stages.md +256 -0
  220. package/templates/engine/.agents/config/commit-msg-rules.json +7 -0
  221. package/templates/engine/.agents/config/engine.json +11 -0
  222. package/templates/engine/.agents/config/gate-budgets.json +5 -0
  223. package/templates/engine/.agents/config/mechanism-registry.md +62 -0
  224. package/templates/engine/.agents/config/model-roles.json +26 -0
  225. package/templates/engine/.agents/config/model-roles.local.example.json +7 -0
  226. package/templates/engine/.agents/config/pr-review.json +67 -0
  227. package/templates/engine/.agents/config/principles.md +32 -0
  228. package/templates/engine/.agents/config/workflow-enums.txt +25 -0
  229. package/templates/engine/.agents/hooks/check-architecture.mjs +168 -0
  230. package/templates/engine/.agents/hooks/check-audit-fields.mjs +56 -0
  231. package/templates/engine/.agents/hooks/check-commit-plan-ref.mjs +84 -0
  232. package/templates/engine/.agents/hooks/check-confirm-order.mjs +281 -0
  233. package/templates/engine/.agents/hooks/check-delete-guard.mjs +63 -0
  234. package/templates/engine/.agents/hooks/check-notify-guard.mjs +55 -0
  235. package/templates/engine/.agents/hooks/commit-check.cjs +208 -0
  236. package/templates/engine/.agents/hooks/gates.json +33 -0
  237. package/templates/engine/.agents/hooks/local-pre-commit.mjs +27 -0
  238. package/templates/engine/.agents/hooks/pre-shell-check.cjs +361 -0
  239. package/templates/engine/.agents/hooks/pre-write-check.cjs +220 -0
  240. package/templates/engine/.agents/notes/gate-diet.md +75 -0
  241. package/templates/engine/.agents/notes/pr-review-cost-discipline.md +48 -0
  242. package/templates/engine/.agents/notes/process-order-rule.md +21 -0
  243. package/templates/engine/.agents/notes/runtime-env.local.example.md +21 -0
  244. package/templates/engine/.agents/pipelines/_TEMPLATE.md +75 -0
  245. package/templates/engine/.agents/pipelines/pipeline-closing.md +28 -0
  246. package/templates/engine/.agents/pipelines//347/244/272/344/276/213-/345/271/266/350/241/214/345/256/236/347/216/260/350/257/204/345/256/241.md +16 -0
  247. package/templates/engine/.agents/roles/implementer.md +28 -0
  248. package/templates/engine/.agents/roles/independent-reviewer.md +39 -0
  249. package/templates/engine/.agents/roles/pr-adjudicator.md +27 -0
  250. package/templates/engine/.agents/roles/pr-finder.md +51 -0
  251. package/templates/engine/.agents/roles/pr-verifier.md +44 -0
  252. package/templates/engine/.agents/roles/ui-verifier.md +22 -0
  253. package/templates/engine/.agents/roles/wiki-compiler.md +47 -0
  254. package/templates/engine/.agents/scripts/agg-delegations.mjs +439 -0
  255. package/templates/engine/.agents/scripts/agg-judgments.mjs +301 -0
  256. package/templates/engine/.agents/scripts/agg-kb-usage.mjs +196 -0
  257. package/templates/engine/.agents/scripts/append-compensation.mjs +109 -0
  258. package/templates/engine/.agents/scripts/archive-sweep.mjs +229 -0
  259. package/templates/engine/.agents/scripts/auto-tour.mjs +77 -0
  260. package/templates/engine/.agents/scripts/board-port.mjs +17 -0
  261. package/templates/engine/.agents/scripts/check-doc-body-drift.mjs +102 -0
  262. package/templates/engine/.agents/scripts/check-engine-artifacts.mjs +54 -0
  263. package/templates/engine/.agents/scripts/check-hook-wiring.mjs +75 -0
  264. package/templates/engine/.agents/scripts/check-lane-surface.mjs +393 -0
  265. package/templates/engine/.agents/scripts/check-ledger-doc-presence.mjs +71 -0
  266. package/templates/engine/.agents/scripts/check-ledger-invariant.mjs +873 -0
  267. package/templates/engine/.agents/scripts/check-local-gate-config.mjs +95 -0
  268. package/templates/engine/.agents/scripts/check-local-gates.mjs +248 -0
  269. package/templates/engine/.agents/scripts/check-loop-kit.mjs +550 -0
  270. package/templates/engine/.agents/scripts/check-loop-rev-semantics.mjs +59 -0
  271. package/templates/engine/.agents/scripts/check-loop-sections/s01-pairing.mjs +116 -0
  272. package/templates/engine/.agents/scripts/check-loop-sections/s03x-regr-evidence.mjs +38 -0
  273. package/templates/engine/.agents/scripts/check-loop-sections/s08-acceptance.mjs +130 -0
  274. package/templates/engine/.agents/scripts/check-loop-sections/s15-fingerprint.mjs +152 -0
  275. package/templates/engine/.agents/scripts/check-loop-sections/s23-convergence-audit.mjs +182 -0
  276. package/templates/engine/.agents/scripts/check-loop-sections/s29-regr-enforcer.mjs +69 -0
  277. package/templates/engine/.agents/scripts/check-loop.mjs +131 -0
  278. package/templates/engine/.agents/scripts/check-regression-consistency.mjs +252 -0
  279. package/templates/engine/.agents/scripts/check-schema-residue.mjs +144 -0
  280. package/templates/engine/.agents/scripts/check-scope-range.mjs +156 -0
  281. package/templates/engine/.agents/scripts/check-scope.mjs +121 -0
  282. package/templates/engine/.agents/scripts/check-scripts-syntax.mjs +138 -0
  283. package/templates/engine/.agents/scripts/check-secrets-lite.mjs +239 -0
  284. package/templates/engine/.agents/scripts/check-secrets.mjs +104 -0
  285. package/templates/engine/.agents/scripts/check-test-impact-map.mjs +107 -0
  286. package/templates/engine/.agents/scripts/ci-assert-frontend-deps.mjs +42 -0
  287. package/templates/engine/.agents/scripts/ci-commit-hygiene.mjs +86 -0
  288. package/templates/engine/.agents/scripts/ci-install-gitleaks.mjs +75 -0
  289. package/templates/engine/.agents/scripts/ci-push-before.mjs +49 -0
  290. package/templates/engine/.agents/scripts/closeout.mjs +127 -0
  291. package/templates/engine/.agents/scripts/compact-ledgers.mjs +70 -0
  292. package/templates/engine/.agents/scripts/confirm-doc.mjs +737 -0
  293. package/templates/engine/.agents/scripts/delegation-presence.mjs +38 -0
  294. package/templates/engine/.agents/scripts/dev-tour-model.mjs +1398 -0
  295. package/templates/engine/.agents/scripts/dream-run.mjs +283 -0
  296. package/templates/engine/.agents/scripts/ensure-board.mjs +187 -0
  297. package/templates/engine/.agents/scripts/failure-attribution.mjs +11 -0
  298. package/templates/engine/.agents/scripts/fill-intent.mjs +60 -0
  299. package/templates/engine/.agents/scripts/fill-plan.mjs +105 -0
  300. package/templates/engine/.agents/scripts/fill-spec.mjs +72 -0
  301. package/templates/engine/.agents/scripts/gen-dev-tour.mjs +191 -0
  302. package/templates/engine/.agents/scripts/gen-effective-policy.mjs +113 -0
  303. package/templates/engine/.agents/scripts/gen-engine-map.mjs +292 -0
  304. package/templates/engine/.agents/scripts/gen-narrative-claims.mjs +275 -0
  305. package/templates/engine/.agents/scripts/gen-verify-evidence.mjs +115 -0
  306. package/templates/engine/.agents/scripts/gen-wiki-board.mjs +221 -0
  307. package/templates/engine/.agents/scripts/gen-workflow-index.mjs +201 -0
  308. package/templates/engine/.agents/scripts/gen-workflow-metrics.mjs +692 -0
  309. package/templates/engine/.agents/scripts/git-merge-jsonl.mjs +62 -0
  310. package/templates/engine/.agents/scripts/judgment-ledger.mjs +68 -0
  311. package/templates/engine/.agents/scripts/kb-cache-evict.mjs +50 -0
  312. package/templates/engine/.agents/scripts/kb-search.mjs +423 -0
  313. package/templates/engine/.agents/scripts/lane-surface-audit.mjs +145 -0
  314. package/templates/engine/.agents/scripts/ledger-loader.mjs +77 -0
  315. package/templates/engine/.agents/scripts/ledger-shards.mjs +346 -0
  316. package/templates/engine/.agents/scripts/metrics-core.mjs +131 -0
  317. package/templates/engine/.agents/scripts/pipeline-run.mjs +964 -0
  318. package/templates/engine/.agents/scripts/policy.mjs +250 -0
  319. package/templates/engine/.agents/scripts/pr-create.mjs +54 -0
  320. package/templates/engine/.agents/scripts/pr-review.mjs +1551 -0
  321. package/templates/engine/.agents/scripts/quote-grounding.mjs +233 -0
  322. package/templates/engine/.agents/scripts/regen-ledgers.mjs +59 -0
  323. package/templates/engine/.agents/scripts/rewrite-file.mjs +135 -0
  324. package/templates/engine/.agents/scripts/rule-budget.mjs +246 -0
  325. package/templates/engine/.agents/scripts/stage-gates.mjs +812 -0
  326. package/templates/engine/.agents/scripts/test-impact-lib.mjs +451 -0
  327. package/templates/engine/.agents/scripts/test-impact.mjs +105 -0
  328. package/templates/engine/.agents/scripts/trust-mode.mjs +130 -0
  329. package/templates/engine/.agents/scripts/verify-scope.mjs +163 -0
  330. package/templates/engine/.agents/scripts/verify-wiki-consistency.mjs +264 -0
  331. package/templates/engine/.agents/scripts/verify.mjs +847 -0
  332. package/templates/engine/.agents/scripts/warn-format.mjs +57 -0
  333. package/templates/engine/.agents/scripts/wf-journal.mjs +230 -0
  334. package/templates/engine/.agents/scripts/workflow-board-server.mjs +696 -0
  335. package/templates/engine/.agents/scripts/workflow-enums.mjs +70 -0
  336. package/templates/engine/.agents/scripts/workflows-check.mjs +260 -0
  337. package/templates/engine/.agents/settings.json +33 -0
  338. package/templates/engine/.agents/skills/arena/SKILL.md +50 -0
  339. package/templates/engine/.agents/skills/autonomous-run/SKILL.md +45 -0
  340. package/templates/engine/.agents/skills/blast-radius/SKILL.md +53 -0
  341. package/templates/engine/.agents/skills/csharp-quality-gates/SKILL.md +109 -0
  342. package/templates/engine/.agents/skills/csharp-quality-gates/scripts/quality-gates.mjs +430 -0
  343. package/templates/engine/.agents/skills/dev-tour/SKILL.md +98 -0
  344. package/templates/engine/.agents/skills/dream/SKILL.md +63 -0
  345. package/templates/engine/.agents/skills/eval/SKILL.md +42 -0
  346. package/templates/engine/.agents/skills/eval/scripts/eval-score.mjs +59 -0
  347. package/templates/engine/.agents/skills/interrogate/SKILL.md +49 -0
  348. package/templates/engine/.agents/skills/interrogate/scripts/interrogate-plan.mjs +72 -0
  349. package/templates/engine/.agents/skills/number-vetting/SKILL.md +35 -0
  350. package/templates/engine/.agents/skills/page-refactor/SKILL.md +192 -0
  351. package/templates/engine/.agents/skills/page-refactor/references/templates.md +989 -0
  352. package/templates/engine/.agents/skills/papercut-fix/SKILL.md +92 -0
  353. package/templates/engine/.agents/skills/papercut-fix/references/response-template.md +81 -0
  354. package/templates/engine/.agents/skills/pause-safely/SKILL.md +31 -0
  355. package/templates/engine/.agents/skills/perf/SKILL.md +42 -0
  356. package/templates/engine/.agents/skills/review-method/SKILL.md +92 -0
  357. package/templates/engine/.agents/skills/review-method/golden-set.md +61 -0
  358. package/templates/engine/.agents/skills/session-resume/SKILL.md +69 -0
  359. package/templates/engine/.agents/skills/session-resume/scripts/worktree-audit.mjs +110 -0
  360. package/templates/engine/.agents/skills/shipyard-workflow-closeout/SKILL.md +109 -0
  361. package/templates/engine/.agents/skills/show-me-your-work/SKILL.md +57 -0
  362. package/templates/engine/.agents/skills/show-me-your-work/references/decision-log-template.tsv +1 -0
  363. package/templates/engine/.agents/skills/show-me-your-work/scripts/decision-log.mjs +24 -0
  364. package/templates/engine/.agents/skills/tfs-pr/SKILL.md +95 -0
  365. package/templates/engine/.agents/skills/tfs-pr/scripts/tfs-pr.mjs +947 -0
  366. package/templates/engine/.agents/skills/verify-ui/SKILL.md +116 -0
  367. package/templates/engine/.agents/skills/verify-ui/features/.gitkeep +0 -0
  368. package/templates/engine/.agents/skills/verify-ui/scripts/gen-verify-feature.mjs +114 -0
  369. package/templates/engine/.agents/skills/visual-parity/SKILL.md +35 -0
  370. package/templates/engine/.agents/skills/why/SKILL.md +56 -0
  371. package/templates/engine/.agents/skills/why/scripts/why-evidence.mjs +74 -0
  372. package/templates/engine/.agents/skills/wiki/SKILL.md +53 -0
  373. package/templates/engine/.agents/tests/auto-tour.test.mjs +82 -0
  374. package/templates/engine/.agents/tests/dev-tour-model.test.mjs +452 -0
  375. package/templates/engine/.agents/tests/fill-plan-lite.test.mjs +46 -0
  376. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-bare-mid-path.md +14 -0
  377. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-bare-mid-path.model.json +179 -0
  378. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-fake-path-guard.md +21 -0
  379. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-fake-path-guard.model.json +194 -0
  380. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-h3-batches.md +20 -0
  381. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-h3-batches.model.json +207 -0
  382. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-issues.md +24 -0
  383. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-issues.model.json +225 -0
  384. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-l1-single-file.md +15 -0
  385. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-l1-single-file.model.json +160 -0
  386. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layer-word-unique.md +29 -0
  387. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layer-word-unique.model.json +266 -0
  388. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layers-fallback.md +17 -0
  389. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layers-fallback.model.json +207 -0
  390. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-numbered-steps.md +39 -0
  391. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-numbered-steps.model.json +359 -0
  392. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-path-guess.md +16 -0
  393. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-path-guess.model.json +131 -0
  394. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-table-rows.md +29 -0
  395. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-table-rows.model.json +190 -0
  396. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-task-checkboxes.md +39 -0
  397. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-task-checkboxes.model.json +362 -0
  398. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-union-label.md +24 -0
  399. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-union-label.model.json +224 -0
  400. package/templates/engine/.agents/tests/tools/gen-synthetic-plan.mjs +108 -0
  401. package/templates/git/.gitattributes +22 -0
  402. package/templates/git/.githooks/commit-msg +72 -0
  403. package/templates/git/.githooks/post-commit +62 -0
  404. package/templates/git/.githooks/pre-commit +197 -0
  405. package/templates/git/.githooks/pre-merge-commit +28 -0
  406. package/templates/git/.githooks/pre-push +201 -0
  407. package/templates/git/.gitignore.engine +11 -0
  408. package/templates/hosts/claude/CLAUDE.md +55 -0
  409. package/templates/hosts/claude/agents/implementer.md +7 -0
  410. package/templates/hosts/claude/agents/independent-reviewer.md +8 -0
  411. package/templates/hosts/claude/agents/pr-adjudicator.md +8 -0
  412. package/templates/hosts/claude/agents/pr-finder.md +8 -0
  413. package/templates/hosts/claude/agents/pr-verifier.md +8 -0
  414. package/templates/hosts/claude/agents/ui-verifier.md +8 -0
  415. package/templates/hosts/claude/agents/wiki-compiler.md +8 -0
  416. package/templates/hosts/claude/commands/wf-deploy.md +10 -0
  417. package/templates/hosts/claude/commands/wf-maintain.md +10 -0
  418. package/templates/hosts/claude/commands/wf-new-task.md +10 -0
  419. package/templates/hosts/claude/commands/wf-pipeline-run.md +10 -0
  420. package/templates/hosts/claude/commands/wf-pr-review.md +10 -0
  421. package/templates/hosts/claude/commands/wf-review.md +10 -0
  422. package/templates/hosts/claude/commands/wf-stages.md +10 -0
  423. package/templates/hosts/claude/settings.json +57 -0
  424. package/templates/hosts/cline/agents/implementer.yml +15 -0
  425. package/templates/hosts/cline/agents/independent-reviewer.yml +20 -0
  426. package/templates/hosts/cline/agents/pr-adjudicator.yml +18 -0
  427. package/templates/hosts/cline/agents/pr-finder.yml +19 -0
  428. package/templates/hosts/cline/agents/pr-verifier.yml +18 -0
  429. package/templates/hosts/cline/agents/ui-verifier.yml +17 -0
  430. package/templates/hosts/cline/agents/wiki-compiler.yml +20 -0
  431. package/templates/hosts/cline/hooks/PreToolUse.cjs +260 -0
  432. package/templates/hosts/cline/workflows/wf-deploy.md +8 -0
  433. package/templates/hosts/cline/workflows/wf-maintain.md +8 -0
  434. package/templates/hosts/cline/workflows/wf-new-task.md +8 -0
  435. package/templates/hosts/cline/workflows/wf-pipeline-run.md +8 -0
  436. package/templates/hosts/cline/workflows/wf-pr-review.md +8 -0
  437. package/templates/hosts/cline/workflows/wf-review.md +8 -0
  438. package/templates/hosts/cline/workflows/wf-stages.md +8 -0
  439. package/templates/hosts/codebuddy/CODEBUDDY.md +7 -0
  440. package/templates/hosts/codebuddy/agents/implementer.md +9 -0
  441. package/templates/hosts/codebuddy/agents/independent-reviewer.md +10 -0
  442. package/templates/hosts/codebuddy/agents/pr-adjudicator.md +10 -0
  443. package/templates/hosts/codebuddy/agents/pr-finder.md +10 -0
  444. package/templates/hosts/codebuddy/agents/pr-verifier.md +10 -0
  445. package/templates/hosts/codebuddy/agents/ui-verifier.md +11 -0
  446. package/templates/hosts/codebuddy/agents/wiki-compiler.md +10 -0
  447. package/templates/hosts/codebuddy/commands/wf-deploy.md +10 -0
  448. package/templates/hosts/codebuddy/commands/wf-maintain.md +10 -0
  449. package/templates/hosts/codebuddy/commands/wf-new-task.md +10 -0
  450. package/templates/hosts/codebuddy/commands/wf-pipeline-run.md +10 -0
  451. package/templates/hosts/codebuddy/commands/wf-pr-review.md +10 -0
  452. package/templates/hosts/codebuddy/commands/wf-review.md +10 -0
  453. package/templates/hosts/codebuddy/commands/wf-stages.md +10 -0
  454. package/templates/hosts/codebuddy/rules/backend-scope.md +5 -0
  455. package/templates/hosts/codebuddy/rules/frontend-scope.md +5 -0
  456. package/templates/hosts/codebuddy/settings.json +31 -0
  457. package/templates/hosts/codebuddy/skills/tfs-pr/SKILL.md +6 -0
  458. package/templates/hosts/commandcode/agents/implementer.md +10 -0
  459. package/templates/hosts/commandcode/agents/independent-reviewer.md +9 -0
  460. package/templates/hosts/commandcode/agents/pr-adjudicator.md +9 -0
  461. package/templates/hosts/commandcode/agents/pr-finder.md +9 -0
  462. package/templates/hosts/commandcode/agents/pr-verifier.md +9 -0
  463. package/templates/hosts/commandcode/agents/ui-verifier.md +11 -0
  464. package/templates/hosts/commandcode/agents/wiki-compiler.md +10 -0
  465. package/templates/hosts/commandcode/commands/wf-deploy.md +9 -0
  466. package/templates/hosts/commandcode/commands/wf-maintain.md +9 -0
  467. package/templates/hosts/commandcode/commands/wf-new-task.md +9 -0
  468. package/templates/hosts/commandcode/commands/wf-pipeline-run.md +9 -0
  469. package/templates/hosts/commandcode/commands/wf-pr-review.md +9 -0
  470. package/templates/hosts/commandcode/commands/wf-review.md +9 -0
  471. package/templates/hosts/commandcode/commands/wf-stages.md +9 -0
  472. package/templates/hosts/commandcode/settings.json +59 -0
  473. package/templates/hosts/opencode/agents/implementer.md +51 -0
  474. package/templates/hosts/opencode/agents/independent-reviewer.md +18 -0
  475. package/templates/hosts/opencode/agents/pr-adjudicator.md +18 -0
  476. package/templates/hosts/opencode/agents/pr-finder.md +18 -0
  477. package/templates/hosts/opencode/agents/pr-verifier.md +18 -0
  478. package/templates/hosts/opencode/agents/ui-verifier.md +45 -0
  479. package/templates/hosts/opencode/agents/wiki-compiler.md +51 -0
  480. package/templates/hosts/opencode/commands/wf-deploy.md +7 -0
  481. package/templates/hosts/opencode/commands/wf-maintain.md +7 -0
  482. package/templates/hosts/opencode/commands/wf-new-task.md +7 -0
  483. package/templates/hosts/opencode/commands/wf-pipeline-run.md +7 -0
  484. package/templates/hosts/opencode/commands/wf-pr-review.md +7 -0
  485. package/templates/hosts/opencode/commands/wf-review.md +7 -0
  486. package/templates/hosts/opencode/commands/wf-stages.md +7 -0
  487. package/templates/hosts/pi/agents/implementer.md +10 -0
  488. package/templates/hosts/pi/agents/independent-reviewer.md +11 -0
  489. package/templates/hosts/pi/agents/pr-adjudicator.md +11 -0
  490. package/templates/hosts/pi/agents/pr-finder.md +10 -0
  491. package/templates/hosts/pi/agents/pr-verifier.md +10 -0
  492. package/templates/hosts/pi/agents/ui-verifier.md +10 -0
  493. package/templates/hosts/pi/agents/wiki-compiler.md +10 -0
  494. package/templates/hosts/pi/extensions/lib/gates-core.cjs +196 -0
  495. package/templates/hosts/pi/extensions/shipyard-gates.ts +95 -0
  496. package/templates/hosts/pi/settings.json +5 -0
  497. package/templates/hosts/qoder/agents/implementer.md +9 -0
  498. package/templates/hosts/qoder/agents/independent-reviewer.md +10 -0
  499. package/templates/hosts/qoder/agents/pr-adjudicator.md +10 -0
  500. package/templates/hosts/qoder/agents/pr-finder.md +10 -0
  501. package/templates/hosts/qoder/agents/pr-verifier.md +10 -0
  502. package/templates/hosts/qoder/agents/ui-verifier.md +10 -0
  503. package/templates/hosts/qoder/agents/wiki-compiler.md +10 -0
  504. package/templates/hosts/qoder/commands/wf-deploy.md +8 -0
  505. package/templates/hosts/qoder/commands/wf-maintain.md +8 -0
  506. package/templates/hosts/qoder/commands/wf-new-task.md +8 -0
  507. package/templates/hosts/qoder/commands/wf-pipeline-run.md +8 -0
  508. package/templates/hosts/qoder/commands/wf-pr-review.md +8 -0
  509. package/templates/hosts/qoder/commands/wf-review.md +8 -0
  510. package/templates/hosts/qoder/commands/wf-stages.md +8 -0
  511. package/templates/hosts/qoder/settings.json +63 -0
  512. package/templates/hosts/qwen/agents/implementer.md +8 -0
  513. package/templates/hosts/qwen/agents/independent-reviewer.md +8 -0
  514. package/templates/hosts/qwen/agents/pr-adjudicator.md +8 -0
  515. package/templates/hosts/qwen/agents/pr-finder.md +8 -0
  516. package/templates/hosts/qwen/agents/pr-verifier.md +8 -0
  517. package/templates/hosts/qwen/agents/ui-verifier.md +8 -0
  518. package/templates/hosts/qwen/agents/wiki-compiler.md +11 -0
  519. package/templates/hosts/qwen/commands/wf-deploy.md +9 -0
  520. package/templates/hosts/qwen/commands/wf-maintain.md +9 -0
  521. package/templates/hosts/qwen/commands/wf-new-task.md +9 -0
  522. package/templates/hosts/qwen/commands/wf-pipeline-run.md +9 -0
  523. package/templates/hosts/qwen/commands/wf-pr-review.md +9 -0
  524. package/templates/hosts/qwen/commands/wf-review.md +9 -0
  525. package/templates/hosts/qwen/commands/wf-stages.md +9 -0
  526. package/templates/hosts/qwen/settings.json +59 -0
  527. package/templates/hosts/trae/agents/implementer.md +9 -0
  528. package/templates/hosts/trae/agents/independent-reviewer.md +10 -0
  529. package/templates/hosts/trae/agents/pr-adjudicator.md +10 -0
  530. package/templates/hosts/trae/agents/pr-finder.md +10 -0
  531. package/templates/hosts/trae/agents/pr-verifier.md +10 -0
  532. package/templates/hosts/trae/agents/ui-verifier.md +10 -0
  533. package/templates/hosts/trae/agents/wiki-compiler.md +10 -0
  534. package/templates/hosts/trae/commands/wf-deploy.md +8 -0
  535. package/templates/hosts/trae/commands/wf-maintain.md +8 -0
  536. package/templates/hosts/trae/commands/wf-new-task.md +8 -0
  537. package/templates/hosts/trae/commands/wf-pipeline-run.md +8 -0
  538. package/templates/hosts/trae/commands/wf-pr-review.md +8 -0
  539. package/templates/hosts/trae/commands/wf-review.md +8 -0
  540. package/templates/hosts/trae/commands/wf-stages.md +8 -0
  541. package/templates/hosts/trae/hooks.json +17 -0
  542. package/templates/hosts/trae/rules/backend-scope.md +5 -0
  543. package/templates/hosts/trae/rules/frontend-scope.md +5 -0
  544. package/templates/hosts/zcode/agents/implementer.md +8 -0
  545. package/templates/hosts/zcode/agents/independent-reviewer.md +8 -0
  546. package/templates/hosts/zcode/agents/ui-verifier.md +8 -0
  547. package/templates/hosts/zcode/agents/wiki-compiler.md +8 -0
  548. package/templates/hosts/zcode/config.json +31 -0
  549. package/templates/hosts/zcode/workflows/code-review.dwf.ts +428 -0
  550. package/templates/hosts/zcode/workflows/fullchain-flow-test.dwf.ts +898 -0
  551. package/templates/profiles/dotnet/.agents/config/lane-surfaces.txt +33 -0
  552. package/templates/profiles/dotnet/.agents/config/rule-budgets.txt +84 -0
  553. package/templates/profiles/dotnet/.agents/config/test-impact-map.json +590 -0
  554. package/templates/profiles/dotnet/.agents/config/workflow-modules.txt +18 -0
  555. package/templates/profiles/dotnet/.agents/hooks/commit-check.config.json +18 -0
  556. package/templates/profiles/dotnet/.agents/hooks/delete-guard-allowlist.txt +28 -0
  557. package/templates/profiles/dotnet/.agents/notes/runtime-env.md +178 -0
  558. package/templates/profiles/dotnet/AGENTS.md +52 -0
  559. package/templates/profiles/empty/.agents/config/lane-surfaces.txt +12 -0
  560. package/templates/profiles/empty/.agents/config/rule-budgets.txt +3 -0
  561. package/templates/profiles/empty/.agents/config/test-impact-map.json +8 -0
  562. package/templates/profiles/empty/.agents/config/workflow-modules.txt +2 -0
  563. package/templates/profiles/empty/.agents/hooks/commit-check.config.json +5 -0
  564. package/templates/profiles/empty/.agents/hooks/delete-guard-allowlist.txt +2 -0
  565. package/templates/profiles/empty/.agents/notes/runtime-env.md +44 -0
  566. package/templates/profiles/empty/AGENTS.md +52 -0
  567. package/templates/profiles/node/.agents/config/lane-surfaces.txt +12 -0
  568. package/templates/profiles/node/.agents/config/rule-budgets.txt +3 -0
  569. package/templates/profiles/node/.agents/config/test-impact-map.json +8 -0
  570. package/templates/profiles/node/.agents/config/workflow-modules.txt +2 -0
  571. package/templates/profiles/node/.agents/hooks/commit-check.config.json +5 -0
  572. package/templates/profiles/node/.agents/hooks/delete-guard-allowlist.txt +2 -0
  573. package/templates/profiles/node/.agents/notes/runtime-env.md +44 -0
  574. package/templates/profiles/node/AGENTS.md +52 -0
  575. package/templates/scaffold/wiki/INDEX.md +33 -0
  576. package/templates/scaffold/wiki/drafts-archive/README.md +7 -0
  577. package/templates/scaffold/wiki//344/272/247/345/223/201/351/234/200/346/261/202/.gitkeep +0 -0
  578. package/templates/scaffold/wiki//345/274/200/345/217/221/346/226/271/346/241/210/.gitkeep +0 -0
  579. package/templates/scaffold/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +22 -0
  580. package/templates/scaffold/wiki//346/265/213/350/257/225/346/212/245/345/221/212/.gitkeep +0 -0
  581. package/templates/scaffold/wiki//347/224/250/346/210/267/345/212/237/350/203/275/.gitkeep +0 -0
  582. package/templates/scaffold/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +230 -0
  583. package/templates/scaffold/wiki//351/241/271/347/233/256/350/247/204/350/214/203/.gitkeep +0 -0
  584. package/templates/scaffold/workflow/INDEX.md +13 -0
  585. package/templates/scaffold/workflow/README.md +67 -0
  586. package/templates/scaffold/workflow/archive/README.md +3 -0
  587. package/templates/scaffold/workflow/delegations.d/.gitkeep +0 -0
  588. package/templates/scaffold/workflow/delegations.md +4 -0
  589. package/templates/scaffold/workflow/effective-policy.md +4 -0
  590. package/templates/scaffold/workflow/evidence/.gitkeep +0 -0
  591. package/templates/scaffold/workflow/gate-cost.md +4 -0
  592. package/templates/scaffold/workflow/gate-metrics.d/.gitkeep +0 -0
  593. package/templates/scaffold/workflow/incidents/_TEMPLATE.md +49 -0
  594. package/templates/scaffold/workflow/intents/_TEMPLATE.md +43 -0
  595. package/templates/scaffold/workflow/metrics.md +4 -0
  596. package/templates/scaffold/workflow/papercuts.d/.gitkeep +0 -0
  597. package/templates/scaffold/workflow/papercuts.md +3 -0
  598. package/templates/scaffold/workflow/plans/_TEMPLATE.md +47 -0
  599. package/templates/scaffold/workflow/regression-checklist.d/.gitkeep +0 -0
  600. package/templates/scaffold/workflow/regression-checklist.md +3 -0
  601. package/templates/scaffold/workflow/research/.gitkeep +0 -0
  602. package/templates/scaffold/workflow/reviews.d/.gitkeep +0 -0
  603. package/templates/scaffold/workflow/specs/_TEMPLATE.md +87 -0
  604. package/templates/scaffold/workflow/verify-evidence/.gitkeep +0 -0
  605. package/templates/scaffold/workflow/verify-evidence.md +4 -0
  606. package/LICENSE +0 -21
  607. package/modules/gates/README.md +0 -25
  608. package/modules/gates/dotnet-ca/README.md +0 -24
  609. package/modules/gates/dotnet-ca/check-architecture.sh +0 -150
  610. package/modules/gates/dotnet-ca/local-pre-commit.line +0 -1
  611. package/modules/gates/generated-readonly/README.md +0 -13
  612. package/modules/gates/generated-readonly/check-generated.mjs +0 -61
  613. package/modules/gates/generated-readonly/local-pre-commit.line +0 -1
  614. package/modules/gates/node-layer/README.md +0 -9
  615. package/modules/gates/node-layer/check-node-layer.mjs +0 -29
  616. package/modules/gates/node-layer/local-pre-commit.line +0 -1
  617. package/modules/gates/py-import/README.md +0 -9
  618. package/modules/gates/py-import/check-py-import.mjs +0 -30
  619. package/modules/gates/py-import/local-pre-commit.line +0 -1
  620. package/modules/gates/test-protect/README.md +0 -23
  621. package/modules/gates/test-protect/check-test-protect.mjs +0 -64
  622. package/modules/gates/test-protect/local-pre-commit.line +0 -1
  623. package/modules/hosts/README.md +0 -57
  624. package/modules/hosts/claude/agents/implementer.md +0 -51
  625. package/modules/hosts/claude/agents/independent-reviewer.md +0 -49
  626. package/modules/hosts/claude/agents/ui-verifier.md +0 -48
  627. package/modules/hosts/claude/commands/wf-build.md +0 -69
  628. package/modules/hosts/claude/commands/wf-deploy.md +0 -58
  629. package/modules/hosts/claude/commands/wf-design.md +0 -49
  630. package/modules/hosts/claude/commands/wf-gate-checklist.md +0 -77
  631. package/modules/hosts/claude/commands/wf-maintain.md +0 -76
  632. package/modules/hosts/claude/commands/wf-new-task.md +0 -102
  633. package/modules/hosts/claude/commands/wf-pipeline-run.md +0 -35
  634. package/modules/hosts/claude/commands/wf-plan.md +0 -40
  635. package/modules/hosts/claude/commands/wf-review.md +0 -49
  636. package/modules/hosts/claude/commands/wf-sync-hosts.md +0 -64
  637. package/modules/hosts/claude/commands/wf-test.md +0 -68
  638. package/modules/hosts/codex/agents/implementer.md +0 -51
  639. package/modules/hosts/codex/agents/independent-reviewer.md +0 -49
  640. package/modules/hosts/codex/agents/ui-verifier.md +0 -48
  641. package/modules/hosts/codex/commands/wf-build.md +0 -69
  642. package/modules/hosts/codex/commands/wf-deploy.md +0 -58
  643. package/modules/hosts/codex/commands/wf-design.md +0 -49
  644. package/modules/hosts/codex/commands/wf-gate-checklist.md +0 -77
  645. package/modules/hosts/codex/commands/wf-maintain.md +0 -76
  646. package/modules/hosts/codex/commands/wf-new-task.md +0 -102
  647. package/modules/hosts/codex/commands/wf-pipeline-run.md +0 -35
  648. package/modules/hosts/codex/commands/wf-plan.md +0 -40
  649. package/modules/hosts/codex/commands/wf-review.md +0 -49
  650. package/modules/hosts/codex/commands/wf-sync-hosts.md +0 -64
  651. package/modules/hosts/codex/commands/wf-test.md +0 -68
  652. package/modules/hosts/codex/skills/flow-kit/SKILL.md +0 -14
  653. package/modules/hosts/cursor/agents/implementer.md +0 -51
  654. package/modules/hosts/cursor/agents/independent-reviewer.md +0 -49
  655. package/modules/hosts/cursor/agents/ui-verifier.md +0 -48
  656. package/modules/hosts/cursor/commands/wf-build.md +0 -69
  657. package/modules/hosts/cursor/commands/wf-deploy.md +0 -58
  658. package/modules/hosts/cursor/commands/wf-design.md +0 -49
  659. package/modules/hosts/cursor/commands/wf-gate-checklist.md +0 -77
  660. package/modules/hosts/cursor/commands/wf-maintain.md +0 -76
  661. package/modules/hosts/cursor/commands/wf-new-task.md +0 -102
  662. package/modules/hosts/cursor/commands/wf-pipeline-run.md +0 -35
  663. package/modules/hosts/cursor/commands/wf-plan.md +0 -40
  664. package/modules/hosts/cursor/commands/wf-review.md +0 -49
  665. package/modules/hosts/cursor/commands/wf-sync-hosts.md +0 -64
  666. package/modules/hosts/cursor/commands/wf-test.md +0 -68
  667. package/modules/hosts/omp/agents/implementer.md +0 -52
  668. package/modules/hosts/omp/agents/independent-reviewer.md +0 -50
  669. package/modules/hosts/omp/agents/ui-verifier.md +0 -49
  670. package/modules/hosts/opencode/agents/implementer.md +0 -59
  671. package/modules/hosts/opencode/agents/independent-reviewer.md +0 -53
  672. package/modules/hosts/opencode/agents/ui-verifier.md +0 -52
  673. package/modules/hosts/opencode/commands/wf-build.md +0 -69
  674. package/modules/hosts/opencode/commands/wf-deploy.md +0 -58
  675. package/modules/hosts/opencode/commands/wf-design.md +0 -49
  676. package/modules/hosts/opencode/commands/wf-gate-checklist.md +0 -77
  677. package/modules/hosts/opencode/commands/wf-maintain.md +0 -76
  678. package/modules/hosts/opencode/commands/wf-new-task.md +0 -102
  679. package/modules/hosts/opencode/commands/wf-pipeline-run.md +0 -35
  680. package/modules/hosts/opencode/commands/wf-plan.md +0 -40
  681. package/modules/hosts/opencode/commands/wf-review.md +0 -49
  682. package/modules/hosts/opencode/commands/wf-sync-hosts.md +0 -64
  683. package/modules/hosts/opencode/commands/wf-test.md +0 -68
  684. package/modules/hosts/trae/agents/implementer.md +0 -52
  685. package/modules/hosts/trae/agents/independent-reviewer.md +0 -51
  686. package/modules/hosts/trae/agents/ui-verifier.md +0 -50
  687. package/modules/hosts/trae/commands/wf-build.md +0 -70
  688. package/modules/hosts/trae/commands/wf-deploy.md +0 -59
  689. package/modules/hosts/trae/commands/wf-design.md +0 -50
  690. package/modules/hosts/trae/commands/wf-gate-checklist.md +0 -78
  691. package/modules/hosts/trae/commands/wf-maintain.md +0 -77
  692. package/modules/hosts/trae/commands/wf-new-task.md +0 -103
  693. package/modules/hosts/trae/commands/wf-pipeline-run.md +0 -36
  694. package/modules/hosts/trae/commands/wf-plan.md +0 -41
  695. package/modules/hosts/trae/commands/wf-review.md +0 -50
  696. package/modules/hosts/trae/commands/wf-sync-hosts.md +0 -65
  697. package/modules/hosts/trae/commands/wf-test.md +0 -69
  698. package/modules/hosts/trae/hooks/post-edit-check.cjs +0 -98
  699. package/modules/hosts/trae/hooks/pre-shell-check.cjs +0 -192
  700. package/modules/hosts/trae/hooks/resolve-shell.cjs +0 -30
  701. package/modules/hosts/trae/hooks.json +0 -29
  702. package/modules/hosts/trae/rules/beautify-input-chinese.md +0 -6
  703. package/modules/hosts/trae/rules/git-commit-message.md +0 -10
  704. package/modules/hosts/trae/rules/project-workflow.md +0 -14
  705. package/modules/hosts/zcode/agents/implementer.md +0 -51
  706. package/modules/hosts/zcode/agents/independent-reviewer.md +0 -49
  707. package/modules/hosts/zcode/agents/ui-verifier.md +0 -48
  708. package/src/add-gate.mjs +0 -116
  709. package/src/add-gate.test.mjs +0 -103
  710. package/src/add-host.mjs +0 -68
  711. package/src/cli.mjs +0 -169
  712. package/src/doctor.mjs +0 -629
  713. package/src/executor.mjs +0 -262
  714. package/src/executor.test.mjs +0 -295
  715. package/src/fresh-init.test.mjs +0 -64
  716. package/src/gate-dotnet-ca.test.mjs +0 -124
  717. package/src/gates.test.mjs +0 -143
  718. package/src/init.mjs +0 -382
  719. package/src/init.test.mjs +0 -163
  720. package/src/instance-ref.test.mjs +0 -62
  721. package/src/jscpd-drift.test.mjs +0 -144
  722. package/src/pack.test.mjs +0 -24
  723. package/src/profiles.mjs +0 -183
  724. package/src/render.mjs +0 -132
  725. package/src/rule-budget.test.mjs +0 -103
  726. package/src/run-tests.mjs +0 -56
  727. package/src/stack-profile.test.mjs +0 -95
  728. package/src/sync-hosts.mjs +0 -257
  729. package/src/sync-hosts.test.mjs +0 -291
  730. package/src/sync.mjs +0 -228
  731. package/src/sync.test.mjs +0 -452
  732. package/src/trae-hooks.test.mjs +0 -127
  733. package/src/validate.mjs +0 -77
  734. package/src/validate.test.mjs +0 -95
  735. package/templates/.gitattributes +0 -17
  736. package/templates/AGENTS.md +0 -57
  737. package/templates/_agents/board/index.html +0 -676
  738. package/templates/_agents/commands/build.md +0 -84
  739. package/templates/_agents/commands/deploy.md +0 -66
  740. package/templates/_agents/commands/design.md +0 -63
  741. package/templates/_agents/commands/gate-checklist.md +0 -91
  742. package/templates/_agents/commands/maintain.md +0 -90
  743. package/templates/_agents/commands/new-task.md +0 -110
  744. package/templates/_agents/commands/pipeline-run.md +0 -43
  745. package/templates/_agents/commands/plan.md +0 -48
  746. package/templates/_agents/commands/review.md +0 -62
  747. package/templates/_agents/commands/sync-hosts.md +0 -77
  748. package/templates/_agents/commands/test.md +0 -87
  749. package/templates/_agents/control-surfaces.txt +0 -53
  750. package/templates/_agents/engine-lock.json +0 -342
  751. package/templates/_agents/hooks/check-index-incremental.mjs +0 -48
  752. package/templates/_agents/hooks/check-pairing-incremental.mjs +0 -66
  753. package/templates/_agents/hooks/check-wiki-ledger.mjs +0 -30
  754. package/templates/_agents/hooks/commit-check.cjs +0 -193
  755. package/templates/_agents/hooks/local-pre-commit +0 -6
  756. package/templates/_agents/lane-surfaces.txt +0 -17
  757. package/templates/_agents/level-hints.txt +0 -30
  758. package/templates/_agents/loop/papercut-debt/DESIGN.md +0 -112
  759. package/templates/_agents/mechanism-registry.md +0 -27
  760. package/templates/_agents/metric-claims.txt +0 -81
  761. package/templates/_agents/notes/engine-internals.md +0 -17
  762. package/templates/_agents/notes/runtime-env.md +0 -18
  763. package/templates/_agents/roles/implementer.md +0 -47
  764. package/templates/_agents/roles/independent-reviewer.md +0 -45
  765. package/templates/_agents/roles/ui-verifier.md +0 -44
  766. package/templates/_agents/rule-budgets.txt +0 -18
  767. package/templates/_agents/scripts/agg-delegations.cjs +0 -302
  768. package/templates/_agents/scripts/agg-delegations.test.mjs +0 -282
  769. package/templates/_agents/scripts/agg-gate-stats.mjs +0 -113
  770. package/templates/_agents/scripts/agg-gate-stats.test.mjs +0 -95
  771. package/templates/_agents/scripts/agg-judgments.mjs +0 -156
  772. package/templates/_agents/scripts/agg-judgments.test.mjs +0 -93
  773. package/templates/_agents/scripts/archive-sweep.mjs +0 -235
  774. package/templates/_agents/scripts/archive-sweep.test.mjs +0 -129
  775. package/templates/_agents/scripts/check-attribution.mjs +0 -37
  776. package/templates/_agents/scripts/check-convergence.mjs +0 -124
  777. package/templates/_agents/scripts/check-engine-integrity.mjs +0 -220
  778. package/templates/_agents/scripts/check-engine-integrity.test.mjs +0 -215
  779. package/templates/_agents/scripts/check-funnel.mjs +0 -56
  780. package/templates/_agents/scripts/check-hygiene.mjs +0 -167
  781. package/templates/_agents/scripts/check-hygiene.test.mjs +0 -182
  782. package/templates/_agents/scripts/check-index-incremental.test.mjs +0 -73
  783. package/templates/_agents/scripts/check-lane-surface.mjs +0 -238
  784. package/templates/_agents/scripts/check-lane-surface.test.mjs +0 -302
  785. package/templates/_agents/scripts/check-ledger-invariant.mjs +0 -527
  786. package/templates/_agents/scripts/check-ledger-invariant.test.mjs +0 -639
  787. package/templates/_agents/scripts/check-loop-rev.test.mjs +0 -336
  788. package/templates/_agents/scripts/check-loop-unit.test.mjs +0 -103
  789. package/templates/_agents/scripts/check-loop.mjs +0 -1958
  790. package/templates/_agents/scripts/check-loop.sh +0 -6
  791. package/templates/_agents/scripts/check-loop.test.mjs +0 -3875
  792. package/templates/_agents/scripts/check-metric-claims.mjs +0 -277
  793. package/templates/_agents/scripts/check-prejudgment.mjs +0 -64
  794. package/templates/_agents/scripts/check-registry.mjs +0 -45
  795. package/templates/_agents/scripts/check-scope.mjs +0 -96
  796. package/templates/_agents/scripts/check-scope.test.mjs +0 -96
  797. package/templates/_agents/scripts/check-scripts-syntax.mjs +0 -61
  798. package/templates/_agents/scripts/check-scripts-syntax.test.mjs +0 -72
  799. package/templates/_agents/scripts/check-spec-verif.mjs +0 -47
  800. package/templates/_agents/scripts/check-stage-index.mjs +0 -40
  801. package/templates/_agents/scripts/check-stage-index.test.mjs +0 -77
  802. package/templates/_agents/scripts/closeout-l1.mjs +0 -217
  803. package/templates/_agents/scripts/closeout-l1.test.mjs +0 -105
  804. package/templates/_agents/scripts/commit-check-trigger.test.mjs +0 -205
  805. package/templates/_agents/scripts/compact-ledgers.mjs +0 -97
  806. package/templates/_agents/scripts/compact-ledgers.test.mjs +0 -162
  807. package/templates/_agents/scripts/confirm-doc.mjs +0 -603
  808. package/templates/_agents/scripts/confirm-doc.test.mjs +0 -1103
  809. package/templates/_agents/scripts/doctor.test.mjs +0 -770
  810. package/templates/_agents/scripts/draft-sediment.mjs +0 -178
  811. package/templates/_agents/scripts/draft-sediment.test.mjs +0 -272
  812. package/templates/_agents/scripts/edit-face-check.mjs +0 -109
  813. package/templates/_agents/scripts/edit-face-check.test.mjs +0 -99
  814. package/templates/_agents/scripts/ensure-board.mjs +0 -185
  815. package/templates/_agents/scripts/fill-intent.mjs +0 -91
  816. package/templates/_agents/scripts/fill-intent.test.mjs +0 -113
  817. package/templates/_agents/scripts/fill-plan.mjs +0 -79
  818. package/templates/_agents/scripts/fill-plan.test.mjs +0 -224
  819. package/templates/_agents/scripts/fill-spec.mjs +0 -70
  820. package/templates/_agents/scripts/fill-spec.test.mjs +0 -266
  821. package/templates/_agents/scripts/fixture-scripts.mjs +0 -153
  822. package/templates/_agents/scripts/fixture-scripts.test.mjs +0 -112
  823. package/templates/_agents/scripts/gate-checklist.mjs +0 -209
  824. package/templates/_agents/scripts/gate-checklist.test.mjs +0 -201
  825. package/templates/_agents/scripts/gate-seg.mjs +0 -54
  826. package/templates/_agents/scripts/gate-seg.test.mjs +0 -112
  827. package/templates/_agents/scripts/gen-effective-policy.mjs +0 -107
  828. package/templates/_agents/scripts/gen-effective-policy.test.mjs +0 -100
  829. package/templates/_agents/scripts/gen-verify-evidence.mjs +0 -107
  830. package/templates/_agents/scripts/gen-verify-evidence.test.mjs +0 -84
  831. package/templates/_agents/scripts/gen-wiki-board.mjs +0 -276
  832. package/templates/_agents/scripts/gen-wiki-board.test.mjs +0 -249
  833. package/templates/_agents/scripts/gen-workflow-dashboard.mjs +0 -251
  834. package/templates/_agents/scripts/gen-workflow-dashboard.test.mjs +0 -188
  835. package/templates/_agents/scripts/gen-workflow-index.mjs +0 -201
  836. package/templates/_agents/scripts/gen-workflow-index.test.mjs +0 -152
  837. package/templates/_agents/scripts/gen-workflow-metrics.mjs +0 -334
  838. package/templates/_agents/scripts/gen-workflow-metrics.test.mjs +0 -224
  839. package/templates/_agents/scripts/git-merge-jsonl.mjs +0 -63
  840. package/templates/_agents/scripts/git-merge-jsonl.test.mjs +0 -125
  841. package/templates/_agents/scripts/judgment-ledger.mjs +0 -65
  842. package/templates/_agents/scripts/judgment-ledger.test.mjs +0 -129
  843. package/templates/_agents/scripts/kb-cache-evict.mjs +0 -50
  844. package/templates/_agents/scripts/kb-cache-evict.test.mjs +0 -104
  845. package/templates/_agents/scripts/kb-search.mjs +0 -413
  846. package/templates/_agents/scripts/kb-search.test.mjs +0 -299
  847. package/templates/_agents/scripts/lane-surface-audit.mjs +0 -143
  848. package/templates/_agents/scripts/lane-surface-audit.test.mjs +0 -93
  849. package/templates/_agents/scripts/ledger-doc-chain.test.mjs +0 -166
  850. package/templates/_agents/scripts/ledger-loader.mjs +0 -108
  851. package/templates/_agents/scripts/ledger-loader.test.mjs +0 -131
  852. package/templates/_agents/scripts/ledger-prune.mjs +0 -96
  853. package/templates/_agents/scripts/ledger-prune.test.mjs +0 -120
  854. package/templates/_agents/scripts/ledger-shards.mjs +0 -344
  855. package/templates/_agents/scripts/ledger-shards.test.mjs +0 -356
  856. package/templates/_agents/scripts/ledger-ts-monotonic.test.mjs +0 -135
  857. package/templates/_agents/scripts/level-criteria.mjs +0 -231
  858. package/templates/_agents/scripts/level-criteria.test.mjs +0 -281
  859. package/templates/_agents/scripts/mechanism-retire-watch.mjs +0 -183
  860. package/templates/_agents/scripts/mechanism-retire-watch.test.mjs +0 -114
  861. package/templates/_agents/scripts/papercut-debt-controller.mjs +0 -141
  862. package/templates/_agents/scripts/papercut-debt-controller.test.mjs +0 -127
  863. package/templates/_agents/scripts/papercut-debt-sensor.mjs +0 -170
  864. package/templates/_agents/scripts/papercut-debt-sensor.test.mjs +0 -146
  865. package/templates/_agents/scripts/pipeline-run-docs.mjs +0 -76
  866. package/templates/_agents/scripts/pipeline-run-run.mjs +0 -63
  867. package/templates/_agents/scripts/pipeline-run.mjs +0 -867
  868. package/templates/_agents/scripts/pipeline-run.test.mjs +0 -517
  869. package/templates/_agents/scripts/policy.mjs +0 -281
  870. package/templates/_agents/scripts/pre-push.test.mjs +0 -105
  871. package/templates/_agents/scripts/resolve-merge-conflicts.mjs +0 -110
  872. package/templates/_agents/scripts/resolve-merge-conflicts.test.mjs +0 -87
  873. package/templates/_agents/scripts/rewrite-file.mjs +0 -133
  874. package/templates/_agents/scripts/rewrite-file.test.mjs +0 -148
  875. package/templates/_agents/scripts/rule-budget.mjs +0 -96
  876. package/templates/_agents/scripts/rule-budget.test.mjs +0 -118
  877. package/templates/_agents/scripts/run-tests.mjs +0 -99
  878. package/templates/_agents/scripts/run-tests.test.mjs +0 -105
  879. package/templates/_agents/scripts/solidify-task.mjs +0 -107
  880. package/templates/_agents/scripts/solidify-task.test.mjs +0 -129
  881. package/templates/_agents/scripts/stage-gates.mjs +0 -343
  882. package/templates/_agents/scripts/stage-gates.test.mjs +0 -105
  883. package/templates/_agents/scripts/trust-mode.mjs +0 -67
  884. package/templates/_agents/scripts/trust-mode.test.mjs +0 -110
  885. package/templates/_agents/scripts/verify-wiki-consistency.mjs +0 -253
  886. package/templates/_agents/scripts/verify-wiki-consistency.test.mjs +0 -123
  887. package/templates/_agents/scripts/verify.mjs +0 -210
  888. package/templates/_agents/scripts/verify.test.mjs +0 -358
  889. package/templates/_agents/scripts/wf-journal.mjs +0 -231
  890. package/templates/_agents/scripts/wf-journal.test.mjs +0 -216
  891. package/templates/_agents/scripts/wiki-search.mjs +0 -19
  892. package/templates/_agents/scripts/wiki-search.test.mjs +0 -57
  893. package/templates/_agents/scripts/workflow-board-server.mjs +0 -393
  894. package/templates/_agents/scripts/workflow-board-server.test.mjs +0 -201
  895. package/templates/_agents/scripts/workflow-enums.mjs +0 -70
  896. package/templates/_agents/scripts/workflow-enums.test.mjs +0 -118
  897. package/templates/_agents/scripts/workflows-check.mjs +0 -260
  898. package/templates/_agents/scripts/workflows-check.test.mjs +0 -278
  899. package/templates/_agents/scripts-test-exempt.txt +0 -16
  900. package/templates/_agents/skills/papercut-fix/SKILL.md +0 -60
  901. package/templates/_agents/skills/papercut-fix/references/response-template.md +0 -81
  902. package/templates/_agents/skills/review-method/SKILL.md +0 -55
  903. package/templates/_agents/skills/verify-ui/SKILL.md +0 -61
  904. package/templates/_agents/skills/wiki/SKILL.md +0 -106
  905. package/templates/_agents/workflow-enums.txt +0 -26
  906. package/templates/_agents/workflow-modules.txt +0 -11
  907. package/templates/_agents/workflows/_TEMPLATE.md +0 -75
  908. package/templates/_agents/workflows/pipeline-closing.md +0 -28
  909. package/templates/_agents/workflows//347/244/272/344/276/213-/345/271/266/350/241/214/345/256/236/347/216/260/350/257/204/345/256/241.md +0 -16
  910. package/templates/_githooks/commit-msg +0 -17
  911. package/templates/_githooks/post-commit +0 -10
  912. package/templates/_githooks/pre-commit +0 -126
  913. package/templates/_githooks/pre-merge-commit +0 -29
  914. package/templates/_githooks/pre-push +0 -136
  915. package/templates/_github/workflows/kit-ci.yml +0 -49
  916. package/templates/wiki/INDEX.md +0 -73
  917. package/templates/wiki/drafts-archive/README.md +0 -3
  918. package/templates/wiki//344/272/247/345/223/201/351/234/200/346/261/202/README.md +0 -3
  919. package/templates/wiki//345/274/200/345/217/221/346/226/271/346/241/210/README.md +0 -3
  920. package/templates/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +0 -3
  921. package/templates/wiki//346/265/213/350/257/225/346/212/245/345/221/212/README.md +0 -3
  922. package/templates/wiki//347/224/250/346/210/267/345/212/237/350/203/275/README.md +0 -3
  923. package/templates/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +0 -77
  924. package/templates/wiki//351/241/271/347/233/256/350/247/204/350/214/203/README.md +0 -3
  925. package/templates/wiki//351/241/271/347/233/256/350/256/241/345/210/222/README.md +0 -3
  926. package/templates/workflow/README.md +0 -90
  927. package/templates/workflow/delegations.md +0 -29
  928. package/templates/workflow/incidents/_TEMPLATE.md +0 -51
  929. package/templates/workflow/intents/_TEMPLATE.md +0 -46
  930. package/templates/workflow/papercuts.md +0 -9
  931. package/templates/workflow/plans/_TEMPLATE.md +0 -47
  932. package/templates/workflow/regression-checklist.md +0 -23
  933. package/templates/workflow/specs/_TEMPLATE.md +0 -80
  934. /package/templates/{_agents → engine/.agents}/board/marked.min.js +0 -0
  935. /package/templates/{_agents/workflows → engine/.agents/pipelines}/steps//347/244/272/344/276/213-/351/203/250/347/275/262/351/252/214/350/257/201.md" +0 -0
  936. /package/templates/{_agents → engine/.agents}/scripts/git-core.mjs +0 -0
@@ -0,0 +1,361 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PreToolUse(终端命令) hook — 两道关卡:
4
+ * 1) deny/ask 命令门禁(清单单源 = 同级 gates.json,镜像 .agents/settings.json 的 deny/ask 策略)
5
+ * 2) git commit / git push 门卫在岗探针(2026-11-08 减重档 1-A:整链重跑改为探针,去双跑)
6
+ *
7
+ * 为什么只探针不重跑:.githooks/* 是项目唯一的门禁权威(pre-commit 门禁链 + pre-push 闭环断档)。
8
+ * 本钩子原是**宿主侧冗余**——core.hooksPath 漏配时 git 侧门禁静默失效(2026-09-16 宿主侧缺档事故实证),
9
+ * 于是在命令执行前整链重跑 .githooks/pre-commit / pre-push;但 hooksPath 正常时 git 随后还会原生
10
+ * 执行同一份钩子 = 双跑(build / 闭环扫描预算白烧一遍)。现改为毫秒级「门卫在岗探针」:
11
+ * hooksPath 指向 .githooks 且本命令涉及的钩子文件存在可执行 → 放行(门禁由 git 原生钩子执行);
12
+ * 不在岗 → fail-loud 拦截(宿主侧兜底语义不变,不是放空),修复入口 check-local-gates --fix。
13
+ *
14
+ * 单源纪律(2026-10-29 owner 指示):hook 实现只养在 .agents/hooks/,宿主壳(.trae/hooks.json /
15
+ * .zcode/config.json / .codebuddy/settings.json)只留接线配置指向本文件,禁止在宿主层复制脚本。
16
+ *
17
+ * 宿主事实(跨宿主实测,非文档推断):
18
+ * - Trae 终端工具规范化名 RunCommand;CodeBuddy 实测 **Bash**(主通道)+ **PowerShell**(Windows
19
+ * 次通道,见 ~/.codebuddy/projects/e-Git-Shipyard.Material/*.jsonl 的 function_call.name)。
20
+ * matcher 与本文件工具名正则须同列全部通道,漏任一即形成绕过口(2026-10-22 修 PowerShell 缺列)。
21
+ * - matcher 是正则、区分大小写、子串包含;timeout 单位是**秒**(command 默认 60s)。
22
+ * - stdin 官方字段:{ session_id, transcript_path, cwd, permission_mode, hook_event_name, tool_name,
23
+ * tool_input };另兼容 llm_tool_name / workspace_roots(非官方字段,跨宿主兜底,缺失不报错)。
24
+ * - stdout: hookSpecificOutput.permissionDecision = allow / deny / ask;无输出 = 放行。
25
+ */
26
+ const { execFileSync } = require('child_process');
27
+ const fs = require('fs');
28
+ const path = require('path');
29
+
30
+ // --- 读取 stdin ---
31
+ let raw = '';
32
+ try {
33
+ raw = fs.readFileSync(0, 'utf8');
34
+ } catch {
35
+ process.exit(0); // 无 stdin,放行
36
+ }
37
+
38
+ let data;
39
+ try {
40
+ data = JSON.parse(raw);
41
+ } catch {
42
+ process.exit(0); // JSON 解析失败,放行(不阻塞正常工作流)
43
+ }
44
+
45
+ // 工具名兼容:CodeBuddy 实测为 Bash / PowerShell,Trae 为 RunCommand;保留 Shell/Terminal/execute* 别名防宿主差异
46
+ // (2026-10-22 修:原正则缺 powershell——matcher 即便命中,脚本也会自行 exit(0) 放行,形成 PowerShell 绕过口)
47
+ // run_terminal_command(Grok)含 terminal,能命中;toolName 补 camelCase,避免只送 toolName 时漏判。
48
+ // Command Code:shell_command(matcher 目标 SHELL)/ monitor_command(MONITOR)——monitor 是后台执行通道的
49
+ // 同类命令执行口,不列即形成旁路(2026-11-11)。只认 monitor_command 本体,monitor_events 是只读取输出口。
50
+ const toolName = `${data.tool_name || ''} ${data.toolName || ''} ${data.llm_tool_name || ''}`;
51
+ if (!/runcommand|bash|powershell|shell|terminal|executecommand|monitor_command/i.test(toolName)) {
52
+ process.exit(0);
53
+ }
54
+ if (!data.tool_input && data.toolInput) data.tool_input = data.toolInput;
55
+
56
+ // 取命令文本:优先约定的 command 字段;字段名缺失时退回扫描 tool_input 的字符串值
57
+ // (信任边界上的宿主 payload,字段名跨版本可能不同——漏读会让门禁静默失效,故兜底扫描)
58
+ // Command Code 把剩余参数放 args 数组({command:"git",args:["reset","--hard"]})——只读 command 会让
59
+ // 红线命令整体以 argv 形态绕过(2026-11-11 实测);含空白的 argv 项按 shell 语义补引号,防分词错位。
60
+ function extractCommand(input) {
61
+ if (!input || typeof input !== 'object') return '';
62
+ const parts = [];
63
+ if (typeof input.command === 'string' && input.command) parts.push(input.command);
64
+ if (Array.isArray(input.args)) {
65
+ parts.push(...input.args.filter(v => typeof v === 'string').map(v => (/\s/.test(v) ? JSON.stringify(v) : v)));
66
+ }
67
+ if (parts.length > 0) return parts.join(' ');
68
+ return Object.values(input).filter(v => typeof v === 'string').join('\n');
69
+ }
70
+
71
+ const command = extractCommand(data.tool_input).replace(/\\\r?\n/g, '');
72
+ // 第八轮整改:剥除反斜杠-换行续行(shell 执行时会拼回完整 token,文本检查若按含续行原文扫
73
+ // 会被 core.hoo\<LF>ksPath= / --no-ver\<LF>ify 类拼接击穿)——在提取口统一归一,全下游继承。
74
+ if (!command) {
75
+ process.exit(0);
76
+ }
77
+
78
+ const projectRoot = data.cwd || (Array.isArray(data.workspace_roots) && data.workspace_roots[0]) || process.cwd();
79
+
80
+ function deny(reason) {
81
+ console.log(JSON.stringify({
82
+ hookSpecificOutput: {
83
+ hookEventName: 'PreToolUse',
84
+ permissionDecision: 'deny',
85
+ permissionDecisionReason: reason
86
+ }
87
+ }));
88
+ process.exit(0);
89
+ }
90
+
91
+ function ask(reason) {
92
+ console.log(JSON.stringify({
93
+ hookSpecificOutput: {
94
+ hookEventName: 'PreToolUse',
95
+ permissionDecision: 'ask',
96
+ permissionDecisionReason: reason
97
+ }
98
+ }));
99
+ process.exit(0);
100
+ }
101
+
102
+ // ── 1) deny/ask 命令门禁 ──────────────────────────────
103
+ // 清单单源 = 同级 gates.json(2026-10-22 自脚本内抽出;2026-10-29 随脚本一并迁入 .agents/hooks/)。
104
+ // gates.json 的 mirrorOf 指 .agents/settings.json 的 permissions,exempt 登记刻意缺省项
105
+ // (dotnet ef 属 dotnet-ca 门禁域;强推由 isForcePush 的 token 化判定覆盖,强于子串匹配)。
106
+ // 清单变更须三处同步:settings.json → gates.json → FALLBACK_GATES。
107
+ // 读取失败 → 回退内置清单(fail-safe:绝不因配置读取失败而放空门禁)+ stderr 告警。
108
+ const FALLBACK_GATES = {
109
+ deny: [
110
+ { pat: 'git reset --hard', reason: '禁破坏性重置' },
111
+ { pat: 'drop database', reason: '禁删库' },
112
+ { pat: '--no-verify', reason: '禁绕过 git 钩子' }
113
+ ],
114
+ ask: [
115
+ { pat: 'git checkout', reason: '可能切换/丢弃工作区改动' },
116
+ { pat: 'git clean', reason: '可能删除未跟踪文件' },
117
+ { pat: 'git branch -D', reason: '可能删除未合并分支' },
118
+ { pat: 'rm -rf', reason: '可能递归删除文件' }
119
+ ]
120
+ };
121
+ let gates = FALLBACK_GATES;
122
+ try {
123
+ gates = JSON.parse(fs.readFileSync(path.join(__dirname, 'gates.json'), 'utf8'));
124
+ } catch (e) {
125
+ console.error(`[pre-shell-check] gates.json 不可读,已回退内置清单:${e.message}`);
126
+ }
127
+ const denyList = Array.isArray(gates.deny) ? gates.deny : FALLBACK_GATES.deny;
128
+ const askList = Array.isArray(gates.ask) ? gates.ask : FALLBACK_GATES.ask;
129
+
130
+ // stripMessages:剥 -c/-m 的值(含引号整段)——deny/ask 门与强推检测共用,防 commit 消息字样误触发
131
+ function stripMessages(cmd) {
132
+ return cmd
133
+ .replace(/(^|\s)-[cm]\s+"[^"]*"(?=\s|$)/g, ' ')
134
+ .replace(/(^|\s)-[cm]\s+'[^']*'(?=\s|$)/g, ' ')
135
+ .replace(/(^|\s)-[cm]\s+\S+(?=\s|$)/g, ' ')
136
+ .replace(/\s+/g, ' ').trim();
137
+ }
138
+
139
+ // 强推检测 token 化(host-gates-p1 P1-B2):子串模式 'git push --force' 挡不住换序
140
+ // (git push origin main --force)与 +refspec 变体(git push origin +main)——改为 token 级判定。
141
+ // 复核 P2 收窄(同日):①按 &&/||/;/| 分段,--force 只在 push 段内计数(dotnet build --force 不误并);
142
+ // ②组合短旗标(-vf)与 -f 同为 force;③--force-with-lease 是带尾巴的独立 token 不匹配。
143
+ // p2-batch2 补:先剥 commit 消息(引号感知)再分段——"git commit -m "修 push --force"" 曾被误拦。
144
+ // 本钩子是 core.hooksPath 漏配时的主要强推执行点,语义必须完整。
145
+ function isForcePush(cmd) {
146
+ const stripped = stripMessages(cmd);
147
+ return stripped.split(/&&|\|\||;|\|/).some((seg) => {
148
+ const tokens = seg.replace(/\s+/g, ' ').trim().split(' ').filter(Boolean);
149
+ if (!tokens.includes('push')) return false;
150
+ return tokens.some((t) => t === '--force'
151
+ || (t.startsWith('-') && !t.startsWith('--') && /^-[a-zA-Z]*f/.test(t))
152
+ || (t.startsWith('+') && t.length > 1));
153
+ });
154
+ }
155
+
156
+ // gateMatch:比裸 includes 收紧三处(2026-09-24;p2-batch2 补 ③)——
157
+ // ① token 边界:'git checkout' 不再误吃 'git commit-msg'
158
+ // ② 剥离 git 全局参 -c <k=v> 与 -m <msg> 后以剥后文本为准——堵 'git -c x=y reset --hard' 绕过
159
+ // ③ 消息字样误触(p2-batch2):带引号多词消息(-m "修 git push --force 误拦")单 token 剥不净——
160
+ // 剥离逻辑收敛到 stripMessages 单源(引号感知)
161
+ function gateMatch(cmd, pat) {
162
+ const re = new RegExp(pat.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + '(?![\\w-])');
163
+ const norm = stripMessages(cmd);
164
+ return norm !== cmd ? re.test(norm) : re.test(cmd);
165
+ }
166
+
167
+ if (isForcePush(command)) {
168
+ deny('禁止执行: git push 强制推送(--force / -f / +refspec;项目红线:禁强制推送)');
169
+ }
170
+ for (const d of denyList) {
171
+ if (gateMatch(command, d.pat)) {
172
+ deny(`禁止执行: ${d.pat}(项目红线:${d.reason})`);
173
+ }
174
+ }
175
+ for (const a of askList) {
176
+ if (gateMatch(command, a.pat)) {
177
+ ask(`需确认: ${a.pat}(项目 ask 策略:${a.reason})`);
178
+ }
179
+ }
180
+
181
+ // ── 1b) 命令级/环境 hooksPath 覆盖(2026-11-08 第七轮收敛,枚举 git 配置注入面)──────
182
+ // ① 环境注入:钩子与用户命令同环境,直接查宿主进程 env 的 GIT_CONFIG_KEY_n 指向 hooksPath;
183
+ // ② 命令文本:剥除全部引号后扫 -c(含引号/紧贴/空值/布尔形态)与 --config-env、行内
184
+ // GIT_CONFIG_KEY_n= 赋值;只放行值恰为 .githooks 的 -c。fail-closed。
185
+ // 已知可接受误拦:提交消息含字面 "-c core.hooksPath=…"(改写即过)。
186
+ {
187
+ const normP = (p) => path.resolve(projectRoot, p || '.').replace(/[\\/]+$/, '').toLowerCase();
188
+ const envHit = Object.entries(process.env).some(([k, v]) => {
189
+ if (!/^GIT_CONFIG_KEY_\d+$/.test(k) || !/^core\.hooksPath$/i.test(String(v || ''))) return false;
190
+ // 第八轮整改:合法形态 KEY=hooksPath + VALUE=.githooks 不拦(只看 KEY 会误拒全部命令);
191
+ // VALUE 缺失或非 .githooks 即拦。
192
+ const idx = k.slice('GIT_CONFIG_KEY_'.length);
193
+ const val = String(process.env[`GIT_CONFIG_VALUE_${idx}`] || '');
194
+ return normP(val) !== normP('.githooks');
195
+ });
196
+ // 第八轮整改:① 剥 ANSI-C 引号前缀($'…' → '…')再剥引号,防 $'-c' 形态逃逸边界;
197
+ // ② -c 多次出现按 git last-wins 语义,任一 hooksPath 值非 .githooks 即拒(fail-closed)。
198
+ const flat = command.replace(/\$(['"])/g, '$1').replace(/["']/g, '');
199
+ const all = flat.match(/(?:^|[\s;|&])-c\s*=?\s*core\.hooksPath(?:=(\S*))?/gi) || [];
200
+ const cfgEnv = /(?:^|[\s;|&])--config-env[=\s]+core\.hooksPath(?!\w)/i.test(flat);
201
+ const inlineEnv = /GIT_CONFIG_KEY_\d+=\s*core\.hooksPath(?![\w=])/i.test(flat);
202
+ const badVal = all.some((s) => {
203
+ const v = (s.match(/core\.hooksPath(?:=(\S*))?/i)?.[1] ?? '');
204
+ return normP(v) !== normP('.githooks');
205
+ });
206
+ const val = all.length ? ((all[all.length - 1].match(/=(\S*)/) || [null, ''])[1] ?? '') : null;
207
+ if (envHit || cfgEnv || inlineEnv || (all.length > 0 && badVal)) {
208
+ const why = envHit ? 'GIT_CONFIG_KEY 环境注入' : cfgEnv ? '--config-env' : inlineEnv ? '行内 GIT_CONFIG 赋值' : `值=${val || '(空/布尔)'}`;
209
+ deny(`禁止执行: 命令级/环境 hooksPath 覆盖(${why},非 .githooks)——钩子将被整体跳过(项目红线:禁绕过 git 钩子)`);
210
+ }
211
+ }
212
+
213
+ // ── 2) git commit / git push 前置检查 ──────────────────
214
+ // 2026-11-06(P1-2):原判据 `/git\s+commit/`、`/git\s+push/` 直接跑在**整条命令原文**上,双向失准——
215
+ // 误伤:`echo "git push"` / `git log --grep="git push"` / `git commit -m "…git push…"` 会误跑门禁腿;
216
+ // 漏拦:`git -C . push` / `git --no-pager push` / `git -c k=v push` 因全局选项夹在中间而漏跑门禁腿。
217
+ // 修法:① 先走 stripMessages()(剥离 -c/-m 值,与强推检测同源);② 按命令分隔符分段;
218
+ // ③ 引号感知分词后取首个恰为 `git` 的 token,再穿透 git 全局选项前缀取其子命令
219
+ // (`echo "git push"` 的 `"git push"` 是单个 token,天然不命中)。
220
+ // 已知局限:`pwsh -c "git push"` 这类**嵌套 shell** 不命中——与 `echo "git push"` 文本同形,
221
+ // 取「不误伤」一侧;core.hooksPath 正常时 git 自身仍会触发 pre-push。
222
+ const GIT_GLOBAL_OPTS_WITH_ARG = new Set(['-C', '-c', '--git-dir', '--work-tree', '--namespace', '--config-env', '--exec-path']);
223
+ function gitSubcommand(seg) {
224
+ const tokens = seg.match(/"[^"]*"|'[^']*'|\S+/g) || []; // 引号感知:带空格的引号段=单 token(-C "a b")
225
+ // 2026-11-08 三轮整改:裸/大写 git(.exe) 与路径前缀形态一并认(此前精确 'git' 漏 git.exe / GIT;
226
+ // 探针的 commit/push 判定与 no-verify 拦截共用本函数,同步受益)。
227
+ // 十轮整改:token 剥引号后再比(git "commit" / git "-C" 形态不再失明——引号仅 shell 语义)
228
+ const bare = (t) => t.replace(/^["']|["']$/g, '');
229
+ const i = tokens.findIndex((t) => bare(t) === 'git'
230
+ || /(?:^|[\\/])git(?:\.exe)?$/i.test(t.replace(/["']/g, '')));
231
+ if (i === -1) return '';
232
+ for (let j = i + 1; j < tokens.length; j++) {
233
+ const tok = bare(tokens[j]);
234
+ if (tok === '\u0000') continue; // 占位符(被惰化的引号值)不可能是子命令
235
+ if (GIT_GLOBAL_OPTS_WITH_ARG.has(tok)) { j++; continue; } // 带参全局选项:连同其值一起跳过(剥引号口径)
236
+ if (tok.startsWith('-')) continue; // 无参全局旗标(--no-pager / -p / --paginate …)
237
+ return tok;
238
+ }
239
+ return '';
240
+ }
241
+ // 2026-11-08 终二轮整改:分段改在**原始命令**上(含 \r\n);2026-11-09 十四轮整改:先做
242
+ // **物化预处理**——无空格引号段按 shell 词内拼接语义原地替换('comm''it'→commit、-'n'→-n),
243
+ // 分隔符序列中和为 \u0001(引号内是数据);含空格引号段占位为 \u0000(消息值/带空格路径惰化)。
244
+ // 子命令判定与短旗标腿同源消费本物化文本;探针腿同步受益(引号子命令不再失明)。
245
+ const materializeShQuotes = (cmd) => cmd.replace(/(\$'[^']*'|\$"[^"]*"|"[^"]*"|'[^']*')/g, (m) => {
246
+ const ansi = m.startsWith('$');
247
+ let inner = ansi ? m.slice(2, -1) : m.slice(1, -1);
248
+ // 十五轮修正:$'…' ANSI-C 转义(\x6e 等)先解码(shell 会展开成真实字符)再物化
249
+ if (ansi) {
250
+ inner = inner
251
+ .replace(/\\x([0-9a-fA-F]{2})/g, (_, h) => String.fromCharCode(parseInt(h, 16)))
252
+ .replace(/\\u([0-9a-fA-F]{4})/g, (_, h) => String.fromCharCode(parseInt(h, 16)))
253
+ .replace(/\\U([0-9a-fA-F]{8})/g, (_, h) => String.fromCharCode(parseInt(h, 16)))
254
+ .replace(/\\([0-7]{1,3})/g, (_, o) => String.fromCharCode(parseInt(o, 8)))
255
+ .replace(/\\n/g, String.fromCharCode(10))
256
+ .replace(/\\t/g, String.fromCharCode(9))
257
+ .replace(/\\(.)/g, '$1');
258
+ }
259
+ if (/\s/.test(inner)) return ' \u0000 ';
260
+ return inner.replace(/&&|\|\||[;|\r\n|]/g, '\u0001');
261
+ });
262
+ const commandMat = materializeShQuotes(command);
263
+ const gitSubcommands = commandMat.split(/&&|\|\||[;|\r\n]/).map(gitSubcommand);
264
+ const isCommit = gitSubcommands.includes('commit');
265
+ const isPush = gitSubcommands.includes('push');
266
+
267
+ // no-verify 旗标拦截(2026-11-08 评审三轮整改收敛版,取代逐形态补丁)。设计三条:
268
+ // ① 子命令判定在原始命令上分段(与 gitSubcommands 同式同源:含 \r\n、认路径前缀/裸或大写 git(.exe)/全局选项);
269
+ // ② 旗标判定在整条命令上引号感知分词(不走 stripMessages——其 -m 剥离会吞尾部引号破坏配对,
270
+ // 实测误拦测试类命令);先拆 `-m"…"` / `--opt="…"` 等号/紧贴引号形态为空格分隔,使消息值
271
+ // 整体成单 token(值内旗标不误拦);
272
+ // ③ 长旗标 commit/merge/push 皆拦(根 AGENTS.md §2 三处禁令);含 n 短旗标簇仅 commit 语义
273
+ // (push 的 -n 是 --dry-run、merge 的 -n 是 --no-stat)。
274
+ // 已知可接受误拦(fail-closed 取向,改写命令即过):与 commit/merge/push 并列段落里的整词旗标
275
+ // (echo "--no-verify" 类)、消息恰好整词为旗标、commit+push 混合命令中的 push -n。
276
+ // 执法单源在本代码层(isForcePush 同 precedent),不入三处清单;owner 如需清单镜像/exempt 登记自行补基线。
277
+ function isNoVerify(cmd) {
278
+ // 终极收敛(2026-11-09 第十二轮后):长旗标改**规范化扁平子串**判定——小写后删全部引号/反斜杠/
279
+ // 空白,含 'no-veri' 即拒。无 token 化、无引号配对、无段切分,任何引号/紧贴/转义/拼接组合在扁平域
280
+ // 必然拼回该子串(此前八~十二轮的 token 化路线每修一处就派生新的配对破坏组合,结构性无终点)。
281
+ // 'no-veri' 与合法选项 'no-verbose'(no-verb…)在第 5 字符分岔,子串判据无碰撞;git 自身拒绝
282
+ // 更短歧义前缀(--no-v/--no-ve/--no-ver 报 ambiguous),能生效的拼写全数落入该子串。
283
+ // 误拦代价(fail-closed):commit/merge/push 命令中任何位置文本含 no-veri(含提交消息)即拒,
284
+ // 改写即过。短旗标簇仍走段级 token 判定(物化=shell 词内拼接语义、无空格、分隔符中和,$'…'
285
+ // ANSI-C 转义先解码)。**静态边界收口(十五轮裁定)**:shell 变量/命令替换展开的旗标文本层不可
286
+ // 见——含展开的 commit/merge/push 段一律拒(fail-closed,内联值即过);CI/脚本不经本门。混合
287
+ // 命令 push 干跑旗标/消息恰为整词短旗标/消息含美元数字($5)为已知边界。
288
+ const subs = gitSubcommands;
289
+ // 十七轮补口(先于守卫判定):一次性别名间接——`-c alias.ci='commit …'` 使真实子命令对守卫不可见,
290
+ // 含 -c alias.* 的 git 命令一律拒(fail-closed,罕见合法形态去掉别名即过)。
291
+ if (/(?:^|[\s;|&])-c\s+alias\./i.test(command.replace(/["']/g, ''))) return true;
292
+ if (!subs.some((s) => s === 'commit' || s === 'merge' || s === 'push')) return false;
293
+ // 十六轮统一收敛:三条腿各吃各的规范化文本,不再共用单一形态——
294
+ // ① 展开检测吃**去引号原文**(内容保留、$ 与反引号痕迹不被占位符抹除;十六轮实测物化文本
295
+ // 会把 "$(…)" 抹成占位符致漏判),按「守卫子命令存在 + 命令任意位置含 $/反引号」门控——
296
+ // 简化为字符级(覆盖 ${}/$()/$VAR/反引号全部形态),误拦(如消息含美元符号)改写即过;
297
+ // ② 长旗标扁平域改吃**物化文本**(含 ANSI-C 解码与词内拼接)——解码结果此前无消费者,
298
+ // `--no-ver$'\x69'fy` 类混合拼接形态在物化扁平域必然拼回 no-veri 子串;
299
+ // ③ 短旗标维持物化文本段级判定。
300
+ // 惯用法豁免:`$(cat <<'EOF'…)` 是本仓提交消息标准写法,替换体为纯文本 heredoc。内容仍完整留在
301
+ // 命令文本里——长旗标扁平域对**原始命令与物化文本双源取并集**(十七轮:物化域的占位符会抹除
302
+ // heredoc 体内的旗标字样,而 bash 会把它替换进 argv),其余 $/反引号照拦。
303
+ if (/[$`]/.test(command.replace(/\$\(cat\s+<</g, '<<').replace(/["']/g, ''))) return true;
304
+ const flat = (t) => t.toLowerCase().replace(/["'\\\s\u0000\u0001]/g, '');
305
+ if (flat(command).includes('no-veri') || flat(commandMat).includes('no-veri')) return true;
306
+ // 十七轮补口:大括号展开(--no-ver{ify,ify} / -{n,m})与一次性别名(alias.ci)不需 $ 即可拼出
307
+ // 真旗标/真子命令——守卫段内含大括号展开形态或 -c alias.* 一律拒(fail-closed,罕见合法形态改写即过)。
308
+ if (/\{[^}]*,[^}]*\}/.test(command) && subs.length) return true;
309
+ return subs.includes('commit') && (() => {
310
+ return commandMat.split(/&&|\|\||[;|\r\n]/).some((seg) => {
311
+ if (gitSubcommand(seg) !== 'commit') return false;
312
+ return seg.split(/\s+/).some((t) => /^-[a-z]*n[a-z]*$/i.test(t.replace(/["']/g, '')));
313
+ });
314
+ })();
315
+ }
316
+ if (isNoVerify(command)) {
317
+ deny('禁止执行: 绕钩旗标(长/短旗标,或 commit/merge/push 段含 shell 变量/命令替换——展开值文本层不可见,请内联展开后重试。项目红线:commit/merge/push 三处一律禁绕过 git 钩子)');
318
+ }
319
+
320
+ if (!isCommit && !isPush) {
321
+ process.exit(0); // 非 commit/push,放行
322
+ }
323
+
324
+ // .githooks/pre-commit / pre-push 为 node 脚本,由 git 原生钩子机制执行(core.hooksPath 在岗时);
325
+ // 本门不再代跑(见头注 2026-11-08 减重档 1-A:git 随后还会再跑同一份 = 双跑),只验「门卫在岗」。
326
+
327
+ // probeFailure:毫秒级在岗探针——①core.hooksPath 读取并指向 .githooks;②本命令涉及的钩子文件
328
+ // 存在且可执行。返回空串 = 在岗(放行,门禁由 git 原生执行);否则返回 fail-loud 原因文本。
329
+ function probeFailure() {
330
+ let hooksPath = '';
331
+ try {
332
+ hooksPath = execFileSync('git', ['config', 'core.hooksPath'], {
333
+ cwd: projectRoot,
334
+ encoding: 'utf8',
335
+ stdio: ['ignore', 'pipe', 'pipe']
336
+ }).trim();
337
+ } catch {
338
+ return 'core.hooksPath 不可读(git 异常)';
339
+ }
340
+ const norm = (p) => path.resolve(projectRoot, p || '.').replace(/[\\/]+$/, '').toLowerCase();
341
+ if (norm(hooksPath) !== norm('.githooks')) {
342
+ return `core.hooksPath = "${hooksPath || '(空)'}",未指向 .githooks`;
343
+ }
344
+ const needed = [isCommit && '.githooks/pre-commit', isCommit && '.githooks/commit-msg', isPush && '.githooks/pre-push'].filter(Boolean);
345
+ for (const hook of needed) {
346
+ try {
347
+ fs.accessSync(path.join(projectRoot, hook), fs.constants.X_OK);
348
+ } catch {
349
+ return `钩子缺失或不可执行:${hook}`;
350
+ }
351
+ }
352
+ return '';
353
+ }
354
+
355
+ const probeFail = probeFailure();
356
+ if (probeFail) {
357
+ deny(`钩子未挂载,先跑 node .agents/scripts/check-local-gates.mjs --fix(${probeFail})——本门只做在岗探针,门禁链由 git 原生执行`);
358
+ }
359
+
360
+ // 探针通过:放行,钩子由 git 自己跑(commit → pre-commit + commit-msg,push → pre-push)
361
+ process.exit(0);
@@ -0,0 +1,220 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PreToolUse(Edit|Write|MultiEdit) 门 — 写文件瞬间**前**拦截(owner 2026-10-29 指示:拦截时点前移宿主)。
4
+ *
5
+ * 三层判据(顺序短路):
6
+ * 1) 执法面自保护(deny):宿主 hook 接线与权限基线(.zcode/config.json / .trae/hooks.json /
7
+ * .codebuddy/settings.json / .qoder/settings.json / .qwen/settings.json / .commandcode/settings.json /
8
+ * .agents/hooks/gates.json / .agents/settings.json)——AI 不得自行
9
+ * 解掉自己的拴绳。临时放行走 `--unlock <分钟>`(TTL 标记 .agents/tmp/write-gate-until,
10
+ * 仅应对话内用户明示而设,用毕即删)。
11
+ * 2) 确认台账 append-only(deny):.agents/confirmations.jsonl 与 confirmations.d/* 的写入必须是
12
+ * HEAD 版本的逐字节前缀扩展——口径镜像 check-ledger-invariant --staged(提交时刻仍兜底)。
13
+ * 3) 红线内容判据(deny):**快照-换入-恢复**执行真实门脚本(判据单源在 .agents/hooks/check-*.mjs,
14
+ * 本门不复制任何判据)——把提议内容临时落盘 → 跑工作树扫描器 → finally 恢复原文件。
15
+ * 2026-11-08 减重档 1-A:多门由串行 spawnSync 改异步 spawn + Promise.all 并行聚合
16
+ * (总耗时 ≈ 最慢单门,不再随门数线性叠加);任一门非零退出仍整体 deny,输出/退出码格式不变。
17
+ * - backend/**.cs → check-architecture.mjs(+ check-delete-guard.mjs,其自扫 Application/API)
18
+ * - frontend/src/**.ts|.vue → check-notify-guard.mjs
19
+ * check-audit-fields 为暂存区增量判据,不在此复用(pre-commit 兜底)。
20
+ *
21
+ * 引擎面提示(不拦):改 .githooks/ 或 .agents/hooks/ 属合法引擎工作,但回喂 additionalContext
22
+ * 提醒确认系用户指示——防线是流程纪律(引擎面豁免条款),不是本门。
23
+ *
24
+ * 已知边界(registry 2026-10-29 行):Bash 重定向/sed 写文件不经本门(走 shell 门与 git 钩子兜底);
25
+ * 提议内容不可合成(字段缺失/old_string 不在)时内容判据 fail-open,git 钩子兜底。
26
+ *
27
+ * 红线:门自身解析/读取异常一律 fail-open(放行)——门出错不得阻断正常工作流;
28
+ * 但路径类判据(1/2 的匹配)是纯字符串匹配,不经 fail-open 通道。
29
+ *
30
+ * stdin: { tool_name, llm_tool_name, tool_input: { file_path, content|old_string/new_string|edits }, cwd, workspace_roots }
31
+ * stdout: hookSpecificOutput.permissionDecision = deny(trae/codebuddy 同形约定);无输出 = 放行。
32
+ * 测试:node .agents/scripts/pre-write-check.test.mjs
33
+ */
34
+ 'use strict';
35
+
36
+ const fs = require('node:fs');
37
+ const path = require('node:path');
38
+ const { spawn, spawnSync } = require('node:child_process');
39
+
40
+ const UNLOCK_MARKER = path.join('.agents', 'tmp', 'write-gate-until');
41
+ const OUT_MAX = 900; // 单门输出截断,deny reason 总量控制
42
+
43
+ // ── CLI: --unlock <分钟> ───────────────────────────────
44
+ if (process.argv[2] === '--unlock') {
45
+ const mins = Math.max(1, Number(process.argv[3]) || 10);
46
+ fs.mkdirSync(path.dirname(path.join(process.cwd(), UNLOCK_MARKER)), { recursive: true });
47
+ fs.writeFileSync(path.join(process.cwd(), UNLOCK_MARKER), new Date(Date.now() + mins * 60_000).toISOString());
48
+ console.log(`pre-write-check: 写前门解锁 ${mins} 分钟(${UNLOCK_MARKER})——仅应对话内用户明示而设,用毕删除该文件即恢复拦截`);
49
+ process.exit(0);
50
+ }
51
+
52
+ // ── 读 stdin(fail-open)───────────────────────────────
53
+ let raw = '';
54
+ try { raw = fs.readFileSync(0, 'utf8'); } catch { process.exit(0); }
55
+ let data;
56
+ try { data = JSON.parse(raw); } catch { process.exit(0); }
57
+
58
+ // Grok 工具名是 search_replace / write(Edit|Write 只是 matcher 别名)。漏掉 search_replace 时
59
+ // matcher 命中了,脚本仍在这里 exit 0,写前门等于没挂(2026-11-03)。
60
+ const toolName = `${data.tool_name || ''} ${data.toolName || ''} ${data.llm_tool_name || ''}`;
61
+ if (!/edit|write|multiedit|search_replace/i.test(toolName)) process.exit(0);
62
+ if (!data.tool_input && data.toolInput) data.tool_input = data.toolInput;
63
+
64
+ // ── 定位仓库与目标文件 ─────────────────────────────────
65
+ const root = data.cwd || (Array.isArray(data.workspace_roots) && data.workspace_roots[0]) || process.cwd();
66
+ function extractFilePath(input) {
67
+ if (!input || typeof input !== 'object') return '';
68
+ for (const k of ['file_path', 'filePath', 'path', 'target_file', 'file']) {
69
+ if (typeof input[k] === 'string' && input[k]) return input[k];
70
+ }
71
+ return '';
72
+ }
73
+ const rawPath = extractFilePath(data.tool_input);
74
+ if (!rawPath) process.exit(0);
75
+ const abs = path.resolve(root, rawPath);
76
+ const rel = path.relative(root, abs).replace(/\\/g, '/');
77
+ if (rel.startsWith('..')) process.exit(0); // 仓外文件不管
78
+
79
+ const deny = (reason) => {
80
+ console.log(JSON.stringify({
81
+ hookSpecificOutput: {
82
+ hookEventName: 'PreToolUse',
83
+ permissionDecision: 'deny',
84
+ permissionDecisionReason: reason,
85
+ },
86
+ }));
87
+ process.exit(0);
88
+ };
89
+ const notify = (text) => {
90
+ console.log(JSON.stringify({
91
+ hookSpecificOutput: { hookEventName: 'PreToolUse', additionalContext: text },
92
+ }));
93
+ process.exit(0);
94
+ };
95
+
96
+ // ── 解锁标记(TTL)────────────────────────────────────
97
+ let unlocked = false;
98
+ try {
99
+ const marker = path.join(root, UNLOCK_MARKER);
100
+ if (fs.existsSync(marker)) {
101
+ const until = Date.parse(fs.readFileSync(marker, 'utf8').trim());
102
+ if (Number.isFinite(until) && Date.now() < until) {
103
+ unlocked = true;
104
+ console.error(`pre-write-check: ⚠️ 写前门解锁中(至 ${new Date(until).toISOString()})——来源应为对话内用户明示`);
105
+ } else {
106
+ fs.rmSync(marker, { force: true }); // 过期即清
107
+ }
108
+ }
109
+ } catch { /* 标记读取失败按未解锁处理 */ }
110
+
111
+ // ── 1) 执法面自保护 ───────────────────────────────────
112
+ const WIRING_RE = /^(\.zcode\/config\.json|\.trae\/hooks\.json|\.codebuddy\/settings\.json|\.qoder\/settings\.json|\.qwen\/settings\.json|\.commandcode\/settings\.json|\.claude\/settings(\.local)?\.json|\.grok\/hooks\/.+\.json|\.agents\/hooks\/gates\.json|\.agents\/settings\.json)$/;
113
+ if (!unlocked && WIRING_RE.test(rel)) {
114
+ deny(`执法面自保护:${rel} 是门禁接线/权限基线,AI 不得自行改写。如系用户明示的引擎变更:请用户执行 node .agents/hooks/pre-write-check.cjs --unlock <分钟> 临时放行(或用户手动改本文件),完成后删除解锁标记。`);
115
+ }
116
+
117
+ // ── 合成提议内容(供 2/3 层;合成不了则对应层跳过)────
118
+ // 字段名跨宿主/跨版本归一(2026-11-11):Command Code 规范为 old_string/new_string,其修复层别名
119
+ // 为 old_value/new_value;漏认任一侧 = 内容判据静默 fail-open。
120
+ const pickStr = (o, keys) => keys.reduce((acc, k) => (acc === undefined && typeof o[k] === 'string' ? o[k] : acc), undefined);
121
+ const EDIT_OLD = ['old_string', 'oldString', 'old_value', 'oldValue'];
122
+ const EDIT_NEW = ['new_string', 'newString', 'new_value', 'newValue'];
123
+ function synthesize(input, absPath) {
124
+ if (!input || typeof input !== 'object') return null;
125
+ const content = pickStr(input, ['content', 'new_content', 'file_text']);
126
+ if (content !== undefined) return content;
127
+ const applyOne = (text, oldS, newS, all) => {
128
+ if (typeof oldS !== 'string' || typeof newS !== 'string' || oldS === '') return null;
129
+ if (!text.includes(oldS)) return null;
130
+ return all ? text.split(oldS).join(newS) : text.replace(oldS, newS);
131
+ };
132
+ const one = (src) => applyOne(src.file,
133
+ pickStr(src, EDIT_OLD), pickStr(src, EDIT_NEW) ?? '', src.replace_all === true || src.replaceAll === true);
134
+ let cur;
135
+ try { cur = fs.readFileSync(absPath, 'utf8'); } catch { return null; } // 新文件走 Write 形态,Edit 合成不了
136
+ const edits = Array.isArray(input.edits) ? input.edits : null;
137
+ if (edits) {
138
+ let text = cur;
139
+ for (const e of edits) {
140
+ const next = one({ ...(e || {}), file: text, replace_all: e && e.replace_all });
141
+ if (next === null) return null;
142
+ text = next;
143
+ }
144
+ return text;
145
+ }
146
+ if (pickStr(input, EDIT_OLD) !== undefined) {
147
+ return one({ ...input, file: cur, replace_all: input.replace_all });
148
+ }
149
+ return null;
150
+ }
151
+ const proposed = synthesize(data.tool_input, abs);
152
+
153
+ // ── 2) 确认台账 append-only ───────────────────────────
154
+ const LEDGER_RE = /^\.agents\/(confirmations\.jsonl|confirmations\.d\/.+)$/;
155
+ if (proposed !== null && LEDGER_RE.test(rel)) {
156
+ const head = spawnSync('git', ['-c', 'core.quotepath=off', 'show', `HEAD:${rel}`], { encoding: 'utf8', cwd: root });
157
+ if (head.status === 0 && !proposed.startsWith(String(head.stdout))) {
158
+ deny(`确认台账只允许追加(append-only):${rel} 的本次写入非 HEAD 版本的前缀扩展。重写/改写台账请走 confirm-doc / ledger-shards 工具,不直接编辑。`);
159
+ }
160
+ }
161
+
162
+ // ── 3) 红线内容判据(快照-换入-跑真实门-恢复)─────────
163
+ const gates = [];
164
+ if (/^backend\/.+\.(cs|csproj|sln)$/i.test(rel)) {
165
+ gates.push(['check-architecture', path.join('.agents', 'hooks', 'check-architecture.mjs')]);
166
+ gates.push(['check-delete-guard', path.join('.agents', 'hooks', 'check-delete-guard.mjs')]);
167
+ } else if (/^frontend\/src\/.+\.(ts|vue)$/i.test(rel)) {
168
+ gates.push(['check-notify-guard', path.join('.agents', 'hooks', 'check-notify-guard.mjs')]);
169
+ }
170
+ // runGateAsync:异步 spawn 单个门脚本(30 秒超时约束保持),聚合 stdout/stderr 后 resolve。
171
+ // 并行化(2026-11-08 减重档 1-A):多门经 Promise.all 同时起跑,任一门非零退出即整体 deny
172
+ // (fail-fast 语义不变);输出拼接顺序(stderr+stdout)与截断口径与旧串行版一致。
173
+ function runGateAsync(gatePath) {
174
+ return new Promise((resolve) => {
175
+ const child = spawn(process.execPath, [gatePath], { cwd: root, timeout: 30000 });
176
+ let stdout = '', stderr = '';
177
+ let settled = false;
178
+ const finish = (r) => { if (!settled) { settled = true; resolve(r); } };
179
+ child.stdout.on('data', (d) => { stdout += d; });
180
+ child.stderr.on('data', (d) => { stderr += d; });
181
+ child.on('error', (e) => finish({ status: 1, stdout: '', stderr: String(e) }));
182
+ child.on('close', (code) => finish({ status: code, stdout, stderr }));
183
+ });
184
+ }
185
+
186
+ (async () => {
187
+ if (gates.length > 0 && proposed !== null) {
188
+ const existed = fs.existsSync(abs);
189
+ const backup = existed ? fs.readFileSync(abs) : null;
190
+ const violations = [];
191
+ try {
192
+ fs.writeFileSync(abs, proposed);
193
+ const results = await Promise.all(gates.map(([label, gatePath]) => runGateAsync(gatePath)));
194
+ for (let i = 0; i < results.length; i++) {
195
+ if (results[i].status !== 0) {
196
+ const out = String((results[i].stderr || '') + (results[i].stdout || '')).trim();
197
+ violations.push(`【${gates[i][0]}】${out.slice(-OUT_MAX)}`);
198
+ }
199
+ }
200
+ } catch { /* 快照失败 → 内容判据放弃,git 钩子兜底 */ }
201
+ finally {
202
+ try {
203
+ if (backup !== null) fs.writeFileSync(abs, backup);
204
+ else if (fs.existsSync(abs)) fs.rmSync(abs, { force: true });
205
+ } catch (e) {
206
+ console.error(`pre-write-check: ⚠️ 快照恢复失败(${rel})——工作区可能残留提议内容,请人工核对 git diff:${e}`);
207
+ }
208
+ }
209
+ if (violations.length > 0) {
210
+ deny(`写前门拦下(判据单源 .agents/hooks/check-*.mjs,快照复用):\n${violations.join('\n')}\n——按各门输出修复后重试;本拦截发生在写盘前,文件未被修改。`);
211
+ }
212
+ }
213
+
214
+ // ── 引擎面提示(不拦)─────────────────────────────────
215
+ if (/^(\.githooks|\.agents\/hooks)\//.test(rel)) {
216
+ notify(`执法面变更提示:${rel} 属门禁面文件——确认这是用户指示的引擎面工作(引擎面豁免条款),并注意同步 .agents/config/mechanism-registry.md。`);
217
+ }
218
+
219
+ process.exit(0);
220
+ })();