@event4u/agent-config 16.2.0 → 16.4.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 (651) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +337 -234
  5. package/README.md +15 -13
  6. package/agents/templates/.ai-council.yml.example +26 -8
  7. package/dist/agent-src/commands/analyze/inbox.md +11 -8
  8. package/dist/agent-src/commands/analyze/roadmap-repos.md +1 -1
  9. package/dist/agent-src/commands/bug/fix.md +17 -2
  10. package/dist/agent-src/commands/bug/investigate.md +1 -1
  11. package/dist/agent-src/commands/commit/in-chunks.md +40 -31
  12. package/dist/agent-src/commands/commit.md +72 -33
  13. package/dist/agent-src/commands/condense.md +2 -8
  14. package/dist/agent-src/commands/council/debate.md +11 -7
  15. package/dist/agent-src/commands/council/default.md +10 -9
  16. package/dist/agent-src/commands/council.md +1 -1
  17. package/dist/agent-src/commands/estimate-ticket.md +1 -1
  18. package/dist/agent-src/commands/feature/explore.md +3 -3
  19. package/dist/agent-src/commands/feature/plan.md +2 -2
  20. package/dist/agent-src/commands/feature/roadmap.md +1 -1
  21. package/dist/agent-src/commands/fix/ci.md +18 -4
  22. package/dist/agent-src/commands/fix/commit-messages.md +48 -23
  23. package/dist/agent-src/commands/fix/pr-comments.md +3 -6
  24. package/dist/agent-src/commands/implement-ticket.md +4 -4
  25. package/dist/agent-src/commands/jira-ticket.md +1 -1
  26. package/dist/agent-src/commands/memory/add.md +4 -16
  27. package/dist/agent-src/commands/memory/load.md +5 -6
  28. package/dist/agent-src/commands/memory/promote.md +3 -16
  29. package/dist/agent-src/commands/mission/upgrade.md +3 -2
  30. package/dist/agent-src/commands/optimize/agents-dir.md +2 -2
  31. package/dist/agent-src/commands/optimize/deep.md +4 -2
  32. package/dist/agent-src/commands/optimize/rtk.md +4 -26
  33. package/dist/agent-src/commands/pr/create/description-only.md +18 -15
  34. package/dist/agent-src/commands/pr/create.md +42 -34
  35. package/dist/agent-src/commands/pr/merge.md +136 -9
  36. package/dist/agent-src/commands/prepare-for-review.md +13 -11
  37. package/dist/agent-src/commands/project/analyze.md +7 -35
  38. package/dist/agent-src/commands/refine-ticket.md +1 -1
  39. package/dist/agent-src/commands/review/changes.md +14 -19
  40. package/dist/agent-src/commands/roadmap/create.md +1 -1
  41. package/dist/agent-src/commands/roadmap/materialize.md +1 -1
  42. package/dist/agent-src/commands/roadmap/next.md +10 -1
  43. package/dist/agent-src/commands/roadmap/process-full.md +56 -42
  44. package/dist/agent-src/commands/roadmap/resolve-blockers.md +411 -0
  45. package/dist/agent-src/commands/roadmap/triage-parked.md +325 -0
  46. package/dist/agent-src/commands/roadmap.md +18 -4
  47. package/dist/agent-src/commands/tests/create.md +17 -3
  48. package/dist/agent-src/commands/tests/execute.md +22 -5
  49. package/dist/agent-src/commands/worktree/create.md +7 -3
  50. package/dist/agent-src/commands/worktree/verify.md +2 -1
  51. package/dist/agent-src/contexts/authority/decision-revisit-gate-enforcement.md +43 -0
  52. package/dist/agent-src/contexts/communication/rules-auto/design-fidelity-enforcement.md +24 -0
  53. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +5 -3
  54. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +7 -9
  55. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -6
  56. package/dist/agent-src/contexts/contracts/frugality-charter.md +8 -5
  57. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +7 -7
  58. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +0 -1
  59. package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
  60. package/dist/agent-src/contexts/execution/non-interactive-contract.md +5 -8
  61. package/dist/agent-src/contexts/execution/rdp-gate.md +4 -4
  62. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +9 -8
  63. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +99 -54
  64. package/dist/agent-src/contexts/execution/session-canary-enforcement-history.md +67 -0
  65. package/dist/agent-src/contexts/execution/subagent-routing.md +8 -8
  66. package/dist/agent-src/contexts/execution/subagent-steering.md +6 -4
  67. package/dist/agent-src/contexts/execution/terminal-states.md +2 -2
  68. package/dist/agent-src/contexts/execution/toolchain-resolver.md +95 -7
  69. package/dist/agent-src/contexts/subagent-configuration.md +1 -1
  70. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  71. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  72. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  73. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  74. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +13 -1
  75. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  76. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  77. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +36 -0
  78. package/dist/agent-src/guidelines/php/git.md +15 -2
  79. package/dist/agent-src/rules/active-remediation.md +1 -2
  80. package/dist/agent-src/rules/analysis-skill-routing.md +0 -1
  81. package/dist/agent-src/rules/architecture.md +0 -1
  82. package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -1
  83. package/dist/agent-src/rules/artifact-engagement-recording.md +0 -1
  84. package/dist/agent-src/rules/augment-edit-discipline.md +0 -1
  85. package/dist/agent-src/rules/autonomous-execution.md +1 -1
  86. package/dist/agent-src/rules/brand-consistency.md +0 -1
  87. package/dist/agent-src/rules/brand-source-of-truth.md +0 -1
  88. package/dist/agent-src/rules/broken-access-control.md +1 -1
  89. package/dist/agent-src/rules/cli-output-handling.md +0 -1
  90. package/dist/agent-src/rules/code-comment-discipline.md +0 -1
  91. package/dist/agent-src/rules/code-provenance.md +0 -1
  92. package/dist/agent-src/rules/command-suggestion-policy.md +1 -1
  93. package/dist/agent-src/rules/commit-conventions.md +1 -2
  94. package/dist/agent-src/rules/communication-through-line.md +1 -2
  95. package/dist/agent-src/rules/content-quoting-floor.md +1 -2
  96. package/dist/agent-src/rules/context-hygiene.md +6 -6
  97. package/dist/agent-src/rules/copilot-routing.md +1 -2
  98. package/dist/agent-src/rules/council-availability.md +4 -4
  99. package/dist/agent-src/rules/cross-source-consistency.md +4 -6
  100. package/dist/agent-src/rules/decision-revisit-gate.md +17 -35
  101. package/dist/agent-src/rules/delegation-policy.md +2 -3
  102. package/dist/agent-src/rules/design-fidelity.md +12 -16
  103. package/dist/agent-src/rules/design-review-after-ui-write.md +3 -3
  104. package/dist/agent-src/rules/devcontainer-routing.md +1 -2
  105. package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
  106. package/dist/agent-src/rules/docker-commands.md +0 -1
  107. package/dist/agent-src/rules/domain-adoption-policy.md +0 -1
  108. package/dist/agent-src/rules/domain-safety-disclaimer.md +1 -1
  109. package/dist/agent-src/rules/domain-safety-pii.md +1 -1
  110. package/dist/agent-src/rules/domain-safety-retention.md +1 -1
  111. package/dist/agent-src/rules/downstream-changes.md +0 -1
  112. package/dist/agent-src/rules/engineering-safety-floor.md +1 -1
  113. package/dist/agent-src/rules/evaluator-independence.md +3 -2
  114. package/dist/agent-src/rules/external-code-graph-interop.md +0 -1
  115. package/dist/agent-src/rules/external-reference-deep-dive.md +0 -1
  116. package/dist/agent-src/rules/fast-path-marker-visibility.md +2 -2
  117. package/dist/agent-src/rules/finance-safety-floor.md +1 -1
  118. package/dist/agent-src/rules/fix-what-you-see.md +6 -32
  119. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +0 -1
  120. package/dist/agent-src/rules/git-history-discipline.md +2 -2
  121. package/dist/agent-src/rules/guidelines.md +0 -1
  122. package/dist/agent-src/rules/history-discipline.md +0 -1
  123. package/dist/agent-src/rules/icon-consistency.md +0 -1
  124. package/dist/agent-src/rules/image-likeness-and-rights.md +1 -1
  125. package/dist/agent-src/rules/improve-before-implement.md +0 -1
  126. package/dist/agent-src/rules/invite-challenge.md +0 -1
  127. package/dist/agent-src/rules/laravel-routing.md +1 -2
  128. package/dist/agent-src/rules/laravel-translations.md +0 -1
  129. package/dist/agent-src/rules/legal-safety-floor.md +3 -3
  130. package/dist/agent-src/rules/lethal-trifecta-guard.md +1 -1
  131. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -1
  132. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +1 -1
  133. package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
  134. package/dist/agent-src/rules/media-governance-routing.md +13 -17
  135. package/dist/agent-src/rules/media-sync-ground-truth.md +0 -1
  136. package/dist/agent-src/rules/minimal-safe-diff.md +0 -1
  137. package/dist/agent-src/rules/missing-skill-recovery.md +0 -1
  138. package/dist/agent-src/rules/missing-tool-handling.md +0 -1
  139. package/dist/agent-src/rules/model-recommendation.md +0 -1
  140. package/dist/agent-src/rules/neighbour-precedence.md +64 -0
  141. package/dist/agent-src/rules/no-attribution-footers.md +0 -1
  142. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +0 -1
  143. package/dist/agent-src/rules/no-pr-progress-comments.md +0 -1
  144. package/dist/agent-src/rules/no-roadmap-references.md +0 -1
  145. package/dist/agent-src/rules/notes-first-reasoning.md +0 -1
  146. package/dist/agent-src/rules/onboarding-gate.md +0 -1
  147. package/dist/agent-src/rules/output-discipline.md +0 -1
  148. package/dist/agent-src/rules/package-ci-checks.md +0 -1
  149. package/dist/agent-src/rules/persona-governance.md +4 -5
  150. package/dist/agent-src/rules/php-coding.md +0 -1
  151. package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -1
  152. package/dist/agent-src/rules/preservation-guard.md +0 -1
  153. package/dist/agent-src/rules/provider-lifecycle-discipline.md +3 -4
  154. package/dist/agent-src/rules/question-not-instruction.md +1 -1
  155. package/dist/agent-src/rules/reviewer-awareness.md +0 -1
  156. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -1
  157. package/dist/agent-src/rules/roadmap-progress-sync.md +4 -7
  158. package/dist/agent-src/rules/role-mode-adherence.md +0 -1
  159. package/dist/agent-src/rules/rule-type-governance.md +0 -1
  160. package/dist/agent-src/rules/runtime-safety.md +1 -1
  161. package/dist/agent-src/rules/scale-discipline.md +0 -1
  162. package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
  163. package/dist/agent-src/rules/security-sensitive-stop.md +3 -3
  164. package/dist/agent-src/rules/self-repair-loop.md +0 -1
  165. package/dist/agent-src/rules/senior-engineering-discipline.md +0 -1
  166. package/dist/agent-src/rules/session-canary.md +7 -62
  167. package/dist/agent-src/rules/settings-ask-protocol.md +6 -6
  168. package/dist/agent-src/rules/size-enforcement.md +0 -1
  169. package/dist/agent-src/rules/skill-improvement-trigger.md +2 -3
  170. package/dist/agent-src/rules/skill-quality.md +0 -1
  171. package/dist/agent-src/rules/slash-command-routing-policy.md +0 -1
  172. package/dist/agent-src/rules/source-confidentiality.md +1 -1
  173. package/dist/agent-src/rules/source-discovery-gate.md +0 -1
  174. package/dist/agent-src/rules/source-of-truth.md +0 -1
  175. package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -2
  176. package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
  177. package/dist/agent-src/rules/symfony-routing.md +1 -2
  178. package/dist/agent-src/rules/think-before-action.md +0 -1
  179. package/dist/agent-src/rules/token-budget-discipline.md +12 -46
  180. package/dist/agent-src/rules/token-efficiency.md +0 -1
  181. package/dist/agent-src/rules/token-optimizer-maintenance.md +0 -1
  182. package/dist/agent-src/rules/tool-safety.md +1 -1
  183. package/dist/agent-src/rules/ui-audit-gate.md +1 -2
  184. package/dist/agent-src/rules/untrusted-input-defense.md +1 -1
  185. package/dist/agent-src/rules/upstream-proposal.md +0 -1
  186. package/dist/agent-src/rules/user-interaction.md +0 -1
  187. package/dist/agent-src/rules/user-interrupt-priority.md +1 -1
  188. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
  189. package/dist/agent-src/scripts/deferral_carry.ts +339 -0
  190. package/dist/agent-src/scripts/gate_budget.ts +47 -23
  191. package/dist/agent-src/scripts/gate_execute.ts +12 -4
  192. package/dist/agent-src/scripts/update_roadmap_progress.ts +4 -1
  193. package/dist/agent-src/skills/ai-council/SKILL.md +7 -4
  194. package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +21 -11
  195. package/dist/agent-src/skills/ai-council/references/procedure.md +12 -6
  196. package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
  197. package/dist/agent-src/skills/api-design/data/manifest.json +2 -2
  198. package/dist/agent-src/skills/api-testing/SKILL.md +17 -0
  199. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  200. package/dist/agent-src/skills/code-intelligence/SKILL.md +14 -2
  201. package/dist/agent-src/skills/command-routing/SKILL.md +3 -4
  202. package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +127 -139
  203. package/dist/agent-src/skills/corpus-grounding/ATTRIBUTION.md +39 -0
  204. package/dist/agent-src/skills/corpus-grounding/SKILL.md +8 -2
  205. package/dist/agent-src/skills/database/data/manifest.json +2 -2
  206. package/dist/agent-src/skills/database/data/query-tuning.csv +13 -13
  207. package/dist/agent-src/skills/design-system-capture/SKILL.md +0 -3
  208. package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +1 -1
  209. package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
  210. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +2 -2
  211. package/dist/agent-src/skills/fe-design/SKILL.md +1 -1
  212. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  213. package/dist/agent-src/skills/git-workflow/SKILL.md +44 -44
  214. package/dist/agent-src/skills/git-workflow/references/branch-update.md +312 -0
  215. package/dist/agent-src/skills/git-workflow/references/commit-subject.md +205 -0
  216. package/dist/agent-src/skills/iconography/SKILL.md +1 -1
  217. package/dist/agent-src/skills/jira-integration/SKILL.md +3 -3
  218. package/dist/agent-src/skills/js-library-packaging/SKILL.md +2 -2
  219. package/dist/agent-src/skills/merge-conflicts/SKILL.md +10 -4
  220. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
  221. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  222. package/dist/agent-src/skills/quality-tools/SKILL.md +11 -1
  223. package/dist/agent-src/skills/quality-tools/references/go-tools.md +76 -0
  224. package/dist/agent-src/skills/quality-tools/references/python-tools.md +104 -0
  225. package/dist/agent-src/skills/refine-ticket/SKILL.md +4 -4
  226. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  227. package/dist/agent-src/skills/roadmap-writing/SKILL.md +2 -2
  228. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
  229. package/dist/agent-src/skills/source-discovery/SKILL.md +1 -1
  230. package/dist/agent-src/skills/storybook-workshop/SKILL.md +3 -3
  231. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +4 -2
  232. package/dist/agent-src/skills/test-case-discovery/SKILL.md +7 -0
  233. package/dist/agent-src/skills/test-driven-development/SKILL.md +17 -0
  234. package/dist/agent-src/skills/test-performance/SKILL.md +19 -1
  235. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  236. package/dist/agent-src/skills/ui-component-architect/SKILL.md +2 -2
  237. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
  238. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  239. package/dist/agent-src/templates/AGENTS.md +1 -1
  240. package/dist/agent-src/templates/agent-settings.md +46 -129
  241. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  242. package/dist/agent-src/templates/command.md +2 -2
  243. package/dist/agent-src/templates/roadmaps.md +6 -1
  244. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  245. package/dist/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  246. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
  247. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  248. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  249. package/dist/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  250. package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  251. package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  252. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
  253. package/dist/agent-src/templates/skill.md +1 -1
  254. package/dist/cli/registry.js +2 -1
  255. package/dist/cli-delegate/archive_completed_roadmaps.js +92 -12
  256. package/dist/cli-delegate/check_update_banner.js +207 -120
  257. package/dist/cli-delegate/chunk-523HCFYO.js +90 -0
  258. package/dist/cli-delegate/{chunk-FP36SWJD.js → chunk-5GPULQBE.js} +2797 -338
  259. package/dist/cli-delegate/{chunk-IGD6ERX6.js → chunk-6SRJTYJS.js} +42 -176
  260. package/dist/cli-delegate/chunk-6V5FMA3P.js +186 -0
  261. package/dist/cli-delegate/{chunk-M2DPGFZ4.js → chunk-6V6TA25H.js} +22 -152
  262. package/dist/cli-delegate/chunk-6YQC2HLF.js +415 -0
  263. package/dist/cli-delegate/{chunk-E4XIZDIB.js → chunk-7HKRE54K.js} +1 -64
  264. package/dist/cli-delegate/chunk-7IQE3D5S.js +191 -0
  265. package/dist/cli-delegate/{chunk-YJ72UIAK.js → chunk-AED2VQGM.js} +1245 -249
  266. package/dist/cli-delegate/{chunk-7HQ52DHU.js → chunk-AL3RZ22D.js} +1 -1
  267. package/dist/cli-delegate/chunk-DEIV7XP7.js +108 -0
  268. package/dist/cli-delegate/{chunk-DBH4AHDK.js → chunk-ED7KCMLB.js} +9 -11
  269. package/dist/cli-delegate/chunk-F3QDG2GT.js +2569 -0
  270. package/dist/cli-delegate/{chunk-6KFEC3G7.js → chunk-G5VVIZRC.js} +3 -3
  271. package/dist/cli-delegate/{chunk-FC75PGJE.js → chunk-H76PHZBI.js} +149 -61
  272. package/dist/cli-delegate/chunk-IAYTIIQW.js +67 -0
  273. package/dist/cli-delegate/chunk-JQOM7TTM.js +1201 -0
  274. package/dist/cli-delegate/chunk-KB5FZ655.js +208 -0
  275. package/dist/cli-delegate/{chunk-7RQP4UDH.js → chunk-KR6EM23A.js} +235 -1455
  276. package/dist/cli-delegate/{chunk-LTYVIY76.js → chunk-KXXWJTDO.js} +6 -11
  277. package/dist/cli-delegate/{chunk-T7L2QK3K.js → chunk-LQOCRFWT.js} +1 -1
  278. package/dist/cli-delegate/{chunk-6KM6ORRY.js → chunk-MDPPKQCQ.js} +58 -9
  279. package/dist/cli-delegate/{chunk-4XFP2Y3E.js → chunk-MSUL5NYP.js} +5 -5
  280. package/dist/cli-delegate/chunk-OAFSJBHH.js +272 -0
  281. package/dist/cli-delegate/{chunk-4E2W63DA.js → chunk-OKJUIAPS.js} +62 -1
  282. package/dist/cli-delegate/{chunk-QAJS5YWY.js → chunk-PHD7OOLE.js} +2 -1
  283. package/dist/cli-delegate/{chunk-P6ZHP5W2.js → chunk-PWX7CKMD.js} +4 -4
  284. package/dist/cli-delegate/{chunk-NDJLNC6Q.js → chunk-T6BP34WI.js} +1 -0
  285. package/dist/cli-delegate/{chunk-7XGBX6ZH.js → chunk-T7XSJSUQ.js} +1144 -589
  286. package/dist/cli-delegate/chunk-ULQRUR23.js +208 -0
  287. package/dist/cli-delegate/chunk-WQWXGIWB.js +1779 -0
  288. package/dist/cli-delegate/{chunk-RGNIWTEA.js → chunk-XQTPXKFA.js} +1 -1
  289. package/dist/cli-delegate/{chunk-NUHLI2RX.js → chunk-YCU3TIXH.js} +2 -0
  290. package/dist/cli-delegate/chunk-ZBZV2G5R.js +210 -0
  291. package/dist/cli-delegate/{chunk-WGXTVKCQ.js → chunk-ZUZKZYCN.js} +5 -3
  292. package/dist/cli-delegate/cmd_analyze_session.js +223 -43
  293. package/dist/cli-delegate/cmd_brand_status.js +3 -2
  294. package/dist/cli-delegate/cmd_conformance.js +1252 -249
  295. package/dist/cli-delegate/cmd_converge.js +3 -3
  296. package/dist/cli-delegate/cmd_doctor.js +19 -9
  297. package/dist/cli-delegate/cmd_doctor_neighbours.js +30 -0
  298. package/dist/cli-delegate/cmd_explain.js +45 -21
  299. package/dist/cli-delegate/cmd_export.js +13 -10
  300. package/dist/cli-delegate/cmd_fleet.js +3 -3
  301. package/dist/cli-delegate/cmd_git_convention.js +1851 -0
  302. package/dist/cli-delegate/cmd_handoff.js +44 -22
  303. package/dist/cli-delegate/cmd_mcp_available.js +3 -2
  304. package/dist/cli-delegate/cmd_memory_get.js +3 -1
  305. package/dist/cli-delegate/cmd_migrate.js +3 -3
  306. package/dist/cli-delegate/cmd_packs_active.js +5 -4
  307. package/dist/cli-delegate/cmd_preflight.js +6 -6
  308. package/dist/cli-delegate/cmd_prune.js +14 -11
  309. package/dist/cli-delegate/cmd_refresh.js +2 -1
  310. package/dist/cli-delegate/cmd_route_audit.js +10 -8
  311. package/dist/cli-delegate/cmd_route_explain.js +4 -4
  312. package/dist/cli-delegate/cmd_session_recycle.js +10 -7
  313. package/dist/cli-delegate/cmd_settings_check.js +54 -7
  314. package/dist/cli-delegate/cmd_settings_get.js +18 -8
  315. package/dist/cli-delegate/cmd_settings_migrate.js +13 -10
  316. package/dist/cli-delegate/cmd_settings_set.js +4 -4
  317. package/dist/cli-delegate/cmd_sync.js +14 -11
  318. package/dist/cli-delegate/cmd_uninstall.js +15 -12
  319. package/dist/cli-delegate/cmd_update.js +7 -7
  320. package/dist/cli-delegate/cmd_upgrade.js +9 -8
  321. package/dist/cli-delegate/cmd_validate.js +15 -12
  322. package/dist/cli-delegate/cmd_versions.js +5 -5
  323. package/dist/cli-delegate/deferral_carry.js +16 -0
  324. package/dist/cli-delegate/gate_budget.js +1 -1
  325. package/dist/cli-delegate/gate_execute.js +3 -3
  326. package/dist/cli-delegate/roadmap_gates.js +6 -6
  327. package/dist/cli-delegate/update_roadmap_progress.js +1 -1
  328. package/dist/discovery/deprecation-report.md +1 -1
  329. package/dist/discovery/discovery-manifest.json +232 -141
  330. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  331. package/dist/discovery/discovery-manifest.summary.md +3 -3
  332. package/dist/discovery/dormancy-report.md +1 -1
  333. package/dist/discovery/orphan-report.md +1 -1
  334. package/dist/discovery/packs.json +26 -9
  335. package/dist/discovery/trust-report.md +3 -3
  336. package/dist/discovery/workspaces.json +7 -4
  337. package/dist/hooks/dispatch.js +5655 -6623
  338. package/dist/hooks/dispatch.sha256 +1 -1
  339. package/dist/install/claudePathsPlan.js +47 -6
  340. package/dist/install/claudeRuleRewrite.js +7 -0
  341. package/dist/install/emit_host_rules_cli.js +39 -36
  342. package/dist/install/globalRuleScope.js +87 -0
  343. package/dist/install/host_rule_ownership.js +160 -0
  344. package/dist/install/install.mjs +2336 -1249
  345. package/dist/install/installThinLayer.js +289 -0
  346. package/dist/install/installedRuleLinks.js +262 -0
  347. package/dist/install/wizard-plan.js +24 -0
  348. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  349. package/dist/mcp/mcp-cloudflare-catalogue.json +2 -2
  350. package/dist/mcp/registry-manifest.json +5 -5
  351. package/dist/mcp/server.json +2 -2
  352. package/dist/mcp/server.mjs +36504 -30986
  353. package/dist/router.json +1 -1
  354. package/dist/scripts/_lib/agent_settings.js +26 -120
  355. package/dist/scripts/_lib/claude_settings_hooks.js +10 -8
  356. package/dist/scripts/_lib/compile_time_toggles.js +12 -21
  357. package/dist/scripts/_lib/git_convention.js +232 -0
  358. package/dist/scripts/_lib/global_deploy_inventory.js +730 -0
  359. package/dist/scripts/_lib/installed_layer.js +704 -0
  360. package/dist/scripts/_lib/lean_projection_mode.js +218 -15
  361. package/dist/scripts/_lib/package_root.js +68 -0
  362. package/dist/scripts/_lib/rule_consequence_class.js +45 -0
  363. package/dist/scripts/_lib/rule_injection.js +67 -10
  364. package/dist/scripts/_lib/rule_law_section.js +122 -0
  365. package/dist/scripts/_lib/settings_removed_keys.js +168 -0
  366. package/dist/scripts/_lib/thin_rules.js +535 -0
  367. package/dist/scripts/_lib/windsurf_render.js +60 -0
  368. package/dist/scripts/condense.js +14 -26
  369. package/dist/scripts/project_thin_rules.js +14 -294
  370. package/dist/server/app.js +2 -1
  371. package/dist/server/gitKeysGate.js +105 -0
  372. package/dist/server/routes/settings.js +67 -8
  373. package/dist/server/routes/wizard.js +4 -0
  374. package/dist/server/schemas/settings.js +29 -81
  375. package/dist/shared/skillRanking.js +103 -16
  376. package/dist/ui/assets/{index-Cwq4d0hX.js → index-C3djEJah.js} +2 -2
  377. package/dist/ui/index.html +1 -1
  378. package/docs/MIGRATION.md +72 -1
  379. package/docs/contracts/settings-classes.md +39 -67
  380. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  381. package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  382. package/docs/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  383. package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  384. package/docs/guidelines/agent-infra/layered-settings.md +13 -1
  385. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  386. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  387. package/docs/guidelines/agent-infra/size-and-scope.md +36 -0
  388. package/docs/guidelines/php/git.md +15 -2
  389. package/package.json +1 -1
  390. package/src/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
  391. package/src/agent-src/scripts/deferral_carry.ts +339 -0
  392. package/src/agent-src/scripts/gate_budget.ts +47 -23
  393. package/src/agent-src/scripts/gate_execute.ts +12 -4
  394. package/src/agent-src/scripts/update_roadmap_progress.ts +4 -1
  395. package/src/agent-src/templates/AGENTS.md +1 -1
  396. package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  397. package/src/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  398. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
  399. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  400. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  401. package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  402. package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  403. package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  404. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
  405. package/src/config/agent-settings.template.yml +141 -334
  406. package/src/config/agents-paths.yml +16 -0
  407. package/src/config/assurance-capability-registry.json +7 -3
  408. package/src/config/ci-local-parity.yml +3 -0
  409. package/src/config/continuity-surface.json +10 -3
  410. package/src/config/discovery/packs.yml +17 -1
  411. package/src/config/evaluator-budgets.json +23 -10
  412. package/src/config/gate-coverage.yml +138 -3
  413. package/src/config/gate-violation-baselines.json +64 -16
  414. package/src/config/gitignore-block.txt +19 -0
  415. package/src/config/hook-bundle-budget.json +25 -0
  416. package/src/config/hook-token-budget.json +6 -1
  417. package/src/config/host-instruction-limits.json +33 -0
  418. package/src/config/release-gate-locality.yml +2 -1
  419. package/src/config/routing-coverage-seed.json +67 -4
  420. package/src/config/rule-activation-census.json +7 -3
  421. package/src/config/rule-consequence-class.json +161 -0
  422. package/src/config/rule-law-ceilings.json +105 -0
  423. package/src/config/rule-obligations.json +833 -0
  424. package/src/install/claudePathsPlan.ts +46 -4
  425. package/src/install/claudeRuleRewrite.ts +10 -1
  426. package/src/install/emit_host_rules_cli.ts +43 -34
  427. package/src/install/globalRuleScope.ts +109 -0
  428. package/src/install/host_rule_ownership.ts +170 -0
  429. package/src/install/installThinLayer.ts +378 -0
  430. package/src/install/installedRuleLinks.ts +308 -0
  431. package/src/install/wizard-plan.ts +24 -0
  432. package/src/scripts/_cli/cmd_analyze_session.ts +9 -15
  433. package/src/scripts/_cli/cmd_conformance.ts +13 -2
  434. package/src/scripts/_cli/cmd_doctor.ts +33 -81
  435. package/src/scripts/_cli/cmd_doctor_neighbours.ts +426 -0
  436. package/src/scripts/_cli/cmd_explain.ts +72 -14
  437. package/src/scripts/_cli/cmd_git_convention.ts +637 -0
  438. package/src/scripts/_cli/cmd_settings_check.ts +66 -8
  439. package/src/scripts/_cli/cmd_settings_get.ts +18 -3
  440. package/src/scripts/_cli/doctor_execution.ts +72 -1
  441. package/src/scripts/_dispatch.bash +53 -4
  442. package/src/scripts/_lib/agent_settings.ts +26 -124
  443. package/src/scripts/_lib/blocked_by_marker.ts +1 -1
  444. package/src/scripts/_lib/claude_settings_hooks.ts +10 -8
  445. package/src/scripts/_lib/compile_time_toggles.ts +12 -21
  446. package/src/scripts/_lib/dispatch_import_closure.ts +163 -0
  447. package/src/scripts/_lib/estate_offsets.ts +241 -0
  448. package/src/scripts/_lib/exemption_shape.ts +143 -0
  449. package/src/scripts/_lib/fnv.ts +23 -0
  450. package/src/scripts/_lib/foreign_scan.ts +106 -0
  451. package/src/scripts/_lib/git_base_ref.ts +92 -0
  452. package/src/scripts/_lib/git_convention.ts +291 -0
  453. package/src/scripts/_lib/git_convention_carrier.ts +389 -0
  454. package/src/scripts/_lib/git_convention_grammar.ts +246 -0
  455. package/src/scripts/_lib/git_convention_measure.ts +344 -0
  456. package/src/scripts/_lib/gitignore_block.ts +314 -0
  457. package/src/scripts/_lib/global_deploy_inventory.ts +106 -0
  458. package/src/scripts/_lib/graph_feeder_record.ts +437 -0
  459. package/src/scripts/_lib/hook_settings.ts +73 -0
  460. package/src/scripts/_lib/host_capability.ts +40 -19
  461. package/src/scripts/_lib/host_hook_merge.ts +165 -0
  462. package/src/scripts/_lib/installed_layer.ts +963 -0
  463. package/src/scripts/_lib/json_merge.ts +82 -0
  464. package/src/scripts/_lib/json_pointers.ts +93 -11
  465. package/src/scripts/_lib/knowledge_global.ts +14 -1
  466. package/src/scripts/_lib/lean_projection_mode.ts +275 -15
  467. package/src/scripts/_lib/machine_wake.ts +16 -3
  468. package/src/scripts/_lib/module_reach.ts +456 -0
  469. package/src/scripts/_lib/neighbour_census.ts +760 -0
  470. package/src/scripts/_lib/neighbour_contradictions.ts +236 -0
  471. package/src/scripts/_lib/neighbour_scan.ts +122 -0
  472. package/src/scripts/_lib/neighbour_tool_use.ts +187 -0
  473. package/src/scripts/_lib/prompt_shape.ts +46 -0
  474. package/src/scripts/_lib/ratification_artifact.ts +220 -1
  475. package/src/scripts/_lib/ratification_subject.ts +92 -0
  476. package/src/scripts/_lib/release_findings_ingest.ts +15 -7
  477. package/src/scripts/_lib/release_highlights.ts +5 -0
  478. package/src/scripts/_lib/release_migration_gate.ts +19 -3
  479. package/src/scripts/_lib/reserved_name_sweep.ts +73 -0
  480. package/src/scripts/_lib/review_coverage.ts +134 -0
  481. package/src/scripts/_lib/rule_consequence_class.ts +71 -0
  482. package/src/scripts/_lib/rule_injection.ts +130 -10
  483. package/src/scripts/_lib/rule_law_section.ts +147 -0
  484. package/src/scripts/_lib/rule_layer_overlap.ts +58 -0
  485. package/src/scripts/_lib/rule_obligations.ts +205 -0
  486. package/src/scripts/_lib/self_repair.ts +1 -1
  487. package/src/scripts/_lib/settings_removed_keys.ts +173 -0
  488. package/src/scripts/_lib/skill_origin.ts +254 -0
  489. package/src/scripts/_lib/structured_ask.ts +64 -21
  490. package/src/scripts/_lib/test_red_state.ts +5 -0
  491. package/src/scripts/_lib/thin_rules.ts +620 -0
  492. package/src/scripts/_lib/touched_file_quality.ts +570 -0
  493. package/src/scripts/_lib/turn_end_refusals.ts +77 -2
  494. package/src/scripts/_lib/windsurf_render.ts +63 -0
  495. package/src/scripts/_lib/worker_budget.ts +1 -1
  496. package/src/scripts/adr/regenerate_index.ts +16 -1
  497. package/src/scripts/ai_council/cli_call_budget.ts +13 -5
  498. package/src/scripts/ai_council/clients.ts +26 -57
  499. package/src/scripts/ai_council/config.ts +8 -8
  500. package/src/scripts/ai_council/modification_review.ts +100 -0
  501. package/src/scripts/ai_council/modification_review_questions.ts +90 -0
  502. package/src/scripts/ai_council/orchestrator.ts +5 -5
  503. package/src/scripts/ai_council/spend_gate.ts +18 -7
  504. package/src/scripts/ai_council/vendor_defaults.ts +45 -0
  505. package/src/scripts/ai_team/config.ts +11 -16
  506. package/src/scripts/audit_skill_overlap.ts +261 -0
  507. package/src/scripts/audit_user_type_axis.ts +20 -8
  508. package/src/scripts/before_complete_hook.ts +243 -12
  509. package/src/scripts/bench_ab_clone.ts +1 -2
  510. package/src/scripts/bench_concern_spawn_path.ts +129 -0
  511. package/src/scripts/bench_graph_feeder_latency.ts +584 -0
  512. package/src/scripts/bench_touched_file_quality.ts +238 -0
  513. package/src/scripts/check_agent_artifact_location.ts +36 -0
  514. package/src/scripts/check_branch_freshness.ts +147 -24
  515. package/src/scripts/check_enforcement_coverage.ts +130 -0
  516. package/src/scripts/check_enforcement_matrix.ts +377 -20
  517. package/src/scripts/check_estate_count.ts +130 -153
  518. package/src/scripts/check_evaluator_budgets.ts +4 -0
  519. package/src/scripts/check_finding_dispositions.ts +196 -21
  520. package/src/scripts/check_gate_coverage.ts +4 -3
  521. package/src/scripts/check_gate_reachability.ts +48 -1
  522. package/src/scripts/check_generator_sync.ts +48 -0
  523. package/src/scripts/check_hook_bundle_composition.ts +477 -0
  524. package/src/scripts/check_kernel_edit_ratified.ts +132 -14
  525. package/src/scripts/check_memory.ts +7 -1
  526. package/src/scripts/check_pack_size.ts +1 -1
  527. package/src/scripts/check_release_highlights.ts +10 -0
  528. package/src/scripts/check_release_manifest_content.ts +189 -0
  529. package/src/scripts/check_release_pr_shape.ts +38 -15
  530. package/src/scripts/check_standing_rule_delivery.ts +129 -13
  531. package/src/scripts/check_suppression_hygiene.ts +2 -5
  532. package/src/scripts/check_verify_expectation_delta.ts +521 -0
  533. package/src/scripts/ci_settle.ts +42 -5
  534. package/src/scripts/classify_merge_risk.ts +320 -0
  535. package/src/scripts/closure_scan.ts +91 -1
  536. package/src/scripts/code_graph/detect.ts +127 -7
  537. package/src/scripts/code_graph/foreign.ts +194 -0
  538. package/src/scripts/code_graph/query.ts +217 -4
  539. package/src/scripts/code_graph/types.ts +26 -2
  540. package/src/scripts/code_graph/validate.ts +3 -1
  541. package/src/scripts/code_graph/verbs.ts +103 -0
  542. package/src/scripts/command_suggester/settings.ts +8 -108
  543. package/src/scripts/command_suggester/types.ts +4 -5
  544. package/src/scripts/compile_hook_manifest.ts +33 -1
  545. package/src/scripts/condense.ts +14 -27
  546. package/src/scripts/consumer_matrix.ts +102 -0
  547. package/src/scripts/context_hygiene_hook.ts +13 -23
  548. package/src/scripts/cost/preflight.mjs +12 -1
  549. package/src/scripts/council_cli.ts +7 -7
  550. package/src/scripts/dispatch_r2_reviewer.ts +24 -11
  551. package/src/scripts/estate_exemption_shape.ts +202 -0
  552. package/src/scripts/explain_run.ts +8 -13
  553. package/src/scripts/generate_git_convention_grammar.ts +127 -0
  554. package/src/scripts/generate_host_cost_table.ts +21 -4
  555. package/src/scripts/handoff_context_hook.ts +86 -37
  556. package/src/scripts/hook_manifest.json +1 -1
  557. package/src/scripts/hook_manifest.yaml +175 -15
  558. package/src/scripts/hooks/block_config_weakening.ts +115 -7
  559. package/src/scripts/hooks/block_plumbing_writes.ts +37 -5
  560. package/src/scripts/hooks/code_graph_context_hook.ts +252 -23
  561. package/src/scripts/hooks/concern_failure_policy.ts +280 -0
  562. package/src/scripts/hooks/concern_registry.ts +2 -0
  563. package/src/scripts/hooks/delegation_nudge_hook.ts +2 -3
  564. package/src/scripts/hooks/dispatch_hook.ts +52 -52
  565. package/src/scripts/hooks/evidence_independence.ts +12 -4
  566. package/src/scripts/hooks/exit_codes.ts +2 -1
  567. package/src/scripts/hooks/host_lowering.json +1 -1
  568. package/src/scripts/hooks/host_lowering.ts +19 -1
  569. package/src/scripts/hooks/mcp_usage_observation_hook.ts +121 -0
  570. package/src/scripts/hooks/one_question_per_ask_hook.ts +41 -25
  571. package/src/scripts/hooks/payload_stub.ts +10 -1
  572. package/src/scripts/hooks/push_settle_hook.ts +4 -3
  573. package/src/scripts/hooks/rule_inject_hook.ts +795 -60
  574. package/src/scripts/hooks/state_io.ts +8 -4
  575. package/src/scripts/hooks/table_fingerprint.ts +21 -0
  576. package/src/scripts/hooks/telemetry_usage_hook.ts +24 -7
  577. package/src/scripts/hooks/turn_end_gate_hook.ts +85 -0
  578. package/src/scripts/hooks_status.ts +112 -0
  579. package/src/scripts/injection_scan_hook.ts +7 -0
  580. package/src/scripts/install-hooks.sh +42 -14
  581. package/src/scripts/install.ts +78 -215
  582. package/src/scripts/installed_layer_report.ts +103 -0
  583. package/src/scripts/language_mirror_hook.ts +15 -6
  584. package/src/scripts/learning_sidecar.ts +119 -8
  585. package/src/scripts/lint_blocker_citations.ts +198 -0
  586. package/src/scripts/lint_evidence_artifacts.ts +9 -0
  587. package/src/scripts/lint_hook_concern_budget.ts +10 -21
  588. package/src/scripts/lint_hook_manifest.ts +53 -0
  589. package/src/scripts/lint_major_migration_sections.ts +156 -26
  590. package/src/scripts/lint_pack_boundaries.ts +465 -29
  591. package/src/scripts/lint_roadmap_blockers.ts +282 -29
  592. package/src/scripts/lint_roadmap_complexity.ts +4 -2
  593. package/src/scripts/lint_rule_law_section.ts +647 -0
  594. package/src/scripts/lint_rule_skill_pack_reach.ts +17 -0
  595. package/src/scripts/lint_settings_classes.ts +1 -1
  596. package/src/scripts/lint_ticked_unmet_criteria.ts +165 -0
  597. package/src/scripts/lint_workflow_security.ts +173 -6
  598. package/src/scripts/mcp_server/consumer_tool_catalog.json +53 -0
  599. package/src/scripts/mcp_server/graph_tools.ts +72 -3
  600. package/src/scripts/measure_routing_signal.ts +54 -16
  601. package/src/scripts/measure_skill_ranker_baseline.ts +221 -8
  602. package/src/scripts/memory_learn_hook.ts +91 -6
  603. package/src/scripts/model_rule_injection.ts +55 -8
  604. package/src/scripts/onboarding_gate_hook.ts +7 -6
  605. package/src/scripts/print_required_checks.ts +15 -3
  606. package/src/scripts/probe_host_compliance.ts +33 -5
  607. package/src/scripts/probe_turnaround.ts +183 -3
  608. package/src/scripts/project_thin_rules.ts +34 -327
  609. package/src/scripts/ratification_header.ts +77 -0
  610. package/src/scripts/refusal_envelope.ts +138 -0
  611. package/src/scripts/release_publication.ts +29 -3
  612. package/src/scripts/report_dispatch_import_closure.ts +76 -0
  613. package/src/scripts/report_evidence_temperature.ts +657 -0
  614. package/src/scripts/report_installed_rule_links.ts +274 -0
  615. package/src/scripts/report_label_agreement.ts +233 -0
  616. package/src/scripts/report_module_reach.ts +212 -0
  617. package/src/scripts/report_obligation_mechanism.ts +228 -0
  618. package/src/scripts/report_parked_blockers.ts +222 -0
  619. package/src/scripts/report_required_checks_drift.ts +196 -0
  620. package/src/scripts/report_single_token_triggers.ts +277 -0
  621. package/src/scripts/report_skill_ranker_confusion.ts +543 -0
  622. package/src/scripts/report_standing_payload_by_host.ts +188 -15
  623. package/src/scripts/report_verification_record_coverage.ts +306 -0
  624. package/src/scripts/routing_doctor.ts +2 -2
  625. package/src/scripts/rule_activation_census.ts +5 -2
  626. package/src/scripts/rule_trigger_eval.ts +9 -9
  627. package/src/scripts/schemas/agent-settings.schema.json +17 -31
  628. package/src/scripts/schemas/command.schema.json +1 -1
  629. package/src/scripts/schemas/review-findings.schema.json +3 -2
  630. package/src/scripts/schemas/rule.schema.json +5 -0
  631. package/src/scripts/schemas/skill.schema.json +1 -1
  632. package/src/scripts/self_review_gate.ts +101 -9
  633. package/src/scripts/skill_tools/score_skill_relevance.ts +314 -40
  634. package/src/scripts/sweep_skill_ranker_signals.ts +129 -0
  635. package/src/scripts/sync_gitignore.ts +29 -235
  636. package/src/scripts/sync_pr_branch.ts +403 -132
  637. package/src/scripts/trigger_eval_grandfather.json +0 -21
  638. package/src/server/schemas/settings.ts +42 -176
  639. package/src/shared/skillRanking.ts +169 -14
  640. package/dist/cli-delegate/chunk-5R7HOLAF.js +0 -99
  641. package/dist/cli-delegate/chunk-JNMVLWLR.js +0 -4457
  642. package/dist/cli-delegate/chunk-YDPILCOL.js +0 -152
  643. package/src/scripts/_lib/config_chain.ts +0 -477
  644. package/src/scripts/_lib/conformance_report.ts +0 -403
  645. package/src/scripts/_lib/eval_discrimination.ts +0 -95
  646. package/src/scripts/_lib/evaluator_promotion.ts +0 -225
  647. package/src/scripts/_lib/file_slicer.ts +0 -117
  648. package/src/scripts/_lib/legacy_boundary_map.ts +0 -228
  649. package/src/scripts/_lib/minimality_tiebreak.ts +0 -168
  650. package/src/scripts/_lib/overbuild_lens_contract.ts +0 -196
  651. package/src/scripts/_lib/role_split.ts +0 -338
@@ -0,0 +1,205 @@
1
+ # The ticket, the commit subject and the branch name
2
+
3
+ Detail for [`git-workflow`](../SKILL.md) and
4
+ [`conventional-commits-writing`](../../conventional-commits-writing/SKILL.md).
5
+ The one place that says how a ticket is read out of a branch name, where it goes
6
+ in a commit subject, which convention is in force, and how a branch name is
7
+ rendered. `/commit`, `/commit:in-chunks`, `/fix:commit-messages`,
8
+ `/create-pr:description-only`, `/worktree:create` and the `jira-integration`
9
+ skill defer here.
10
+
11
+ The rules are code: `agent-config git:convention` runs them, and the commands
12
+ call it. This page is what a command reads **when the verb cannot run** — no
13
+ `agent-config` on `PATH`, or exit `2` for a usage or unknown-verb error. Then
14
+ apply the generated block below by reading, say once that the verb was
15
+ unavailable, and never invent a grammar the block does not show. Exit `2` with
16
+ `no subjects on stdin — the verb ran` is not that case: the verb ran and
17
+ received nothing, so pipe the subjects again rather than falling back.
18
+
19
+ ## Reading the ticket
20
+
21
+ `agent-config git:convention ticket [BRANCH] [--keys "<line>"]` — the current
22
+ branch when `BRANCH` is omitted. It prints `ticket <ID>` or `ticket none`, then
23
+ every candidate with its status:
24
+
25
+ - **Every match counts**, in order, wherever it sits (`feat/DEV-1234/...`,
26
+ `DEV-1234-device-export`, `fix/DEV-1234-quantity` → `DEV-1234`). The match
27
+ never depends on `git.branch_pattern`, so a branch named before the pattern was
28
+ set still yields its ticket. The first candidate with status `ticket` wins.
29
+ - **`standard-name`** — a key in the denylist (`UTF-8`, `ISO-8601`, `SHA-256`,
30
+ `CVE-2026-12345`, `CWE-79`) is never a ticket, with or without a card:
31
+ `fix/CVE-2026-12345-patch` yields none.
32
+ - **`version-like`** — without a card, a protocol or language name followed
33
+ by a one-digit number (`HTTP-2`, `PHP-8`; the list is the `version-like names`
34
+ row below) is a major version, not a ticket: `feat/HTTP-2-support` yields
35
+ none. Two or more digits (`PHP-12`) read as a ticket, and a card that lists
36
+ the key keeps it a ticket.
37
+ - **Case** — without a card only an upper-case key is detected, so
38
+ `feat/dev-12-export` yields none. With `--keys`, a key written in any case is
39
+ matched against the card and reported upper-cased (`dev-12` → `DEV-12`).
40
+ - **`unknown-key`** — `--keys` takes the `ticket_keys` line of the approved
41
+ convention card (`agents/memory/curated/conventions/approved/commit-subject.md`,
42
+ see the [`conventional-commits-writing`](../../conventional-commits-writing/SKILL.md)
43
+ skill § 4), as the caller reads it. A candidate whose key is not on it is
44
+ asked about by `/commit` — a yes adds the key to the card — and omitted by
45
+ `/commit:in-chunks`. Without a card the grammar, the denylist and the
46
+ version-like names decide alone.
47
+ - **`proposal`** — without `--keys`, a commitlint config's `issuePrefixes` are
48
+ printed as a proposed `ticket_keys` line. Offer it; the verb writes nothing.
49
+
50
+ ## Placing the ticket
51
+
52
+ | `git.commit_format` | With a ticket | Without a ticket |
53
+ |---|---|---|
54
+ | `ticket-scope` (default) | `feat(DEV-1234): add export filter` | `feat: add export filter` — never `feat(): …` |
55
+ | `ticket-conventional` | `DEV-1234 feat(exporter): add export filter` | `feat(exporter): add export filter` |
56
+
57
+ Under `ticket-conventional` **a ticket is never in the scope** — not as the
58
+ scope, not inside a compound one (`feat(api,DEV-1234)` fails). The scope names
59
+ the system area (`api/audio`, `ci`), only where it adds clarity.
60
+
61
+ **Under an approved family** (the card's `dominant_family`) the ticket is
62
+ optional, as under `ticket-conventional`: with a ticket it stands in the
63
+ family's leading position (`[DEV-1234] Add export filter`), without one the
64
+ subject is the family's form without the ticket part (`Add export filter`), and
65
+ a ticket anywhere else fails. A branch without a ticket is therefore never a
66
+ stop under a card.
67
+
68
+ Git's own `fixup!`, `squash!`, `amend!` and `Revert "…"` subjects are valid under
69
+ both `git.commit_format` values and under every family: git writes them itself,
70
+ so the same rule holds everywhere a subject is checked.
71
+
72
+ **Area scope under `/commit:in-chunks`.** Several commits on one branch carry the
73
+ same ticket in front of each; the scope is chosen per commit from the area that
74
+ commit touches, and dropped where no single area fits. A chunk never inherits
75
+ another chunk's scope.
76
+
77
+ ## Which convention is in force
78
+
79
+ `agent-config git:convention subject` reads subjects on stdin, one per line, and
80
+ resolves the convention in this order — the first that applies decides:
81
+
82
+ 1. **A declaration** — `git.commit_format` in `.git-convention.yml` (either
83
+ value; ADR-283), or a developer settings file value other than the template
84
+ default. The rule is one for both values: `settings:sync` writes the
85
+ template default into every project file, so a default there cannot be told
86
+ apart from an insert and never outranks an approved card, whichever value
87
+ the default is; today that makes `ticket-conventional` the only developer
88
+ value that counts.
89
+ 2. **An approved measurement** — the card's `dominant_family`.
90
+ 3. **The default** — Conventional Commits (`ticket-scope`).
91
+
92
+ When the third case decides — no declaration and no approved card — and the
93
+ repository has no commitlint config, `subject` and `show` add the line `no convention established — run git:convention measure`
94
+ (`convention_established: false` under `--json`); the exit is unchanged.
95
+ A commitlint config is the repository's own subject validator, so it
96
+ establishes the convention: no such line, and `measure` says the config governs.
97
+ `agent-config git:convention measure [--limit N] [--family F] [--json]` then reads
98
+ the history of the default branch — the one the server names, else
99
+ `refs/remotes/origin/HEAD`; with neither it samples nothing, exits 1 and says so
100
+ (`trunk_unresolved` under `--json`) rather than guess one. It proposes a subject family when one clears the `measure bar` row
101
+ of the block below, otherwise names the two strongest; it proposes a
102
+ `branch_pattern` from the remote branch names, or `no clear pattern`; and it
103
+ shows the observed update style, which is never adopted. Where the chosen family
104
+ maps to a `git.commit_format` value or a pattern was proposed, it prints the
105
+ ready-to-commit content of `.git-convention.yml` (`commit_format`,
106
+ `branch_pattern`, never `update_strategy`); the verb writes nothing. A human
107
+ creates and commits that file, or, on the user's yes this turn,
108
+ `agent-config git:convention init --yes [--commit-format F] [--branch-pattern P]`
109
+ creates it once — never over an existing carrier, never `update_strategy`, and
110
+ uncommitted (ADR-283 § Creation). `/commit` asks the user once and writes the answer
111
+ to the approved card.
112
+
113
+ A repository validator — a `commit-msg` hook, a commitlint config (any of its
114
+ config files, or a `commitlint` key in the package manifest) — does not decide, and
115
+ the verb never guesses what it accepts: a hook's existence says nothing about
116
+ what it checks, and a config is only known by running it. Each one found adds a
117
+ `note:` line (and a `notes` entry under `--json`) saying it also runs at commit
118
+ time and may be stricter; the exit is the verdict of the order above alone. A
119
+ hook counts only where git will run it — the path git resolves, so
120
+ `core.hooksPath` is respected and `.husky/commit-msg` counts only when
121
+ `core.hooksPath` points at `.husky`. When the validator rejects a commit the
122
+ verb passed, the rejection is the answer: fix the subject or settle the two in
123
+ `.git-convention.yml`.
124
+
125
+ A format that cannot be read (`malformed`, `invalid`, `discarded`), or an
126
+ approved family with no grammar, exits `1` with the line that says why; it is
127
+ never read as the default.
128
+ Exit `1` also lists each failing subject with the rule it broke. Exit `2` is a
129
+ usage error; an empty stdin is one, and says `the verb ran`. How a family is measured and approved is the
130
+ [`conventional-commits-writing`](../../conventional-commits-writing/SKILL.md)
131
+ skill's procedure; this page only consumes its card.
132
+
133
+ ## A title that becomes a commit
134
+
135
+ Where the forge squash-merges — the method `/pr:merge` § 9 reads — the pull
136
+ request title becomes the commit subject on the base, so `/create-pr:description-only`
137
+ § 3 builds it as a subject in the convention in force and checks it through
138
+ `git:convention subject`, for `ticket-scope` as well as for `ticket-conventional`.
139
+ Under any other merge method the title stays `DEV-1234: summary`.
140
+
141
+ ## Rendering a branch name
142
+
143
+ `agent-config git:convention branch --slug <slug> [--type <type>] [--ticket <ID>]`
144
+ renders `git.branch_pattern` (default `{type}/{slug}`) and prints the name:
145
+
146
+ - an empty placeholder drops with the separator after it, or the one before it
147
+ when it is last (`{ticket}-{slug}` without a ticket → `<slug>`);
148
+ - a ticket the pattern has no slot for prefixes the slug
149
+ (`{type}/{slug}` → `feat/DEV-1234-export`);
150
+ - a literal character of the pattern is never rewritten, and a value outside
151
+ `[A-Za-z0-9._-]` is refused (exit `1`), not repaired.
152
+
153
+ A guideline that shows another shape, such as `{type}/{ticket-id}/{short-description}`,
154
+ describes a team habit; the name the agent creates follows the declared pattern.
155
+
156
+ ## The grammar
157
+
158
+ <!-- BEGIN GENERATED: git-convention-grammar -->
159
+ <!-- Written by `./scripts-run src/scripts/generate_git_convention_grammar` from `src/scripts/_lib/git_convention_grammar.ts` and `src/scripts/_lib/git_convention_measure.ts`; edit the modules, never this block. -->
160
+
161
+ ```
162
+ ticket [A-Z][A-Z0-9]+-[0-9]+
163
+ ticket in text (?<![A-Za-z0-9])[A-Z][A-Z0-9]+-[0-9]+(?![0-9])
164
+ standard names UTF ISO SHA RFC CVE CWE GHSA
165
+ version-like names HTTP HTTPS TLS SSL OAUTH PHP PYTHON JAVA JDK NODE ES HTML CSS (one-digit number, no card)
166
+ format ticket-scope ^(feat|fix|chore|docs|refactor|test|perf|style|build|ci|revert)(\([^)]+\))?!?: .+
167
+ format ticket-conventional ^([A-Z][A-Z0-9]+-[0-9]+ )?(feat|fix|chore|docs|refactor|test|perf|style|build|ci|revert)(\([^)]+\))?!?: .+
168
+ family conventional ^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([^)]+\))?!?:
169
+ family ticket-conventional ^[A-Z][A-Z0-9]+-[0-9]+ (build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([^)]+\))?!?:
170
+ family ticket-prefix ^\[[A-Z][A-Z0-9]+-[0-9]+\][: ]|^[A-Z][A-Z0-9]+-[0-9]+[: ]
171
+ family gitmoji ^:[a-z0-9_+-]+:[[:space:]]|^[^ -~[:cntrl:][:space:]]
172
+ family imperative-plain ^[A-Z][a-z]+[[:space:]].*[^.]$
173
+ family ticket-prefix, no ticket ^\S.* (no ticket elsewhere in the subject)
174
+ family ticket-conventional, no ticket ^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([^)]+\))?!?: (no ticket elsewhere in the subject)
175
+ any format or family ^((fixup|squash|amend)! .+|Revert ".+")$ (git's own subjects)
176
+ measure sample newest 200 non-merge commits since 24 months ago, or regardless of age when that window yields fewer than 30; bots, automation subjects, commits over 500 files dropped
177
+ measure bar n >= 30; >= 80 % capped at 20 per author per half (3+ authors), else >= 90 % uncapped; both halves agree
178
+ measure migration the newer half, or the newest 30 commits, clearing the bar on another family than the dominant one: "migrating to <family>", and that family is proposed
179
+ measure branches >= 10 remote branch names, top shape >= 80 %
180
+ ```
181
+
182
+ Formats are JavaScript / PCRE syntax; families are POSIX extended, matched in
183
+ order, first hit wins. Under `format ticket-conventional` and `family
184
+ ticket-conventional` a ticket anywhere inside the scope fails, and a standard
185
+ name in the ticket position fails. A ticket is found in a branch or scope only as
186
+ a whole token (`ticket in text`). Without a card, a version-like name — one of
187
+ the keys above with a one-digit number, such as `HTTP-2` or `PHP-8` — is not a
188
+ ticket; `HTTP2-1` still has the ticket shape. A convention card's `ticket_keys`
189
+ settles both, and matches a key written in lower case; without a card a
190
+ lower-case key is never detected.
191
+ <!-- END GENERATED: git-convention-grammar -->
192
+
193
+ ## Patterns that are not this grammar
194
+
195
+ - **Suggester metadata.** The `trigger_context:` frontmatter of
196
+ `src/domains/engineering-base/implement-ticket/command.md` and
197
+ `src/domains/product-basic/estimate-ticket/command.md`, and the same literal in
198
+ `src/scripts/migrate_command_suggestions.ts`, match a bare-key ticket in a
199
+ prompt to decide when a command is suggested. They keep their own pattern:
200
+ changing it changes when a command is offered.
201
+ - **The suggester's matcher.** `src/scripts/command_suggester/match.ts` carries
202
+ the ticket grammar above; a test pins the two equal.
203
+ - **A project key in a ticket body.** `src/scripts/refine_ticket_detect.ts` reads
204
+ a project key out of ticket text, not a branch, and is intentionally
205
+ independent.
@@ -42,7 +42,7 @@ execution:
42
42
  is the anti-pattern [`icon-consistency`](../../rules/icon-consistency.md)
43
43
  § What this gates names by name. Stop at the first rung that answers.
44
44
  1. **A brand token or brand guide that names an icon set** — authoritative,
45
- stop here ([`brand-source-of-truth`](../../rules/brand-source-of-truth.md)).
45
+ stop here (`brand-source-of-truth`).
46
46
  2. **The set already in use in this project** — detected at the Inspect step
47
47
  of the Iconography floor below. One icon system per project; a second
48
48
  visual language is the defect, not a preference.
@@ -54,7 +54,7 @@ fix/DEV-5678/null-pointer → DEV-5678
54
54
  hotfix/DEV-999/critical-fix → DEV-999
55
55
  ```
56
56
 
57
- Pattern: `[A-Z]+-[0-9]+` anywhere in the branch name.
57
+ Read it with `agent-config git:convention ticket` — [`commit-subject`](../git-workflow/references/commit-subject.md) § Reading the ticket.
58
58
 
59
59
  Use `git branch --show-current` to detect, then fetch the ticket:
60
60
 
@@ -147,8 +147,8 @@ POST /issue/DEV-1234/transitions
147
147
  ## Linking to PRs
148
148
 
149
149
  When creating PRs, include the Jira ticket in:
150
- - **Branch name:** `feat/DEV-1234/description`
151
- - **PR title:** `feat(DEV-1234): description`
150
+ - **Branch name and PR title:** rendered by `agent-config git:convention branch` and
151
+ built per [`commit-subject`](../git-workflow/references/commit-subject.md)
152
152
  - **PR description:** Link to the ticket
153
153
 
154
154
  ## Related
@@ -17,7 +17,7 @@ packs:
17
17
  > A React or TypeScript consumer receives this skill through `engineering-base`, which both
18
18
  > of those packs require.
19
19
 
20
- The JavaScript twin of [`composer-packages`](../composer-packages/SKILL.md). A component is
20
+ The JavaScript twin of `composer-packages`. A component is
21
21
  a file; a **library** is a package with a public surface, and that surface is declared in
22
22
  `package.json` rather than inferred. Most of the failures below are silent at author time
23
23
  and loud at the consumer's — which is why the surface is read, not assumed.
@@ -167,7 +167,7 @@ declared cost — never here.
167
167
 
168
168
  ## See also
169
169
 
170
- - [`composer-packages`](../composer-packages/SKILL.md) — the PHP twin; same surface discipline, different manifest.
170
+ - `composer-packages` — the PHP twin; same surface discipline, different manifest.
171
171
  - [`standards-from-config`](../standards-from-config/SKILL.md) — the Class-A rule the § Release branch follows.
172
172
  - [`conventional-commits-writing`](../conventional-commits-writing/SKILL.md) — the `!` marker a release tool reads.
173
173
  - [`ui-component-architect`](../ui-component-architect/SKILL.md) — the component inside the library; this skill is the package around it.
@@ -222,10 +222,16 @@ git add .
222
222
 
223
223
  | Approach | When to use |
224
224
  |---|---|
225
- | `git merge main` | Default — preserves history, safer for shared branches |
226
- | `git rebase main` | Only when explicitly asked — rewrites history, cleaner log |
227
-
228
- **Never rebase without explicit permission** (per `no-commit` rule).
225
+ | `git merge main` | Default (`git.update_strategy: merge`) — preserves history, safer for shared branches |
226
+ | `git rebase origin/main` | `git.update_strategy: rebase` picks it — rewrites history, linear log |
227
+
228
+ The setting picks the operation; it never authorises it. A rebase of a branch
229
+ that is already pushed still needs the user's answer this turn, per
230
+ [`git-history-discipline`](../../rules/git-history-discipline.md) § When rewrite is
231
+ allowed — an explicit ask, an unrevoked standing instruction, or a `pull
232
+ --rebase` the user started. Under `rebase` conflicts surface per commit, and the protocol — permission,
233
+ stops, recovery ref, the equivalence report afterwards — is
234
+ [`git-workflow` › branch-update](../git-workflow/references/branch-update.md).
229
235
 
230
236
  ## Output format
231
237
 
@@ -104,7 +104,7 @@ for `workspace:`-linked packages.
104
104
 
105
105
  State plainly that the listing came from manifests rather than the runner — an
106
106
  inferred target list can miss runner-inferred targets. This is the posture
107
- [`react-shadcn-ui`](../react-shadcn-ui/SKILL.md) already takes for the shadcn
107
+ `react-shadcn-ui` already takes for the shadcn
108
108
  CLI; the stop condition is `missing-tool-handling` (never install it silently,
109
109
  never fake the output).
110
110
 
@@ -81,7 +81,7 @@ not name an implementation**. Use Given / When / Then or a numbered
81
81
  list. Reject ACs that hide assumptions ("works correctly", "is fast
82
82
  enough") — replace with measurable thresholds or strike them.
83
83
 
84
- **Cross-source discrepancy scan** (per [`cross-source-consistency`](../../rules/cross-source-consistency.md), gated by `consistency.cross_source`): when the raw input includes a screenshot / mockup alongside the story text, check the sources against each other and surface any conflict as a `gap` / open question — never resolve it silently. Watch for: story text contradicting an attached screenshot; the AC contradicting the description; a clearly-needed behavior the input never states (weekend/holiday shift, empty/error state). Batch them into one clarifying question. Taxonomy: [`cross-source-consistency-mechanics`](../../guidelines/agent-infra/cross-source-consistency-mechanics.md).
84
+ **Cross-source discrepancy scan** (per [`cross-source-consistency`](../../rules/cross-source-consistency.md)): when the raw input includes a screenshot / mockup alongside the story text, check the sources against each other and surface any conflict as a `gap` / open question — never resolve it silently. Watch for: story text contradicting an attached screenshot; the AC contradicting the description; a clearly-needed behavior the input never states (weekend/holiday shift, empty/error state). Batch them into one clarifying question. Taxonomy: [`cross-source-consistency-mechanics`](../../guidelines/agent-infra/cross-source-consistency-mechanics.md).
85
85
 
86
86
  ### 5. Surface non-functional gaps
87
87
 
@@ -27,6 +27,8 @@ Use this skill whenever running or configuring code quality tools:
27
27
 
28
28
  - **PHP**: PHPStan (static analysis), Rector (automated refactoring), ECS (coding standards)
29
29
  - **JS/TS**: Biome (linting + formatting), TypeScript compiler (type checking), Jest/Vitest (tests)
30
+ - **Python**: Ruff (linting + formatting), mypy (type checking), pytest (tests)
31
+ - **Go**: `gofmt`, `go vet`, optionally golangci-lint, `go test`
30
32
 
31
33
  ## Modes
32
34
 
@@ -39,8 +41,16 @@ stack calls for.
39
41
  |---|---|---|
40
42
  | PHP (`.php` changed) | [`references/php-tools.md`](references/php-tools.md) | Tool detection, PHPStan / ECS / Rector commands and flags, combined pipeline, config files, baseline policy, PHPStan error handling, testing framework, git-aware execution |
41
43
  | JS/TS (`.js` / `.ts` / `.tsx` changed) | [`references/js-ts-tools.md`](references/js-ts-tools.md) | Detection, Biome, TypeScript type checking, Jest / Vitest, the JS/TS workflow sequence |
44
+ | Python (`.py` changed, or `pyproject.toml`) | [`references/python-tools.md`](references/python-tools.md) | Detection from `pyproject.toml`, Ruff, mypy, pytest, the workflow sequence, virtualenv and `setup.cfg` gotchas |
45
+ | Go (`.go` changed, or `go.mod`) | [`references/go-tools.md`](references/go-tools.md) | `gofmt`, `go vet`, golangci-lint where present, `go test`, the workflow sequence, vendor and build-tag gotchas |
42
46
 
43
- Both stacks changed → load both mode bodies and run both pipelines.
47
+ More than one stack changed → load each mode body and run each pipeline.
48
+
49
+ **The resolver decides which row applies, not the file extension alone.**
50
+ `resolve_toolchain` returns the ecosystems it found and the quality commands
51
+ per ecosystem; the rows above name what those commands are. A TypeScript
52
+ repository resolves the ecosystem `js`, never `typescript` — the pack name and
53
+ the ecosystem label are different vocabularies.
44
54
 
45
55
  ## Execution policy — on demand only, never proactive
46
56
 
@@ -0,0 +1,76 @@
1
+ # quality-tools — Go quality tools
2
+
3
+ > Mode body of the [`quality-tools`](../SKILL.md) skill. Load this file when
4
+ > the mode table in SKILL.md routes here. The cross-mode material — execution
5
+ > policy, environment, output discipline — stays in SKILL.md and is NOT
6
+ > repeated here.
7
+
8
+ # Go Quality Tools
9
+
10
+ ## Detection
11
+
12
+ `resolve_toolchain` (`work_engine/stack/runner.ts`) keys the Go ecosystem on
13
+ `go.mod` and resolves exactly one quality command, `go vet ./...`, plus the
14
+ test command `go test ./...`. It does **not** detect `golangci-lint`, so a
15
+ repository that uses one will show a `quality` list shorter than what its CI
16
+ runs. Read the repository's CI workflow before concluding the resolver's list
17
+ is the whole gate.
18
+
19
+ | Signal | Tool | What it does |
20
+ |---|---|---|
21
+ | `go.mod` present | **`go vet`** | The toolchain's own correctness checks — printf verbs, struct tags, unreachable code, lost cancel |
22
+ | `go.mod` present | **`gofmt`** | Canonical formatting; not resolved as a command because it is not optional in Go |
23
+ | `.golangci.yml` / `.golangci.yaml` | **golangci-lint** | Meta-linter; the resolver does not detect it |
24
+
25
+ ## The toolchain's own commands
26
+
27
+ ```bash
28
+ gofmt -l . # list files whose formatting differs — empty is the pass
29
+ gofmt -w . # rewrite them
30
+ go vet ./... # the resolver's quality command
31
+ go build ./... # compiles; the cheapest proof the tree is coherent
32
+ go test ./... # the resolver's test command
33
+ go test -run '<regexp>' ./pkg/... # the targeted probe
34
+ go test -race ./... # the race detector — slow, and the only thing that finds a data race
35
+ ```
36
+
37
+ **`gofmt -l .` with empty output is the pass.** It exits 0 whether or not it
38
+ listed files, so a pipeline that checks only the exit code never fails on
39
+ formatting. Check the output, not the status.
40
+
41
+ ## golangci-lint, where a project has it
42
+
43
+ ```bash
44
+ golangci-lint run # the whole configured set
45
+ golangci-lint run ./pkg/... # scoped to a package
46
+ ```
47
+
48
+ It wraps `go vet` among others, so a project with `.golangci.yml` does not
49
+ need `go vet` run separately — and running both doubles the report rather than
50
+ widening it.
51
+
52
+ ## Workflow sequence
53
+
54
+ 1. `gofmt -l .` — read the output, not the exit code.
55
+ 2. `go build ./...` — a compile error makes every later step meaningless.
56
+ 3. `go vet ./...`, or `golangci-lint run` where the project has it.
57
+ 4. `go test -run '<the thing you changed>' ./pkg/...` — targeted.
58
+ 5. `go test ./...`, once, at the end; `-race` where concurrency changed.
59
+
60
+ ## Gotchas
61
+
62
+ - **`./...` from the wrong directory.** The pattern is relative to the working
63
+ directory, not to the module root. Run it from the directory holding
64
+ `go.mod`, or name the module path.
65
+ - **A vendored tree.** With `vendor/` present the toolchain defaults to
66
+ `-mod=vendor`; a dependency added to `go.mod` but not vendored fails to build
67
+ with an error that names the package, not the mode. `go mod vendor` after any
68
+ dependency change.
69
+ - **Build tags hide packages.** `go vet ./...` and `go test ./...` skip files
70
+ excluded by build constraints, so a green run says nothing about a
71
+ `//go:build integration` file. Name the tag (`-tags integration`) to reach it.
72
+ - **No `go` pack exists in this suite yet.** Go artifacts route through
73
+ `engineering-base` and this reference; `src/packs/go/pack.yaml` <!-- ref-ignore --> is created by
74
+ `road-to-stacks-beyond-php` step 2.3, which is blocked on the programme's
75
+ skill-growth question. Until then this file is the whole of the Go quality
76
+ surface, by design rather than by omission.
@@ -0,0 +1,104 @@
1
+ # quality-tools — Python quality tools
2
+
3
+ > Mode body of the [`quality-tools`](../SKILL.md) skill. Load this file when
4
+ > the mode table in SKILL.md routes here. The cross-mode material — execution
5
+ > policy, environment, output discipline — stays in SKILL.md and is NOT
6
+ > repeated here.
7
+
8
+ # Python Quality Tools
9
+
10
+ ## Detection
11
+
12
+ The resolver is the authority, not this table. `resolve_toolchain`
13
+ (`work_engine/stack/runner.ts`) reads `pyproject.toml` and returns the quality
14
+ commands it found; run those. The table says what each one is, so a reader can
15
+ tell a missing tool from an unknown one.
16
+
17
+ | Indicator in `pyproject.toml` | Tool | What it does |
18
+ |---|---|---|
19
+ | `[tool.ruff]` | **Ruff** | Linting and formatting in one binary; replaces flake8, isort, pyupgrade and (with `ruff format`) black |
20
+ | `[tool.mypy]` | **mypy** | Static type checking |
21
+ | `[tool.pytest.ini_options]` | **pytest** | Test runner — the resolver binds it as the test command, not as a quality command |
22
+
23
+ A repository with none of the three resolves an empty `quality` list. That
24
+ means **none was resolved**, never that none is needed — the same distinction
25
+ SKILL.md draws for ruby, jvm and dotnet.
26
+
27
+ ## Ruff — linting and formatting
28
+
29
+ ```bash
30
+ ruff check . # lint, read-only
31
+ ruff check --fix . # lint and apply the safe fixes
32
+ ruff format . # format
33
+ ruff format --check . # format check, read-only — what CI runs
34
+ ```
35
+
36
+ Config lives in `[tool.ruff]` in `pyproject.toml` (or `ruff.toml`). The two
37
+ settings that change what the other commands mean:
38
+
39
+ - `line-length` — the formatter's wrap column; `ruff check` reports `E501`
40
+ against the same number.
41
+ - `[tool.ruff.lint] select` / `ignore` — the rule set. An empty `select` is
42
+ Ruff's default set, not "no rules".
43
+
44
+ **`--fix` is not a formatter.** `ruff check --fix` rewrites code to satisfy
45
+ lint rules; `ruff format` rewrites layout. A pipeline that runs only the first
46
+ leaves formatting drift that CI's `ruff format --check` then fails on.
47
+
48
+ ## mypy — type checking
49
+
50
+ ```bash
51
+ mypy . # check the package
52
+ mypy --strict . # every optional strictness flag on
53
+ ```
54
+
55
+ Config lives in `[tool.mypy]`. `strict = true` there is the same as `--strict`
56
+ on the command line, so passing the flag to a project that already sets it
57
+ changes nothing — and passing it to one that does not is a different check
58
+ from the one CI runs. Read the config before adding flags.
59
+
60
+ An error mypy reports on a file the current change did not touch is
61
+ pre-existing debt. Treat it the way SKILL.md's baseline policy treats a
62
+ PHPStan baseline entry: it is not this change's to clear silently.
63
+
64
+ ## pytest — the test runner
65
+
66
+ Not a quality tool, listed here because the resolver finds it in the same
67
+ file and a reader looking for "the Python commands" expects it.
68
+
69
+ ```bash
70
+ pytest # the resolver's bound command
71
+ pytest -q # quiet, what `addopts = "-q"` already sets
72
+ pytest -k '<expr>' # filter by name — the targeted probe
73
+ pytest path/to/test.py # filter by file
74
+ ```
75
+
76
+ Run the filtered form when verifying one fix. The whole suite is the final
77
+ gate, never the per-iteration probe.
78
+
79
+ ## Workflow sequence
80
+
81
+ 1. `ruff format --check .` — fails fast and costs nothing.
82
+ 2. `ruff check .` — lint.
83
+ 3. `mypy .` — types.
84
+ 4. `pytest -k '<the thing you changed>'` — targeted.
85
+ 5. The full suite, once, at the end.
86
+
87
+ Each step is cheaper and narrower than the next, so running them out of order
88
+ spends the expensive verdict on a failure the cheap one would have named.
89
+
90
+ ## Gotchas
91
+
92
+ - **A virtualenv the agent did not activate.** `ruff` and `mypy` installed in
93
+ a project venv are not on `PATH` outside it. `python -m ruff` / `python -m
94
+ mypy` run the installed copy; a bare `ruff` may run a different version or
95
+ none.
96
+ - **`requirements.txt` only.** The resolver still binds pytest (at MEDIUM
97
+ confidence) but finds no quality commands, because it reads them from
98
+ `pyproject.toml`. An empty `quality` list on such a repository is correct
99
+ output, not a detection bug.
100
+ - **`setup.cfg` and `tox.ini` carry config too.** Older projects keep flake8
101
+ and mypy settings there. The resolver does not read them; if a project has
102
+ no `[tool.*]` block and a populated `setup.cfg`, the tools are configured and
103
+ the resolver's empty list is a gap in the resolver, worth reporting rather
104
+ than working around.
@@ -86,8 +86,8 @@ selected language.
86
86
  Reuses the `jira-ticket` command's loader. Accepts:
87
87
 
88
88
  1. **Ticket key** — `/refine-ticket PROJ-123`
89
- 2. **Branch detection** — `/refine-ticket` with no arg; regex
90
- `[A-Z]+-[0-9]+` against `git branch --show-current`
89
+ 2. **Branch detection** — `/refine-ticket` with no arg; `agent-config git:convention ticket`
90
+ on the current branch ([`commit-subject`](../git-workflow/references/commit-subject.md) § Reading the ticket)
91
91
  3. **Pasted text** — `/refine-ticket` followed by a markdown block
92
92
  4. **URL** — `/refine-ticket https://acme.atlassian.net/browse/PROJ-123`
93
93
 
@@ -144,7 +144,7 @@ Check the loaded ticket for clarity signals before orchestrating:
144
144
  - Is the scope one feature, or multiple tangled together?
145
145
  - Any sentence that references an existing module name, feature flag, or domain concept?
146
146
 
147
- **Cross-source discrepancy scan** (per [`cross-source-consistency`](../../rules/cross-source-consistency.md), gated by `consistency.cross_source`): the ticket is rarely a single source. Compare every source against the others and surface any conflict as an *Open question* — never resolve it silently:
147
+ **Cross-source discrepancy scan** (per [`cross-source-consistency`](../../rules/cross-source-consistency.md)): the ticket is rarely a single source. Compare every source against the others and surface any conflict as an *Open question* — never resolve it silently:
148
148
  - **text ↔ attachment** — does the ticket text agree with every attached mockup / screenshot / diagram? (Canonical miss: text says "birthdays **today**", the mockup shows a birthday from two days ago.) If an attachment cannot be read, say so — do not assume it agrees.
149
149
  - **silent-but-needed** — is the spec silent on a clearly-needed behavior (weekend/holiday shift, empty state, error path, timezone, permissions)? Surface it and ask before it becomes an implementation assumption — an inferred behavior is a scope expansion, not a given.
150
150
  - **intra-ticket** — do the AC, description, and comments contradict each other?
@@ -347,7 +347,7 @@ DoR check — not automatically on every refinement.
347
347
  - The model tends to invent risks that sound plausible but aren't anchored in the ticket text. Every risk in Top-5 must cite a phrase, AC bullet, or sub-skill finding — no hypotheticals.
348
348
  - Persona voices degrade into generic platitudes when the ticket is already tight. If a persona has nothing real to flag, write one sentence stating that — do not pad.
349
349
  - Sub-skills (`validate-feature-fit`, `threat-modeling`) cost tokens; orchestrate only when the trigger matrix actually matches, not defensively on every run.
350
- - Branch-detection matches the first `[A-Z]+-[0-9]+` in the branch name; chained keys (e.g. `feat/PROJ-1-and-PROJ-2`) pick the first and note the rest.
350
+ - Branch-detection takes the first `ticket` that `git:convention ticket` prints; chained keys (e.g. `feat/PROJ-1-and-PROJ-2`) pick the first and note the rest.
351
351
 
352
352
  ## Do NOT
353
353
 
@@ -31,7 +31,7 @@ Do NOT use when:
31
31
  - The diff is low-risk and no ownership map exists — fall back to the
32
32
  common role vocabulary below.
33
33
  - A full PR description is requested — route to
34
- [`/pr:create:description-only`](../../domains/git/pr/create/description-only/command.md) and let
34
+ `/pr:create:description-only` and let
35
35
  it call this skill for the routing block.
36
36
  - A threat model is wanted — route to
37
37
  [`threat-modeling`](../threat-modeling/SKILL.md).
@@ -210,6 +210,6 @@ Data source: <"ownership-map.yml + historical-bug-patterns.yml"
210
210
 
211
211
  - [`reviewer-awareness`](../../rules/reviewer-awareness.md) — the rule that routes here: anchor reviewer choice in paths and risk, never seniority
212
212
  - [`review-routing-data-format`](../../guidelines/agent-infra/review-routing-data-format.md)
213
- - [`/pr:create:description-only`](../../domains/git/pr/create/description-only/command.md)
213
+ - `/pr:create:description-only`
214
214
  - [`judge-test-coverage`](../judge-test-coverage/SKILL.md) — consumes
215
215
  the `required_test` entries from matched patterns.
@@ -100,8 +100,8 @@ roadmaps.
100
100
  When the roadmap originates from a ticket/spec that carries a second
101
101
  source — an attached mockup/screenshot, a code reality, or an internal
102
102
  contradiction — run the **cross-source discrepancy scan** (per
103
- [`cross-source-consistency`](../../rules/cross-source-consistency.md),
104
- gated by `consistency.cross_source`) before writing phases. A phase plan
103
+ [`cross-source-consistency`](../../rules/cross-source-consistency.md))
104
+ before writing phases. A phase plan
105
105
  built over a text↔image contradiction or a silent-but-needed behavior
106
106
  (weekend/holiday shift, empty/error state) bakes the wrong assumption into
107
107
  every downstream step. Surface each discrepancy as one batched open
@@ -213,7 +213,7 @@ is the wrong question asked well.
213
213
  **The escalation threshold applies here too.** A third recurrence of the same
214
214
  violation class converts an observation into a deterministic gate — and a review
215
215
  finding never silently becomes a hard gate. Both halves, specified in
216
- [`decision-review` § Removal is a disposition](../decision-review/SKILL.md).
216
+ `decision-review` § Removal is a disposition.
217
217
 
218
218
  ## Output format
219
219
 
@@ -242,6 +242,8 @@ finding never silently becomes a hard gate. Both halves, specified in
242
242
  - **Reflexion** — [arxiv.org/abs/2303.11366](https://arxiv.org/abs/2303.11366)
243
243
  Language agents that reinforce from verbal self-reflection on past
244
244
  trials. This pipeline adapts Reflexion by gating promotion with a
245
- human review step — learnings only harden into rules/skills after
246
- explicit approval, never auto-commit.
245
+ review step — learnings only harden into rules/skills after explicit
246
+ approval, never auto-commit: for a proposal scoped to the package, on
247
+ the AI council's ratification record (user as last rung, ADR-281); for
248
+ a change a user asked for, on that user's approval.
247
249
 
@@ -117,7 +117,7 @@ card may exist in the per-user file-first store
117
117
  `evidence_report.ts add --bucket assumed --origin global …` and **re-confirm it
118
118
  against the live source this session** before use (version skew / schema drift
119
119
  across projects). Never "Verified" on the global card alone.
120
- - A `public`/`vendor` card seen in ≥ `auto_promote_threshold` distinct repos
120
+ - A `public`/`vendor` card seen in ≥ 2 distinct repos
121
121
  triggers a one-tap promotion **suggestion** (never silent). `proprietary` cards
122
122
  are manual-only and never auto-shared. Record sightings via
123
123
  `_lib/knowledge_global_promote.ts record-seen`.
@@ -16,7 +16,7 @@ agent reads to learn what the component accepts, and the harness that catches a
16
16
  focus defect while the component is still in isolation. Stack-agnostic — the tool is
17
17
  Storybook, the discipline is not.
18
18
 
19
- Lifted out of [`react-shadcn-ui`](../react-shadcn-ui/SKILL.md) § Component workshop, which
19
+ Lifted out of `react-shadcn-ui` § Component workshop, which
20
20
  keeps a pointer here rather than a copy.
21
21
 
22
22
  ## The Iron Law
@@ -135,7 +135,7 @@ Run the project's story test command (the Vitest addon's `storybook test`, or wh
135
135
  `package.json` declares — read it, do not assume a name), then read the a11y result.
136
136
 
137
137
  Write findings into `state.ui_review.a11y` in the shape
138
- [`react-shadcn-ui`](../react-shadcn-ui/SKILL.md) § Review pass already defines:
138
+ `react-shadcn-ui` § Review pass already defines:
139
139
 
140
140
  ```
141
141
  {violations: [{rule, selector, severity}, …], severity_floor?, accepted_violations?}
@@ -235,7 +235,7 @@ copied verbatim:
235
235
 
236
236
  ## See also
237
237
 
238
- - [`react-shadcn-ui`](../react-shadcn-ui/SKILL.md) — the React stack lane, and the `(rule, selector, severity)` shape § Validate writes into.
238
+ - `react-shadcn-ui` — the React stack lane, and the `(rule, selector, severity)` shape § Validate writes into.
239
239
  - [`existing-ui-audit`](../existing-ui-audit/SKILL.md) — the inventory the MCP path accelerates.
240
240
  - [`js-library-packaging`](../js-library-packaging/SKILL.md) — the package around the workshop.
241
241
  - [`accessibility-auditor`](../accessibility-auditor/SKILL.md) — the WCAG depth behind the a11y half.