@event4u/agent-config 14.18.0 → 14.20.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 (210) 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 +120 -129
  5. package/README.md +71 -149
  6. package/dist/agent-src/README.md +1 -1
  7. package/dist/agent-src/commands/agent-handoff.md +44 -43
  8. package/dist/agent-src/commands/review/changes.md +19 -19
  9. package/dist/agent-src/commands/review.md +2 -2
  10. package/dist/agent-src/contexts/execution/host-capability-manifest.md +37 -4
  11. package/dist/agent-src/rules/autonomous-execution.md +1 -1
  12. package/dist/agent-src/rules/git-history-discipline.md +2 -2
  13. package/dist/agent-src/rules/guidelines.md +1 -1
  14. package/dist/agent-src/rules/session-canary.md +2 -2
  15. package/dist/agent-src/rules/token-efficiency.md +1 -1
  16. package/dist/agent-src/rules/untrusted-input-defense.md +0 -2
  17. package/dist/agent-src/skills/adversarial-review/SKILL.md +0 -8
  18. package/dist/agent-src/skills/canvas-design/SKILL.md +1 -1
  19. package/dist/agent-src/skills/design-intelligence/SKILL.md +1 -1
  20. package/dist/agent-src/skills/design-intelligence/data/app-interface.csv +1 -1
  21. package/dist/agent-src/skills/design-intelligence/data/motion.csv +17 -17
  22. package/dist/agent-src/skills/design-intelligence/data/ux-guidelines.csv +2 -2
  23. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +17 -0
  24. package/dist/agent-src/skills/design-intelligence/references/design-rules-checklist.md +4 -4
  25. package/dist/agent-src/skills/design-review/SKILL.md +1 -1
  26. package/dist/agent-src/skills/design-variations/SKILL.md +1 -1
  27. package/dist/agent-src/skills/evaluate-llm-feature/SKILL.md +1 -1
  28. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +1 -1
  29. package/dist/agent-src/skills/fe-design/SKILL.md +32 -5
  30. package/dist/agent-src/skills/fe-design/references/craft-floor.md +7 -0
  31. package/dist/agent-src/skills/fe-design/references/design-patterns.md +47 -2
  32. package/dist/agent-src/skills/laravel-scheduling/SKILL.md +3 -1
  33. package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
  34. package/dist/agent-src/skills/project-analyzer/SKILL.md +0 -6
  35. package/dist/agent-src/skills/react-native-setup/SKILL.md +3 -3
  36. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
  37. package/dist/agent-src/skills/sequential-thinking/SKILL.md +18 -8
  38. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +28 -6
  39. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +1 -1
  40. package/dist/agent-src/skills/test-driven-development/SKILL.md +1 -3
  41. package/dist/agent-src/skills/ui-apply-generic/SKILL.md +1 -1
  42. package/dist/agent-src/skills/ui-component-architect/SKILL.md +1 -1
  43. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +17 -2
  44. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  45. package/dist/agent-src/templates/roadmaps.md +14 -1
  46. package/dist/agent-src/templates/scripts/telemetry/mcp_lite.ts +213 -0
  47. package/dist/agent-src/templates/scripts/telemetry/report_renderer.ts +16 -0
  48. package/dist/agent-src/templates/scripts/telemetry_report.ts +22 -2
  49. package/dist/cli/commands/recordTriggerEval.js +2 -2
  50. package/dist/cli/main.js +1 -1
  51. package/dist/cli/mcp/dispatch.js +10 -0
  52. package/dist/cli/mcp/stdio.js +33 -2
  53. package/dist/cli/mcp/telemetry.js +227 -0
  54. package/dist/cli-delegate/{chunk-AKJGUQNO.js → chunk-C6IPZRDA.js} +484 -353
  55. package/dist/cli-delegate/{chunk-CYH5SP6M.js → chunk-I6RHFQEG.js} +151 -16
  56. package/dist/cli-delegate/{chunk-7RXIKF62.js → chunk-NUMQHLS5.js} +304 -136
  57. package/dist/cli-delegate/{chunk-PMEKGDED.js → chunk-PI2GU3DP.js} +163 -1
  58. package/dist/cli-delegate/{chunk-7PRE6ZV2.js → chunk-YS6XTLEK.js} +199 -4
  59. package/dist/cli-delegate/chunk-ZVBOHSVF.js +1109 -0
  60. package/dist/cli-delegate/cmd_adr_effective.js +318 -81
  61. package/dist/cli-delegate/cmd_conformance.js +489 -121
  62. package/dist/cli-delegate/cmd_doctor.js +2 -2
  63. package/dist/cli-delegate/cmd_export.js +2 -2
  64. package/dist/cli-delegate/cmd_handoff.js +42 -12
  65. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  66. package/dist/cli-delegate/cmd_prune.js +2 -2
  67. package/dist/cli-delegate/cmd_route_audit.js +2 -2
  68. package/dist/cli-delegate/cmd_session_recycle.js +59 -902
  69. package/dist/cli-delegate/cmd_settings_migrate.js +2 -2
  70. package/dist/cli-delegate/cmd_sync.js +2 -2
  71. package/dist/cli-delegate/cmd_uninstall.js +2 -2
  72. package/dist/cli-delegate/cmd_validate.js +2 -2
  73. package/dist/discovery/deprecation-report.md +1 -1
  74. package/dist/discovery/discovery-manifest.json +34 -33
  75. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  76. package/dist/discovery/discovery-manifest.summary.md +1 -1
  77. package/dist/discovery/dormancy-report.md +1 -1
  78. package/dist/discovery/orphan-report.md +1 -1
  79. package/dist/discovery/packs.json +2 -2
  80. package/dist/discovery/trust-report.md +1 -1
  81. package/dist/discovery/workspaces.json +2 -2
  82. package/dist/hooks/dispatch.js +4455 -3025
  83. package/dist/install/install.mjs +975 -689
  84. package/dist/mcp/registry-manifest.json +2 -2
  85. package/dist/mcp/server.json +2 -2
  86. package/dist/mcp/server.mjs +2087 -1134
  87. package/dist/scripts/_lib/model_tier.js +1 -1
  88. package/dist/scripts/mcp_server/telemetry.js +148 -0
  89. package/docs/guidelines/agent-infra/evaluator-independence-mechanics.md +1 -1
  90. package/docs/guidelines/agent-infra/naming.md +1 -1
  91. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  92. package/docs/guidelines/agent-infra/security-lint-containment.md +46 -6
  93. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +4 -4
  94. package/docs/guidelines/agent-infra/untrusted-input-spotlighting.md +1 -1
  95. package/docs/guidelines/design-antipatterns.md +87 -64
  96. package/docs/guidelines/redundancy-taxonomy.md +28 -0
  97. package/package.json +1 -1
  98. package/src/agent-src/README.md +1 -1
  99. package/src/agent-src/templates/scripts/telemetry/mcp_lite.ts +213 -0
  100. package/src/agent-src/templates/scripts/telemetry/report_renderer.ts +16 -0
  101. package/src/agent-src/templates/scripts/telemetry_report.ts +22 -2
  102. package/src/config/assurance-capability-registry.json +9 -0
  103. package/src/config/ci-local-parity.yml +6 -0
  104. package/src/config/gate-coverage.yml +225 -0
  105. package/src/config/gate-violation-baselines.json +18 -6
  106. package/src/config/release-gate-locality.yml +12 -0
  107. package/src/scripts/_cli/cmd_doctor.ts +2 -2
  108. package/src/scripts/_cli/cmd_handoff.ts +1 -1
  109. package/src/scripts/_cli/cmd_session_recycle.ts +51 -3
  110. package/src/scripts/_cli/cmd_update.ts +1 -1
  111. package/src/scripts/_cli/cmd_versions.ts +1 -1
  112. package/src/scripts/_lib/adr_frontmatter.ts +44 -0
  113. package/src/scripts/_lib/audit_field_provenance.ts +44 -3
  114. package/src/scripts/_lib/consequence_objects.ts +152 -0
  115. package/src/scripts/_lib/exec_evidence.ts +7 -0
  116. package/src/scripts/_lib/global_deploy_inventory.ts +2 -2
  117. package/src/scripts/_lib/host_capability.ts +38 -0
  118. package/src/scripts/_lib/host_permission_checks.ts +251 -0
  119. package/src/scripts/_lib/install_reach_checks.ts +33 -1
  120. package/src/scripts/_lib/mcp_bridge.ts +222 -10
  121. package/src/scripts/_lib/mcp_consent_residual.ts +173 -0
  122. package/src/scripts/_lib/model_tier.ts +1 -1
  123. package/src/scripts/_lib/obligation_frequency.ts +2 -2
  124. package/src/scripts/_lib/orchestration_record.ts +23 -1
  125. package/src/scripts/_lib/recycle_envelope_paths.ts +190 -0
  126. package/src/scripts/_lib/release_highlights.ts +93 -0
  127. package/src/scripts/_lib/release_material.ts +64 -1
  128. package/src/scripts/_lib/release_position.ts +96 -0
  129. package/src/scripts/_lib/review_skipped_record.ts +17 -1
  130. package/src/scripts/_lib/runtime_journal.ts +26 -3
  131. package/src/scripts/_lib/runtime_wiring_checks.ts +12 -1
  132. package/src/scripts/_lib/security_lint.ts +179 -7
  133. package/src/scripts/_lib/self_repair.ts +141 -6
  134. package/src/scripts/_lib/self_repair_store.ts +273 -7
  135. package/src/scripts/_lib/session_register.ts +11 -6
  136. package/src/scripts/_lib/sqlite_schema.ts +22 -0
  137. package/src/scripts/_lib/subagent_capsule.ts +155 -3
  138. package/src/scripts/_lib/surface.ts +86 -0
  139. package/src/scripts/_lib/ui_authority.ts +116 -0
  140. package/src/scripts/adr/regenerate_index.ts +54 -1
  141. package/src/scripts/adr_cite_check.ts +71 -15
  142. package/src/scripts/ai_council/clients.ts +1 -1
  143. package/src/scripts/autonomy_friction_corpus.ts +229 -0
  144. package/src/scripts/build_proof.ts +15 -2
  145. package/src/scripts/build_rule_trigger_matrix.ts +5 -0
  146. package/src/scripts/check_beta_review_markers.ts +141 -17
  147. package/src/scripts/check_enforcement_coverage.ts +1 -1
  148. package/src/scripts/check_enforcement_denominator.ts +121 -11
  149. package/src/scripts/check_finding_dispositions.ts +66 -9
  150. package/src/scripts/check_gate_coverage.ts +96 -0
  151. package/src/scripts/check_mcp_doc_drift.ts +217 -0
  152. package/src/scripts/check_pack_size.ts +321 -3
  153. package/src/scripts/check_release_highlights.ts +74 -1
  154. package/src/scripts/check_skill_activation_claim.ts +179 -0
  155. package/src/scripts/check_trigger_evals.ts +1 -1
  156. package/src/scripts/conformance_scan.ts +44 -3
  157. package/src/scripts/explain_run.ts +1 -1
  158. package/src/scripts/generate_capability_matrix.ts +1 -1
  159. package/src/scripts/git_authorization_hook.ts +75 -1
  160. package/src/scripts/handoff_context_hook.ts +54 -7
  161. package/src/scripts/hook_manifest.json +1 -1
  162. package/src/scripts/hook_manifest.yaml +14 -11
  163. package/src/scripts/hooks/augment-dispatcher.sh +1 -1
  164. package/src/scripts/hooks/category_a.ts +291 -0
  165. package/src/scripts/hooks/cline-dispatcher.sh +1 -1
  166. package/src/scripts/hooks/cursor-dispatcher.sh +11 -5
  167. package/src/scripts/hooks/dispatch_hook.ts +17 -22
  168. package/src/scripts/hooks/git_command_classifier.ts +156 -1
  169. package/src/scripts/hooks/host_lowering.ts +215 -0
  170. package/src/scripts/hooks/host_lowering.yaml +185 -0
  171. package/src/scripts/hooks/host_semantics.ts +105 -37
  172. package/src/scripts/hooks/journal_record_hook.ts +10 -0
  173. package/src/scripts/hooks/permission_gate.ts +117 -0
  174. package/src/scripts/hooks/session_eol_hook.ts +18 -7
  175. package/src/scripts/hooks_status.ts +12 -10
  176. package/src/scripts/install.ts +57 -86
  177. package/src/scripts/install_anthropic_key.sh +2 -2
  178. package/src/scripts/lint_agent_security.ts +316 -25
  179. package/src/scripts/lint_confusables.ts +42 -6
  180. package/src/scripts/lint_design_antipattern_parity.ts +80 -0
  181. package/src/scripts/lint_evidence_artifacts.ts +45 -1
  182. package/src/scripts/lint_handoffs.ts +0 -132
  183. package/src/scripts/lint_hidden_unicode.ts +49 -7
  184. package/src/scripts/lint_hook_manifest.ts +87 -3
  185. package/src/scripts/lint_instruction_smuggling.ts +42 -6
  186. package/src/scripts/lint_mcp_config_security.ts +42 -6
  187. package/src/scripts/lint_motion_authority_drift.ts +731 -0
  188. package/src/scripts/lint_readme_size.ts +158 -12
  189. package/src/scripts/lint_reasoning_fixtures.ts +216 -0
  190. package/src/scripts/lint_roadmap_later_disposition.ts +217 -27
  191. package/src/scripts/lint_skill_frontmatter_safety.ts +43 -7
  192. package/src/scripts/lint_skill_trigger_contradiction.ts +161 -0
  193. package/src/scripts/mcp_server/resources.ts +41 -0
  194. package/src/scripts/mcp_server/telemetry.ts +19 -4
  195. package/src/scripts/measure_sibling_naming.ts +150 -0
  196. package/src/scripts/orchestration_record.ts +12 -1
  197. package/src/scripts/redact_hook_capture.ts +1 -1
  198. package/src/scripts/release.ts +24 -24
  199. package/src/scripts/release_publication.ts +6 -2
  200. package/src/scripts/report_skill_activation.ts +319 -7
  201. package/src/scripts/schemas/review-findings.schema.json +5 -0
  202. package/src/scripts/schemas/skill.schema.json +2 -2
  203. package/src/scripts/self_repair_cli.ts +31 -1
  204. package/src/scripts/session_canary_hook.ts +1 -1
  205. package/src/scripts/session_register_hook.ts +4 -3
  206. package/src/scripts/skill_scout.ts +69 -0
  207. package/src/scripts/trigger_eval_grandfather.json +5 -1
  208. package/src/scripts/validate_agent_settings.ts +1 -1
  209. package/dist/cli-delegate/chunk-2GNWGMAL.js +0 -172
  210. package/dist/cli-delegate/chunk-LPPWO5CE.js +0 -161
package/README.md CHANGED
@@ -18,11 +18,30 @@
18
18
 
19
19
  **A deep library of skills, commands and governed rules** — plus a capability router that loads the right skill on intent and multi-agent orchestration with consensus review. The whole layer is compiled into **20 host agents** — of 23 detected, 3 being export-only<!-- claim:host-agent-count --> (Claude Code, Cursor, Augment, Cline, Windsurf, Copilot, Gemini CLI, Codex, Continue, Zed, JetBrains, Aider and more). **Resident processes are permitted only under the supervision contract ADR-249 establishes** — a policy this repository adopted on 2026-08-27, not a description of anything running today. Six role-shaped entry paths sit on top, so any host becomes a reliable team member — without locking you to a single model or vendor.
20
20
 
21
+ ## Try it in 30 seconds
22
+
23
+ **Try one thing in 30 seconds** — before the full suite, drop in a single
24
+ self-contained subagent and see the discipline on your own repo:
25
+
26
+ ```bash
27
+ mkdir -p .claude/agents
28
+ curl -fsSL https://raw.githubusercontent.com/event4u-app/agent-config/main/docs/wedge/production-validator/production-validator.md \
29
+ -o .claude/agents/production-validator.md
30
+ # then in Claude Code: @production-validator check this branch is actually done
31
+ ```
32
+
33
+ `production-validator` is read-only and installs nothing else — it gates "done"
34
+ by hunting mocks/stubs on the shipped path and demanding real-system evidence
35
+ ([what it does](docs/wedge/production-validator/README.md)). Like it? The full
36
+ suite installs in one command — [Quickstart ↓](#quickstart).
37
+
38
+ ---
39
+
21
40
  ### What's different
22
41
 
23
- It is both deep **and** disciplined — and honest about what it deliberately is not:
42
+ Deep **and** disciplined, and honest about what it deliberately is not:
24
43
 
25
- - **Depth that routes itself** — a deep skill and command library, with a capability router that loads the right one on intent, not a 500-artefact context dump.
44
+ - **Depth that routes itself** — a capability router loads the right skill on intent, not a 500-artefact context dump.
26
45
  - **Governance on every host** — rules compiled into each tool's native format at projection time; deterministic runtime hooks added on hook-capable hosts. This config-space, host-agnostic governance is the moat ([the governance advantage](docs/governance-advantage.md) · [enforcement by host](docs/enforcement-by-host.md)).
27
46
  - **Surgical uninstall** — removes only its own keys from a shared host config (matched by JSON-pointer + SHA-256), never a neighbour tool's entries.<!-- claim:surgical-uninstall -->
28
47
  - **Pack-scoped install** — writes the active pack only, not a 500-artefact dump.
@@ -39,41 +58,31 @@ See exactly [what works on which host](docs/capability-matrix.md) or jump to [th
39
58
 
40
59
  ### Pick your profile — six entry paths
41
60
 
42
- `agent-config setup` writes `profile.id` to `.agent-settings.yml`; each
43
- anchor below is the first-screen the wizard sends you to. One README,
44
- six entries, no role-detection guesswork.
45
-
46
- | Profile (`profile.id`) | Audience | First commands | First skills |
47
- |---|---|---|---|
48
- | 👩‍💻 [`developer`](docs/profiles.md#profile-developer) | IC engineer | `/implement-ticket` · `/work` · `/review-changes` · `/fix` · `/commit` | `developer-like-execution` · `verify-completion-evidence` · `minimal-safe-diff` · `systematic-debugging` · `test-driven-development` |
49
- | ✍️ [`content_creator`](docs/profiles.md#profile-content_creator) | Writers, ghostwriters, marketers | `/work` · `/post-as` · `/ghostwriter` · `/optimize-prompt` · `/video:from-script` · `/video:storyboard` | `voice-and-tone-design` · `messaging-architecture` · `editorial-calendar` · `release-comms` · `character-consistency` |
50
- | 🚀 [`founder`](docs/profiles.md#profile-founder) | Solo / early-stage founder | `/work` · `/feature` · `/challenge-me` · `/council` | `refine-prompt` · `rice-prioritization` · `vision-articulation` · `fundraising-narrative` · `runway-cognition` |
51
- | 🏛 [`agency`](docs/profiles.md#profile-agency) | Multi-client delivery shop | `/work` · `/implement-ticket` · `/refine-ticket` · `/feature` · `/roadmap` | `doc-coauthoring` · `decision-record` · `refine-ticket` · `estimate-ticket` · `perf-feedback-craft` |
52
- | 💼 [`finance`](docs/profiles.md#profile-finance) | CFO / fractional finance / FP&A | `/work` · `/council` · `/challenge-me` | `dcf-modeling` · `forecasting` · `scenario-modeling` · `unit-economics-modeling` · `runway-cognition` |
53
- | 🛡 [`ops`](docs/profiles.md#profile-ops) | RevOps, support, SRE-adjacent | `/work` · `/threat-model` · `/review-changes` · `/fix` | `incident-commander` · `dashboard-design` · `logging-monitoring` · `threat-modeling` · `launch-readiness` |
54
-
55
- **Not sure which one?** Run `npx @event4u/agent-config init` then
56
- `agent-config setup` — the browser wizard asks a single 8-option role
57
- question and maps to the closest profile. Source-of-truth:
58
- [`src/agent-src/profiles/`](src/agent-src/profiles/) ·
59
- schema: [`docs/contracts/profile-system.md`](docs/contracts/profile-system.md).
60
- Beyond software: [`user-types/`](src/agent-src/user-types/)
61
- (galabau · metalworking · truck — see [Beyond software](#beyond-software).
62
-
63
- **Per-profile experience pages** (who it's for · first tasks · packs + flows ·
64
- what is *not* loaded · examples):
65
- [developer](docs/experiences/developer.md) ·
66
- [content_creator](docs/experiences/content_creator.md) ·
67
- [founder](docs/experiences/founder.md) ·
68
- [agency](docs/experiences/agency.md) ·
69
- [finance](docs/experiences/finance.md) ·
70
- [ops](docs/experiences/ops.md).
61
+ `agent-config setup` writes `profile.id` to `.agent-settings.yml` and sends you
62
+ to that profile's first screen. Each experience page carries the full detail —
63
+ who it's for, first commands and skills, packs and flows, and what is
64
+ deliberately *not* loaded.
65
+
66
+ | Profile | Audience | Experience page |
67
+ |---|---|---|
68
+ | 👩‍💻 [`developer`](docs/profiles.md#profile-developer) | IC engineer | [page](docs/experiences/developer.md) |
69
+ | ✍️ [`content_creator`](docs/profiles.md#profile-content_creator) | Writers, ghostwriters, marketers | [page](docs/experiences/content_creator.md) |
70
+ | 🚀 [`founder`](docs/profiles.md#profile-founder) | Solo / early-stage founder | [page](docs/experiences/founder.md) |
71
+ | 🏛 [`agency`](docs/profiles.md#profile-agency) | Multi-client delivery shop | [page](docs/experiences/agency.md) |
72
+ | 💼 [`finance`](docs/profiles.md#profile-finance) | CFO / fractional finance / FP&A | [page](docs/experiences/finance.md) |
73
+ | 🛡 [`ops`](docs/profiles.md#profile-ops) | RevOps, support, SRE-adjacent | [page](docs/experiences/ops.md) |
74
+
75
+ **Not sure which one?** The wizard asks a single 8-option role question and maps
76
+ to the closest profile. Source-of-truth
77
+ [`src/agent-src/profiles/`](src/agent-src/profiles/) · schema
78
+ [`docs/contracts/profile-system.md`](docs/contracts/profile-system.md) · beyond
79
+ software [`user-types/`](src/agent-src/user-types/) (galabau · metalworking ·
80
+ truck — see [Beyond software](#beyond-software)).
71
81
 
72
82
  ### Workflows, not raw commands
73
83
 
74
- You don't memorize every command — you run a **work journey**. Four flows span the
75
- developer story end-to-end; each names the command you TYPE to start and the
76
- skills it composes:
84
+ You don't memorize commands — you run a **work journey**. Four flows span the
85
+ developer story end-to-end:
77
86
 
78
87
  | Flow | Start with | The journey |
79
88
  |---|---|---|
@@ -82,9 +91,7 @@ skills it composes:
82
91
  | 🔎 **Review** | `/review-changes` · `/judge` | self-review → judge → quality-fix → threat-model |
83
92
  | 🚢 **Delivery** | `/commit` · `/pr:create` | commit in chunks → open PR → answer review |
84
93
 
85
- Full detail — entry commands, canonical path, composed skills per flow:
86
- [`docs/flows.md`](docs/flows.md). (`agent-admin` — memory / analytics / config —
87
- is platform operation, not a user-work flow.)
94
+ Composed skills and the canonical path per flow: [`docs/flows.md`](docs/flows.md).
88
95
 
89
96
  <p align="center">
90
97
  <a href="CHANGELOG.md">CHANGELOG</a> ·
@@ -122,23 +129,19 @@ lists the end-to-end workflows (`/implement-ticket`, `/work`,
122
129
  Don't take the claims on trust — **verify them.** [`docs/proof.md`](docs/proof.md)
123
130
  is generated from source: a claim→evidence table (every public claim binds to a
124
131
  resolvable pointer or CI fails), honest-null benchmarks *including the runs where
125
- the package changed nothing* and a "verify it yourself" block you run on a fresh
126
- checkout. The proof page fails CI if it drifts from its sources — reproducibility
127
- is the proof. Browse it on the deployed docs site — the proof page is the primary entry:
128
- [event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/).
129
- The honest comparison frame lives at
130
- [`docs/us-vs-the-category.md`](docs/us-vs-the-category.md).
132
+ the package changed nothing*, and a "verify it yourself" block you run on a fresh
133
+ checkout. It fails CI if it drifts from its sources — reproducibility is the
134
+ proof. Read it at
135
+ [event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/),
136
+ with the comparison frame at [`docs/us-vs-the-category.md`](docs/us-vs-the-category.md).
131
137
  Freshest measured row: in one post-fix session, advisory context injection cut language-mirror violations 555 → 19 while the two blocking guards went 8 → 0 and 1 → 0 — advisory reduced massively, only blocking eliminated. One session and a post-hoc reading, so a recorded prior rather than a law.<!-- claim:conformance-advisory-vs-blocking -->
132
138
 
133
139
  Maintaining a skills catalog yourself? The **anti-reskin gate** that blocks
134
- find-replace re-skin PRs here runs on your catalog too —
135
- [`docs/anti-reskin-gate.md`](docs/anti-reskin-gate.md).
140
+ find-replace re-skin PRs here runs on yours too — [`docs/anti-reskin-gate.md`](docs/anti-reskin-gate.md).
136
141
 
137
- Audit-disciplined by construction — every memory consult, decision
138
- key and hook concern lands in `agents/runtime/state/` so you can replay it.
139
- [Core principles](#core-principles) names the four invariants;
140
- [What `agent-config` is — and what it isn't](#what-agent-config-is--and-what-it-isnt)
141
- draws the scope boundary.
142
+ Audit-disciplined by construction — every memory consult, decision key and hook
143
+ concern lands in `agents/runtime/state/` so you can replay it.
144
+ [Core principles](#core-principles) names the four invariants.
142
145
 
143
146
  ## Contribute
144
147
 
@@ -154,30 +157,13 @@ opt-in measurement loop. Source-of-truth tree is
154
157
 
155
158
  ## Quickstart
156
159
 
157
- **Try one thing in 30 seconds** — before the full suite, drop in a single
158
- self-contained subagent and see the discipline on your own repo:
159
-
160
- ```bash
161
- mkdir -p .claude/agents
162
- curl -fsSL https://raw.githubusercontent.com/event4u-app/agent-config/main/docs/wedge/production-validator/production-validator.md \
163
- -o .claude/agents/production-validator.md
164
- # then in Claude Code: @production-validator check this branch is actually done
165
- ```
166
-
167
- `production-validator` is read-only and installs nothing else — it gates "done"
168
- by hunting mocks/stubs on the shipped path and demanding real-system evidence
169
- ([what it does](docs/wedge/production-validator/README.md)). Like it? Install the
170
- full suite:
171
-
172
160
  **One command. Detection-driven — your installed AI tools are found and
173
161
  pre-selected. Nothing is written until you click Finish. No YAML by hand.**
174
162
 
175
- Those four are structural: they hold on every run, because they are properties
176
- of the code path rather than of your machine. How *long* it takes is not one of
177
- them — that is dominated by network and registry latency, which we do not
178
- control. The install → `doctor` wall-clock is measured by CI on every umbrella
179
- run and published with its conditions, as evidence; it is never a promised
180
- number.
163
+ Those four are structural — properties of the code path, not of your machine.
164
+ How *long* it takes is not: that is dominated by network and registry latency.
165
+ CI measures the install → `doctor` wall-clock on every umbrella run and
166
+ publishes it with its conditions, as evidence rather than as a promise.
181
167
 
182
168
  ```bash
183
169
  # 1. Install — on a terminal with a display, the browser wizard launches
@@ -191,18 +177,17 @@ npx -y @event4u/agent-config init
191
177
  /work "your first real task"
192
178
  ```
193
179
 
194
- **Headless / CI:** `init` skips the GUI automatically on CI, on a non-TTY, on a headless host, and whenever any CLI-mode flag is present — it then runs the non-interactive installer directly. The full opt-out set is listed once, against the code, in [`gui-wizard` § When the GUI is skipped](docs/contracts/gui-wizard.md#when-the-gui-is-skipped). Pass flags (`--profile=balanced --tools=claude-code,cursor`); add `--dry-run` to preview writes. The GUI and the CLI share one installer (`src/scripts/install.ts`), so both produce identical results. Reference: [`docs/wizard.md`](docs/wizard.md).
180
+ **Headless / CI:** `init` skips the GUI on CI, a non-TTY, a headless host, or any CLI-mode flag, and runs the non-interactive installer instead. The GUI and the CLI share one installer (`src/scripts/install.ts`), so both produce identical results. Flags, the full opt-out set and `--dry-run`: [`docs/wizard.md`](docs/wizard.md) · [`gui-wizard` § When the GUI is skipped](docs/contracts/gui-wizard.md#when-the-gui-is-skipped).
195
181
 
196
- **Pick specific AIs:** `--tools=claude-code,cursor,augment,windsurf,cline,gemini-cli,copilot,roocode,aider,codex,claude-desktop,continue` (any subset). Visual picker: add `--gui` (loopback-bound, CSRF-gated; contract [`gui-wizard`](docs/contracts/gui-wizard.md)). `--gui` is an opt-in that forces the wizard past the TTY and headless checks — it does **not** override `CI`, `AGENT_CONFIG_NO_UI`, or a CLI-mode flag; combining it with one of those exits non-zero rather than quietly running the CLI install. On a headless host add `--allow-headless` and connect a browser to the printed URL.
182
+ **Pick specific AIs:** `--tools=claude-code,cursor,augment,…` (any subset). `--gui` forces the loopback-bound, CSRF-gated picker past the TTY and headless checks; it does **not** override `CI`, `AGENT_CONFIG_NO_UI` or a CLI-mode flag, and combining it with one of those exits non-zero rather than quietly running the CLI install.
197
183
 
198
- **Verify hook coverage:** `npx @event4u/agent-config hooks:status` prints the per-platform matrix (`--strict` for CI, `--format json` for tooling).
184
+ **Verify hook coverage:** `npx @event4u/agent-config hooks:status` (`--strict` for CI, `--format json` for tooling).
199
185
 
200
- > **Scope (v2.5+):** `init` writes **global** only — `~/.event4u/agent-config/`, `~/.claude/`, `~/.cursor/`, …. The project tree gets `agents/overrides/` only (the bridge marker was retired — ADR-020 amendment 2026-07-13; the global root resolves from `~/.event4u/agent-config`). `--project` is maintainer-only behind `AGENT_CONFIG_DEV_MODE=1` ([ADR-020](docs/decisions/ADR-020-global-only-consumer-scope.md), [dev-mode](docs/maintainers/dev-mode.md)).
186
+ > **Scope (v2.5+):** `init` writes **global** only — `~/.event4u/agent-config/`, `~/.claude/`, `~/.cursor/`, …. The project tree gets `agents/overrides/` only. `--project` is maintainer-only behind `AGENT_CONFIG_DEV_MODE=1` ([ADR-020](docs/decisions/ADR-020-global-only-consumer-scope.md), [dev-mode](docs/maintainers/dev-mode.md)).
201
187
 
202
- Migrating from a v1.x install? `npx @event4u/agent-config migrate` — full notes in [`docs/migration/v1-to-v2.md`](docs/migration/v1-to-v2.md).
188
+ Migrating from v1.x? `npx @event4u/agent-config migrate` — [`docs/migration/v1-to-v2.md`](docs/migration/v1-to-v2.md).
203
189
 
204
190
  ---
205
-
206
191
  ## What `agent-config` is — and what it isn't
207
192
 
208
193
  A **content layer** — skills, rules, commands, guidelines, personas — distributed via npm and projected into every supported AI tool's native config format. It follows the [Agent Skills open standard](https://agentskills.io).
@@ -316,7 +301,7 @@ Create the user file interactively: `/agents user init` ([schema](docs/contracts
316
301
 
317
302
  ### Self-hosted MCP on Cloudflare — zero local install
318
303
 
319
- Skills, commands, rules and guidelines can be served as an MCP endpoint from your own Cloudflare Worker — any MCP client (Claude Desktop, Claude Code, Cursor, Zed, Continue, hosted agents) talks to it over HTTP. Two auth modes: `public` (default, OSS read-only deploys) and `bearer-auth` (operator opt-in, `MCP-Token` Wrangler secret).
304
+ Skills, commands, rules and guidelines can be served as an MCP endpoint from your own Cloudflare Worker, reachable over HTTP by any MCP client. Two auth modes: `public` (default) and `bearer-auth` (operator opt-in, `MCP-Token` Wrangler secret).
320
305
 
321
306
  ```bash
322
307
  task mcp:cloud:login # one-time, opens browser
@@ -328,7 +313,7 @@ task mcp:cloud:secret-put # opt in to bearer-auth (recommended for private de
328
313
 
329
314
  > **Scope — Lite, not Full.** The Worker serves read-only governance (skills · commands · rules · guidelines · contexts) as MCP prompts and resources, plus small read-only tools (`memory_lookup`, `chat_history_read`, `list_*`). It does **not** execute the repository's local scripts (linters, audits, `task ci`, work-engine hooks) — those require local install per [Quickstart](#quickstart).
330
315
 
331
- > The built-in **local stdio** server is listed for discovery in the [Glama MCP Registry](https://glama.ai/mcp/servers/event4u-app/agent-config) (agent developers / contributors; requires a local checkout, not a turnkey install — see [ADR-067](docs/decisions/ADR-067-glama-registry-listing.md)).
316
+ > The built-in **local stdio** server is listed in the [Glama MCP Registry](https://glama.ai/mcp/servers/event4u-app/agent-config) — it requires a local checkout, not a turnkey install ([ADR-067](docs/decisions/ADR-067-glama-registry-listing.md)).
332
317
 
333
318
  ### Deployment posture
334
319
 
@@ -338,15 +323,13 @@ task mcp:cloud:secret-put # opt in to bearer-auth (recommended for private de
338
323
  | **Small team (3–10 people)** | ✅ today | Shared `agents/overrides/` Git repo + shared NAS for knowledge — no code change, no new server. Recipe: [`docs/deploy/small-team-recipe.md`](docs/deploy/small-team-recipe.md) |
339
324
  | **Organization mode** (SSO · central policy · team context · internal connectors) | ⏸ not started | Each shape gated on a recruited customer + funded audit + maintainer ADR. Posture rationale: [`docs/deploy/team-deployment-posture.md`](docs/deploy/team-deployment-posture.md) |
340
325
 
341
- The Hard Floor on organization-mode features (SSO, central policy, OAuth connectors, team-context) is preserved by design — they stay cancelled until a real first customer + funded security audit lifts them. The small-team recipe is the supported path in the meantime.
342
-
343
- > *The 9.3/10 feedback round (2026-05-25) re-asked for OAuth knowledge connectors, IAM / org governance and organization-shared memory. Each is a stable cancellation row in [`team-deployment-posture`](docs/deploy/team-deployment-posture.md) under the same three release gates — recruited team customer · funded audit · maintainer ADR.*
326
+ Organization-mode features (SSO, central policy, OAuth connectors, team-context) stay cancelled by design until a recruited customer and a funded security audit lift them; the small-team recipe is the supported path meanwhile. Each is a stable cancellation row in [`team-deployment-posture`](docs/deploy/team-deployment-posture.md).
344
327
 
345
328
  ---
346
329
 
347
330
  ## Harness expectations
348
331
 
349
- Three classes of install/runtime behaviour look like package bugs but are host-harness behaviour the package cannot control — sibling-plugin namespaces (`codex:*`, `cc-gemini-plugin:*`), deferred tools surfaced via `ToolSearch` and cross-scope skill drift (real bug, fixed in the distribution-channels track). Diagnostics + the package's response: [`docs/contracts/harness-expectations.md`](docs/contracts/harness-expectations.md). First step when a skill appears twice: `task probe:skills`.
332
+ Three classes of install/runtime behaviour look like package bugs and are host-harness behaviour the package cannot control: sibling-plugin namespaces, deferred tools surfaced via `ToolSearch`, and cross-scope skill drift. Diagnostics and the package's response: [`docs/contracts/harness-expectations.md`](docs/contracts/harness-expectations.md). When a skill appears twice, start with `task probe:skills`.
350
333
 
351
334
  ## Supported tools
352
335
 
@@ -431,7 +414,7 @@ accepts a host-supplied config root so its own settings stay profile-scoped.
431
414
 
432
415
  ## Who this is for
433
416
 
434
- Stack-agnostic governance core (orchestration · role modes · command clusters · quality gates · audit-discipline) plus parallel stack-specific skill sets:
417
+ A stack-agnostic governance core (orchestration · role modes · command clusters · quality gates · audit discipline), plus stack-specific skill sets:
435
418
 
436
419
  | Stack | Coverage |
437
420
  |---|---|
@@ -455,7 +438,7 @@ Three domain-safety rules ([`domain-safety-pii`](src/rules/domain-safety-pii.md)
455
438
 
456
439
  ### Code provenance & license governance
457
440
 
458
- Every diff is checked against a **license policy derived from the target repo's own detected license** (`LICENSE`/`package.json`/`composer.json`, precedence-ordered; sources disagree → escalate, never guess) and a **strict linter over our own borrow ledger** ([`provenance/borrows.jsonl`](provenance/) → [`docs/THIRD-PARTY-NOTICES.md`](docs/THIRD-PARTY-NOTICES.md)) that fails a deny-class license, an unknown license, a missing transformation note or a rename-only-phrased one — wired into `ci`/`ci-strict` from day one. A third piece, `license-compliance-audit`, runs an offline/online similarity scan on demand — a human invokes it deliberately, never a pipeline. This is **provenance-governed**, **license-policy-enforced** borrow discipline backed by an **audited borrow trail** — not a copy detector.
441
+ Every diff is checked against a **license policy derived from the target repo's own detected license** (precedence-ordered; sources disagree → escalate, never guess) and a **strict linter over our borrow ledger** ([`provenance/borrows.jsonl`](provenance/) → [`docs/THIRD-PARTY-NOTICES.md`](docs/THIRD-PARTY-NOTICES.md)) that fails a deny-class or unknown license, a missing transformation note, or a rename-only-phrased one — wired into `ci`/`ci-strict`. `license-compliance-audit` runs a similarity scan on demand, invoked by a human and never by a pipeline. This is provenance-governed borrow discipline with an audited trail — not a copy detector.
459
442
 
460
443
  <!-- provenance-scope-box -->
461
444
  #### Scope & limits
@@ -517,71 +500,10 @@ layer`), the platform's concern chain, host hook registration, and router +
517
500
  projection freshness. Deeper hook internals (fail-open/closed posture, last
518
501
  dispatcher feedback per concern): `agent-config hooks:doctor`.
519
502
 
520
- ### A new command / skill is missing in Claude Code after an upgrade
521
-
522
- Under the single-surface model, `agent-config upgrade` refreshes the
523
- `~/.claude/` file projection — that IS the content surface, so a fresh
524
- session picks the new commands up directly. If commands are still missing,
525
- the usual cause is a leftover **marketplace plugin**: it is a git-SHA
526
- snapshot that never moves with the npm upgrade and it shadows nothing —
527
- it just lists everything twice while lagging behind. Remove it:
528
-
529
- ```bash
530
- claude plugin uninstall agent-config@event4u-agent-config
531
- ```
532
-
533
- Then start a **new** Claude Code session. `agent-config doctor` reports a
534
- leftover plugin as `claude-plugin: duplicate surface`; hooks are unaffected
535
- (they live in a managed `~/.claude/settings.json` block — verify with the
536
- `hook-wiring` check).
537
-
538
- ### Skills / commands appear twice in Claude Code
539
-
540
- Same cause as above: the deprecated marketplace plugin is installed next to
541
- the `~/.claude/` file projection, so every skill lists plain **and**
542
- `agent-config:`-prefixed. Uninstall the plugin (command above) and start a
543
- new session.
544
-
545
- ### `agent-config upgrade` fails with `Unknown argument: --no-ui`
546
-
547
- Known bug in 8.2.0: `upgrade` passed a `--no-ui` flag that the install
548
- orchestrator did not accept yet, so the run aborted early. Fixed on `main`;
549
- until the next release, work around it with:
550
-
551
- ```bash
552
- AGENT_CONFIG_NO_UI=1 agent-config global # refresh the global install, no wizard
553
- ```
554
-
555
- ### Upgrade was interrupted (Ctrl-C, wizard closed, step failed)
556
-
557
- Only the initial `npm install -g` hard-aborts an upgrade. Every later step
558
- (global re-deploy with hook registration, settings sync, wrapper + git-hook
559
- refresh) runs independently — a single failed step is reported in the
560
- end-of-run summary instead of silently skipping the rest. Re-run
561
- `agent-config upgrade` to converge and use `agent-config doctor` to name
562
- anything left in a mixed state.
563
-
564
- ### `agent-config: command not found` / hooks stopped firing
565
-
566
- Runtime hooks resolve the **global** binary on `PATH` — a project-local
567
- install alone is not enough for them. Reinstall the binary:
568
-
569
- ```bash
570
- npm install -g @event4u/agent-config
571
- agent-config doctor # verifies PATH + plugin wiring
572
- ```
573
-
574
- ### Project files look stale after a package update
575
-
576
- Project-local projections are only rewritten on an explicit refresh:
577
-
578
- ```bash
579
- agent-config refresh # re-apply the installed version to this project
580
- agent-config refresh --global # same-version re-install of the global root
581
- ```
582
503
 
583
- More per-version steps: [Migration](docs/MIGRATION.md) ·
584
- [getting-started § Keeping current](docs/getting-started.md#keeping-current).
504
+ Upgrade and staleness symptoms — a command or skill missing after an upgrade,
505
+ skills appearing twice, an interrupted upgrade, `command not found`, stale
506
+ project files: [`docs/troubleshooting.md` § Upgrade and staleness](docs/troubleshooting.md#upgrade-and-staleness).
585
507
 
586
508
  ---
587
509
 
@@ -17,7 +17,7 @@ it as `.augment/` (local projection).
17
17
  ├── contexts/ # Background context documents for the agent
18
18
  ├── guidelines/ # Coding guidelines by language (reference material)
19
19
  ├── rules/ # Always-active behavior rules (auto-loaded every conversation)
20
- ├── skills/ # On-demand expertise (matched by topic)
20
+ ├── skills/ # On-demand expertise (named or trigger-matched)
21
21
  └── templates/ # File templates for roadmaps, features, skills, etc.
22
22
  ```
23
23
 
@@ -8,7 +8,7 @@ replaces: []
8
8
  visibility: visible
9
9
  skills: [agent-docs-writing]
10
10
  description: Pick a recent session, generate a handoff from its transcript, and seed a fresh session with it — or summarize the live conversation for copy-paste.
11
- argument-hint: "[--print | --file | with tasks]"
11
+ argument-hint: "[--print | with tasks]"
12
12
  suggestion:
13
13
  eligible: true
14
14
  trigger_description: "user asks for an agent handoff, to resume/continue a previous session in a fresh chat, or a context-summary to paste into a new chat"
@@ -65,9 +65,9 @@ exactly once, then deletes it). In a terminal-capable context, offer
65
65
  to spawn the fresh session directly:
66
66
 
67
67
  - `claude` — seeds via the session_start hook (clean first message).
68
- - `codex` — no hook surface there; the adapter passes the handoff as the
68
+ - `codex` — this package binds no hook there; the adapter passes the handoff as the
69
69
  initial prompt instead. Same UX, different transport.
70
- - Bundle hosts without hooks (Antigravity, Copilot) → use `--print` and
70
+ - Bundle hosts this package binds no hook on (Antigravity, Copilot) → use `--print` and
71
71
  copy-paste.
72
72
 
73
73
  ## Fallback mode — summarize the LIVE conversation (`--print`)
@@ -114,10 +114,51 @@ Roadmap: {roadmap file if active, or "none"}
114
114
  ## Key decisions
115
115
  - {important decisions made during this conversation}
116
116
 
117
+ ## Least confident
118
+ - {the claim in this handoff you are least sure of} — verify: {command or
119
+ observable state that would confirm or kill it}
120
+
121
+ ## Biggest thing missed
122
+ - {what a reviewer would most likely find that you did not} — verify: {command}
123
+
124
+ ## Breaks in three months because
125
+ - {the assumption most likely to expire, and what expires it} — verify: {command}
126
+
127
+ ## Not done
128
+ - {work inside the stated scope that did not land} — verify: {command}
129
+
117
130
  ## Relevant files
118
131
  - {list of files that were edited or are important for context}
119
132
  ```
120
133
 
134
+ ### The four self-critique sections — why every line carries a `verify:`
135
+
136
+ Every other section states what HAPPENED. None of them says what the outgoing
137
+ session is **least sure of**, which is the one thing the incoming session cannot
138
+ reconstruct and the one thing that decides where it should look first.
139
+
140
+ Each line in those four sections MUST name the command or observable state that
141
+ would confirm or kill it. An unverifiable line of self-doubt is filler: it reads
142
+ as diligence, costs the next session a read, and cannot be acted on. `none` is
143
+ accepted as the whole body of a section — an honest "nothing here" is an answer
144
+ — and blankness is not, exactly as `## Open questions` already treats the same
145
+ distinction. Nothing enforces either direction: the handoff artifact validator
146
+ that would have was retired with `HANDOFF.md`, so the contract is model-carried
147
+ here.
148
+
149
+ ### Capture, do not chase
150
+
151
+ A finding surfaced **while writing the handoff** is written down, never fixed in
152
+ the handoff turn. The handoff exists because the session is ending, so a fix
153
+ started there is the least-verified change in the whole run — it lands after the
154
+ verification budget is spent, with no room to prove it.
155
+
156
+ The destination is a `model-noticed` self-repair record: `upsertFinding` in
157
+ `src/scripts/_lib/self_repair_store.ts`, carrying a `target` from the closed
158
+ `rule: | skill: | command: | hook:` vocabulary so the finding is joined to the
159
+ asset it is about. Put the same finding in `## Not done` with its `verify:`, so
160
+ the next session sees it without having to query the store.
161
+
121
162
  The CLI generator emits the same section set (minus the live-only
122
163
  *Repeatable workflow* / *Feedback history* refinements) — the template above
123
164
  stays the single source of the section contract.
@@ -150,46 +191,6 @@ block (e.g. *"Copy this into a new chat:"*) and nothing after — no follow-up
150
191
  questions, no numbered options. The picker in Step 2 is the one exception:
151
192
  it is the flow's single question, asked BEFORE any handoff is generated.
152
193
 
153
- ## 2b. File-artifact mode — `HANDOFF.md` (optional, host-neutral)
154
-
155
- On `/agent-handoff --file` (or when a workflow skill's phase boundary asks
156
- for a standing handoff), ALSO write the contract to
157
- `agents/runtime/state/HANDOFF.md` (gitignored runtime state — plain
158
- Markdown, no host API). Required fields, in order:
159
-
160
- ```
161
- # HANDOFF
162
- ## Mode
163
- {current workflow mode/phase, e.g. Implement (TDD)}
164
- ## Contract received
165
- {what the previous phase handed over}
166
- ## Contract owed
167
- {what the current phase must produce before yielding}
168
- ## Decisions
169
- - {decision taken, with one-line rationale} {optionally close the line with
170
- `[reversible]` or `[irreversible]` — those two spellings exactly}
171
- ## Open questions
172
- - {unresolved items the next session must not silently drop — each as a
173
- question ending in `?`; write `none` when there genuinely are none}
174
- ## Next command
175
- {the single command or step to run first on resume}
176
- ```
177
-
178
- **Resume rule:** a workflow skill's step 0 checks for this file and resumes
179
- from its contract (mode-inference table) instead of re-deriving state; a
180
- long phase refreshes the file before yielding. Validated by
181
- `lint_handoffs.ts` when present — a missing required field is red, and so is an
182
- `## Open questions` section that answers neither way (blank, or a bare `TBD` /
183
- `TODO` / `...`). A `?`-terminated question passes; so does an explicit `none` —
184
- the check exists to stop a blank section reading as an all-clear, not to force a
185
- question where there is none.
186
-
187
- **Critical-planning-file safety protocol** (applies to HANDOFF.md and agent
188
- roadmap edits): read the current file FIRST; take a timestamped backup copy
189
- next to it (`HANDOFF.md.<ts>.bak`) before overwrite; duplicate-check before
190
- appending (never double-append a section); preserve the section structure;
191
- post-verify the write by re-reading the required fields.
192
-
193
194
  ## Detection — when natural-language triggers count as explicit
194
195
 
195
196
  The user does not need to type `/agent-handoff` literally. Treat as
@@ -2,14 +2,14 @@
2
2
  model_tier: high
3
3
  name: review-changes
4
4
  pack: engineering-base
5
- intent: "Multi-judge review of the current diff — bugs, security, tests, quality, architecture"
6
- routes_to: [code-review, judge-bug-hunter, judge-security-auditor, judge-test-coverage, judge-code-quality, architecture-review-lens, overbuild-review-lens]
5
+ intent: "Multi-judge review of the current diff — bugs, security, tests, quality, architecture, spec, overbuild"
6
+ routes_to: [code-review, judge-bug-hunter, judge-security-auditor, judge-test-coverage, judge-code-quality, architecture-review-lens, judge-spec-compliance, overbuild-review-lens]
7
7
  replaces: []
8
8
  visibility: internal
9
9
  sub: changes
10
10
  cluster: review
11
- skills: [code-review, subagent-orchestration, judge-bug-hunter, judge-security-auditor, judge-test-coverage, judge-code-quality, architecture-review-lens, overbuild-review-lens, judge-synthesis, git-workflow]
12
- description: Self-review local changes before creating a PR — dispatches to six specialized judges (bug, security, tests, quality, architecture, spec) and consolidates verdicts
11
+ skills: [code-review, subagent-orchestration, judge-bug-hunter, judge-security-auditor, judge-test-coverage, judge-code-quality, architecture-review-lens, judge-spec-compliance, overbuild-review-lens, judge-synthesis, git-workflow]
12
+ description: Self-review local changes before creating a PR — dispatches to seven specialized judges (bug, security, tests, quality, architecture, spec, overbuild) and consolidates verdicts
13
13
  suggestion:
14
14
  eligible: false
15
15
  rationale: "Cluster sub-command — reached via its cluster head's routing or its explicit /cluster:sub name; not independently suggested (surface-consolidation)."
@@ -24,7 +24,7 @@ packs:
24
24
  ## Instructions
25
25
 
26
26
  Review all uncommitted and committed-but-not-pushed changes against
27
- the default branch (`main`) by dispatching to six specialized judge
27
+ the default branch (`main`) by dispatching to seven specialized judge
28
28
  sub-skills and consolidating their verdicts.
29
29
 
30
30
  ### 1. Update the current branch
@@ -109,7 +109,7 @@ folded together, a handover the reviewer could not parse would report as "there
109
109
  was nothing to check", which is the one outcome that hides a real failure
110
110
  behind a benign one.
111
111
 
112
- ### 4. Dispatch to the six judges
112
+ ### 4. Dispatch to the seven judges
113
113
 
114
114
  Each judge receives **the same diff plus the task context** (ticket,
115
115
  PR body, commit messages) and runs independently. The judges are:
@@ -137,8 +137,8 @@ diff cannot answer about itself. It is dispatched on demand like the others, so
137
137
  it adds no standing token cost — verified: `check_preamble_payload_budget`'s
138
138
  measured total is unchanged by this routing.
139
139
 
140
- **Why the sixth exists, and why it is not a severity.** The other five all ask a
141
- craft-or-correctness question, so a change that is correct, clean, well-tested
140
+ **Why the sixth exists, and why it is not a severity.** The five that preceded it
141
+ all ask a craft-or-correctness question, so a change that is correct, clean, well-tested
142
142
  and architecturally sound — and **does not do what was asked** — used to pass
143
143
  this path with five green verdicts. Its finding does **not** enter the shared
144
144
  severity axis: `judge-synthesis` carries it on its own dimension, because "this
@@ -180,14 +180,14 @@ Read `verbosity.offer_council_in_delivery` from `.agent-settings.yml`
180
180
  - `true`: when `ai_council.enabled: true` **and** at least one member
181
181
  enabled, ask (in the user's language):
182
182
 
183
- > 1. Add an external council review alongside the six internal judges? (billable)
183
+ > 1. Add an external council review alongside the seven internal judges? (billable)
184
184
  > 2. Skip — internal judges only
185
185
 
186
186
  Also suppress when `personal.autonomy: on` (council is billable).
187
187
 
188
188
  If picked **1**:
189
189
 
190
- - Run `/council diff:<base>..<head>` in parallel with the six
190
+ - Run `/council diff:<base>..<head>` in parallel with the seven
191
191
  internal judges (or sequentially after them — whichever the
192
192
  dispatch mode picked in step 4 supports).
193
193
  - Treat each council member as one extra "judge" in the consolidated
@@ -202,12 +202,12 @@ If picked **2** → continue with internal judges only.
202
202
 
203
203
  ### 4b-fresh. The fresh reviewer — the one input with no implementation context
204
204
 
205
- The six judges above all read **the same diff plus the task context**, and on the common
205
+ The seven judges above all read **the same diff plus the task context**, and on the common
206
206
  path they run in-session: the party that wrote the diff also reads it, with the whole
207
207
  implementation context in scope. That is a self-review, and calling it a review is the
208
208
  defect `road-to-review-independence` exists to close.
209
209
 
210
- So a **seventh input** is added, and its distinguishing property is a negative one: it
210
+ So **one further input** is added, and its distinguishing property is a negative one: it
211
211
  has **no implementation context**. Not a new mechanism —
212
212
  [`dispatch_r2_reviewer.ts`](../../../../scripts/dispatch_r2_reviewer.ts) already derives
213
213
  the scope and persists the prompt it sent:
@@ -216,7 +216,7 @@ the scope and persists the prompt it sent:
216
216
  ./scripts-run src/scripts/dispatch_r2_reviewer --slug <slug> --base origin/main
217
217
  ```
218
218
 
219
- The six in-session judges stay exactly as they are. This is an addition, not a
219
+ The seven in-session judges stay exactly as they are. This is an addition, not a
220
220
  replacement — a fresh reviewer is worse than a spec judge at spec compliance, and the
221
221
  point is not to be better at their job but to be uncontaminated by the author's framing.
222
222
 
@@ -262,7 +262,7 @@ Read `subagents.adversarial_council` from `.agent-settings.yml` (default
262
262
  which supplies the four slots, the one-question budget, and the storage line
263
263
  (not persisted: `subagents.adversarial_council` is class C). What only this
264
264
  command knows is *why now*: the diff is high-risk, and the offer is a paid
265
- distinct-model red-team for finding coverage against the six internal judges.
265
+ distinct-model red-team for finding coverage against the seven internal judges.
266
266
  - `on`: run it automatically on a high-risk diff.
267
267
 
268
268
  When run, dispatch the
@@ -315,7 +315,7 @@ window back with `./scripts-run src/scripts/review_axis_report`; it reports
315
315
  before proceeding
316
316
  - If **any** judge returned `revise` → fix 🔴 findings automatically,
317
317
  ask before fixing 🟡 findings, report 🟢 as suggestions
318
- - If all six returned `apply` → the diff is ready; report and stop
318
+ - If all seven returned `apply` → the diff is ready; report and stop
319
319
 
320
320
  **Opt-in (never auto-on):** when the `revise` findings are *test-driven*
321
321
  (failing checks, not subjective craft) and you want bounded auto-repair
@@ -360,7 +360,7 @@ Per `verbosity.routine_confirmations` (default `false`):
360
360
  ## Use this command when
361
361
 
362
362
  - Preparing a self-review before opening a PR
363
- - Stress-testing a local branch with the same six lenses a reviewer
363
+ - Stress-testing a local branch with the same seven lenses a reviewer
364
364
  would apply
365
365
  - Sanity-checking a diff before handing it to `/create-pr`
366
366
 
@@ -389,6 +389,6 @@ Per `verbosity.routine_confirmations` (default `false`):
389
389
 
390
390
  - **LLM-as-a-Judge** — [arxiv.org/abs/2306.05685](https://arxiv.org/abs/2306.05685)
391
391
  MT-Bench and Chatbot Arena — judging LLM outputs with LLM judges.
392
- This command adapts the pattern by dispatching to six specialized
393
- judges (bug, security, tests, quality) instead of a single generic
394
- judge, and consolidating their verdicts.
392
+ This command adapts the pattern by dispatching to seven specialized
393
+ judges (bug, security, tests, quality, architecture, spec, overbuild)
394
+ instead of a single generic judge, and consolidating their verdicts.
@@ -8,7 +8,7 @@ intent: "Review dispatcher — multi-judge self-review of the current diff, or r
8
8
  routes_to: [review-changes, review-routing]
9
9
  replaces: []
10
10
  visibility: advanced
11
- description: Review orchestrator — routes to changes (five-judge self-review of the local diff) and routing (compute reviewer roles + historical bug patterns)
11
+ description: Review orchestrator — routes to changes (seven-judge self-review of the local diff) and routing (compute reviewer roles + historical bug patterns)
12
12
  cluster: review
13
13
  type: orchestrator
14
14
  suggestion:
@@ -49,7 +49,7 @@ Sub-command names match the locked contract in
49
49
  4. If the sub-command is unknown or missing, print the menu and ask — do not
50
50
  guess:
51
51
 
52
- > 1. changes — five-judge self-review of the local diff (pre-PR)
52
+ > 1. changes — seven-judge self-review of the local diff (pre-PR)
53
53
  > 2. routing — suggest reviewers + surface matched historical bug patterns
54
54
 
55
55
  ## Rules