@event4u/agent-config 14.11.0 → 14.13.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 (762) 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 +368 -516
  5. package/CONTRIBUTING.md +38 -0
  6. package/CREDITS.md +135 -0
  7. package/NOTICE +13 -0
  8. package/README.md +8 -6
  9. package/dist/agent-src/commands/analyze/inbox.md +109 -2
  10. package/dist/agent-src/commands/feature/dev.md +7 -2
  11. package/dist/agent-src/commands/ghostwriter/write.md +5 -1
  12. package/dist/agent-src/commands/implement-ticket.md +1 -1
  13. package/dist/agent-src/commands/mission/upgrade.md +1 -1
  14. package/dist/agent-src/commands/orchestrate.md +2 -2
  15. package/dist/agent-src/commands/post-as/me.md +5 -1
  16. package/dist/agent-src/commands/pr/merge.md +19 -6
  17. package/dist/agent-src/commands/roadmap/process-full.md +19 -5
  18. package/dist/agent-src/commands/tdd/red.md +12 -2
  19. package/dist/agent-src/commands/work.md +1 -1
  20. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +40 -0
  21. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +5 -2
  22. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +21 -0
  23. package/dist/agent-src/contexts/execution/evidence-discipline.md +26 -0
  24. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -0
  25. package/dist/agent-src/contexts/execution/subagent-response-contract.md +40 -0
  26. package/dist/agent-src/contexts/execution/subagent-steering.md +13 -1
  27. package/dist/agent-src/contexts/execution/terminal-states.md +96 -0
  28. package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
  29. package/dist/agent-src/rules/broken-access-control.md +4 -0
  30. package/dist/agent-src/rules/code-provenance.md +4 -0
  31. package/dist/agent-src/rules/design-fidelity.md +1 -1
  32. package/dist/agent-src/rules/domain-safety-pii.md +4 -0
  33. package/dist/agent-src/rules/domain-safety-retention.md +4 -0
  34. package/dist/agent-src/rules/engineering-safety-floor.md +2 -0
  35. package/dist/agent-src/rules/external-code-graph-interop.md +14 -12
  36. package/dist/agent-src/rules/improve-before-implement.md +6 -8
  37. package/dist/agent-src/rules/laravel-routing.md +1 -1
  38. package/dist/agent-src/rules/lethal-trifecta-guard.md +4 -0
  39. package/dist/agent-src/rules/secret-vcs-guard.md +2 -0
  40. package/dist/agent-src/rules/security-sensitive-stop.md +2 -0
  41. package/dist/agent-src/rules/source-confidentiality.md +12 -34
  42. package/dist/agent-src/rules/symfony-routing.md +1 -1
  43. package/dist/agent-src/rules/token-efficiency.md +14 -0
  44. package/dist/agent-src/rules/tool-safety.md +4 -0
  45. package/dist/agent-src/rules/untrusted-input-defense.md +4 -0
  46. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +247 -3
  47. package/dist/agent-src/scripts/guarded_baseline.ts +328 -0
  48. package/dist/agent-src/scripts/roadmap_set_step.ts +253 -0
  49. package/dist/agent-src/scripts/stub_queue.ts +82 -0
  50. package/dist/agent-src/scripts/stubs_due.ts +400 -0
  51. package/dist/agent-src/scripts/ticket_bundles.ts +84 -0
  52. package/dist/agent-src/scripts/update_roadmap_progress.ts +8 -4
  53. package/dist/agent-src/skills/brand-asset-generation/SKILL.md +17 -4
  54. package/dist/agent-src/skills/brand-audit/SKILL.md +33 -0
  55. package/dist/agent-src/skills/code-intelligence/SKILL.md +57 -0
  56. package/dist/agent-src/skills/code-refactoring/SKILL.md +45 -1
  57. package/dist/agent-src/skills/code-review/SKILL.md +65 -6
  58. package/dist/agent-src/skills/command-writing/SKILL.md +35 -0
  59. package/dist/agent-src/skills/database/SKILL.md +8 -0
  60. package/dist/agent-src/skills/dependency-upgrade/SKILL.md +27 -0
  61. package/dist/agent-src/skills/design-review/SKILL.md +1 -1
  62. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +1 -1
  63. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +25 -2
  64. package/dist/agent-src/skills/feature-planning/SKILL.md +9 -2
  65. package/dist/agent-src/skills/frontend-render-security/SKILL.md +44 -0
  66. package/dist/agent-src/skills/git-workflow/SKILL.md +1 -1
  67. package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +38 -4
  68. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/ticket-quality-score.json +2 -2
  69. package/dist/agent-src/skills/laravel/SKILL.md +35 -0
  70. package/dist/agent-src/skills/laravel-migration/SKILL.md +57 -3
  71. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +26 -0
  72. package/dist/agent-src/skills/playbook-authoring/SKILL.md +28 -1
  73. package/dist/agent-src/skills/project-analysis-core/SKILL.md +23 -0
  74. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +30 -13
  75. package/dist/agent-src/skills/skill-writing/references/procedure.md +29 -7
  76. package/dist/agent-src/skills/sql-writing/SKILL.md +7 -1
  77. package/dist/agent-src/skills/standards-from-config/SKILL.md +27 -4
  78. package/dist/agent-src/skills/storybook-workshop/SKILL.md +9 -0
  79. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +11 -4
  80. package/dist/agent-src/skills/symfony-workflow/SKILL.md +35 -0
  81. package/dist/agent-src/skills/test-case-discovery/SKILL.md +85 -0
  82. package/dist/agent-src/skills/test-driven-development/SKILL.md +33 -9
  83. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  84. package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +37 -0
  85. package/dist/agent-src/skills/ui-component-architect/SKILL.md +53 -2
  86. package/dist/agent-src/skills/upstream-contribute/SKILL.md +38 -1
  87. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +9 -4
  88. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  89. package/dist/agent-src/templates/roadmaps.md +97 -3
  90. package/dist/agent-src/templates/scripts/check_memory.ts +258 -17
  91. package/dist/agent-src/templates/scripts/check_memory_proposal.ts +9 -3
  92. package/dist/agent-src/templates/scripts/memory_lookup.ts +86 -0
  93. package/dist/agent-src/templates/scripts/memory_signal.ts +44 -0
  94. package/dist/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +90 -0
  95. package/dist/agent-src/templates/scripts/work_engine/directives/backend/index.ts +11 -0
  96. package/dist/agent-src/templates/scripts/work_engine/directives/backend/test.ts +23 -1
  97. package/dist/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +10 -1
  98. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +5 -1
  99. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +102 -14
  100. package/dist/cli/commands/uiAudit.js +124 -5
  101. package/dist/cli/registry.js +2 -0
  102. package/dist/cli-delegate/{chunk-HYWSRNUX.js → chunk-2DK2VJWG.js} +3 -3
  103. package/dist/cli-delegate/{chunk-L43NCYPB.js → chunk-4FS4WRXP.js} +10 -0
  104. package/dist/cli-delegate/{chunk-OMIVVCG2.js → chunk-A4QJ6ENT.js} +24 -0
  105. package/dist/cli-delegate/{chunk-236PNQZK.js → chunk-AKJGUQNO.js} +466 -285
  106. package/dist/cli-delegate/{chunk-E46KPN6K.js → chunk-BTWUYDGN.js} +424 -363
  107. package/dist/cli-delegate/{chunk-K4FFODTS.js → chunk-ILMUPLGW.js} +1227 -316
  108. package/dist/cli-delegate/{chunk-FF7WAFMR.js → chunk-KPBWFOPZ.js} +5 -1
  109. package/dist/cli-delegate/cmd_adr_effective.js +102 -0
  110. package/dist/cli-delegate/cmd_conformance.js +42 -10
  111. package/dist/cli-delegate/cmd_doctor.js +3 -3
  112. package/dist/cli-delegate/cmd_export.js +3 -2
  113. package/dist/cli-delegate/cmd_fleet.js +2 -2
  114. package/dist/cli-delegate/cmd_handoff.js +1 -1
  115. package/dist/cli-delegate/cmd_preflight.js +2 -2
  116. package/dist/cli-delegate/cmd_prune.js +3 -2
  117. package/dist/cli-delegate/cmd_settings_get.js +1 -1
  118. package/dist/cli-delegate/cmd_settings_migrate.js +3 -2
  119. package/dist/cli-delegate/cmd_settings_set.js +2 -2
  120. package/dist/cli-delegate/cmd_sync.js +3 -2
  121. package/dist/cli-delegate/cmd_uninstall.js +3 -2
  122. package/dist/cli-delegate/cmd_validate.js +3 -2
  123. package/dist/discovery/deprecation-report.md +1 -1
  124. package/dist/discovery/discovery-manifest.json +62 -62
  125. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  126. package/dist/discovery/discovery-manifest.summary.md +1 -1
  127. package/dist/discovery/dormancy-report.md +1 -1
  128. package/dist/discovery/orphan-report.md +1 -1
  129. package/dist/discovery/packs.json +2 -2
  130. package/dist/discovery/trust-report.md +1 -1
  131. package/dist/discovery/workspaces.json +2 -2
  132. package/dist/hooks/dispatch.js +2413 -1087
  133. package/dist/install/claudeRuleRewrite.js +254 -0
  134. package/dist/install/detect.js +29 -16
  135. package/dist/install/detect_php_shape.js +159 -0
  136. package/dist/install/install.mjs +639 -428
  137. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  138. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  139. package/dist/mcp/registry-manifest.json +3 -3
  140. package/dist/mcp/server.json +3 -3
  141. package/dist/mcp/server.mjs +4818 -2645
  142. package/dist/server/schemas/settings.js +6 -0
  143. package/dist/ui/assets/index-D0jaCRPM.js +29 -0
  144. package/dist/ui/index.html +1 -1
  145. package/docs/MIGRATION.md +1 -1
  146. package/docs/THIRD-PARTY-NOTICES.md +25 -0
  147. package/docs/contracts/provider-lifecycle.md +1 -1
  148. package/docs/contracts/settings-classes.md +30 -4
  149. package/docs/guidelines/agent-infra/5w2h-analysis.md +3 -3
  150. package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +1 -0
  151. package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +58 -3
  152. package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +2 -2
  153. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +3 -3
  154. package/docs/guidelines/agent-infra/break-glass-usage.md +7 -7
  155. package/docs/guidelines/agent-infra/carve-out-predicates.md +3 -3
  156. package/docs/guidelines/agent-infra/comparison-matrix.md +1 -1
  157. package/docs/guidelines/agent-infra/critical-thinking.md +4 -4
  158. package/docs/guidelines/agent-infra/direct-answers-demos.md +2 -2
  159. package/docs/guidelines/agent-infra/domain-eval-anti-pattern.md +1 -1
  160. package/docs/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
  161. package/docs/guidelines/agent-infra/engineering-memory-data-format.md +3 -3
  162. package/docs/guidelines/agent-infra/existence-question-verdicts.md +80 -0
  163. package/docs/guidelines/agent-infra/first-principles.md +2 -2
  164. package/docs/guidelines/agent-infra/framework-neutrality-patterns.md +2 -2
  165. package/docs/guidelines/agent-infra/guarded-baseline.md +39 -0
  166. package/docs/guidelines/agent-infra/inversion-thinking.md +5 -5
  167. package/docs/guidelines/agent-infra/language-and-tone-examples.md +1 -1
  168. package/docs/guidelines/agent-infra/layered-settings.md +10 -10
  169. package/docs/guidelines/agent-infra/memory-access.md +1 -1
  170. package/docs/guidelines/agent-infra/mental-models.md +3 -3
  171. package/docs/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
  172. package/docs/guidelines/agent-infra/review-routing-data-format.md +7 -7
  173. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +13 -7
  174. package/docs/guidelines/agent-infra/role-contracts.md +2 -2
  175. package/docs/guidelines/agent-infra/role-mode-router.md +3 -3
  176. package/docs/guidelines/agent-infra/rule-type-governance.md +2 -2
  177. package/docs/guidelines/agent-infra/scqa-framework.md +5 -5
  178. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +6 -6
  179. package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +2 -2
  180. package/docs/guidelines/agent-infra/six-hats.md +3 -3
  181. package/docs/guidelines/agent-infra/skill-quality-checklist.md +6 -6
  182. package/docs/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
  183. package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
  184. package/docs/guidelines/agent-infra/verify-before-complete-demos.md +2 -2
  185. package/docs/guidelines/augment-portability-patterns.md +6 -4
  186. package/docs/guidelines/code-clarity.md +21 -0
  187. package/docs/guidelines/component-oriented-and-oop-development.md +3 -2
  188. package/docs/guidelines/cross-role-handoff.md +2 -2
  189. package/docs/guidelines/design-fidelity-mechanics.md +1 -1
  190. package/docs/guidelines/docs/readme-size-and-splitting.md +3 -3
  191. package/docs/guidelines/php/database.md +90 -7
  192. package/docs/guidelines/prompt-templates.md +7 -7
  193. package/docs/guidelines/redundancy-taxonomy.md +180 -0
  194. package/llms.txt +2 -2
  195. package/package.json +10 -3
  196. package/src/agent-src/scripts/archive_completed_roadmaps.ts +247 -3
  197. package/src/agent-src/scripts/guarded_baseline.ts +328 -0
  198. package/src/agent-src/scripts/roadmap_set_step.ts +253 -0
  199. package/src/agent-src/scripts/stub_queue.ts +82 -0
  200. package/src/agent-src/scripts/stubs_due.ts +400 -0
  201. package/src/agent-src/scripts/ticket_bundles.ts +84 -0
  202. package/src/agent-src/scripts/update_roadmap_progress.ts +8 -4
  203. package/src/agent-src/templates/scripts/check_memory.ts +258 -17
  204. package/src/agent-src/templates/scripts/check_memory_proposal.ts +9 -3
  205. package/src/agent-src/templates/scripts/memory_lookup.ts +86 -0
  206. package/src/agent-src/templates/scripts/memory_signal.ts +44 -0
  207. package/src/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +90 -0
  208. package/src/agent-src/templates/scripts/work_engine/directives/backend/index.ts +11 -0
  209. package/src/agent-src/templates/scripts/work_engine/directives/backend/test.ts +23 -1
  210. package/src/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +10 -1
  211. package/src/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +5 -1
  212. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +102 -14
  213. package/src/config/agent-settings.template.yml +48 -3
  214. package/src/config/assurance-capability-registry.json +21 -9
  215. package/src/config/budgets.yml +19 -0
  216. package/src/config/canonical-terms.yml +119 -0
  217. package/src/config/capability-native-outcome-bars.json +81 -0
  218. package/src/config/ci-local-parity.yml +95 -0
  219. package/src/config/discovery/prompt-patterns.yml +56 -0
  220. package/src/config/drafting-channels.yml +43 -0
  221. package/src/config/estate-count-budget.json +38 -31
  222. package/src/config/evaluator-budgets.json +14 -14
  223. package/src/config/gate-coverage.yml +731 -30
  224. package/src/config/gate-reachability-exemptions.json +21 -0
  225. package/src/config/gate-violation-baselines.json +38 -20
  226. package/src/config/harness-evolution-budget.json +25 -0
  227. package/src/config/lapsed-beta-baseline.json +96 -0
  228. package/src/config/memory-twin-verdicts.yml +129 -0
  229. package/src/config/metric-registry.yml +124 -0
  230. package/src/config/pack-size-budget.json +35 -7
  231. package/src/config/preamble-payload-budget.json +97 -71
  232. package/src/config/profiles/balanced.ini +27 -0
  233. package/src/config/profiles/full.ini +27 -0
  234. package/src/config/profiles/minimal.ini +27 -0
  235. package/src/config/publish-surface.json +9 -2
  236. package/src/config/routing-coverage-seed.json +43 -0
  237. package/src/config/rule-stub-ceilings.json +126 -112
  238. package/src/config/suggestion-capture.json +28 -0
  239. package/src/config/surface-matrix.yml +21 -2
  240. package/src/config/turnaround-budget.json +66 -0
  241. package/src/config/web-launch-readiness.json +188 -0
  242. package/src/install/claudeRuleRewrite.ts +288 -0
  243. package/src/install/detect.ts +60 -17
  244. package/src/install/detect_php_shape.ts +191 -0
  245. package/src/scripts/_cli/cmd_doctor.ts +27 -112
  246. package/src/scripts/_dispatch.bash +27 -0
  247. package/src/scripts/_lib/activation_ladder.ts +211 -0
  248. package/src/scripts/_lib/activation_states.ts +88 -0
  249. package/src/scripts/_lib/adherence_detectors.ts +143 -0
  250. package/src/scripts/_lib/arith_claims.ts +181 -0
  251. package/src/scripts/_lib/arm_ranking.ts +62 -0
  252. package/src/scripts/_lib/asset_delivery_ledger.ts +303 -0
  253. package/src/scripts/_lib/audit_field_provenance.ts +54 -0
  254. package/src/scripts/_lib/auto_dispatch.ts +32 -3
  255. package/src/scripts/_lib/bench_ab_size_claim.ts +98 -4
  256. package/src/scripts/_lib/benchmark_cache_fields.ts +158 -0
  257. package/src/scripts/_lib/candidate_proposer.ts +402 -0
  258. package/src/scripts/_lib/candidate_record.ts +601 -0
  259. package/src/scripts/_lib/capture_rate.ts +319 -0
  260. package/src/scripts/_lib/collector_denominator.ts +771 -0
  261. package/src/scripts/_lib/collector_record.ts +340 -0
  262. package/src/scripts/_lib/collector_store.ts +664 -0
  263. package/src/scripts/_lib/collector_supervision.ts +827 -0
  264. package/src/scripts/_lib/concern_estate.ts +77 -0
  265. package/src/scripts/_lib/config_chain.ts +477 -0
  266. package/src/scripts/_lib/config_cost.ts +209 -0
  267. package/src/scripts/_lib/council_settings_block.ts +6 -0
  268. package/src/scripts/_lib/curator_ops.ts +172 -0
  269. package/src/scripts/_lib/delivery_arm_experiment.ts +266 -0
  270. package/src/scripts/_lib/delivery_criticality.ts +126 -0
  271. package/src/scripts/_lib/doctor_runtime_checks.ts +70 -0
  272. package/src/scripts/_lib/empty_cycles.ts +88 -0
  273. package/src/scripts/_lib/eval_publication.ts +354 -0
  274. package/src/scripts/_lib/evaluation_vector.ts +283 -0
  275. package/src/scripts/_lib/evaluator_promotion.ts +225 -0
  276. package/src/scripts/_lib/evidence_basis.ts +118 -0
  277. package/src/scripts/_lib/exec_evidence.ts +8 -0
  278. package/src/scripts/_lib/experience_card.ts +272 -0
  279. package/src/scripts/_lib/experience_report.ts +151 -0
  280. package/src/scripts/_lib/experiment_freeze.ts +112 -0
  281. package/src/scripts/_lib/gate_baseline.ts +150 -1
  282. package/src/scripts/_lib/generated_by.ts +66 -0
  283. package/src/scripts/_lib/harness_evolution_guards.ts +229 -0
  284. package/src/scripts/_lib/hook_effect_probe.ts +141 -0
  285. package/src/scripts/_lib/host_denominator.ts +687 -0
  286. package/src/scripts/_lib/host_projection_reach.ts +157 -0
  287. package/src/scripts/_lib/ignored_blocker.ts +148 -0
  288. package/src/scripts/_lib/install_reach_checks.ts +495 -0
  289. package/src/scripts/_lib/json_duplicate_keys.ts +150 -0
  290. package/src/scripts/_lib/judge_hygiene.ts +228 -0
  291. package/src/scripts/_lib/legacy_boundary_map.ts +228 -0
  292. package/src/scripts/_lib/loop_guards.ts +299 -0
  293. package/src/scripts/_lib/loss_class.ts +129 -0
  294. package/src/scripts/_lib/machine_wake.ts +51 -0
  295. package/src/scripts/_lib/md_prose_lines.ts +177 -0
  296. package/src/scripts/_lib/minimality_tiebreak.ts +168 -0
  297. package/src/scripts/_lib/one_resolver_invariant.ts +449 -0
  298. package/src/scripts/_lib/orchestration_record.ts +253 -5
  299. package/src/scripts/_lib/outcome_envelope.ts +227 -0
  300. package/src/scripts/_lib/outcome_vocabularies.ts +125 -0
  301. package/src/scripts/_lib/paired_stats.ts +245 -0
  302. package/src/scripts/_lib/paired_verdict.ts +226 -0
  303. package/src/scripts/_lib/prefix_stable_surfaces.ts +123 -0
  304. package/src/scripts/_lib/privacy_class.ts +47 -0
  305. package/src/scripts/_lib/regression_neighbourhood.ts +259 -0
  306. package/src/scripts/_lib/repeated_failure.ts +105 -0
  307. package/src/scripts/_lib/repo_root.ts +111 -0
  308. package/src/scripts/_lib/review_skipped_record.ts +37 -0
  309. package/src/scripts/_lib/role_split.ts +338 -0
  310. package/src/scripts/_lib/runtime_journal.ts +1499 -0
  311. package/src/scripts/_lib/runtime_wiring_checks.ts +430 -0
  312. package/src/scripts/_lib/skill_catalogue.ts +11 -1
  313. package/src/scripts/_lib/skill_estate.ts +115 -0
  314. package/src/scripts/_lib/source_digest.ts +200 -0
  315. package/src/scripts/_lib/source_redact.ts +260 -0
  316. package/src/scripts/_lib/source_shape.ts +502 -0
  317. package/src/scripts/_lib/source_snapshot_dedup.ts +199 -0
  318. package/src/scripts/_lib/strip_comments.d.mts +8 -0
  319. package/src/scripts/_lib/strip_comments.mjs +65 -0
  320. package/src/scripts/_lib/test_red_state.ts +154 -0
  321. package/src/scripts/_lib/trigger_shift.ts +144 -0
  322. package/src/scripts/_lib/untrusted_content.ts +82 -7
  323. package/src/scripts/adoption_report.ts +1 -1
  324. package/src/scripts/adr/evidence_census.ts +1 -1
  325. package/src/scripts/adr/regenerate_index.ts +26 -2
  326. package/src/scripts/adr_cite_check.ts +164 -1
  327. package/src/scripts/ai_council/argument_exhaustion.ts +130 -0
  328. package/src/scripts/ai_council/blind_review.ts +11 -1
  329. package/src/scripts/ai_council/clients.ts +4 -0
  330. package/src/scripts/ai_council/config.ts +3 -0
  331. package/src/scripts/ai_council/consensus.ts +28 -8
  332. package/src/scripts/ai_council/consensus_round.ts +226 -0
  333. package/src/scripts/ai_council/disagreement_signal.ts +338 -0
  334. package/src/scripts/ai_council/inline_findings.ts +340 -0
  335. package/src/scripts/ai_council/judge_position_bias.ts +197 -0
  336. package/src/scripts/ai_council/orchestrator.ts +16 -203
  337. package/src/scripts/ai_council/orchestrator_results.ts +23 -3
  338. package/src/scripts/ai_council/pricing.ts +106 -0
  339. package/src/scripts/ai_council/prompts.ts +74 -7
  340. package/src/scripts/ai_council/provider_leakage_bench.ts +327 -0
  341. package/src/scripts/ai_council/py_format.ts +14 -3
  342. package/src/scripts/ai_council/recouncil_guard.ts +293 -0
  343. package/src/scripts/ai_council/response_record.ts +50 -0
  344. package/src/scripts/ai_council/topology_bench_manifest.ts +860 -0
  345. package/src/scripts/ai_council/topology_vocabulary.ts +175 -0
  346. package/src/scripts/asset_delivery_ledger.ts +157 -0
  347. package/src/scripts/attest_artifact.ts +193 -0
  348. package/src/scripts/audit_auto_rules.ts +2 -1
  349. package/src/scripts/audit_command_surface.ts +1 -1
  350. package/src/scripts/audit_mcp_tools.ts +2 -2
  351. package/src/scripts/audit_skill_overlap_allowlist.json +6 -1
  352. package/src/scripts/audit_user_type_axis.ts +2 -1
  353. package/src/scripts/bench_ab_clone.ts +215 -10
  354. package/src/scripts/bench_ab_integrity.ts +119 -5
  355. package/src/scripts/bench_ab_v2_stats.ts +40 -213
  356. package/src/scripts/build_archive_index.ts +1 -1
  357. package/src/scripts/build_linear_digest.ts +1 -1
  358. package/src/scripts/build_proof.ts +11 -4
  359. package/src/scripts/build_rule_trigger_matrix.ts +1 -1
  360. package/src/scripts/build_source_digests.ts +157 -0
  361. package/src/scripts/cache_realization_report.ts +103 -0
  362. package/src/scripts/check_adr_frontmatter.ts +126 -0
  363. package/src/scripts/check_benchmark_report_fields.ts +207 -0
  364. package/src/scripts/check_beta_review_markers.ts +235 -6
  365. package/src/scripts/check_bundle_path_leakage.ts +195 -7
  366. package/src/scripts/check_claims.ts +576 -6
  367. package/src/scripts/check_command_examples.ts +557 -0
  368. package/src/scripts/check_composite_arming.ts +35 -0
  369. package/src/scripts/check_concern_admissions.ts +365 -0
  370. package/src/scripts/check_enforcement_coverage.ts +28 -0
  371. package/src/scripts/check_estate_count.ts +263 -3
  372. package/src/scripts/check_gate_reachability.ts +383 -0
  373. package/src/scripts/check_host_loadability.ts +104 -0
  374. package/src/scripts/check_loss_class_declared.ts +308 -0
  375. package/src/scripts/check_md_language.ts +15 -98
  376. package/src/scripts/check_memory_proposal.ts +18 -11
  377. package/src/scripts/check_no_currency_in_cost_surfaces.ts +225 -0
  378. package/src/scripts/check_no_external_sources.ts +281 -6
  379. package/src/scripts/check_pack_conformance_fixture.ts +11 -1
  380. package/src/scripts/check_pack_size.ts +59 -2
  381. package/src/scripts/check_preamble_payload_budget.ts +144 -6
  382. package/src/scripts/check_prefix_stable_mutation.ts +372 -0
  383. package/src/scripts/check_publish_surface.ts +10 -1
  384. package/src/scripts/check_references.ts +24 -1
  385. package/src/scripts/check_routing_coverage.ts +352 -0
  386. package/src/scripts/check_rule_evidence_declaration.ts +316 -0
  387. package/src/scripts/check_rule_projection_integrity.ts +14 -4
  388. package/src/scripts/check_score_contract.ts +528 -0
  389. package/src/scripts/check_skill_admissions.ts +514 -0
  390. package/src/scripts/check_static_parity.ts +285 -0
  391. package/src/scripts/check_supervision_claim_atomicity.ts +498 -0
  392. package/src/scripts/check_suppression_hygiene.ts +15 -0
  393. package/src/scripts/check_web_launch_readiness.ts +705 -0
  394. package/src/scripts/ci_settle.ts +39 -2
  395. package/src/scripts/code_graph/build.ts +60 -3
  396. package/src/scripts/code_graph/extract.ts +44 -0
  397. package/src/scripts/code_graph/types.ts +24 -0
  398. package/src/scripts/collector_daemon.ts +714 -0
  399. package/src/scripts/config_cost_report.ts +302 -0
  400. package/src/scripts/consumer_matrix.ts +74 -1
  401. package/src/scripts/cost/budget.mjs +10 -3
  402. package/src/scripts/cost/track.mjs +10 -3
  403. package/src/scripts/council_cli.ts +37 -54
  404. package/src/scripts/description_route_check.ts +494 -0
  405. package/src/scripts/dispatch_r2_reviewer.ts +46 -5
  406. package/src/scripts/evolution_lab.ts +980 -0
  407. package/src/scripts/external_sources_denylist.json +5 -18
  408. package/src/scripts/extract_audit_patterns.ts +21 -0
  409. package/src/scripts/fold_intake.ts +12 -1
  410. package/src/scripts/gen_discovery_baseline.ts +1 -1
  411. package/src/scripts/generate_capabilities_index.ts +12 -5
  412. package/src/scripts/generate_capability_matrix.ts +3 -3
  413. package/src/scripts/generate_command_flows.ts +2 -2
  414. package/src/scripts/generate_cookbook.ts +2 -2
  415. package/src/scripts/generate_index.ts +8 -1
  416. package/src/scripts/generate_knowledge_index.ts +2 -1
  417. package/src/scripts/generate_ownership_matrix.ts +2 -1
  418. package/src/scripts/generate_pack_manifests.ts +10 -2
  419. package/src/scripts/generate_role_experiences_catalog.ts +2 -2
  420. package/src/scripts/generate_settings_reference.ts +1 -1
  421. package/src/scripts/git_authorization_hook.ts +22 -1
  422. package/src/scripts/grade_target_readiness.ts +48 -5
  423. package/src/scripts/hook_effect_doctor.ts +261 -0
  424. package/src/scripts/hook_manifest.json +1 -1
  425. package/src/scripts/hook_manifest.yaml +125 -11
  426. package/src/scripts/hooks/block_speaking_inbox_dir.ts +271 -0
  427. package/src/scripts/hooks/block_unauthorized_git.ts +18 -0
  428. package/src/scripts/hooks/concern_registry.ts +6 -0
  429. package/src/scripts/hooks/dispatch_hook.ts +32 -0
  430. package/src/scripts/hooks/journal_record_hook.ts +345 -0
  431. package/src/scripts/hooks/prepush_metadata_sources.sh +110 -0
  432. package/src/scripts/hooks/run_continuation_hook.ts +44 -9
  433. package/src/scripts/hooks/shims/install.sh +61 -0
  434. package/src/scripts/hooks/shims/php +101 -0
  435. package/src/scripts/hooks/suggestion_capture_hook.ts +378 -0
  436. package/src/scripts/hot_context_hook.ts +16 -0
  437. package/src/scripts/install-hooks.sh +20 -5
  438. package/src/scripts/install.ts +17 -35
  439. package/src/scripts/inventory_frontmatter.ts +2 -1
  440. package/src/scripts/lint_adr_sweep_routing.ts +12 -0
  441. package/src/scripts/lint_budget_ownership.ts +54 -4
  442. package/src/scripts/lint_canonical_terms.ts +604 -0
  443. package/src/scripts/lint_composition_review.ts +619 -0
  444. package/src/scripts/lint_consolidation_lineage.ts +666 -0
  445. package/src/scripts/lint_eval_specs.ts +593 -0
  446. package/src/scripts/lint_hook_manifest.ts +19 -0
  447. package/src/scripts/lint_host_portability.ts +373 -0
  448. package/src/scripts/lint_judge_prompt_expectation.ts +27 -1
  449. package/src/scripts/lint_memory_twin_parity.ts +335 -0
  450. package/src/scripts/lint_metric_consumers.ts +355 -0
  451. package/src/scripts/lint_skill_descriptions.ts +18 -1
  452. package/src/scripts/lint_skill_frontmatter_safety.ts +58 -0
  453. package/src/scripts/lint_skill_link_reach.ts +252 -0
  454. package/src/scripts/lint_skill_trigger_corpus.ts +752 -0
  455. package/src/scripts/lint_ticket_buildable.ts +17 -1
  456. package/src/scripts/mcp_server/consumer_tool_catalog.json +1 -1
  457. package/src/scripts/mcp_server/tool_catalog_source.ts +1 -1
  458. package/src/scripts/measure_docs_dead_links.ts +348 -0
  459. package/src/scripts/measure_host_capture.ts +461 -0
  460. package/src/scripts/migration_status.ts +3 -3
  461. package/src/scripts/model_rule_injection.ts +60 -0
  462. package/src/scripts/orchestration_record.ts +14 -0
  463. package/src/scripts/pack_install_smoke.ts +363 -0
  464. package/src/scripts/pr_conflict_census.ts +187 -0
  465. package/src/scripts/preamble_byte_census.ts +139 -10
  466. package/src/scripts/prepack-check.mjs +4 -1
  467. package/src/scripts/probe_turnaround.ts +384 -0
  468. package/src/scripts/probe_unblocked_ask.ts +279 -0
  469. package/src/scripts/render_benchmark_md.ts +1 -1
  470. package/src/scripts/report_pack_delta.ts +204 -0
  471. package/src/scripts/rule_activation_census.ts +70 -9
  472. package/src/scripts/rule_backlinks.ts +1 -1
  473. package/src/scripts/run_lifecycle_suite.ts +208 -0
  474. package/src/scripts/run_skill_evals.ts +40 -0
  475. package/src/scripts/schemas/delivery-manifest.schema.json +43 -0
  476. package/src/scripts/schemas/drafting-channels.schema.json +43 -0
  477. package/src/scripts/schemas/evals.schema.json +24 -1
  478. package/src/scripts/schemas/rule.schema.json +52 -1
  479. package/src/scripts/schemas/skill.schema.json +17 -2
  480. package/src/scripts/select_analysis_mode.ts +112 -0
  481. package/src/scripts/skill_overlap.ts +7 -1
  482. package/src/scripts/skill_tools/run_block_d_eval.ts +8 -1
  483. package/src/scripts/skill_tools/score_skill_relevance.ts +84 -3
  484. package/src/scripts/skill_tools/suggest_skill_for_task.ts +8 -1
  485. package/src/scripts/skill_usage_report.ts +2 -1
  486. package/src/scripts/stubs_due.ts +211 -0
  487. package/src/scripts/sweep_source_surfaces.ts +678 -0
  488. package/src/scripts/sync_pr_branch.ts +40 -1
  489. package/src/scripts/trigger_eval_grandfather.json +202 -222
  490. package/src/scripts/utilization_report.ts +22 -2
  491. package/src/server/schemas/settings.ts +10 -0
  492. package/src/templates/marketing-copy.yml +1 -1
  493. package/dist/agent-src/skills/accessibility-auditor/evals/evals.json +0 -15
  494. package/dist/agent-src/skills/agent-security-review/evals/triggers.json +0 -52
  495. package/dist/agent-src/skills/ai-code-blindspots/evals/triggers.json +0 -52
  496. package/dist/agent-src/skills/alerting-doctrine/evals/triggers.json +0 -17
  497. package/dist/agent-src/skills/analysis-skill-router/evals/evals.json +0 -13
  498. package/dist/agent-src/skills/brand/evals/triggers.json +0 -17
  499. package/dist/agent-src/skills/brand-asset-generation/evals/triggers.json +0 -17
  500. package/dist/agent-src/skills/brand-audit/evals/triggers.json +0 -17
  501. package/dist/agent-src/skills/brand-identity/evals/triggers.json +0 -17
  502. package/dist/agent-src/skills/brand-strategy/evals/triggers.json +0 -17
  503. package/dist/agent-src/skills/brand-to-tokens/evals/triggers.json +0 -17
  504. package/dist/agent-src/skills/bug-analyzer/evals/evals.json +0 -13
  505. package/dist/agent-src/skills/canvas-design/evals/triggers.json +0 -17
  506. package/dist/agent-src/skills/character-consistency/evals/evals.json +0 -16
  507. package/dist/agent-src/skills/code-intelligence/evals/triggers.json +0 -52
  508. package/dist/agent-src/skills/code-review/evals/evals.json +0 -100
  509. package/dist/agent-src/skills/command-routing/evals/evals.json +0 -14
  510. package/dist/agent-src/skills/complexity-first-planning/evals/triggers.json +0 -17
  511. package/dist/agent-src/skills/contract-review/evals/triggers.json +0 -17
  512. package/dist/agent-src/skills/conventional-commits-writing/evals/evals.json +0 -15
  513. package/dist/agent-src/skills/corpus-grounding/evals/triggers.json +0 -17
  514. package/dist/agent-src/skills/dashboard-design/evals/evals.json +0 -16
  515. package/dist/agent-src/skills/dcf-modeling/evals/domain-truth.json +0 -29
  516. package/dist/agent-src/skills/dcf-modeling/evals/evals.json +0 -20
  517. package/dist/agent-src/skills/decision-record/evals/evals.json +0 -20
  518. package/dist/agent-src/skills/decision-record/evals/triggers.json +0 -87
  519. package/dist/agent-src/skills/design-intelligence/evals/evals.json +0 -14
  520. package/dist/agent-src/skills/design-intelligence/evals/triggers.json +0 -17
  521. package/dist/agent-src/skills/design-system-capture/evals/evals.json +0 -15
  522. package/dist/agent-src/skills/design-tokens/evals/triggers.json +0 -17
  523. package/dist/agent-src/skills/design-variations/evals/triggers.json +0 -17
  524. package/dist/agent-src/skills/developer-like-execution/evals/evals.json +0 -16
  525. package/dist/agent-src/skills/doc-coauthoring/evals/evals.json +0 -16
  526. package/dist/agent-src/skills/doc-coauthoring/evals/triggers.json +0 -17
  527. package/dist/agent-src/skills/docx-authoring/evals/triggers.json +0 -52
  528. package/dist/agent-src/skills/dpa-review/evals/triggers.json +0 -17
  529. package/dist/agent-src/skills/editorial-calendar/evals/domain-truth.json +0 -16
  530. package/dist/agent-src/skills/editorial-calendar/evals/evals.json +0 -16
  531. package/dist/agent-src/skills/eloquent/evals/triggers.json +0 -17
  532. package/dist/agent-src/skills/estimate-ticket/evals/evals.json +0 -16
  533. package/dist/agent-src/skills/estimate-ticket/evals/output-schema.yml +0 -20
  534. package/dist/agent-src/skills/estimate-ticket/evals/triggers.json +0 -19
  535. package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +0 -52
  536. package/dist/agent-src/skills/existing-ui-audit/evals/triggers.json +0 -47
  537. package/dist/agent-src/skills/experiment-loop/evals/output-schema.yml +0 -27
  538. package/dist/agent-src/skills/experiment-loop/evals/triggers.json +0 -17
  539. package/dist/agent-src/skills/fe-design/evals/triggers.json +0 -67
  540. package/dist/agent-src/skills/forecasting/evals/domain-truth.json +0 -29
  541. package/dist/agent-src/skills/forecasting/evals/evals.json +0 -20
  542. package/dist/agent-src/skills/forensics-report/evals/triggers.json +0 -17
  543. package/dist/agent-src/skills/frontend-render-security/evals/triggers.json +0 -52
  544. package/dist/agent-src/skills/fundraising-narrative/evals/domain-truth.json +0 -16
  545. package/dist/agent-src/skills/fundraising-narrative/evals/evals.json +0 -16
  546. package/dist/agent-src/skills/gated-reach/evals/triggers.json +0 -72
  547. package/dist/agent-src/skills/github-ci/evals/evals.json +0 -25
  548. package/dist/agent-src/skills/history-design/evals/triggers.json +0 -17
  549. package/dist/agent-src/skills/html-deck/evals/triggers.json +0 -17
  550. package/dist/agent-src/skills/humanizer/evals/strip_fixtures.json +0 -57
  551. package/dist/agent-src/skills/humanizer/evals/triggers.json +0 -17
  552. package/dist/agent-src/skills/iconography/evals/triggers.json +0 -17
  553. package/dist/agent-src/skills/image-analyser/evals/triggers.json +0 -17
  554. package/dist/agent-src/skills/image-creator/evals/triggers.json +0 -17
  555. package/dist/agent-src/skills/image-editing/evals/triggers.json +0 -17
  556. package/dist/agent-src/skills/image-generation/evals/triggers.json +0 -17
  557. package/dist/agent-src/skills/image-provider-routing/evals/triggers.json +0 -17
  558. package/dist/agent-src/skills/incident-commander/evals/domain-truth.json +0 -16
  559. package/dist/agent-src/skills/incident-commander/evals/evals.json +0 -20
  560. package/dist/agent-src/skills/js-library-packaging/evals/triggers.json +0 -17
  561. package/dist/agent-src/skills/judge-artifact-completeness/evals/triggers.json +0 -17
  562. package/dist/agent-src/skills/judge-injection-defense/evals/triggers.json +0 -17
  563. package/dist/agent-src/skills/judge-synthesis/evals/triggers.json +0 -17
  564. package/dist/agent-src/skills/launch-readiness/evals/evals.json +0 -21
  565. package/dist/agent-src/skills/learning-tutor/evals/triggers.json +0 -52
  566. package/dist/agent-src/skills/legal-intake-triage/evals/triggers.json +0 -17
  567. package/dist/agent-src/skills/legal-practice-profile/evals/triggers.json +0 -17
  568. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +0 -52
  569. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +0 -52
  570. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +0 -52
  571. package/dist/agent-src/skills/llm-provider-knowledge/evals/triggers.json +0 -20
  572. package/dist/agent-src/skills/logging-monitoring/evals/evals.json +0 -16
  573. package/dist/agent-src/skills/logo-generation/evals/triggers.json +0 -17
  574. package/dist/agent-src/skills/messaging-architecture/evals/domain-truth.json +0 -16
  575. package/dist/agent-src/skills/messaging-architecture/evals/evals.json +0 -16
  576. package/dist/agent-src/skills/monorepo-workspace/evals/triggers.json +0 -17
  577. package/dist/agent-src/skills/nda-triage/evals/triggers.json +0 -17
  578. package/dist/agent-src/skills/operational-readiness/evals/triggers.json +0 -17
  579. package/dist/agent-src/skills/pdf-tools/evals/triggers.json +0 -52
  580. package/dist/agent-src/skills/perf-feedback-craft/evals/evals.json +0 -16
  581. package/dist/agent-src/skills/persona-improvement/evals/triggers.json +0 -52
  582. package/dist/agent-src/skills/php-coder/evals/triggers.json +0 -17
  583. package/dist/agent-src/skills/prediction-pool-optimizer/evals/triggers.json +0 -21
  584. package/dist/agent-src/skills/prompt-engineering-image/evals/triggers.json +0 -17
  585. package/dist/agent-src/skills/prompt-engineering-patterns/evals/evals.json +0 -16
  586. package/dist/agent-src/skills/prompt-validator/evals/triggers.json +0 -17
  587. package/dist/agent-src/skills/quality-tools/evals/evals.json +0 -15
  588. package/dist/agent-src/skills/reasoning-orchestrator/evals/triggers.json +0 -17
  589. package/dist/agent-src/skills/refine-prompt/evals/evals.json +0 -16
  590. package/dist/agent-src/skills/refine-ticket/evals/evals.json +0 -16
  591. package/dist/agent-src/skills/refine-ticket/evals/output-schema.yml +0 -16
  592. package/dist/agent-src/skills/refine-ticket/evals/triggers.json +0 -17
  593. package/dist/agent-src/skills/release-comms/evals/evals.json +0 -16
  594. package/dist/agent-src/skills/rice-prioritization/evals/evals.json +0 -20
  595. package/dist/agent-src/skills/runway-cognition/evals/domain-truth.json +0 -29
  596. package/dist/agent-src/skills/runway-cognition/evals/evals.json +0 -20
  597. package/dist/agent-src/skills/scenario-modeling/evals/domain-truth.json +0 -29
  598. package/dist/agent-src/skills/scenario-modeling/evals/evals.json +0 -20
  599. package/dist/agent-src/skills/schema-review/evals/triggers.json +0 -17
  600. package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +0 -52
  601. package/dist/agent-src/skills/security-maturity-assessment/evals/triggers.json +0 -52
  602. package/dist/agent-src/skills/server-hardening/evals/triggers.json +0 -17
  603. package/dist/agent-src/skills/skill-writing/evals/triggers.json +0 -17
  604. package/dist/agent-src/skills/spreadsheet-authoring/evals/triggers.json +0 -47
  605. package/dist/agent-src/skills/storybook-workshop/evals/triggers.json +0 -17
  606. package/dist/agent-src/skills/subagent-orchestration/evals/evals.json +0 -60
  607. package/dist/agent-src/skills/supply-chain-intake/evals/triggers.json +0 -52
  608. package/dist/agent-src/skills/systematic-debugging/evals/evals.json +0 -20
  609. package/dist/agent-src/skills/test-case-discovery/evals/triggers.json +0 -52
  610. package/dist/agent-src/skills/test-driven-development/evals/evals.json +0 -16
  611. package/dist/agent-src/skills/threat-modeling/evals/evals.json +0 -21
  612. package/dist/agent-src/skills/typography-system/evals/evals.json +0 -14
  613. package/dist/agent-src/skills/typography-system/evals/triggers.json +0 -17
  614. package/dist/agent-src/skills/unit-economics-modeling/evals/domain-truth.json +0 -40
  615. package/dist/agent-src/skills/unit-economics-modeling/evals/evals.json +0 -24
  616. package/dist/agent-src/skills/verify-completion-evidence/evals/evals.json +0 -16
  617. package/dist/agent-src/skills/verify-repair-loop/evals/output-schema.yml +0 -20
  618. package/dist/agent-src/skills/verify-repair-loop/evals/triggers.json +0 -17
  619. package/dist/agent-src/skills/vision-articulation/evals/evals.json +0 -16
  620. package/dist/agent-src/skills/voice-and-tone-design/evals/evals.json +0 -16
  621. package/dist/agent-src/skills/wireframe/evals/triggers.json +0 -17
  622. package/dist/agent-src/skills/workspace-link/evals/triggers.json +0 -17
  623. package/dist/agent-src/skills/worktree-lifecycle/evals/evals.json +0 -38
  624. package/dist/agent-src/skills/worktree-lifecycle/evals/triggers.json +0 -52
  625. package/dist/cli/agent-config.js.map +0 -1
  626. package/dist/cli/bash/runBash.js.map +0 -1
  627. package/dist/cli/commands/commands.js.map +0 -1
  628. package/dist/cli/commands/config.js.map +0 -1
  629. package/dist/cli/commands/doctorShell.js.map +0 -1
  630. package/dist/cli/commands/mcpServer.js.map +0 -1
  631. package/dist/cli/commands/packs.js.map +0 -1
  632. package/dist/cli/commands/profiles.js.map +0 -1
  633. package/dist/cli/commands/recordTriggerEval.js.map +0 -1
  634. package/dist/cli/commands/rtkDetect.js.map +0 -1
  635. package/dist/cli/commands/settings.js.map +0 -1
  636. package/dist/cli/commands/uiAudit.js.map +0 -1
  637. package/dist/cli/commands/uiRender.js.map +0 -1
  638. package/dist/cli/commands/uiServe.js.map +0 -1
  639. package/dist/cli/commands/versions.js.map +0 -1
  640. package/dist/cli/commands/workspaces.js.map +0 -1
  641. package/dist/cli/configRoot.js.map +0 -1
  642. package/dist/cli/discovery/loadManifest.js.map +0 -1
  643. package/dist/cli/firstRunNotice.js.map +0 -1
  644. package/dist/cli/help.js.map +0 -1
  645. package/dist/cli/initRouting.js.map +0 -1
  646. package/dist/cli/log/logger.js.map +0 -1
  647. package/dist/cli/main.js.map +0 -1
  648. package/dist/cli/mcp/content.js.map +0 -1
  649. package/dist/cli/mcp/dispatch.js.map +0 -1
  650. package/dist/cli/mcp/stdio.js.map +0 -1
  651. package/dist/cli/paths.js.map +0 -1
  652. package/dist/cli/python/knowledge_ingest.js.map +0 -1
  653. package/dist/cli/python/workspace_analytics.js.map +0 -1
  654. package/dist/cli/python/workspace_crypto.js.map +0 -1
  655. package/dist/cli/python/workspace_documents.js.map +0 -1
  656. package/dist/cli/python/workspace_drive.js.map +0 -1
  657. package/dist/cli/python/workspace_drive_health.js.map +0 -1
  658. package/dist/cli/python/workspace_explain.js.map +0 -1
  659. package/dist/cli/python/workspace_hosts.js.map +0 -1
  660. package/dist/cli/python/workspace_inbox.js.map +0 -1
  661. package/dist/cli/python/workspace_render.js.map +0 -1
  662. package/dist/cli/python/workspace_roles.js.map +0 -1
  663. package/dist/cli/python/workspace_secrets.js.map +0 -1
  664. package/dist/cli/python/workspace_sessions.js.map +0 -1
  665. package/dist/cli/python/workspace_skills.js.map +0 -1
  666. package/dist/cli/registry.js.map +0 -1
  667. package/dist/install/agentSwitchDetection.js.map +0 -1
  668. package/dist/install/agentSwitchProfile.js.map +0 -1
  669. package/dist/install/atomic.js.map +0 -1
  670. package/dist/install/claudePathsPlan.js.map +0 -1
  671. package/dist/install/conflict.js.map +0 -1
  672. package/dist/install/detect.js.map +0 -1
  673. package/dist/install/emit_host_rules_cli.js.map +0 -1
  674. package/dist/install/globalRuleLayers.js.map +0 -1
  675. package/dist/install/hostLayerFingerprint.js.map +0 -1
  676. package/dist/install/partitionEligibility.js.map +0 -1
  677. package/dist/install/paths.js.map +0 -1
  678. package/dist/install/plan.js.map +0 -1
  679. package/dist/install/preflight.js.map +0 -1
  680. package/dist/install/rtkDetection.js.map +0 -1
  681. package/dist/install/ruleInScope.js.map +0 -1
  682. package/dist/install/ruleLayerPartition.js.map +0 -1
  683. package/dist/install/rule_scope.js.map +0 -1
  684. package/dist/install/rule_scope_cli.js.map +0 -1
  685. package/dist/install/selectedTools.js.map +0 -1
  686. package/dist/install/toolDetection.js.map +0 -1
  687. package/dist/install/txlog.js.map +0 -1
  688. package/dist/install/types.js.map +0 -1
  689. package/dist/install/wizard-plan.js.map +0 -1
  690. package/dist/install/wizardDismissals.js.map +0 -1
  691. package/dist/scripts/_lib/agent_settings.js.map +0 -1
  692. package/dist/scripts/_lib/agent_src.js.map +0 -1
  693. package/dist/scripts/_lib/claude_builtin_names.js.map +0 -1
  694. package/dist/scripts/_lib/claude_plugin.js.map +0 -1
  695. package/dist/scripts/_lib/claude_settings_hooks.js.map +0 -1
  696. package/dist/scripts/_lib/compile_time_toggles.js.map +0 -1
  697. package/dist/scripts/_lib/environment_detector.js.map +0 -1
  698. package/dist/scripts/_lib/host_launch.js.map +0 -1
  699. package/dist/scripts/_lib/install_layout.js.map +0 -1
  700. package/dist/scripts/_lib/installed_lock.js.map +0 -1
  701. package/dist/scripts/_lib/lean_projection_mode.js.map +0 -1
  702. package/dist/scripts/_lib/model_tier.js.map +0 -1
  703. package/dist/scripts/_lib/prune_empty_dirs.js.map +0 -1
  704. package/dist/scripts/_lib/scoped_projection.js.map +0 -1
  705. package/dist/scripts/_lib/script_output.js.map +0 -1
  706. package/dist/scripts/_lib/spawn_env.js.map +0 -1
  707. package/dist/scripts/_lib/surface_tiers.js.map +0 -1
  708. package/dist/scripts/_lib/token_count.js.map +0 -1
  709. package/dist/scripts/_lib/trigger_eval_floors.js.map +0 -1
  710. package/dist/scripts/_lib/ui_surface.js.map +0 -1
  711. package/dist/scripts/_lib/user_global_paths.js.map +0 -1
  712. package/dist/scripts/ai_council/modes.js.map +0 -1
  713. package/dist/scripts/ai_council/transport_resolver.js.map +0 -1
  714. package/dist/scripts/condense.js.map +0 -1
  715. package/dist/scripts/project_thin_rules.js.map +0 -1
  716. package/dist/server/app.js.map +0 -1
  717. package/dist/server/io/atomicMultiWrite.js.map +0 -1
  718. package/dist/server/io/atomicWrite.js.map +0 -1
  719. package/dist/server/io/sharedWriteCheck.js.map +0 -1
  720. package/dist/server/io/substituteTemplate.js.map +0 -1
  721. package/dist/server/io/yamlIO.js.map +0 -1
  722. package/dist/server/nicknameResolver.js.map +0 -1
  723. package/dist/server/port.js.map +0 -1
  724. package/dist/server/routes/discovery.js.map +0 -1
  725. package/dist/server/routes/install.js.map +0 -1
  726. package/dist/server/routes/ping.js.map +0 -1
  727. package/dist/server/routes/schema.js.map +0 -1
  728. package/dist/server/routes/settings.js.map +0 -1
  729. package/dist/server/routes/settingsChanges.js.map +0 -1
  730. package/dist/server/routes/userMd.js.map +0 -1
  731. package/dist/server/routes/wizard.js.map +0 -1
  732. package/dist/server/routes/workspace.js.map +0 -1
  733. package/dist/server/schemas/settings.js.map +0 -1
  734. package/dist/server/serverInfo.js.map +0 -1
  735. package/dist/server/token.js.map +0 -1
  736. package/dist/server/writeRoot.js.map +0 -1
  737. package/dist/shared/capabilities.js.map +0 -1
  738. package/dist/shared/interactiveContext.js.map +0 -1
  739. package/dist/shared/nicknamePrefill.js.map +0 -1
  740. package/dist/shared/settingsAsks.js.map +0 -1
  741. package/dist/shared/settingsCarveOut.js.map +0 -1
  742. package/dist/shared/settingsClasses.js.map +0 -1
  743. package/dist/shared/settingsConsent.js.map +0 -1
  744. package/dist/shared/settingsSurface.js.map +0 -1
  745. package/dist/shared/skillRanking.js.map +0 -1
  746. package/dist/shared/userMd/formAdapter.js.map +0 -1
  747. package/dist/shared/userMd/schema.js.map +0 -1
  748. package/dist/shared/userMd/utils.js.map +0 -1
  749. package/dist/ui/assets/index-Cxgy63kz.js +0 -26
  750. package/dist/ui/assets/index-Cxgy63kz.js.map +0 -1
  751. package/src/scripts/_lib/adr_frontmatter.test.ts +0 -365
  752. package/src/scripts/_lib/adversarial_council_gate.test.ts +0 -112
  753. package/src/scripts/_lib/adversarial_reconcile.test.ts +0 -197
  754. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +0 -150
  755. package/src/scripts/_lib/secret_detector.test.ts +0 -108
  756. package/src/scripts/_lib/secret_detector_adversarial.test.ts +0 -116
  757. package/src/scripts/_lib/ui_authority.test.ts +0 -251
  758. package/src/scripts/_lib/untrusted_content.test.ts +0 -175
  759. package/src/scripts/check_secret_leak.test.ts +0 -90
  760. package/src/scripts/design_slop_rules.test.ts +0 -246
  761. package/src/scripts/self_review_gate.test.ts +0 -296
  762. package/src/shared/capabilities.test.ts +0 -43
@@ -57,6 +57,24 @@ In precedence order, and report which one answered:
57
57
  Globs are globs: `packages/*` means every direct child carrying a manifest, not
58
58
  every directory.
59
59
 
60
+ ### 2b. Catalogs — the version is declared once, not per member
61
+
62
+ When the workspace defines a **catalog**, a member's `catalog:` range is a
63
+ REFERENCE, not a declaration. Report the catalog as the version's home:
64
+
65
+ - A member range starting `catalog:` (bare, or `catalog:<name>`) resolves
66
+ against the workspace catalog definition. It does not resolve outside the
67
+ workspace at all — treat it exactly as `workspace:` for publishability.
68
+ - **An upgrade edits the catalog, not the member.** Editing a member that reads
69
+ `catalog:` is either a no-op or a silent divergence from the catalog, and the
70
+ catalog exists precisely so the version has one home.
71
+ - **A member carrying a version LITERAL for a dependency the catalog also
72
+ declares is reported, not gated** — see § Do NOT. Name the member, the
73
+ dependency, the literal range, the catalog name and the catalog range. Where
74
+ several catalogs declare the same dependency, list every candidate rather than
75
+ inventing an applicable one; nothing in the workspace definition says which
76
+ the literal intended to follow.
77
+
60
78
  ### 3. Task runner — ask the runner, do not read its config
61
79
 
62
80
  When a runner is present, its own listing is the source of truth, because a
@@ -133,6 +151,14 @@ When the runner was absent, the last line reads
133
151
 
134
152
  ## Do NOT
135
153
 
154
+ - **Do NOT gate on a member version literal.** Whether a catalog repository
155
+ permits selective literals is that repository's convention, not this suite's
156
+ to impose. Report it as a structural observation — *"member literal overlaps
157
+ catalog entry"*, never *"invalid"* — and let the reader decide. An exact
158
+ mismatch between the literal and the catalog range is reported at higher
159
+ severity, and still does not gate.
160
+
161
+
136
162
  - Read `project.json` by hand to enumerate Nx projects — `nx show projects` is
137
163
  the source of truth and includes inferred targets.
138
164
  - Install `turbo` or `nx` to answer a question. They are the consumer's
@@ -112,6 +112,33 @@ The derivation therefore unwraps a thin wrapper and records what it points at, a
112
112
  confirm, and the file says which id failed. Downgrading is the honest outcome; writing
113
113
  the stronger claim and hoping is the failure this skill exists to prevent.
114
114
 
115
+ ## A confirmed canonical answer is a playbook — including the awkward one
116
+
117
+ A repository's answer to *"where does new code of this kind go"* is a playbook
118
+ once it has been **confirmed**, graded like any other: `configured` when every
119
+ cited id resolved, `observed` when one did not.
120
+
121
+ **The awkward case is the one worth writing down.** A public surface version and
122
+ an **implementation generation** are independent axes — a `v1` controller can
123
+ carry the current internal architecture while a `v2` one is half-migrated and
124
+ abandoned. So the canonical answer for a scope is frequently *"the
125
+ older-looking lane"*, and that is exactly the answer nobody records because it
126
+ reads as a mistake. **ADR-248** holds the evidence order that produces it: a live
127
+ decision record, then an executable architecture test, then a shared abstraction
128
+ in maintained code, then current tests and contracts, then several recent
129
+ analogous implementations, then migration docs, then git history, and **names and
130
+ paths last**.
131
+
132
+ Two bounds, both deliberate:
133
+
134
+ - **Per scope, never per artifact type.** A repository may legitimately have two
135
+ right answers in two modules. There is no single global exemplar, and a
136
+ playbook claiming one is over-reaching its own `scope`.
137
+ - **No second contract.** This is the ADR-244 playbook class unchanged — not a
138
+ conventions map, not a canonicality registry. A confirmed answer is a
139
+ playbook; an unconfirmed one is a hypothesis and belongs in the analysis that
140
+ produced it.
141
+
115
142
  ## Output format
116
143
 
117
144
  1. One playbook per file in the playbook home, frontmatter first: `task`, `scope`, `grade`,
@@ -156,7 +183,7 @@ The derivation therefore unwraps a thin wrapper and records what it points at, a
156
183
 
157
184
  ## See also
158
185
 
159
- - [ADR-244](../../../docs/decisions/ADR-244-playbook-is-a-sixth-context-type.md) — the artefact class, its grades, its home, and the two deferred kinds.
186
+ - [ADR-244](../../../docs/decisions/ADR-244-playbook-is-a-sixth-context-type.md) — the artifact class, its grades, its home, and the two deferred kinds.
160
187
  - [`standards-from-config`](../standards-from-config/SKILL.md) — the Class-A rule this applies to procedure rather than to style.
161
188
  - [`context-document`](../context-document/SKILL.md) — the contexts machinery a playbook reuses as its sixth type.
162
189
  - [`command-writing`](../command-writing/SKILL.md) — the numbered-step shape the body follows.
@@ -129,6 +129,29 @@ Check:
129
129
  6. Known uncertainties
130
130
  7. Recommended next specialist skill
131
131
 
132
+ ## Improvement mode — check for an existing artefact first
133
+
134
+ Before a full analysis, ask whether this target has already been analysed:
135
+
136
+ ```bash
137
+ npx tsx node_modules/@event4u/agent-config/src/scripts/select_analysis_mode.ts "<target>"
138
+ ```
139
+
140
+ `full` → run steps 1-8 as written. `delta` → **read the named artefact first**,
141
+ then analyse only what it does not cover: gaps, sections the tree has moved past,
142
+ patterns that are new since it was written. The output format is unchanged; the
143
+ reading is narrower.
144
+
145
+ This changes **write economics only**. A concept page is a hypothesis cache,
146
+ never truth — the delta path re-verifies every structural claim it carries
147
+ forward against a live source, exactly as a full run would
148
+ ([`source-discovery-gate`](../../rules/source-discovery-gate.md) § v1↔v2
149
+ isolation). A cheaper write is not a licence to trust a cached read, and
150
+ "the page already says so" is not evidence.
151
+
152
+ An empty page counts as absent: it carries no conclusions to delta against, so
153
+ the router answers `full`.
154
+
132
155
  ## Knowledge capture (`convention_detected` events)
133
156
 
134
157
  An architecture map or stack finding that recurs (a naming convention,
@@ -24,7 +24,7 @@ execution:
24
24
  handler: shell
25
25
  safety_mode: strict
26
26
  allowed_tools:
27
- - npx
27
+ - Bash(npx:*)
28
28
  ---
29
29
 
30
30
  # react-shadcn-ui
@@ -54,7 +54,14 @@ block above:
54
54
 
55
55
  ## Compatibility
56
56
 
57
- - **Tested against:** `shadcn@2.1`, Tailwind CSS `3.x`, React `18+`.
57
+ - **Tested against:** `shadcn@4`, Tailwind CSS `4.x`, React `19`, primitives from
58
+ `@base-ui/react@1`, `components.json` style `base-nova` — every major read out
59
+ of `tests/fixtures/stack/shadcn-current/package.json`, the verbatim output of
60
+ `npx shadcn@latest init -d --template vite` on 2026-08-24. No version on this
61
+ line may be stated from prose; move it only by re-running that scaffold and
62
+ re-committing the fixture.
63
+ - Tailwind `3.x` and Radix primitives stay supported through the **v3 branch**
64
+ under § Gotcha — the CLI moved on, existing projects did not.
58
65
  - The audit step (`directives/ui/audit.ts`) reads the line above and
59
66
  compares it with `state.ui_audit.shadcn_inventory.version`; a major
60
67
  mismatch triggers a soft halt before this skill runs.
@@ -63,8 +70,8 @@ block above:
63
70
 
64
71
  Use when `state.stack.frontend == "react-shadcn"` and `directives/ui/apply.ts`,
65
72
  `review.ts`, or `polish.ts` dispatches to this skill, or when a React project
66
- clearly uses shadcn/ui (presence of `components.json`, `@radix-ui/*`
67
- dependencies, a `components/ui/` folder of generated primitives).
73
+ clearly uses shadcn/ui (presence of `components.json`, a `@base-ui/react` or
74
+ `@radix-ui/*` dependency, a `components/ui/` folder of generated primitives).
68
75
 
69
76
  Do NOT use when:
70
77
  - Project is Blade + Livewire + Flux (use `flux` / `livewire` / `blade-ui`).
@@ -82,13 +89,23 @@ Do NOT use when:
82
89
  writes `state.ui_audit.shadcn_inventory` with the detected version —
83
90
  when it diverges by a major, audit emits a soft halt before this
84
91
  skill runs.
85
- - shadcn/ui composes Radix primitives. Accessibility is built in via Radix
86
- but only when you use the wrapper components correctly (`asChild`,
92
+ - shadcn/ui composes a primitive vendor — `@base-ui/react` in a CLI-4 scaffold,
93
+ `@radix-ui/*` in older projects. Accessibility is built in either way, but
94
+ only when the wrapper components are used correctly (`asChild`,
87
95
  `<DialogTrigger>` instead of a bare `<button>`).
88
- - Tailwind tokens come from `tailwind.config.{js,ts}` (`theme.extend.colors`)
89
- and CSS custom properties on `:root` and `.dark` (`--background`,
90
- `--foreground`, `--primary`, `--ring`, …). Audit writes them into
91
- `state.ui_audit.design_tokens`. Use those tokens; do not hardcode values.
96
+ - **Tailwind tokens: branch on the `css` axis, never guess.** `detect_stack()`
97
+ emits `axes.css` as `tailwind-v4` or `tailwind-v3`
98
+ (`work_engine/stack/detect.ts:521-524`); `existing-ui-audit` reads tokens on
99
+ the same key.
100
+ - `tailwind-v4` — **no config file exists.** Tokens live in the `@theme` block
101
+ of the entry CSS named by `components.json` → `tailwind.css`, and that file's
102
+ `"tailwind": {"config": ""}` — an empty `config` string — IS the v4 marker.
103
+ Never write `tailwind.config.{js,ts}` in a v4 project.
104
+ - `tailwind-v3` — tokens come from `tailwind.config.{js,ts}`
105
+ (`theme.extend.colors`).
106
+ - Either branch — CSS custom properties on `:root` and `.dark`
107
+ (`--background`, `--foreground`, `--primary`, `--ring`, …). Audit writes them
108
+ into `state.ui_audit.design_tokens`. Use those tokens; never hardcode values.
92
109
  - Dark mode is class-based (`<html class="dark">`). Every color must come
93
110
  from `bg-background`, `text-foreground`, etc. — never raw `bg-white`.
94
111
  - Every interactive primitive must declare a focus-visible state via
@@ -243,12 +260,12 @@ this over a registry file.
243
260
  `bg-primary text-primary-foreground`, `text-muted-foreground`. No
244
261
  `bg-white` / `text-black` / hardcoded `#fff`.
245
262
  2. Spacing / radius from theme tokens (`rounded-lg` mapped to `--radius`
246
- in `tailwind.config.{js,ts}`). Polish refactors hardcoded values
247
- when a token equivalent exists.
263
+ — in the `@theme` block on `tailwind-v4`, in `tailwind.config.{js,ts}` on
264
+ `tailwind-v3`). Polish refactors hardcoded values when a token exists.
248
265
  3. Dark mode: never branch on a `dark` prop; rely on the `.dark` class
249
266
  on the root and semantic tokens.
250
267
  4. Every interactive primitive: keyboard trigger present (Enter/Space
251
- on buttons, Esc on dialogs — Radix free), visible focus ring,
268
+ on buttons, Esc on dialogs — free from the primitive vendor), focus ring,
252
269
  `aria-label` from `state.ui_design.a11y` when icon-only.
253
270
 
254
271
  ### Step 3: State coverage
@@ -22,8 +22,9 @@ rule. Skip only on explicit *"just do it"* bypass or trivial edits
22
22
  ### 0b. Skill-growth gate (new skill only)
23
23
 
24
24
  The skill count keeps climbing; nothing forces *"should this be a new skill at
25
- all?"*. Before creating a **new** skill, answer these in the PR body — a new
26
- skill that cannot answer them is a merge / guideline / no-op in disguise:
25
+ all?"*. Before creating a **new** skill, answer these **in the ledger**,
26
+ `agents/decisions/skill-admissions.jsonl` — a new skill that cannot answer them
27
+ is a merge / guideline / no-op in disguise:
27
28
 
28
29
  1. **Family** — which capability family does it join? (engineering, product, …)
29
30
  2. **Capability** — what does it do that no existing skill does? Name the gap.
@@ -31,6 +32,27 @@ skill that cannot answer them is a merge / guideline / no-op in disguise:
31
32
  4. **Why not a guideline** — is this executable workflow (skill) or reference material (guideline)? Guideline-shaped content does not become a skill.
32
33
  5. **Visibility tier** — `core` or `lab`? Which pack?
33
34
 
35
+ **The answers go in the ledger, not in the PR body.** That used to say PR body,
36
+ and `check_finding_dispositions.ts:11` rejects that exact surface for findings in
37
+ its own words — a comment is *"mutable and unaudited; it is transport, not a
38
+ record"*. The consequence was measurable: **+8 skills landed in one release with
39
+ no visible "no"**, because a refusal kept in a PR body is a refusal nobody can
40
+ grep. One line, appended:
41
+
42
+ ```json
43
+ {"skill":"<name>","decision":"admitted","date":"YYYY-MM-DD","family":"…","capability":"…","why_not_extend":"…","why_not_a_guideline":"…","visibility":"…"}
44
+ ```
45
+
46
+ `check_skill_admissions` is forward-only: it requires a row only for skills added
47
+ since the base ref, so nothing existing needs backfilling. It rejects an answer
48
+ under 12 characters, because a one-word answer is the boilerplate the gate exists
49
+ to catch rather than an answer.
50
+
51
+ **A refusal is a row too**, and that is the half the PR body lost:
52
+ `{"skill":"…","decision":"rejected","date":"…","instead":"…"}`. A rejected row may
53
+ not name a skill that exists — a record saying a capability was refused while it
54
+ ships is worse than no record.
55
+
34
56
  **Surface overlap before deciding** — run `./scripts-run src/scripts/skill_overlap`
35
57
  (or `audit_skill_overlap`) and read the nearest matches; a high-overlap hit is a
36
58
  merge signal, not a green light. This gate is the authoring-time companion to the
@@ -236,7 +258,7 @@ rubric:
236
258
  ```
237
259
 
238
260
  `contains` / `file_exists` grade deterministically. `rubric` items grade
239
- via a fresh sub-agent reading the output against the criterion — keep
261
+ via a fresh subagent reading the output against the criterion — keep
240
262
  each criterion to one falsifiable sentence.
241
263
 
242
264
  **Loop** (orchestrated by `scripts/run_skill_evals.ts`):
@@ -244,14 +266,14 @@ each criterion to one falsifiable sentence.
244
266
  1. **Scaffold** — `./scripts-run src/scripts/run_skill_evals scaffold {skill}`
245
267
  creates `runs/{timestamp}-{baseline,with-skill}/` and seeds each
246
268
  scenario's `meta.json`.
247
- 2. **Baseline run** — spawn one sub-agent per scenario **without** the
269
+ 2. **Baseline run** — spawn one subagent per scenario **without** the
248
270
  skill loaded. Capture stdout + any artifacts into
249
271
  `runs/{timestamp}-baseline/{scenario-id}/`.
250
- 3. **With-skill run** — same scenarios, same sub-agent harness, **with**
272
+ 3. **With-skill run** — same scenarios, same subagent harness, **with**
251
273
  the skill loaded. Capture into `runs/{timestamp}-with-skill/{scenario-id}/`.
252
274
  4. **Grade** — for each scenario, write a `grade.json` file with
253
275
  per-assertion pass/fail. Deterministic assertions auto-grade;
254
- rubric assertions need a grader sub-agent.
276
+ rubric assertions need a grader subagent.
255
277
  5. **Aggregate** — `./scripts-run src/scripts/run_skill_evals aggregate {skill}
256
278
  --run {timestamp}` produces `runs/{timestamp}-benchmark.json` with
257
279
  pass-rate, timing, token deltas baseline-vs-with-skill.
@@ -259,7 +281,7 @@ each criterion to one falsifiable sentence.
259
281
  --run {timestamp}` prints the diff. Iterate on the skill body
260
282
  until `with-skill` outperforms `baseline` on every scenario.
261
283
 
262
- The script ships with sub-agent spawning **stubbed** — the orchestration
284
+ The script ships with subagent spawning **stubbed** — the orchestration
263
285
  layer is per-environment (Claude Code, Augment, council). Implement
264
286
  the spawn function once for your environment, the rest of the loop
265
287
  (aggregate / report / scaffold) works out of the box.
@@ -30,7 +30,7 @@ Do NOT use when:
30
30
 
31
31
  1. **Inspect call site & choose approach** — identify every dynamic value flowing into the query, then pick: query builder when possible. Raw SQL only when query builder can't express the query.
32
32
  2. **Parameterize** — Every variable must use `?` binding or named `:param`. Never interpolate PHP variables into SQL strings.
33
- 3. **Use MariaDB syntax** — Not PostgreSQL or MSSQL. Check `php/sql.md` for MariaDB-specific patterns.
33
+ 3. **Read the engine, then choose the syntax** — check, in order: the project's DB config (`config/database.php` default connection, `DB_CONNECTION`), a `docker-compose.yml` service image, a migration using engine-specific syntax. MySQL and MariaDB share the query-syntax world this skill writes in; PostgreSQL and MSSQL do not. **If none of those declare an engine, say so and ask — do not assume one.** A query written for the wrong engine passes review and fails in production.
34
34
  4. **Verify** — Run EXPLAIN on complex queries. Check that no PHP interpolation (`"$var"`, `'{$var}'`) appears in SQL.
35
35
 
36
36
  ```
@@ -66,6 +66,12 @@ DB::select("SELECT * FROM users WHERE email = '{$email}'");
66
66
 
67
67
  ## Gotcha
68
68
 
69
+ **MySQL and MariaDB share a query-syntax world. They never share a migration
70
+ one.** Same principle as `database`: one engine for writing a `SELECT`, two for
71
+ online-DDL semantics, lock behavior under `ALTER`, feature availability and
72
+ `EXPLAIN` output. Never carry a claim from the second group across the two
73
+ without naming the engine and version it was measured on.
74
+
69
75
  - MariaDB and MySQL have subtle syntax differences.
70
76
  - The model writes `$variable` in SQL strings instead of `?` placeholders.
71
77
  - `GROUP BY` with `ONLY_FULL_GROUP_BY` requires all non-aggregated columns.
@@ -50,20 +50,43 @@ found", do not fabricate one).
50
50
  - Python: `pyproject.toml` / `ruff.toml` (`[tool.ruff]`, `[tool.black]`),
51
51
  `setup.cfg`.
52
52
  - Ruby: `.rubocop.yml`. Go: `gofmt`/`golangci.yml`.
53
- 2. **Derive as pointer + digest, never a flattened claim.** Each standard is one
53
+ 2. **Follow the chain before you digest, and pick the config NEAREST the edit.**
54
+ Read literally — one file, one parse — this procedure returns a null on a
55
+ repository whose root config is a single `extends`. A fourteen-line linter
56
+ config whose only load-bearing line points into a package in the same
57
+ workspace is not a project without standards; it is a project whose standards
58
+ are one hop away, and "no enforced standard found" there is a false negative
59
+ that reads exactly like a true one. `extends` is specified in TypeScript,
60
+ ESLint, Biome and Stylelint; `includes` plays the same role in PHPStan and
61
+ Rector; `workspace:` is documented in npm, yarn, pnpm and bun.
62
+ - **Precedence is nearest-first, and it is not a preference.** The config in
63
+ the edited path's own directory governs, then its parent, up to the
64
+ repository root. A per-package `tsconfig.json`, `.eslintrc`, `.env` or
65
+ deployment manifest is the one that package's build reads; a root file it
66
+ does not extend has no effect on it. Reading the root config for an edit
67
+ inside a package that carries its own is a **wrong** answer, not a coarse
68
+ one. Report the outranked root candidate too, so the precedence is visible.
69
+ - **An unresolvable hop is a named gap with a PARTIAL digest, never an
70
+ absence.** Say which hop failed and why. A partial digest naming its gap is
71
+ usable; a null that reads as "no standards" is a lie.
72
+ - **A hop that leaves the repository is labelled `external` and excluded from
73
+ the digest.** Presenting a third-party preset as the project's own standard
74
+ is worse than reporting nothing — the reader cannot tell which rules the
75
+ project chose. Report it with its path; do not merge it.
76
+ 3. **Derive as pointer + digest, never a flattened claim.** Each standard is one
54
77
  line: the **value**, the **config file it came from**, and the **scope** it
55
78
  applies to. Write `ruff.toml → line-length = 88 (scope: src/**/*.py)`, NOT
56
79
  "the project uses line length 88". The pointer makes the claim re-checkable
57
80
  and the next agent can open the config to confirm.
58
- 3. **Preserve scope; surface conflicts, never flatten them.** If two configs (or
81
+ 4. **Preserve scope; surface conflicts, never flatten them.** If two configs (or
59
82
  an inline / per-directory override) give two values, emit **two pointers with
60
83
  two values + their scopes** — never one ambiguous merged claim. A visible
61
84
  conflict is correct; a hidden flattened guess is the failure mode.
62
- 4. **Stamp staleness.** Record each source's `config_mtime` (or content hash).
85
+ 5. **Stamp staleness.** Record each source's `config_mtime` (or content hash).
63
86
  The digest is stale when the config file's mtime/hash changes → re-derive. No
64
87
  human gate is needed (Class A is deterministic) — the digest is **regenerated
65
88
  from the config, never hand-edited**.
66
- 5. **Persist** as a Class-A context card under `agents/settings/contexts/` (see
89
+ 6. **Persist** as a Class-A context card under `agents/settings/contexts/` (see
67
90
  Output format). Class A is high-trust *because* config-derived — it is read
68
91
  for heuristics only and never bypasses a fresh structural read (the v1↔v2
69
92
  isolation contract in `evidence-discipline`).
@@ -131,6 +131,15 @@ that file, which is the one thing a static checker must not start doing.
131
131
 
132
132
  ## MCP path — opt-in channel, never a dependency
133
133
 
134
+ **"Opt-in" is about the agent connecting, not about installing.** A 2026-08-24
135
+ `npx storybook@latest init --yes` scaffold ships `@storybook/addon-mcp` *and*
136
+ `@storybook/addon-a11y` in `devDependencies` by default — recorded verbatim in
137
+ `tests/fixtures/stack/storybook-current/`, which is also the only source any
138
+ Storybook major stated here may come from (`storybook@^10.5.10`). So the addon
139
+ usually already exists; what stays optional is whether an agent reaches a
140
+ running instance. The same scaffold prints *"installed but is not entirely set
141
+ up yet"*, so its presence is not evidence the channel works.
142
+
134
143
  When the project has `@storybook/addon-mcp` **and** a running Storybook,
135
144
  [`existing-ui-audit`](../existing-ui-audit/SKILL.md) prefers the live tools —
136
145
  `list-all-documentation`, then `get-documentation` for the components that matter — over the
@@ -51,18 +51,25 @@ PIN IT, LOCK IT, CVE-SCAN IT. NEVER PIPE A REMOTE SCRIPT STRAIGHT TO A SHELL.
51
51
  ```
52
52
  Non-existent, brand-new (published days ago), or near-zero-download → **stop**, treat as hallucination/slopsquat.
53
53
  2. **Typo-adjacency** — is the name within 1–2 chars of a far-more-popular package (`python-dateutil` vs `dateutil`, `lodahs` vs `lodash`)? If so, you probably want the popular one — confirm before installing.
54
- 3. **Version safety** — the model's version pin may predate a CVE fix (training-cutoff reintroduction). Take the current patched release, then scan:
54
+ 3. **Version source — look it up BEFORE you write a version, and report which outcome you got.** This is a precondition of step 4, not a note on it. Two outcomes, with opposite handling, and only the first is forbidden:
55
+ - **Invention** — writing a version string that **no source in the repository produced**. Always forbidden. A version that appeared from nowhere is unverifiable by anyone downstream, including you an hour later.
56
+ - **Lookup failure** — having searched the **declared version sources** and found none. Those sources are per ecosystem: a catalogue or a `workspace:` protocol entry, an existing manifest in the tree (`package.json`, `composer.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`), and the lockfile. This is **not** a violation. Resolving it from the registry or from the user is the correct move; report it as *unresolved-then-resolved* with the source named.
57
+
58
+ **Silence is the failure, never the fallback.** Producing a version with no source and no report is the thing the rule forbids; reporting an unresolved lookup is the thing it asks for.
59
+
60
+ A manifest that already expresses a version through a protocol — `workspace:*`, a catalogue reference — is **left as it is**. Rewriting it to a literal discards the mechanism the repository chose and pins a value the workspace was resolving for you. `workspace:` is documented in npm, yarn, pnpm and bun; catalogued versions are a documented feature of pnpm and bun.
61
+ 4. **Version safety** — the model's version pin may predate a CVE fix (training-cutoff reintroduction). Take the current patched release, then scan:
55
62
  ```bash
56
63
  npm audit # block on high/critical
57
64
  pip-audit
58
65
  osv-scanner -r .
59
66
  ```
60
- 4. **Pin + lock** — install exact + commit the lockfile; reject floating ranges (`^`, `latest`, no lockfile) on production deps.
67
+ 5. **Pin + lock** — install exact + commit the lockfile; reject floating ranges (`^`, `latest`, no lockfile) on production deps.
61
68
  ```bash
62
69
  npm install --save-exact <pkg> && git add package-lock.json
63
70
  ```
64
- 5. **License** — confirm the license is compatible with the project's declared license before it lands.
65
- 6. **No pipe-to-shell** — never `curl … | bash` an install; download → inspect → execute over pinned HTTPS, or surface it to the user for confirmation.
71
+ 6. **License** — confirm the license is compatible with the project's declared license before it lands.
72
+ 7. **No pipe-to-shell** — never `curl … | bash` an install; download → inspect → execute over pinned HTTPS, or surface it to the user for confirmation.
66
73
 
67
74
  ## MCP-server intake — the dependency gate plus two extra checks
68
75
 
@@ -180,3 +180,38 @@ Then add these **Symfony-specific** checks:
180
180
  - Messenger `failure_transport` is opt-in; without it, failures vanish.
181
181
  - Compiled container changes need `cache:clear` in `prod` before debugging "config not applied".
182
182
  - Symfony 7.x removed deprecated APIs — verify `composer.lock` before assuming 6.x patterns work.
183
+
184
+ ## When NOT to use — components without the framework
185
+
186
+ ```
187
+ A DEPENDENCY PROVES A LIBRARY IS AVAILABLE. ONLY THE ENTRY POINT AND THE
188
+ ROUTER PROVE WHICH APPLICATION SHAPE IS RUNNING.
189
+ `symfony/*` PACKAGES WITH NO SKELETON MARKER IS A THIRD STATE, AND THIS SKILL
190
+ DOES NOT APPLY TO IT.
191
+ ```
192
+
193
+ Symfony ships its ORM, container, collections and HTTP layer as
194
+ independently installable packages, usable with no framework present — a
195
+ published distribution model, not one consumer's arrangement. An application
196
+ built that way has a **custom entry point and a custom router**. Routing it here
197
+ offers a CLI that does not exist, a request-validation primitive that is not
198
+ wired, and a routes file that was never there: every suggestion confidently
199
+ wrong, and the reason visible only from the entry point.
200
+
201
+ **The probe set, and its cost.** A fixed set of filesystem existence checks plus
202
+ one manifest read — no directory walk, no content scan, and never re-derived per
203
+ session. Any ONE marker present means the framework is real:
204
+
205
+ | Probe | Meaning |
206
+ |---|---|
207
+ | `bin/console` | the console entry point the skeleton writes |
208
+ | `config/bundles.php` | the bundle registry |
209
+ | `config/services.yaml` | the DI service config |
210
+
211
+ `symfony/*` in `composer.json` with **none** of those markers is
212
+ *components-without-the-framework*. Say so and route away from this skill rather
213
+ than answering as though the framework were there.
214
+
215
+ Implemented deterministically in `src/install/detect_php_shape.ts`
216
+ (`detectPhpShape`), whose `PROBE_PATHS` is this table and whose verdict names
217
+ what a wrong route would have offered.
@@ -37,6 +37,91 @@ FLOOR PER BEHAVIOR: 1 HAPPY + 1 BOUNDARY + 1 ERROR (+1 ABUSE ON SECURITY PATHS).
37
37
  CAP PER BEHAVIOR: 5–8 CASES — EACH MUST FAIL FOR A DISTINCT REASON.
38
38
  ```
39
39
 
40
+ ## Does this change owe an executable behavior contract?
41
+
42
+ Cases and contracts are not the same artifact. A **case** is something you assert
43
+ in the project's unit runner. An **executable behavior contract** — a
44
+ specification written in the language of whoever asked for the change, and run
45
+ by a tool that reads it — is a heavier thing, and most changes do not owe one.
46
+ Ask for one everywhere and it degrades into a second, slower unit suite; ask for
47
+ one nowhere and behavior nobody can read stays unstated.
48
+
49
+ ### The observable-behavior test
50
+
51
+ > **Does this change alter behavior someone outside the code can observe, and
52
+ > would that person describe it in their own words?**
53
+
54
+ Both halves have to hold: observable behavior with no outside audience is
55
+ still only a case. *Observable* rules out anything a caller cannot see. *In their own
56
+ words* rules out behavior that is real but has no audience outside the codebase —
57
+ if the only person who can state the rule is the person reading the
58
+ implementation, a case in the unit runner states it better and cheaper.
59
+
60
+ **Yes → a contract is owed.** A refund is issued when an order is cancelled
61
+ within 14 days; a member on a lapsed plan is denied the export; a rejected
62
+ upload tells the uploader which rule it broke.
63
+
64
+ **No → cases, not a contract.** At least these:
65
+
66
+ - **A refactor with no behavior change.** Nothing outside the code can observe
67
+ it, by definition. If something can, it was not a refactor.
68
+ - **An internal invariant with no external vocabulary.** Cache key derivation,
69
+ retry backoff, connection-pool sizing, a query plan. Real behavior, no
70
+ audience — the failure is stated as a case, not as a sentence somebody outside
71
+ the code would say.
72
+ - **A pure boundary or error path with no business reading.** Rejecting a
73
+ malformed UTF-8 sequence is a case; *"we do not accept expired coupons"* is a
74
+ contract.
75
+ - **A change whose only observer is another part of this system.** A consumer
76
+ written by the same team is a caller, not an audience. Contract tests between
77
+ services are a different tool and a different question.
78
+
79
+ When the answer is yes, the ordering is unchanged: the contract fails before the
80
+ implementation exists and passes after — see
81
+ [`test-driven-development`](../test-driven-development/SKILL.md). A contract
82
+ first seen green has the same unknown sensitivity as any other test never seen
83
+ red.
84
+
85
+ ### The anti-script rule
86
+
87
+ ```
88
+ A CONTRACT STEP NAMING A SELECTOR, A TIMEOUT, OR A KEYSTROKE IS A DEFECT
89
+ IN THE CONTRACT — NOT AN IMPLEMENTATION DETAIL THAT HAPPENS TO BE THERE.
90
+ WRITE WHAT IS TRUE, NEVER WHAT IS CLICKED.
91
+ ```
92
+
93
+ A contract that scripts the interface is pinned to the interface: it goes red on
94
+ every redesign that changes nothing anyone cares about, and stays green through
95
+ the redesign that breaks the rule. It also stops being readable by the person
96
+ whose words it was supposed to be in — which was the only reason to pay for it.
97
+
98
+ **Wrong** — this is a click script wearing Given-When-Then:
99
+
100
+ ```gherkin
101
+ Given I open "/cart?id=42"
102
+ When I click #apply-coupon
103
+ And I type "SUMMER" into input[name=code]
104
+ And I wait 2 seconds
105
+ Then .cart-total should contain "€45.00"
106
+ ```
107
+
108
+ Every line is about the page. Change the button id and it fails; move the
109
+ discount rule and it passes.
110
+
111
+ **Right** — same behavior, stated as the rule it is:
112
+
113
+ ```gherkin
114
+ Given a cart of €50
115
+ When the customer applies a valid 10% coupon
116
+ Then the order total is €45
117
+ ```
118
+
119
+ The rule survives the redesign, and the person who asked for it can read it.
120
+
121
+ **The test for a step:** could it still be true if the product were a CLI, an
122
+ API, and a web page? If not, it belongs in the implementation the contract calls
123
+ into, not in the contract.
124
+
40
125
  ## Procedure — the five-step funnel
41
126
 
42
127
  ### 1. Behavior inventory (30 seconds)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: medium
3
3
  name: test-driven-development
4
- description: "Use when implementing a feature, fixing a bug, or refactoring — write a failing test first, then the code — even if the user just says 'add this function' or 'fix this bug'."
4
+ description: "Implementing a feature, fixing a bug, refactoring — failing test first, then the code. For a WRONG test, `testing-anti-patterns` wins."
5
5
  domain: quality
6
6
  workspaces:
7
7
  - engineering
@@ -72,16 +72,28 @@ failed proves nothing about the code under test.
72
72
  ### Iron Law — delete-and-restart over keep-as-reference
73
73
 
74
74
  ```
75
- WHEN UNTESTED CODE EXISTS AND A TEST IS NEEDED — DELETE THE CODE,
75
+ UNTESTED CODE THIS TASK JUST WROTE, AND A TEST IS NEEDED — DELETE THE CODE,
76
76
  WRITE THE TEST, REIMPLEMENT. NEVER KEEP IT "AS REFERENCE".
77
+ THIS LAW COVERS YOUR OWN UNTESTED OUTPUT. IT IS NOT A LICENCE TO DELETE
78
+ PRE-EXISTING CODE, AND NEVER OVERRIDES A REUSE VERDICT.
77
79
  ```
78
80
 
79
81
  Reading the existing implementation while writing its test is
80
- test-after-the-fact with extra steps. The 12-row anti-rationalization
81
- table that follows expands the most common ways this Iron Law gets
82
- talked-around. Externalized to
83
- [`testing-anti-patterns/process-anti-patterns.md`](../testing-anti-patterns/process-anti-patterns.md)
84
- to keep this skill under the 400-line sunset trigger.
82
+ test-after-the-fact with extra steps. Which code that applies to has three
83
+ answers, and only the first is a deletion:
84
+
85
+ | The code is | Do |
86
+ |---|---|
87
+ | **untested, written by this task** | delete it, write the test, reimplement — the Iron Law above |
88
+ | **pre-existing and tested** | keep it. Its tests are the record of its behaviour; deleting it to re-derive the same thing discards evidence and contradicts the reuse verdict |
89
+ | **pre-existing and untested** | do NOT delete. Write a **characterization test** pinning the behaviour it has today — including the behaviour you think is wrong — then change it under that test |
90
+
91
+ The middle row is the one this law used to get wrong: unqualified, it read as
92
+ a standing instruction to delete tested legacy that a reuse verdict would
93
+ keep. Case detail, the characterization-test procedure, and the 12-row
94
+ anti-rationalization table are in
95
+ [`testing-anti-patterns/process-anti-patterns.md`](../testing-anti-patterns/process-anti-patterns.md),
96
+ which keeps this skill under the 400-line sunset trigger.
85
97
 
86
98
  ## Mode contracts — Goal / Activities / Forbidden / Output
87
99
 
@@ -91,10 +103,21 @@ checks it from the diff** — an unverifiable prohibition does not ship.
91
103
  | Mode | Goal | Activities | Forbidden (diff check) | Output contract |
92
104
  |---|---|---|---|---|
93
105
  | **Design** | One-sentence behavior + enumerated cases | Steps 1–2 | **No production code** (diff touches no `src/**` production path) · no test bodies yet | Case list (happy/boundary/error) |
94
- | **Test-Red** | A failing test that fails RIGHT | Steps 3–4 | **No production edits** (diff = `tests/**` only) · test must fail at an **assertion, not an import/setup error** (failure output cites the assertion line) | Failing test + its observed failure reason |
106
+ | **Test-Red** | A failing test that fails RIGHT | Steps 3–4 | **No production edits** (diff = `tests/**` only) · the failure must be **about the behaviour under test**. Valid: a failing **assertion** · a **missing target** — class-not-found, or a compile/type error naming the unimplemented symbol · a **contract failure** (wrong shape, wrong status, unmet interface). Invalid: a broken **fixture** · a **syntax error** in the test · a missing **unrelated dependency** · a **runner or environment** fault | Failing test + its observed failure, named as one of the three valid classes |
95
107
  | **Implement** | Minimum code to green | Steps 5–6 | **No test edits** (no `tests/**` paths in Implement-phase diffs — changing the assertion to fit the code is the canonical violation; genuinely-wrong test → STOP and ask, never silently edit) · no scope beyond the one case | Green run output |
96
108
  | **Debug** | Fix a defect found later | (re-enter at 3) | **No bugfix before a reproducing regression test exists** (the fix commit contains a `tests/**` addition that fails without the fix) | Regression test + fix, verified red→green |
97
109
 
110
+ #### What makes a RED valid — relevance, not the line number it fails on
111
+
112
+ The discriminator is **whether the failure is about the behaviour under test**,
113
+ never where in the run it surfaces. A class that does not exist yet can only
114
+ fail at load, so demanding an assertion would force a production stub before
115
+ the first test — the exact thing this skill forbids. The four invalid classes
116
+ are failures of the harness: they would fail identically with the behaviour
117
+ fully implemented, so they measure nothing about it. Unsure → re-read the
118
+ failure output and name which of the seven it is; an unclassified red is not a
119
+ RED.
120
+
98
121
  ### Mode inference on resume
99
122
 
100
123
  Step 0 of any resume: if `agents/runtime/state/HANDOFF.md` exists, resume
@@ -107,7 +130,8 @@ assume Design:
107
130
  | No test for the target behavior | Design |
108
131
  | Test exists, currently failing at an assertion | Implement |
109
132
  | Test exists + passing, defect reported | Debug |
110
- | Test failing at import/collection error | Test-Red (fix the test, not the code) |
133
+ | Test failing at load because the target does not exist yet | Implement (that is a valid RED) |
134
+ | Test failing on a harness fault — fixture, syntax, unrelated dependency, runner | Test-Red (fix the test, not the code) |
111
135
 
112
136
  At every mode transition, one consent-checkpoint sentence (per
113
137
  `ask-when-uncertain` / `autonomous-execution` — no new mechanism): name the
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: medium
3
3
  name: testing-anti-patterns
4
- description: "Use BEFORE writing/changing tests, adding mocks, or test-only methods on production classes — vs mocking-the-mock, production pollution, partial mocks, and overfit/tautological assertions"
4
+ description: "BEFORE writing/changing tests, mocks, or test-only methods on production classes — mocking-the-mock, production pollution, overfit assertions; for order, `test-driven-development` wins."
5
5
  domain: quality
6
6
  workspaces:
7
7
  - engineering