@event4u/agent-config 7.0.2 → 7.2.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 (140) hide show
  1. package/.claude-plugin/marketplace.json +9 -1
  2. package/CHANGELOG.md +117 -0
  3. package/README.md +4 -2
  4. package/dist/agent-src/commands/council/default.md +28 -20
  5. package/dist/agent-src/commands/evals/fix.json +5 -1
  6. package/dist/agent-src/commands/fix/comments.md +101 -0
  7. package/dist/agent-src/commands/fix.md +5 -2
  8. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +65 -0
  9. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +68 -0
  10. package/dist/agent-src/contexts/execution/host-capability-manifest.md +68 -0
  11. package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +62 -0
  12. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +59 -0
  13. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +8 -3
  14. package/dist/agent-src/contexts/execution/subagent-response-contract.md +56 -0
  15. package/dist/agent-src/contexts/execution/subagent-routing.md +57 -0
  16. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +54 -0
  17. package/dist/agent-src/contexts/execution/subagent-steering.md +71 -0
  18. package/dist/agent-src/contexts/execution/verify-budget.md +50 -0
  19. package/dist/agent-src/rules/brand-source-of-truth.md +10 -0
  20. package/dist/agent-src/rules/delegation-policy.md +85 -0
  21. package/dist/agent-src/rules/design-fidelity.md +98 -0
  22. package/dist/agent-src/rules/domain-safety-pii.md +22 -0
  23. package/dist/agent-src/rules/legal-safety-floor.md +182 -0
  24. package/dist/agent-src/rules/lethal-trifecta-guard.md +25 -22
  25. package/dist/agent-src/rules/output-discipline.md +85 -0
  26. package/dist/agent-src/rules/telegraph-speak.md +4 -1
  27. package/dist/agent-src/rules/token-budget-discipline.md +94 -0
  28. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +102 -15
  29. package/dist/agent-src/scripts/update_roadmap_progress.ts +30 -3
  30. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +20 -5
  31. package/dist/agent-src/skills/ai-council/SKILL.md +28 -1
  32. package/dist/agent-src/skills/blade-ui/SKILL.md +9 -0
  33. package/dist/agent-src/skills/contract-review/SKILL.md +125 -0
  34. package/dist/agent-src/skills/contract-review/evals/triggers.json +17 -0
  35. package/dist/agent-src/skills/dashboard-design/SKILL.md +21 -5
  36. package/dist/agent-src/skills/design-intelligence/SKILL.md +96 -0
  37. package/dist/agent-src/skills/design-review/SKILL.md +83 -0
  38. package/dist/agent-src/skills/design-system-capture/SKILL.md +234 -0
  39. package/dist/agent-src/skills/design-tokens/SKILL.md +1 -0
  40. package/dist/agent-src/skills/dpa-review/SKILL.md +130 -0
  41. package/dist/agent-src/skills/dpa-review/evals/triggers.json +17 -0
  42. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +15 -4
  43. package/dist/agent-src/skills/fe-design/SKILL.md +98 -16
  44. package/dist/agent-src/skills/flux/SKILL.md +8 -0
  45. package/dist/agent-src/skills/iconography/SKILL.md +1 -0
  46. package/dist/agent-src/skills/laravel/SKILL.md +1 -0
  47. package/dist/agent-src/skills/legal-intake-triage/SKILL.md +128 -0
  48. package/dist/agent-src/skills/legal-intake-triage/evals/triggers.json +17 -0
  49. package/dist/agent-src/skills/legal-practice-profile/SKILL.md +101 -0
  50. package/dist/agent-src/skills/legal-practice-profile/evals/triggers.json +17 -0
  51. package/dist/agent-src/skills/livewire/SKILL.md +8 -0
  52. package/dist/agent-src/skills/nda-triage/SKILL.md +114 -0
  53. package/dist/agent-src/skills/nda-triage/evals/triggers.json +17 -0
  54. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +21 -9
  55. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +3 -1
  56. package/dist/agent-src/skills/recursive-verification/SKILL.md +186 -0
  57. package/dist/agent-src/skills/roadmap-management/SKILL.md +17 -0
  58. package/dist/agent-src/skills/skill-writing/SKILL.md +18 -0
  59. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +11 -0
  60. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +17 -7
  61. package/dist/agent-src/skills/typography-system/SKILL.md +14 -0
  62. package/dist/agent-src/skills/ui-component-architect/SKILL.md +9 -0
  63. package/dist/agent-src/templates/agent-settings.md +64 -19
  64. package/dist/discovery/deprecation-report.md +1 -1
  65. package/dist/discovery/discovery-manifest.json +362 -43
  66. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  67. package/dist/discovery/discovery-manifest.summary.md +13 -5
  68. package/dist/discovery/orphan-report.md +1 -1
  69. package/dist/discovery/packs.json +56 -11
  70. package/dist/discovery/trust-report.md +7 -5
  71. package/dist/discovery/workspaces.json +38 -7
  72. package/dist/mcp/registry-manifest.json +3 -3
  73. package/dist/router.json +1 -1
  74. package/dist/server/routes/wizard.js +4 -3
  75. package/dist/server/routes/wizard.js.map +1 -1
  76. package/dist/server/schemas/settings.js +23 -0
  77. package/dist/server/schemas/settings.js.map +1 -1
  78. package/dist/ui/assets/{index-CoQo90sz.js → index-UjcTG_9O.js} +2 -2
  79. package/dist/ui/assets/index-UjcTG_9O.js.map +1 -0
  80. package/dist/ui/index.html +1 -1
  81. package/docs/RELEASE_STORY_TEMPLATE.md +37 -0
  82. package/docs/architecture.md +4 -4
  83. package/docs/benchmark.md +46 -0
  84. package/docs/catalog.md +18 -6
  85. package/docs/command-flows.md +7 -1
  86. package/docs/contracts/ai-council-config.md +17 -10
  87. package/docs/contracts/audit-log-v1.md +7 -0
  88. package/docs/contracts/auto-orchestration-v1.md +70 -0
  89. package/docs/contracts/capability-boundary.md +64 -0
  90. package/docs/contracts/command-clusters.md +1 -1
  91. package/docs/contracts/discovery-manifest.schema.json +2 -2
  92. package/docs/contracts/package-self-orientation.md +3 -0
  93. package/docs/contracts/subagent-boundary.md +54 -0
  94. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +32 -0
  95. package/docs/decisions/ADR-020-global-only-consumer-scope.md +13 -6
  96. package/docs/decisions/ADR-049-configuration-trust-boundary.md +11 -1
  97. package/docs/decisions/ADR-093-ai-council-config-user-global.md +10 -4
  98. package/docs/decisions/ADR-104-ai-council-config-global-only.md +119 -0
  99. package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +102 -0
  100. package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +126 -0
  101. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +70 -0
  102. package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +46 -0
  103. package/docs/decisions/INDEX.md +5 -0
  104. package/docs/getting-started.md +2 -2
  105. package/docs/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
  106. package/docs/guidelines/agent-infra/domain-pack-architecture.md +56 -0
  107. package/docs/guidelines/design-antipatterns-triggers.json +17 -0
  108. package/docs/guidelines/design-antipatterns.md +170 -0
  109. package/docs/guidelines/design-modes.md +97 -0
  110. package/package.json +1 -1
  111. package/src/config/agent-settings.template.yml +103 -3
  112. package/src/config/discovery/packs.yml +24 -0
  113. package/src/config/discovery/workspaces.yml +7 -0
  114. package/src/scripts/_lib/auto_dispatch.ts +95 -0
  115. package/src/scripts/_lib/host_capability.ts +59 -0
  116. package/src/scripts/_lib/orchestration_gate.ts +98 -0
  117. package/src/scripts/_lib/subagent_bundle.ts +154 -0
  118. package/src/scripts/_lib/subagent_response.ts +82 -0
  119. package/src/scripts/_lib/subagent_routing.ts +81 -0
  120. package/src/scripts/_lib/subagent_spawn.ts +97 -0
  121. package/src/scripts/_lib/subagent_steering.ts +64 -0
  122. package/src/scripts/_lib/verify_budget.ts +54 -0
  123. package/src/scripts/ai_council/advisors.ts +4 -2
  124. package/src/scripts/ai_council/clients.ts +7 -1
  125. package/src/scripts/ai_council/config.ts +22 -17
  126. package/src/scripts/bench_ab_v2_run.ts +127 -0
  127. package/src/scripts/bench_ab_v2_stats.ts +39 -0
  128. package/src/scripts/check_council_config_location.ts +6 -5
  129. package/src/scripts/check_trunk_drift.ts +67 -0
  130. package/src/scripts/lint_design_quality.ts +321 -0
  131. package/src/scripts/lint_discovery_vocabulary.ts +6 -0
  132. package/src/scripts/lint_framework_leakage_allowlist.json +21 -0
  133. package/src/scripts/lint_legal_pack.ts +197 -0
  134. package/src/scripts/lint_output_slop.ts +223 -0
  135. package/src/scripts/lint_pack_risk_class.ts +79 -0
  136. package/src/scripts/probe_projection_fidelity.ts +7 -1
  137. package/src/scripts/schemas/agent-settings.schema.json +23 -0
  138. package/src/scripts/schemas/skill.schema.json +5 -0
  139. package/src/scripts/skill_linter.ts +3 -0
  140. package/dist/ui/assets/index-CoQo90sz.js.map +0 -1
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <meta name="robots" content="noindex" />
7
7
  <title>agent-config</title>
8
- <script type="module" crossorigin src="/assets/index-CoQo90sz.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-UjcTG_9O.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-BbWWuFrF.css">
10
10
  </head>
11
11
  <body>
@@ -0,0 +1,37 @@
1
+ # Release Story — `<version>`
2
+
3
+ A curated, human-readable "what changed and **why it matters**" — distinct from
4
+ the raw `CHANGELOG`. The changelog lists commits; the release story tells a
5
+ maintainer or consumer, in plain language, what they get and what to watch.
6
+
7
+ Copy this template per release; keep it short (a screen or less).
8
+
9
+ ## Headline
10
+
11
+ One sentence: the single most important thing this release delivers.
12
+
13
+ ## What changed (and why it matters)
14
+
15
+ - **<change>** — what it is · why a consumer cares · what they should do (if anything).
16
+ - **<change>** — …
17
+
18
+ ## Safety / behaviour changes
19
+
20
+ Anything that changes agent behaviour, gates, or defaults — call it out explicitly
21
+ (new floors, new consent gates, renamed packs, changed risk postures). Consumers
22
+ read this section first.
23
+
24
+ ## Upgrade notes
25
+
26
+ - Breaking? Migration steps. Non-breaking? Say so.
27
+ - New opt-in surfaces (packs, settings) — how to enable.
28
+
29
+ ## Deferred / known limitations
30
+
31
+ What was intentionally left for a future release, and the pointer (roadmap /
32
+ ADR). Honesty here prevents "is this missing or coming?" questions.
33
+
34
+ ---
35
+
36
+ > Fill every section. An empty section is a signal the release is not understood
37
+ > well enough to ship its story. (road-to-product-clarity Phase 4a.)
@@ -146,10 +146,10 @@ note, package-internal path-swap, description budget, and the
146
146
 
147
147
  | Layer | Count | Purpose |
148
148
  |---|---|---|
149
- | **Skills** | 251 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, … |
150
- | **Rules** | 88 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
151
- | **Commands** | 161 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/condense`, … |
152
- | **Guidelines** | 82 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, … |
149
+ | **Skills** | 258 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, … |
150
+ | **Rules** | 93 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
151
+ | **Commands** | 162 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/condense`, … |
152
+ | **Guidelines** | 86 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, … |
153
153
  | **Templates** | 7 | Scaffolds for features, roadmaps, contexts, skills, overrides |
154
154
  | **Contexts** | 5 | Shared knowledge about the system itself |
155
155
 
package/docs/benchmark.md CHANGED
@@ -73,3 +73,49 @@
73
73
  - Arms: vanilla (plugin off) · package (real plugin) · package-rdp (plugin + RDP rules) · placebo (plugin off + equal-length inert prose).
74
74
  - Corpus: `internal/bench/corpora/ab-trackb-v2.yaml` (5 trap archetypes). Scoring: `bench_ab_scoring_v2.py` (deterministic, no LLM judge).
75
75
  - Roadmap: `agents/roadmaps/road-to-discipline-axis-benchmark.md`.
76
+
77
+ ## Recursive self-verification (ADR-106) — HONEST-NULL
78
+
79
+ > **Verdict: recursion is redundant with the always-on rules. `verification.recursive`
80
+ > stays `off`. No model got "closer to Fable" — exactly what ADR-106's gate was built to
81
+ > disconfirm.** The one retraining-free Sakana-Fugu mechanism (a depth-bounded
82
+ > `attempt → critic verdict → re-attempt` loop) was built, shipped behind a gate, and
83
+ > measured — and adds nothing over the rules.
84
+
85
+ Measured the `package-recursive` arm (D₂ = rules + recursion, deterministic scorer-as-critic,
86
+ `max_depth=1`) against `package` (D₁ = rules only) on a weak host (`claude-haiku-4-5`),
87
+ `capH-debug` archetype × 6 seeds (n=54 paired):
88
+
89
+ | axis | D₁ (rules) | D₂ (rules + recursion) | Δ (D₂ − D₁) | test |
90
+ |---|---|---|---|---|
91
+ | capability (pass-rate) | 87% | 87% | 0 | McNemar p=1.0, h=0.0 |
92
+ | discipline (0–1) | 0.852 | 0.861 | +0.009 | Wilcoxon p=0.79, rb=0.33, n≠0=3 |
93
+
94
+ **ADR-106 gate: FALSIFIED** — neither a capability lift (p=1.0) nor a *significant* novel
95
+ discipline lift (p=0.79; only 3 discordant pairs, below the ≥6 the gate requires).
96
+
97
+ **Why, despite a passing human pre-test.** Recursion fired on only **8/29** corpus tasks
98
+ (~28%) and produced a differentiated output on **4/29** — with the rules active, the host's
99
+ *first* attempt already passes the critic 72% of the time, so recursion is a no-op. A blind
100
+ human pre-test on the 4 differentiated pairs preferred the recursion output **4/4**, but those
101
+ cases are too rare and the aggregate marginal lift too small (n≠0=3) to register as
102
+ significant. The pre-test looked positive on N=4; the paired benchmark falsified it — which is
103
+ exactly why ADR-106 required the benchmark, not just the pre-test.
104
+
105
+ **Honesty scope.** Weak host, `capH-debug` family, deterministic scorer-as-critic, `max_depth=1`.
106
+ A model-based critic (Phase 4) was not pursued — gated on this result passing, which it did not.
107
+ Cost axis: each recursion run is up to 2× the host calls of a single pass, for a null lift.
108
+
109
+ - Roadmap: `agents/roadmaps/archive/road-to-recursive-verification.md` (closed honest-null).
110
+ - Gate logic: `recursiveGateVerdict` / `resolveRecursiveDefault` (`orchestration_gate.ts`); on a
111
+ falsified gate `resolveRecursiveDefault` resolves `off` — no shipped-default flip.
112
+
113
+ **Follow-up disposition — TERMINAL** (AI council, anthropic/claude-sonnet-4-5 +
114
+ openai/gpt-4o, 2026-06-24, deep tier). Both members converged: do **not** pursue a
115
+ model-critic / cross-vendor variant. The 72% first-pass rate shows recursion solves the
116
+ wrong problem — cost scales with *all* tasks, benefit only on the ~28% tail (best-case
117
+ ~4–6% lift, would need n≥200 to detect); a model-critic would mostly fire more often and
118
+ produce more null-lift re-attempts at higher cost. The real lever is **refining the rules
119
+ on the 28% failure tail** (applies to 100% of tasks at zero marginal cost), not recursion.
120
+ Recursion-as-a-class is closed; the model-critic's contextual-quality angle, if ever
121
+ wanted, is a *different* (quality-review) product, not a recursion follow-up.
package/docs/catalog.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # agent-config — Public Catalog
2
2
 
3
- Consumer-facing catalog of all **581 public artefacts** shipped by
3
+ Consumer-facing catalog of all **593 public artefacts** shipped by
4
4
  this package. Internal package-maintenance rules and deprecation shims
5
5
  are excluded.
6
6
 
7
- > **Regenerate:** `python3 scripts/generate_index.py`
7
+ > **Regenerate:** `./scripts-run src/scripts/generate_index`
8
8
  > Auto-generated — do not edit manually.
9
9
 
10
- ## Skills (251)
10
+ ## Skills (257)
11
11
 
12
12
  | kind | name | extra | description |
13
13
  |---|---|---|---|
@@ -57,6 +57,7 @@ are excluded.
57
57
  | skill | [`content-funnel-design`](../dist/agent-src/skills/content-funnel-design/SKILL.md) | | Use when mapping funnel-stage to content shape — conversion-pathway, content-as-system, leverage-point selection. Triggers on 'design our content funnel', 'why does mid-funnel leak'. |
58
58
  | skill | [`context-authoring`](../dist/agent-src/skills/context-authoring/SKILL.md) | | Use when filling in knowledge-layer context files — auth-model, tenant-boundaries, data-sensitivity, deployment-order, observability — interactive walkthrough that turns templates into reviewer fuel. |
59
59
  | skill | [`context-document`](../dist/agent-src/skills/context-document/SKILL.md) | | Use when the user says \"create context\", \"document this area\", or wants a structured snapshot of a codebase area for agent orientation. |
60
+ | skill | [`contract-review`](../dist/agent-src/skills/contract-review/SKILL.md) | | Use when reviewing a contract clause-by-clause from your party's side — buyer/seller/vendor/licensee. Triggers on 'review this contract', 'redline this MSA', 'is this clause a problem'. |
60
61
  | skill | [`contracts-cognition`](../dist/agent-src/skills/contracts-cognition/SKILL.md) | | Use when reading a contract for risk and constraint — clause shape, redline priority, what the contract actually binds. Triggers on 'review this contract', 'what does this MSA constrain'. |
61
62
  | skill | [`conventional-commits-writing`](../dist/agent-src/skills/conventional-commits-writing/SKILL.md) | | Use when writing commit messages or squash-merge titles — `feat:`, `fix:`, `chore:`, scopes, breaking changes — even when the user just says 'commit this' without naming Conventional Commits. |
62
63
  | skill | [`copilot-agents-optimization`](../dist/agent-src/skills/copilot-agents-optimization/SKILL.md) | | Use when optimizing AGENTS.md or copilot-instructions.md — deduplicates against .augment/ content, enforces line budgets, and focuses each file on its audience. |
@@ -83,6 +84,7 @@ are excluded.
83
84
  | skill | [`discovery-interview`](../dist/agent-src/skills/discovery-interview/SKILL.md) | | Use when running discovery interviews — question-bank build, bias audit, insight extraction. Triggers on 'audit my guide', 'extract insights from transcript', 'is my hypothesis falsifiable'. |
84
85
  | skill | [`doc-coauthoring`](../dist/agent-src/skills/doc-coauthoring/SKILL.md) | | Use when co-authoring a PRD, design doc, RFC, decision doc, or technical spec — 3-stage flow (context → section-by-section → reader-test) — even if the user just says 'help me write this spec'. |
85
86
  | skill | [`docker`](../dist/agent-src/skills/docker/SKILL.md) | | Use when working with Docker — Dockerfile edits, docker-compose services, containers, or the dual-container (fast + Xdebug) setup — even when the user just says 'my container won't start'. |
87
+ | skill | [`dpa-review`](../dist/agent-src/skills/dpa-review/SKILL.md) | | Use when reviewing a DPA as controller or processor against GDPR Art. 28 — GREEN/YELLOW/RED gap frame, never a final call. Triggers on \"review this DPA\", \"check this DPA\". |
86
88
  | skill | [`editorial-calendar`](../dist/agent-src/skills/editorial-calendar/SKILL.md) | | Use when shaping cadence — evergreen / campaign / reactive split, beat-mapping across channel stages, content-debt management. Triggers on 'plan our content cadence', 'what should we publish'. |
87
89
  | skill | [`eloquent`](../dist/agent-src/skills/eloquent/SKILL.md) | | Use when writing Eloquent models, relationships, scopes, or queries via Model:: — 'fetch users with their orders'. NOT for PHPStan output, non-Eloquent services, or raw SQL questions. |
88
90
  | skill | [`emit-tickets`](../dist/agent-src/skills/emit-tickets/SKILL.md) | | Use when materialising a roadmap into a ticket bundle — 'turn this roadmap into tickets', 'materialise tickets', 'mach Tickets aus der Roadmap', 'emit tickets for this plan'. |
@@ -135,6 +137,8 @@ are excluded.
135
137
  | skill | [`laravel-websocket`](../dist/agent-src/skills/laravel-websocket/SKILL.md) | | Use when building Laravel real-time features — Broadcasting events, ShouldBroadcast, private/presence channels, Echo client. For non-Laravel WebSockets, use the stack-native skill. |
136
138
  | skill | [`launch-readiness`](../dist/agent-src/skills/launch-readiness/SKILL.md) | | Use before merging a release-shaped PR — pre-merge checklist, rollout plan, rollback criteria, ops handoff. Triggers on 'ready to ship', 'launch checklist', 'rollout plan for X'. |
137
139
  | skill | [`learning-to-rule-or-skill`](../dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md) | | Use when a repeated learning, mistake, or successful pattern should be turned into a new rule or skill. Also use after completing a task to capture learnings from the work. |
140
+ | skill | [`legal-intake-triage`](../dist/agent-src/skills/legal-intake-triage/SKILL.md) | | Use when triaging the quick legal-question channel + intake; classifies and ROUTES, never reviews. Triggers on 'is this a legal problem', 'do we need a lawyer for this', 'quick legal question'. |
141
+ | skill | [`legal-practice-profile`](../dist/agent-src/skills/legal-practice-profile/SKILL.md) | | Use when setting up the legal pack — captures jurisdiction, role, escalation, and playbook into a plain-prose profile every legal skill reads. Triggers on \"set up legal\", \"legal profile\". |
138
142
  | skill | [`lint-skills`](../dist/agent-src/skills/lint-skills/SKILL.md) | | Use when running the package's skill linter against all skills and rules to validate frontmatter, required sections, and execution metadata. |
139
143
  | skill | [`livewire`](../dist/agent-src/skills/livewire/SKILL.md) | | Use when the project's frontend stack is Livewire — dispatched by `directives/ui/{apply,review,polish}.py`. Covers reactive state, events, lifecycle hooks, and component/view separation. |
140
144
  | skill | [`livewire-architect`](../dist/agent-src/skills/livewire-architect/SKILL.md) | | Use when shaping a Livewire component before code — full-page vs partial, parent/child split, event flow, state-vs-props boundary, hydration cost — even on 'add this Livewire component'. |
@@ -154,6 +158,7 @@ are excluded.
154
158
  | skill | [`module-management`](../dist/agent-src/skills/module-management/SKILL.md) | | Use when working within any module under `modules.root_paths` from `.agent-project-settings.yml` — Laravel HMVC, Symfony DDD-lite, Node monorepo, Python src/, Go internal/, or a custom path. |
155
159
  | skill | [`motion-choreographer`](../dist/agent-src/skills/motion-choreographer/SKILL.md) | | Use when turning a locked still + blueprint into a provider-tuned motion prompt — camera, primary + secondary motion, physics, native-audio sync. Triggers 'motion prompt for Veo/Kling/Sora'. |
156
160
  | skill | [`multi-tenancy`](../dist/agent-src/skills/multi-tenancy/SKILL.md) | | Use when working with the multi-tenant architecture — customer DB switching, FQDN routing, tenant isolation, or cross-tenant operations. |
161
+ | skill | [`nda-triage`](../dist/agent-src/skills/nda-triage/SKILL.md) | | Use when triaging an inbound NDA fast — GREEN/YELLOW/RED so only the hard ones reach a lawyer. Triggers on 'check this NDA', 'can we sign this NDA', 'is this NDA standard'. |
157
162
  | skill | [`nextjs-patterns`](../dist/agent-src/skills/nextjs-patterns/SKILL.md) | | Writes Next.js App Router code — Server Components, Server Actions, RSC boundaries, route handlers, caching, and streaming — matching framework conventions and project architecture. |
158
163
  | skill | [`okr-tree-modeling`](../dist/agent-src/skills/okr-tree-modeling/SKILL.md) | | Use when decomposing a company objective into team OKRs, auditing a draft OKR tree, or stress-testing an existing one for measurability and laddering. |
159
164
  | skill | [`onboarding-design`](../dist/agent-src/skills/onboarding-design/SKILL.md) | | Use when designing customer onboarding — time-to-first-value, milestone design, friction audit, drop-off diagnosis. Triggers on 'fix onboarding', 'why do new accounts churn fast'. |
@@ -201,6 +206,7 @@ are excluded.
201
206
  | skill | [`readme-writing-package`](../dist/agent-src/skills/readme-writing-package/SKILL.md) | | Use when creating or rewriting a README for a reusable package or library. Focus on installability, minimal usage example, compatibility, and developer onboarding. |
202
207
  | skill | [`reasoning-orchestrator`](../dist/agent-src/skills/reasoning-orchestrator/SKILL.md) | | Use for multi-step / ambiguous / end-to-end work — refactor a whole module, drive a vague ticket to a verified result, plan+build+verify a migration; coordinates the reasoning chain across skills. |
203
208
  | skill | [`receiving-code-review`](../dist/agent-src/skills/receiving-code-review/SKILL.md) | | Use when processing code review feedback (bot or human) before changing anything — triages, verifies, and pushes back with technical reasoning — even when the user just says 'fix the comments'. |
209
+ | skill | [`recursive-verification`](../dist/agent-src/skills/recursive-verification/SKILL.md) | | Use to run a depth-bounded self-correction loop (attempt → critic verdict → re-attempt) as a tunable test-time compute knob — a do-and-judge specialisation, default off, capability-gated. |
204
210
  | skill | [`refine-prompt`](../dist/agent-src/skills/refine-prompt/SKILL.md) | | Reconstruct a free-form prompt into actionable AC + assumptions + confidence band before the engine plans — '/work \"…\"', 'baue X', 'ist der Prompt klar genug für die Engine?'. |
205
211
  | skill | [`refine-ticket`](../dist/agent-src/skills/refine-ticket/SKILL.md) | | Refine a Jira/Linear ticket before planning — 'refine ticket', 'tighten AC on PROJ-123', 'ist das Ticket klar?' — rewritten ticket, Top-5 risks, persona voices, sub-skills orchestrated, close-prompt. |
206
212
  | skill | [`release-comms`](../dist/agent-src/skills/release-comms/SKILL.md) | | Use when turning a shipped changelog into a release narrative — value-not-feature framing, audience-segmented surfaces, one source of truth. Triggers on 'announce the release', 'write changelog post'. |
@@ -263,7 +269,7 @@ are excluded.
263
269
  | skill | [`voc-extract`](../dist/agent-src/skills/voc-extract/SKILL.md) | | Use when extracting Voice-of-Customer themes from existing artefacts — GH issues, PR threads, Sentry patterns. Triggers on 'what are users saying', 'recurring complaints', 'top themes'. |
264
270
  | skill | [`voice-and-tone-design`](../dist/agent-src/skills/voice-and-tone-design/SKILL.md) | | Use when shaping brand voice — voice attributes, tone-by-context matrix, consistency review. Triggers on 'define our voice', 'why does our copy sound different on every surface'. |
265
271
 
266
- ## Rules (87)
272
+ ## Rules (90)
267
273
 
268
274
  | kind | name | type | description |
269
275
  |---|---|---|---|
@@ -283,6 +289,8 @@ are excluded.
283
289
  | rule | [`commit-policy`](../dist/agent-src/rules/commit-policy.md) | always | Commit policy — never commit and never ask about committing unless the user said so this turn, the roadmap authorizes it, or a commit command is invoked |
284
290
  | rule | [`context-hygiene`](../dist/agent-src/rules/context-hygiene.md) | auto | Debugging, fixing errors, or long conversations — 3-failure stop rule, tool-loop detection, fresh-chat triggers |
285
291
  | rule | [`copilot-routing`](../dist/agent-src/rules/copilot-routing.md) | auto | Configuring GitHub Copilot — copilot-instructions.md, PR-review patterns, suggestion behavior — route to copilot-config |
292
+ | rule | [`delegation-policy`](../dist/agent-src/rules/delegation-policy.md) | auto | Delegable multi-part work + auto-orchestration enabled — decompose, tier-size each slice, dispatch to subagents instead of doing it all in-session |
293
+ | rule | [`design-fidelity`](../dist/agent-src/rules/design-fidelity.md) | auto | A provided prototype / mockup / design system is the run's spec — build it 1:1; never swap fonts, controls, components, or layout without confirmation. Strictness: design.fidelity_mode. |
286
294
  | rule | [`devcontainer-routing`](../dist/agent-src/rules/devcontainer-routing.md) | auto | Wiring DevContainers/Codespaces — devcontainer.json, images, VS Code features, port forwarding — route to the devcontainer skill |
287
295
  | rule | [`direct-answers`](../dist/agent-src/rules/direct-answers.md) | always | Always — direct, unembellished answers. No flattery, no invented facts (verify load-bearing claims, otherwise ask). Emojis only as functional markers. Brevity is the default. |
288
296
  | rule | [`docker-commands`](../dist/agent-src/rules/docker-commands.md) | auto | Running PHP inside Docker — artisan, composer, phpstan, rector, ecs, phpunit, tests, migrations, any CLI tool |
@@ -305,6 +313,7 @@ are excluded.
305
313
  | rule | [`language-and-tone`](../dist/agent-src/rules/language-and-tone.md) | always | Language and tone — informal German Du, English code comments, .md files always English |
306
314
  | rule | [`laravel-routing`](../dist/agent-src/rules/laravel-routing.md) | auto | Writing/reviewing Laravel code — controllers, Eloquent, Artisan, jobs, events, policies — route to laravel skill |
307
315
  | rule | [`laravel-translations`](../dist/agent-src/rules/laravel-translations.md) | auto | Laravel language files, translations, i18n, lang/de, lang/en, __() helper, localization |
316
+ | rule | [`legal-safety-floor`](../dist/agent-src/rules/legal-safety-floor.md) | auto | Legal-pack output (contract/NDA/DPA review, triage) — never a final legal call; role-conditional header + attorney-review line; EU/DE-only hard refusal; machine-checkable Jurisdiction tag |
308
317
  | rule | [`lethal-trifecta-guard`](../dist/agent-src/rules/lethal-trifecta-guard.md) | auto | Authoring a skill/command/tool that mixes private-data access + untrusted-content ingestion + external comms — break one leg of the lethal trifecta before shipping |
309
318
  | rule | [`linked-projects-onboarding-gate`](../dist/agent-src/rules/linked-projects-onboarding-gate.md) | auto | IDE-attached sibling repo detected — prompt once to opt it into proactive cross-repo awareness, persist local-only, then surface cross-repo impact on relevant changes |
310
319
  | rule | [`low-impact-corpus-privacy-floor`](../dist/agent-src/rules/low-impact-corpus-privacy-floor.md) | auto | Writing/editing/upstreaming entries in agents/decisions/low-impact-decisions.md — non-bypassable privacy floor for the learning corpus |
@@ -355,7 +364,7 @@ are excluded.
355
364
  | rule | [`user-interrupt-priority`](../dist/agent-src/rules/user-interrupt-priority.md) | always | User interrupts override the current task — STOP, complete new task in full, then ASK before resuming; never silently return to prior work |
356
365
  | rule | [`verify-before-complete`](../dist/agent-src/rules/verify-before-complete.md) | always | Verify before completion — run tests and quality tools before claiming done |
357
366
 
358
- ## Commands (161)
367
+ ## Commands (162)
359
368
 
360
369
  | kind | name | cluster | description |
361
370
  |---|---|---|---|
@@ -420,6 +429,7 @@ are excluded.
420
429
  | command | [`feature-roadmap`](../dist/agent-src/commands/feature/roadmap.md) | cluster: feature | Generate implementation roadmap(s) from a feature plan and link them |
421
430
  | command | [`fix`](../dist/agent-src/commands/fix.md) | cluster: fix | Fix orchestrator — routes to ci, references, portability, seeder, pr-comments |
422
431
  | command | [`fix-ci`](../dist/agent-src/commands/fix/ci.md) | cluster: fix | Fetch CI errors from GitHub Actions and fix them |
432
+ | command | [`fix-comments`](../dist/agent-src/commands/fix/comments.md) | cluster: fix | Review the code comments touched by the current branch and simplify, shorten, or remove each one |
423
433
  | command | [`fix-portability`](../dist/agent-src/commands/fix/portability.md) | cluster: fix | Find and fix project-specific references in shared .augment/ package files |
424
434
  | command | [`fix-pr-comments`](../dist/agent-src/commands/fix/pr-comments.md) | cluster: fix | Fix and reply to all open review comments (bots + human reviewers) on a GitHub PR |
425
435
  | command | [`fix-refs`](../dist/agent-src/commands/fix/refs.md) | cluster: fix | Find and fix broken cross-references in .augment/ and agents/ files |
@@ -521,7 +531,7 @@ are excluded.
521
531
  | command | [`video-storyboard`](../dist/agent-src/commands/video/storyboard.md) | cluster: video | Image-only storyboard — script → scenes → blueprint → image render → contact-sheet PNG via ffmpeg montage. No video calls. |
522
532
  | command | [`work`](../dist/agent-src/commands/work.md) | | Drive a free-form prompt end-to-end through refine → score → plan → implement → test → verify → report — Option-A loop over the `work_engine` Python engine, confidence-band gated, no auto-git. |
523
533
 
524
- ## Guidelines (82)
534
+ ## Guidelines (84)
525
535
 
526
536
  | kind | name | category | description |
527
537
  |---|---|---|---|
@@ -536,6 +546,8 @@ are excluded.
536
546
  | guideline | [`critical-thinking`](../docs/guidelines/agent-infra/critical-thinking.md) | agent-infra | |
537
547
  | guideline | [`developer-judgment`](../docs/guidelines/agent-infra/developer-judgment.md) | agent-infra | |
538
548
  | guideline | [`direct-answers-demos`](../docs/guidelines/agent-infra/direct-answers-demos.md) | agent-infra | |
549
+ | guideline | [`domain-eval-anti-pattern`](../docs/guidelines/agent-infra/domain-eval-anti-pattern.md) | agent-infra | |
550
+ | guideline | [`domain-pack-architecture`](../docs/guidelines/agent-infra/domain-pack-architecture.md) | agent-infra | |
539
551
  | guideline | [`engineering-memory-data-format`](../docs/guidelines/agent-infra/engineering-memory-data-format.md) | agent-infra | |
540
552
  | guideline | [`failure-signatures`](../docs/guidelines/agent-infra/failure-signatures.md) | agent-infra | |
541
553
  | guideline | [`first-principles`](../docs/guidelines/agent-infra/first-principles.md) | agent-infra | |
@@ -7,7 +7,7 @@
7
7
 
8
8
  > Every command is classified in `src/flows/surface-map.yaml` (coverage enforced by `scripts/lint_command_flow_coverage.py`). The four user-work flows carry rich definitions in `src/flows/<flow>.yaml`.
9
9
 
10
- **148 commands** across **10 surfaces** (4 user-work flows + 6 platform/domain surfaces).
10
+ **154 commands** across **10 surfaces** (4 user-work flows + 6 platform/domain surfaces).
11
11
 
12
12
  ## User-work flows
13
13
 
@@ -205,6 +205,12 @@ _AI image + video pipeline._
205
205
 
206
206
  _Ghostwriter + post-as voice pipeline._
207
207
 
208
+ - `brand` — Brand-as-UX orchestrator — strategy, identity, tokens, review, voice. Routes to the brand-grounding skills…
209
+ - `brand-identity` — Define the brand identity — logo direction, colour story, type story, imagery direction — and the token con…
210
+ - `brand-review` — Audit emitted UI, copy, and assets against the active brand tokens and voice profile — flag any value not t…
211
+ - `brand-strategy` — Define brand positioning, archetype, voice, tone, and messaging over the brand-grounding corpus — the strat…
212
+ - `brand-tokens` — Derive a DTCG .tokens.json source of truth from brand decisions, then emit CSS vars + Tailwind via the no-N…
213
+ - `brand-voice` — Define the brand voice-and-tone profile — register, do/don't lexicon, and tone shifts by context — the prof…
208
214
  - `ghostwriter` — Ghostwriter cluster — fetch, write, list, show, and delete public-figure voice profiles (the third voice pr…
209
215
  - `ghostwriter-delete` — Hard-delete a ghostwriter profile at agents/reference/ghostwriter/<slug>.md after a two-step confirmation.…
210
216
  - `ghostwriter-fetch` — Build or refresh a public-figure voice profile under agents/reference/ghostwriter/ from a URL or bare name;…
@@ -33,23 +33,30 @@ fallback during the v2.4 namespace transition). This is where a single
33
33
  developer enables members, pins models, and sets caps once — and the
34
34
  council then works in **every** project they open, with no per-project
35
35
  file to check in or accidentally commit. See
36
- [ADR-093](../decisions/ADR-093-ai-council-config-user-global.md).
36
+ [ADR-093](../decisions/ADR-093-ai-council-config-user-global.md) and
37
+ [ADR-104](../decisions/ADR-104-ai-council-config-global-only.md).
37
38
 
38
- `scripts/ai_council/config.py:resolve_config_path` resolves the active
39
- file with this precedence (first match wins):
39
+ **The council config is ALWAYS user-global. The project tree is NEVER
40
+ searched for it.** `scripts/ai_council/config.ts:resolve_config_path`
41
+ resolves the active file with this precedence (first match wins):
40
42
 
41
43
  1. **`$AI_COUNCIL_CONFIG`** — an explicit absolute path. Honoured even
42
44
  when the target is absent (so a typo surfaces as "create it here"
43
45
  rather than silently falling back). Primarily for tests / power users.
44
- 2. **Project-local** `<project_root>/agents/settings/.ai-council.yml` —
45
- only when a consumer project deliberately checks in its own council
46
- config. This **overrides** the user-global file for that project.
47
- 3. **User-global** `~/.event4u/agent-config/settings/.ai-council.yml` — the
46
+ This is an explicit path, not a project search.
47
+ 2. **User-global** `~/.event4u/agent-config/settings/.ai-council.yml` — the
48
48
  canonical default described above.
49
49
 
50
- When none exists, the loader reports the user-global path as the place to
51
- create it. `agents/templates/.ai-council.yml.example` ships the documented
52
- shape to copy from. The legacy `ai_council.*` block under
50
+ There is **no project-local lookup.** A `<project_root>/agents/settings/.ai-council.yml`
51
+ in any project (including this package's own tree) is ignored — the
52
+ council never reads it (ADR-104, superseding the project-local override
53
+ ADR-093 had kept). The absence of a council file *in a project* therefore
54
+ says **nothing** about whether the council is configured; only the
55
+ user-global file (or the `$AI_COUNCIL_CONFIG` override) decides that.
56
+
57
+ When neither exists, the loader reports the user-global path as the place
58
+ to create it. `agents/templates/.ai-council.yml.example` ships the
59
+ documented shape to copy from. The legacy `ai_council.*` block under
53
60
  `.agent-settings.yml` remains removed (Phase 0 Step 5); a one-line
54
61
  breadcrumb there points at this contract.
55
62
 
@@ -87,6 +87,13 @@ Single-line. The pretty-printed reference shape:
87
87
  Unknown trailing fields are forward-compat extensions; readers MUST
88
88
  NOT raise on them.
89
89
 
90
+ A line MAY carry an optional `orchestration` object when the run was
91
+ produced by the auto-dispatch orchestration layer. It is additive and
92
+ non-breaking — `schema_version` is unchanged, no existing field is
93
+ removed or renamed, and readers that do not understand it ignore it per
94
+ the forward-compat rule above. Its shape lives in
95
+ [`orchestration-telemetry.md`](../../src/agent-src/contexts/execution/orchestration-telemetry.md).
96
+
90
97
  ## Privacy floor
91
98
 
92
99
  Lines MUST NOT contain:
@@ -0,0 +1,70 @@
1
+ ---
2
+ stability: beta
3
+ keep-beta-until: 2026-09-23
4
+ ---
5
+
6
+ # Auto-Orchestration v1
7
+
8
+ **Purpose.** Pin the data shapes the automatic subagent-orchestration layer
9
+ depends on — the host-capability manifest, the spawn brief, and the
10
+ orchestration telemetry object — so producers and consumers agree without
11
+ re-deriving them. Behaviour (when to dispatch, how to route, how to verify)
12
+ lives in the context docs; this contract pins the **shapes**.
13
+
14
+ **Scope.** The three JSON shapes below + the activation precondition. Does not
15
+ define classification rules, routing policy, or the verification budget — those
16
+ are the cited context docs.
17
+
18
+ Last refreshed: 2026-06-23. Decided in
19
+ [ADR-105](../decisions/ADR-105-automatic-subagent-orchestration.md).
20
+
21
+ ## Host-capability manifest
22
+
23
+ Resolved once per session, cached. Safe default = all-false.
24
+
25
+ ```json
26
+ { "schema_version": 1, "subagent_spawn": false, "parallel_spawn": false, "status_polling": false, "separate_quota_pool": false }
27
+ ```
28
+
29
+ Full semantics: [`host-capability-manifest`](../../src/agent-src/contexts/execution/host-capability-manifest.md).
30
+
31
+ ## Spawn brief
32
+
33
+ Composed per delegated sub-task; knowledge is references only, capped.
34
+
35
+ ```json
36
+ { "task": "<sub-task>", "role_mode": "reviewer|null", "profile": "<id|null>", "personas": ["<id>"], "knowledge_refs": ["<id-or-path>"] }
37
+ ```
38
+
39
+ Full semantics: [`subagent-spawn-contract`](../../src/agent-src/contexts/execution/subagent-spawn-contract.md).
40
+
41
+ ## Orchestration telemetry
42
+
43
+ Optional `orchestration` object on an [`audit-log-v1`](audit-log-v1.md) line —
44
+ additive, non-breaking, counts + ids only.
45
+
46
+ ```json
47
+ { "task_size_estimate": 0, "spawn_count": 0, "tiers": [], "token_delta": 0, "wall_clock_ms": 0, "outcome": "DONE", "verify_mode": "deterministic" }
48
+ ```
49
+
50
+ Full semantics: [`orchestration-telemetry`](../../src/agent-src/contexts/execution/orchestration-telemetry.md).
51
+
52
+ ## Activation precondition
53
+
54
+ Auto-dispatch is attempted only when:
55
+
56
+ ```
57
+ subagents.enabled AND subagents.auto != off AND manifest.subagent_spawn AND task-is-delegable
58
+ ```
59
+
60
+ Any failing → in-session. Full gate:
61
+ [`auto-orchestration-activation`](../../src/agent-src/contexts/execution/auto-orchestration-activation.md).
62
+
63
+ ## Cross-references
64
+
65
+ - [ADR-105](../decisions/ADR-105-automatic-subagent-orchestration.md) — the decisions.
66
+ - [`subagent-routing`](../../src/agent-src/contexts/execution/subagent-routing.md) — model downshift + quota bonus.
67
+ - [`auto-dispatch-classification`](../../src/agent-src/contexts/execution/auto-dispatch-classification.md) — delegability rules.
68
+ - [`verify-budget`](../../src/agent-src/contexts/execution/verify-budget.md) — verification budget.
69
+ - [`subagent-steering`](../../src/agent-src/contexts/execution/subagent-steering.md) — guardrails + kill-switch.
70
+ - [`orchestration-benchmark-gate`](../../src/agent-src/contexts/execution/orchestration-benchmark-gate.md) — the default-flip gate.
@@ -0,0 +1,64 @@
1
+ # Capability Boundary Matrix
2
+
3
+ The per-pack safety posture at a glance: is a pack on by default, does it need
4
+ consent, a council pass, a disclaimer, an eval — and how risky is it. The matrix
5
+ makes the invisible visible; the **enforcement** lives in the per-pack safety
6
+ floors + gates (this doc is the map, not the engine).
7
+
8
+ > Source of truth: `src/config/discovery/packs.yml` (`surface_tier`,
9
+ > `trust_level_default`, `domain`, and the legal-review-prep gate fields) + the
10
+ > domain safety-floor rules. Built in `road-to-capability-governance` Phase 1;
11
+ > `risk_class` becomes a real pack field in Phase 2.
12
+
13
+ ## Policy by risk class
14
+
15
+ | `risk_class` | default install | consent | council / deep-research | disclaimer | eval expectation | surface_tier |
16
+ |---|---|---|---|---|---|---|
17
+ | **low** | per profile | no | no | no | optional | `core` |
18
+ | **medium** (advisory) | per profile | no | no | **yes** (domain safety floor) | recommended | `core` |
19
+ | **high** | **no** (opt-in) | **yes** | **yes** (fail-closed) | **yes** | **yes** | `lab` |
20
+
21
+ - **low** — engineering, product, meta, and tooling packs. Normal capability; no domain liability surface.
22
+ - **medium (advisory)** — packs that emit advisory-shaped output (finance, strategy). They carry a **domain safety floor** that mandates a not-X-advice disclaimer + structural elements (assumptions / counter-case / confidence). Not off-by-default, but never a final call.
23
+ - **high** — regulated-advice-adjacent. Off by default, consent-gated, council-gated (fail-closed), disclaimer-bound, eval-backed, lab-tier, and promotion-gated behind a professional review.
24
+
25
+ ## Per-pack assignment (non-low)
26
+
27
+ | Pack | `risk_class` | Floor | Gates |
28
+ |---|---|---|---|
29
+ | `legal-review-prep` | **high** | `legal-safety-floor` | consent (`legal_review_prep.acknowledged`) · council (`require_council`, fail-closed) · hard individual-case STOP · attorney-review line + `Jurisdiction:` tag · attorney-framing-review promotion tripwire · `default_install: false` · `surface_tier: lab` |
30
+ | `finance-basic` | medium | `finance-safety-floor` | not-financial-advice disclaimer · assumptions + sensitivity + confidence + counter-case · no final invest/raise call |
31
+ | `finance-advanced` | medium | `finance-safety-floor` | as finance-basic (DCF / scenario depth) |
32
+ | `founder-strategy` | medium | `strategy-safety-floor` | not-a-strategic-decision footer · bet + counter-case + residual risk + decision owner |
33
+
34
+ Every other pack in `packs.yml` is **low** by default. A pack moves to medium the
35
+ moment it ships advisory-shaped output behind a domain safety floor, and to high
36
+ only through the high-risk checklist (consent + council + disclaimer + eval +
37
+ lab + promotion gate) — see `road-to-legal-review-prep` for the worked example.
38
+
39
+ ## Capability lifecycle (a view, not a new axis)
40
+
41
+ Reviewers wanted one lifecycle vocabulary for promoting / retiring capabilities.
42
+ This is a **derived view** over the metadata that already exists
43
+ (`trust_level_default` + `surface_tier` + eval presence) — **not** a new field.
44
+ Nothing to set; it is read off what is already there.
45
+
46
+ | Lifecycle | Derived from | Promotion criterion (to reach it) |
47
+ |---|---|---|
48
+ | **experimental** | `surface_tier: lab` **or** `trust_level_default: experimental` | default for any new pack/skill |
49
+ | **validated** | `surface_tier: core` **and** has an `evals/` (or regression harness) | a real eval exists + the pack left lab |
50
+ | **recommended** | validated **and** in a default profile / ≥1 real consumer | adoption evidence, not just existence |
51
+ | **deprecated** | a `deprecated`/`superseded_by` marker in frontmatter | a successor named (per the persona/skill deprecation discipline) |
52
+
53
+ Read the lifecycle column off the matrix above: a `lab` + `experimental` pack
54
+ (e.g. `legal-review-prep`, `ai-video`) is **experimental**; a `core` pack with an
55
+ eval is **validated**; a `core` pack a profile ships is **recommended**.
56
+ Promotion stays a human/maintainer decision (criteria-documented, never
57
+ automated — see `road-to-capability-governance` Phase 6).
58
+
59
+ ## See also
60
+
61
+ - [`legal-safety-floor`](../../src/rules/legal-safety-floor.md) — the high-risk exemplar.
62
+ - `finance-safety-floor` · `strategy-safety-floor` — the medium-risk advisory floors.
63
+ - [`domain-pack-architecture`](../guidelines/agent-infra/domain-pack-architecture.md) — the pack build sequence.
64
+ - `road-to-capability-governance` Phase 2 — `risk_class` as a validated pack field.
@@ -28,7 +28,7 @@ column 1 of this table.
28
28
 
29
29
  | Cluster | Phase | Sub-commands | Replaces |
30
30
  |---|:-:|---|---|
31
- | `fix` | 1 | `ci` · `pr-comments` · `pr-bot-comments` · `pr-developer-comments` · `portability` · `refs` · `seeder` | `fix-ci` · `fix-pr-comments` · `fix-pr-bot-comments` · `fix-pr-developer-comments` · `fix-portability` · `fix-references` · `fix-seeder` |
31
+ | `fix` | 1 | `ci` · `pr-comments` · `pr-bot-comments` · `pr-developer-comments` · `portability` · `refs` · `seeder` · `comments` | `fix-ci` · `fix-pr-comments` · `fix-pr-bot-comments` · `fix-pr-developer-comments` · `fix-portability` · `fix-references` · `fix-seeder`; `comments` added 2026-06-22 — audits the **code comments** in the current branch's diff (simplify / shorten / remove), distinct from the PR-review-thread `pr-comments` sub |
32
32
  | `optimize` | 1 | `agents-dir` · `augmentignore` · `rtk` · `skills` | `optimize-augmentignore` · `optimize-rtk-filters` · `optimize-skills` · former `/optimize agents` and `/optimize agents-md` moved to the `/agents` file-family cluster 2026-05-09; `/agents prepare/audit/cleanup` collapsed into the single `/optimize agents-dir` (flags or wizard) per the agent-doc consolidation |
33
33
  | `feature` | 1 | `explore` · `plan` · `refactor` · `roadmap` · `dev` | `feature-explore` · `feature-plan` · `feature-refactor` · `feature-roadmap` · `feature-dev` |
34
34
  | `chat-history` | 2 | `show` · `import` · `learn` | `chat-history` (legacy status) — `resume` / `clear` / `checkpoint` removed in `road-to-chat-history-hook-only` (auto-adopt + structural hooks); `import` (verbatim cross-session render) and `learn` (project-improving learning extraction) added in the v4 stateless schema |
@@ -74,7 +74,7 @@
74
74
  },
75
75
  "workspace_id": {
76
76
  "type": "string",
77
- "enum": ["engineering", "product", "finance", "founder", "gtm", "ops", "small-business", "construction", "agent-config-maintainer"]
77
+ "enum": ["engineering", "product", "finance", "founder", "gtm", "ops", "small-business", "construction", "legal-review-prep", "agent-config-maintainer"]
78
78
  },
79
79
  "pack_id": {
80
80
  "type": "string",
@@ -84,7 +84,7 @@
84
84
  "finance-basic", "finance-advanced",
85
85
  "gtm-sales", "gtm-marketing",
86
86
  "ops-people", "founder-strategy", "small-business", "construction", "ai-video", "ai-image", "fun", "meta", "git", "frontend-design", "brand",
87
- "memory", "analytics", "product-reasoning", "analysis-workbench"
87
+ "memory", "analytics", "product-reasoning", "analysis-workbench", "legal-review-prep"
88
88
  ]
89
89
  },
90
90
  "lifecycle": {
@@ -156,5 +156,8 @@ layout + cloud-bundle pipeline:
156
156
  3. Commit in logical chunks with Conventional Commits.
157
157
  4. Open a PR against `main`.
158
158
 
159
+ Per-pack safety posture (default-install / consent / council / disclaimer /
160
+ risk_class): [`capability-boundary.md`](capability-boundary.md).
161
+
159
162
  User-facing story: [`README.md`](../../README.md). Architecture
160
163
  deep-dive: [`docs/architecture.md`](../architecture.md).
@@ -0,0 +1,54 @@
1
+ # Subagent Boundary Contract
2
+
3
+ What a subagent **owns** and what it must **never** own. As delegation spreads
4
+ (the `subagent-orchestration` modes, the `delegation-policy` auto-trigger,
5
+ workflow fan-out), the failure mode is scope drift: a subagent quietly
6
+ redefining the task, expanding scope, or bypassing a floor. This contract draws
7
+ the line.
8
+
9
+ ## The ownership line
10
+
11
+ A subagent **executes one scoped, named task and returns a conclusion.** That is
12
+ the whole of its authority.
13
+
14
+ ### A subagent OWNS
15
+
16
+ - **Its scoped task** — the single, well-specified slice it was dispatched with.
17
+ - **Its method** — how it searches, reads, reasons, or drafts within that slice.
18
+ - **Its return** — a conclusion + evidence, sized to what the orchestrator asked for (structured output when a schema was given).
19
+
20
+ > **Explainability is durable, not host-ephemeral.** The return must carry a brief
21
+ > *why + evidence* (which sources/steps led to the conclusion) **in the artefact /
22
+ > output itself**, not only in the host's session reasoning. A user opening the
23
+ > result later — possibly across sessions — must be able to trace the *why* without
24
+ > reassembling provider chat logs. This is the reasoning-in-notes discipline applied
25
+ > to delegation: conclusions + evidence travel with the output, raw chain-of-thought
26
+ > does not.
27
+
28
+ ### A subagent must NEVER own
29
+
30
+ - **Task meaning** — it does not redefine, broaden, or reinterpret the parent task. An ambiguous slice returns "ambiguous + why", it does not guess a bigger task.
31
+ - **Cross-task memory / state** — it does not write durable memory, mutate shared roadmaps, or persist decisions for other tasks; its output is its only channel.
32
+ - **Pack / surface decisions** — it does not decide what ships, what installs, or what a pack contains; those are orchestrator + human calls.
33
+ - **Safety-floor bypass** — every floor applies *inside* the subagent. The Hard Floor ([`non-destructive-by-default`](../../src/rules/non-destructive-by-default.md)), the domain safety floors, [`scope-control`](../../src/rules/scope-control.md), and [`commit-policy`](../../src/rules/commit-policy.md) are not lifted by being one level down. A subagent cannot do what its parent may not.
34
+ - **Silent scope expansion** — touching files / systems beyond its slice is a contract violation, surfaced, not absorbed.
35
+
36
+ ## Orchestrator obligations (the other side)
37
+
38
+ - **Verify, never adopt blind** — a subagent return is evidence, not truth; the orchestrator verifies per [`delegation-policy`](../../src/rules/delegation-policy.md)'s Iron Law before adopting it.
39
+ - **Tier-size the slice, not the agent** — dispatch at the slice's complexity, not the session's.
40
+ - **Own the safety decision** — a Hard-Floor or egress action surfaced by a subagent is decided by the orchestrator + human, never executed by the subagent.
41
+
42
+ ## Failure modes
43
+
44
+ - A research subagent that, finding the task underspecified, invents a broader task and "helpfully" does it.
45
+ - A subagent that writes to shared memory / a roadmap dashboard as a side effect.
46
+ - A subagent that commits, pushes, or deletes because "the task implied it".
47
+ - An orchestrator that pastes a subagent's claim into the answer without verifying it.
48
+
49
+ ## See also
50
+
51
+ - [`subagent-orchestration`](../../src/skills/subagent-orchestration/SKILL.md) — the dispatch modes this contract bounds.
52
+ - [`delegation-policy`](../../src/rules/delegation-policy.md) — the delegate-by-default trigger + verify-every-return Iron Law.
53
+ - [`capability-boundary`](capability-boundary.md) — the pack-level companion (this is the agent-level one).
54
+ - [`non-destructive-by-default`](../../src/rules/non-destructive-by-default.md) — the Hard Floor that applies inside subagents too.
@@ -93,6 +93,7 @@ install:
93
93
  | `ops` | Operations | Hiring, comp, perf, org design, runbooks. |
94
94
  | `small-business` | Small Business | Self-employed / SMB-shaped owner workflows. |
95
95
  | `construction` | Construction | Trade-business workflows (planning, quotes). |
96
+ | `legal` | Legal | In-house legal — contract/NDA/DPA review, privacy, legal triage (EU/DE scope). |
96
97
  | `agent-config-maintainer` | Maintainer | Skills/rules/commands that maintain *this* package. |
97
98
 
98
99
  Amendments to the workspace list require an ADR-013 amendment.
@@ -120,6 +121,7 @@ Amendments to the workspace list require an ADR-013 amendment.
120
121
  | `founder-strategy` | Vision, fundraising narrative, competitive moat. (Renamed from `founder` to honour the non-overlap rule against `profile.id: founder`.) |
121
122
  | `small-business` | SMB-shaped owner workflows. |
122
123
  | `construction` | Trade-business workflows. |
124
+ | `legal` | In-house legal — EU/DE-scoped contract/NDA/DPA review and legal triage; procedure-only, attorney-review draft output. |
123
125
  | `ai-video` | AI video pipeline (per ADR-011, the only heavyweight domain). |
124
126
  | `fun` | Non-essential social/fun workflows (prediction-pool tips, etc.). Optional under the `small-business` workspace; `experimental` trust. |
125
127
  | `meta` | Artefacts that maintain *this* package (`agent-config` itself). |
@@ -295,6 +297,36 @@ consistency governance that constrains UI). Mirrored in
295
297
  2026-06-13 (road-to-image-brand-typography Phase B). Additive, no rename;
296
298
  non-overlap with cost-profile and `profile.id` reservations holds.
297
299
 
300
+ ### 2026-06-24 — New `legal` workspace + `legal` pack
301
+
302
+ Added workspace id `legal` and pack id `legal` to the closed vocabularies
303
+ (in-house legal — EU/DE-scoped contract/NDA/DPA review and legal triage;
304
+ procedure-only, no default legal positions; every output a draft for attorney
305
+ review). Mirrored in
306
+ [`src/config/discovery/workspaces.yml`](../../src/config/discovery/workspaces.yml),
307
+ [`src/config/discovery/packs.yml`](../../src/config/discovery/packs.yml), and the
308
+ `ADR_WORKSPACES` + `ADR_PACKS` sets in
309
+ [`src/scripts/lint_discovery_vocabulary.ts`](../../src/scripts/lint_discovery_vocabulary.ts).
310
+ `workspaces: [legal]`, `domain: legal`, `size_class: medium`,
311
+ `trust_level_default: experimental`, `surface_tier: lab` (gated lab-tier until the
312
+ Gate-2 maintenance owner + external qualification is confirmed —
313
+ road-to-legal-pack Phase 0.2). Council-resolved across three rounds 2026-06-24
314
+ (road-to-legal-pack). Additive, no rename; non-overlap with cost-profile and
315
+ `profile.id` reservations holds.
316
+
317
+ ### 2026-06-24 — Rename `legal` → `legal-review-prep` (workspace + pack)
318
+
319
+ Renamed the workspace id and pack id `legal` → `legal-review-prep` in both
320
+ closed vocabularies, the schema enums, and all artefacts (`src/domains/legal/`
321
+ → `src/domains/legal-review-prep/`, the five skill frontmatters, the
322
+ `legal-safety-floor` rule). Driven by a deep AI-council (3 rounds,
323
+ anthropic/claude-sonnet-4-5 + openai/gpt-4o, 2026-06-24) + ~8 external
324
+ 7.1.0 reviewers: the name `legal` reads as "legal advice" and undermines the
325
+ not-legal-advice positioning; `legal-review-prep` names the actual capability
326
+ (prepare for attorney review). The `domain: legal` classifier and the `legal`
327
+ user-type are a different axis and are unchanged. Rename, not additive;
328
+ non-overlap reservations still hold. See `road-to-legal-review-prep` Phase 0.
329
+
298
330
  ## Cross-references
299
331
 
300
332
  - [ADR-007 — Agent Discovery Scopes](ADR-007-agent-discovery-scopes.md):