@event4u/agent-config 9.32.0 → 9.34.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 (109) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +85 -72
  3. package/dist/agent-src/commands/agent-handoff.md +15 -3
  4. package/dist/agent-src/commands/review/routing.md +3 -4
  5. package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +65 -0
  6. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +3 -0
  7. package/dist/agent-src/rules/delegation-policy.md +6 -0
  8. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +35 -1
  9. package/dist/agent-src/scripts/roadmap_gates.ts +107 -3
  10. package/dist/agent-src/skills/corpus-grounding/SKILL.md +21 -12
  11. package/dist/agent-src/skills/design-tokens/SKILL.md +15 -0
  12. package/dist/agent-src/skills/docker/SKILL.md +11 -0
  13. package/dist/agent-src/skills/laravel/SKILL.md +11 -0
  14. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +24 -0
  15. package/dist/agent-src/skills/review-routing/SKILL.md +23 -6
  16. package/dist/agent-src/skills/rule-writing/SKILL.md +23 -0
  17. package/dist/agent-src/skills/skill-writing/SKILL.md +80 -2
  18. package/dist/agent-src/skills/systematic-debugging/SKILL.md +5 -3
  19. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +24 -0
  20. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  21. package/dist/agent-src/templates/scripts/ownership-map.example.yml +1 -1
  22. package/dist/cli/registry.js +4 -4
  23. package/dist/cli/registry.js.map +1 -1
  24. package/dist/cli-delegate/chunk-HTIU3W56.js +66 -0
  25. package/dist/cli-delegate/{chunk-2WELHO3P.js → chunk-I5EAFRII.js} +35 -0
  26. package/dist/cli-delegate/{chunk-ITIQSGOQ.js → chunk-MA4GFWDY.js} +7 -4
  27. package/dist/cli-delegate/{chunk-PFBV6XRT.js → chunk-Q26HT4QT.js} +1 -63
  28. package/dist/cli-delegate/{chunk-542DZR4P.js → chunk-REMEZSVP.js} +1660 -146
  29. package/dist/cli-delegate/{chunk-3EWYC3YK.js → chunk-UEZ7D35A.js} +4 -3
  30. package/dist/cli-delegate/{chunk-LVRYBKTI.js → chunk-YPAWXXXR.js} +158 -0
  31. package/dist/cli-delegate/cmd_conformance.js +256 -226
  32. package/dist/cli-delegate/cmd_doctor.js +3 -2
  33. package/dist/cli-delegate/cmd_export.js +1 -1
  34. package/dist/cli-delegate/cmd_handoff.js +21 -28
  35. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  36. package/dist/cli-delegate/cmd_prune.js +1 -1
  37. package/dist/cli-delegate/cmd_route_audit.js +1 -1
  38. package/dist/cli-delegate/cmd_session_recycle.js +20 -5
  39. package/dist/cli-delegate/cmd_settings_get.js +4 -2
  40. package/dist/cli-delegate/cmd_settings_migrate.js +1 -1
  41. package/dist/cli-delegate/cmd_settings_set.js +5 -3
  42. package/dist/cli-delegate/cmd_sync.js +1 -1
  43. package/dist/cli-delegate/cmd_uninstall.js +1 -1
  44. package/dist/cli-delegate/cmd_validate.js +1 -1
  45. package/dist/discovery/deprecation-report.md +1 -1
  46. package/dist/discovery/discovery-manifest.json +17 -17
  47. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  48. package/dist/discovery/discovery-manifest.summary.md +2 -2
  49. package/dist/discovery/dormancy-report.md +17 -0
  50. package/dist/discovery/orphan-report.md +1 -1
  51. package/dist/discovery/packs.json +3 -3
  52. package/dist/discovery/trust-report.md +1 -1
  53. package/dist/discovery/workspaces.json +3 -3
  54. package/dist/hooks/dispatch.js +114 -7
  55. package/dist/install/install.mjs +7 -4
  56. package/dist/mcp/registry-manifest.json +3 -3
  57. package/dist/mcp/server.json +2 -2
  58. package/dist/mcp/server.mjs +3755 -1168
  59. package/docs/guidelines/agent-infra/failure-signatures.md +47 -12
  60. package/package.json +2 -2
  61. package/src/agent-src/scripts/archive_completed_roadmaps.ts +35 -1
  62. package/src/agent-src/scripts/roadmap_gates.ts +107 -3
  63. package/src/agent-src/templates/scripts/ownership-map.example.yml +1 -1
  64. package/src/config/cost-parity-budget.json +167 -0
  65. package/src/config/gate-coverage.yml +44 -5
  66. package/src/config/quorum-attendance-budget.json +39 -0
  67. package/src/scripts/_cli/cmd_doctor.ts +69 -1
  68. package/src/scripts/_cli/cmd_session_recycle.ts +25 -4
  69. package/src/scripts/_dispatch.bash +5 -3
  70. package/src/scripts/_lib/env_kill_switch.ts +37 -0
  71. package/src/scripts/_lib/orchestration_record.ts +45 -0
  72. package/src/scripts/_lib/security_lint.ts +18 -4
  73. package/src/scripts/_lib/self_repair.ts +60 -0
  74. package/src/scripts/_lib/self_repair_store.ts +65 -5
  75. package/src/scripts/_lib/subagent_capsule.ts +78 -1
  76. package/src/scripts/ai_council/clients.ts +31 -0
  77. package/src/scripts/ai_council/events_log.ts +130 -8
  78. package/src/scripts/ai_council/orchestrator.ts +50 -3
  79. package/src/scripts/ai_council/pricing.ts +48 -1
  80. package/src/scripts/ai_council/prompts.ts +165 -3
  81. package/src/scripts/ai_council/quorum.ts +30 -0
  82. package/src/scripts/ai_council/session.ts +11 -0
  83. package/src/scripts/ai_team/review_gate.ts +2 -2
  84. package/src/scripts/ask_transport.ts +20 -1
  85. package/src/scripts/build_discovery_manifest.ts +165 -0
  86. package/src/scripts/cache_realization_report.ts +38 -0
  87. package/src/scripts/check_claims.ts +51 -2
  88. package/src/scripts/check_release_highlights.ts +7 -1
  89. package/src/scripts/ci_time_ratio.ts +3 -1
  90. package/src/scripts/conformance_scan.ts +105 -0
  91. package/src/scripts/cost/track.mjs +39 -0
  92. package/src/scripts/cost_summary.ts +104 -1
  93. package/src/scripts/council_cli.ts +131 -13
  94. package/src/scripts/discovery_graph.ts +201 -27
  95. package/src/scripts/dispatch_economy_report.ts +5 -2
  96. package/src/scripts/dispatch_r2_reviewer.ts +102 -1
  97. package/src/scripts/install.ts +20 -6
  98. package/src/scripts/lint_budget_ownership.ts +81 -0
  99. package/src/scripts/lint_handoffs.ts +92 -2
  100. package/src/scripts/lint_hedge_words.ts +317 -0
  101. package/src/scripts/lint_mcp_config_security.ts +1 -1
  102. package/src/scripts/lint_skill_frontmatter_safety.ts +56 -2
  103. package/src/scripts/lint_workflow_paths.ts +384 -0
  104. package/src/scripts/preamble_byte_census.ts +9 -1
  105. package/src/scripts/report_carrier_divergence.ts +10 -0
  106. package/src/scripts/report_conformance_funnel.ts +40 -0
  107. package/src/scripts/schemas/subagent.schema.json +3 -2
  108. package/src/scripts/self_repair_cli.ts +26 -1
  109. package/src/scripts/skill_linter.ts +58 -2
@@ -184,18 +184,27 @@ Each domain ships `data/manifest.json` beside its CSVs — declaring its
184
184
  - BM25 tokenizer drops tokens ≤2 chars — "UI", "a11y" style queries need
185
185
  longer companions.
186
186
 
187
- ## Runtime-safety review (Step 1.6 record)
188
-
189
- - **Read-only by default** — the engine opens corpus CSVs under the
190
- manifest's directory only (`resolve_data_path` refuses absolute paths
191
- and `..` escapes).
192
- - **Single write surface** — `--persist DIR` (opt-in) writes markdown
193
- under the caller-chosen `DIR`; nothing else writes.
194
- - **No network, no subprocess, no secrets** — pure stdlib; embeddings /
195
- remote retrievers are intentionally not implemented (ADR-061 §2).
196
- - `rules_module` executes a manifest-adjacent TypeScript module (dynamic
197
- `import()`) — same trust domain as the skill that ships the manifest;
198
- containment enforced by `resolve_data_path`.
187
+ ## Security constraints (Step 1.6 runtime-safety record)
188
+
189
+ Four scripts ship under `scripts/`: `ground.ts` (CLI), `bm25_search.ts`,
190
+ `decision_engine.ts`, `schema_validator.ts`.
191
+
192
+ - **What they may touch** — corpus CSVs and the manifest under the
193
+ manifest's own directory. `resolve_data_path` refuses absolute paths and
194
+ `..` escapes, so the manifest directory is the read boundary.
195
+ - **What they must never do** — read outside that directory, reach the
196
+ network, or spawn a subprocess. Embeddings and remote retrievers are
197
+ intentionally not implemented (ADR-061 §2), and that is a containment
198
+ decision, not a missing feature.
199
+ - **Default invocation** — read-only. The single write surface is opt-in
200
+ `--persist DIR`, which writes `MASTER.md` (and `pages/<page>.md` when
201
+ `--page` is given) under `DIR/design-system/<project-slug>/`. Nothing
202
+ else writes.
203
+ - **Outbound** — nothing. No network access at all.
204
+
205
+ One qualified exception: `rules_module` executes a manifest-adjacent
206
+ TypeScript module via dynamic `import()`. That is the same trust domain as
207
+ the skill shipping the manifest, and its containment is `resolve_data_path`.
199
208
 
200
209
  ## See also
201
210
 
@@ -113,6 +113,21 @@ four-operation split assigns to *rules/linters*, not the corpus).
113
113
  3. `validate` report — exit 0 evidence, or the violations list handed to
114
114
  the polish round as `token_violation` findings.
115
115
 
116
+ ## Security constraints
117
+
118
+ `scripts/tokens.ts` is the only shipped script.
119
+
120
+ - **What it may touch** — the `tokens.json` config path it is given, the
121
+ directory it is asked to `validate`, and the `--output` path it is asked
122
+ to write. Nothing outside the paths named on the command line.
123
+ - **What it must never do** — reach the network, spawn a subprocess, or
124
+ write to a path the caller did not name. It never edits the generated CSS
125
+ it produced earlier; regeneration replaces, it does not patch.
126
+ - **Default invocation** — read-only. `generate` prints to stdout unless
127
+ `--output PATH` is passed; `--output` is the flag that makes it mutating,
128
+ and it creates only that file's parent directory. `validate` never writes.
129
+ - **Outbound** — nothing. No network access.
130
+
116
131
  ## Do NOT
117
132
 
118
133
  - Do NOT hand-edit generated CSS — `tokens.json` is the single source.
@@ -83,6 +83,17 @@ Read `docker-compose.yml` / `compose.yaml` to discover the actual service names.
83
83
  - Use `make console` for interactive shell access.
84
84
  - Use `make console-xdebug` for Xdebug container access.
85
85
 
86
+ ### Tooling detection
87
+
88
+ Which test runner and quality commands exist depends on the project shape.
89
+ Check for `artisan` in the project root before picking one:
90
+
91
+ - **Laravel** (`artisan` present) — `php artisan test`, `vendor/bin/phpstan analyse`, `vendor/bin/rector process`
92
+ - **Plain Composer** (no `artisan`) — `vendor/bin/phpunit`, `vendor/bin/phpstan analyse`, `vendor/bin/rector process`
93
+
94
+ Either way the command runs inside the container:
95
+ `docker compose exec -T <php-service> <command>`.
96
+
86
97
  ### Image building
87
98
 
88
99
  - Production images use `target: pro` — no dev dependencies.
@@ -157,6 +157,17 @@ Then add these **Laravel-specific** checks:
157
157
  - Extract reusable UI pieces into components/partials when it matches project patterns.
158
158
  - Escape output by default and use raw output only when safe and intentional.
159
159
 
160
+ ## Translations and language files
161
+
162
+ - **Flat dot-notation keys only** — `'type.daily_report' => 'Daily Report'`.
163
+ Nested arrays (`'type' => ['daily_report' => …]`) are forbidden: they break
164
+ key referencing and make a one-line addition a nested diff.
165
+ - Reference with the helper and the same flat key —
166
+ `__('report.type.daily_report')`, `__('email.report.created.subject', ['number' => $number])`.
167
+ - Every key exists in **every** shipped locale. Adding to `lang/en/` without
168
+ `lang/de/` is a bug, not a TODO — the app ships to both audiences.
169
+ - Never hardcode a user-visible string in PHP.
170
+
160
171
  ## What NOT to do
161
172
 
162
173
  - Do not put business logic into controllers, models, or Blade templates.
@@ -299,6 +299,30 @@ carve-out for the tool-specific part.
299
299
  values the component no longer accepts is stale documentation; keep them beside
300
300
  the component and update them in the same change.
301
301
 
302
+ ## Security constraints
303
+
304
+ `scripts/shadcn_add.ts` is the only shipped script, and it is the single
305
+ subprocess-plus-network surface in this suite — treat it accordingly.
306
+
307
+ - **What it may touch** — the project rooted at `--project-root` (default
308
+ `cwd`): it reads `components.json` there and lets the upstream CLI write
309
+ the generated primitives under that root. Nothing outside it.
310
+ - **What it must never do** — run without the exact `npx` command and the
311
+ component list having been shown to the user first, per the gate above.
312
+ Never pass `--overwrite` unprompted; never treat a non-zero exit as
313
+ success; never work around a missing `npx` silently
314
+ ([`missing-tool-handling`](../../rules/missing-tool-handling.md)).
315
+ - **Default invocation** — mutating. A bare `shadcn_add <component>`
316
+ spawns `npx shadcn@latest add <component>` and writes into the project.
317
+ `--dry-run` is the read-only path and prints the command it would run;
318
+ `--list` is read-only too. Use `--dry-run` for the proposal step.
319
+ - **Outbound** — yes, and this is the point of the gate: `npx` resolves
320
+ `shadcn@latest` from the public npm registry on every live run, so both
321
+ the code fetched and the components written are chosen upstream, at run
322
+ time, not pinned here. That is the egress leg of the lethal trifecta
323
+ ([`lethal-trifecta-guard`](../../rules/lethal-trifecta-guard.md)); the
324
+ human confirmation is what keeps it off an autonomous path.
325
+
302
326
  ## Do NOT
303
327
 
304
328
  - Do NOT install `shadcn-ui` from npm — primitives are scaffolded.
@@ -28,8 +28,8 @@ packs:
28
28
 
29
29
  Do NOT use when:
30
30
 
31
- - The diff is low-risk and no ownership map exists — fall back to
32
- [`reviewer-awareness`](../../rules/reviewer-awareness.md) defaults.
31
+ - The diff is low-risk and no ownership map exists — fall back to the
32
+ common role vocabulary below.
33
33
  - A full PR description is requested — route to
34
34
  [`create-pr-description`](../create-pr:description-only/SKILL.md) and let
35
35
  it call this skill for the routing block.
@@ -55,7 +55,7 @@ Check, in order:
55
55
  Parse each with YAML. Validate `version: 1` is present. If a file is
56
56
  malformed, **stop and report the parse error** — never silently fall
57
57
  back. If neither file exists, emit the generic role-based fallback
58
- using [`reviewer-awareness`](../../rules/reviewer-awareness.md).
58
+ using the common role vocabulary below.
59
59
 
60
60
  **Also** pull agent-written signals via the shared abstraction (see
61
61
  [`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md)):
@@ -114,12 +114,29 @@ If `ownership-map.yml` has an `updated` field older than 6 months,
114
114
  include a staleness warning in the output. Still use the data — just
115
115
  flag it.
116
116
 
117
+ ## Common role vocabulary
118
+
119
+ The fallback set when no ownership entry matches. Extend it per project, but
120
+ keep these as the shared names — a role nobody else uses routes to nobody.
121
+
122
+ | Role | Typical focus |
123
+ |---|---|
124
+ | `backend` | business logic, validation, side effects, data integrity |
125
+ | `frontend` | UX, accessibility, client-side state, rendering |
126
+ | `security` | authz, secrets, trust boundaries, data exposure |
127
+ | `infra` / `ops` | rollout, migration safety, observability, retries |
128
+ | `database` | schema changes, indexes, query plans, rollback realism |
129
+ | `domain owner` | business invariants, policy intent, edge-case correctness |
130
+ | `qa` | test coverage, regression scenarios, flake risk |
131
+
132
+ Roles, never individuals: a package-shipped artifact names `security`, and the
133
+ consumer's CODEOWNERS or ownership map maps that to a person.
134
+
117
135
  ## Validation
118
136
 
119
137
  Before returning:
120
138
 
121
- 1. Every emitted role is either in the common vocabulary
122
- ([`reviewer-awareness`](../../rules/reviewer-awareness.md)) or sourced
139
+ 1. Every emitted role is either in the common vocabulary above or sourced
123
140
  from an ownership entry — never invented.
124
141
  2. Every historical-pattern match cites its `id` and `required_test`
125
142
  verbatim.
@@ -191,7 +208,7 @@ Data source: <"ownership-map.yml + historical-bug-patterns.yml"
191
208
 
192
209
  ## See also
193
210
 
194
- - [`reviewer-awareness`](../../rules/reviewer-awareness.md) — role vocabulary + data-source rules
211
+ - [`reviewer-awareness`](../../rules/reviewer-awareness.md) — the rule that routes here: anchor reviewer choice in paths and risk, never seniority
195
212
  - [`review-routing-data-format`](../../../docs/guidelines/agent-infra/review-routing-data-format.md)
196
213
  - [`create-pr-description`](../create-pr:description-only/SKILL.md)
197
214
  - [`judge-test-coverage`](../judge-test-coverage/SKILL.md) — consumes
@@ -355,3 +355,26 @@ Good description (trigger-shaped, names domain + symptoms):
355
355
  Bad description (no trigger, too vague):
356
356
 
357
357
  > "Commit conventions"
358
+
359
+ ### Contrastive-example slot (optional, for the rule body)
360
+
361
+ The pair above governs descriptions. A rule whose obligation is easy to agree
362
+ with and hard to apply — what counts as a cheap question, when an interrupt is
363
+ an interrupt, which reply mirrors the user's language — needs the same treatment
364
+ for the **behaviour**, not just the frontmatter.
365
+
366
+ Six live corpora already carry those pairs:
367
+ [`direct-answers-demos`](../../../docs/guidelines/agent-infra/direct-answers-demos.md),
368
+ [`asking-and-brevity-examples`](../../../docs/guidelines/agent-infra/asking-and-brevity-examples.md),
369
+ [`language-and-tone-examples`](../../../docs/guidelines/agent-infra/language-and-tone-examples.md),
370
+ and `autonomy-examples` / `interrupt-examples` / `cheap-question-mechanics` under
371
+ `src/agent-src/contexts/execution/`. Follow one; do not invent a format.
372
+
373
+ The shape they share: the **wrong** version in the form it actually gets
374
+ written, the **right** version, and one line of **why** — the why is what makes
375
+ it a rule rather than a memorised case.
376
+
377
+ Where the pairs go is a size decision, not a taste one. A rule body is capped at
378
+ 200 lines hard / 120 soft, so more than two or three pairs belong in a guideline
379
+ or context file the rule points at — same split
380
+ [`skill-writing`](../skill-writing/SKILL.md) § Contrastive-example slot uses.
@@ -530,7 +530,7 @@ tool skill*, **never** a new skill per pitfall and never a generated grid (see
530
530
  [`size-enforcement`](../../rules/size-enforcement.md) § Per-tool pitfall
531
531
  content).
532
532
 
533
- ## Rationalizations-to-reject section (required, security-stop-routed skills)
533
+ ## Rationalizations-to-reject section (recommended pattern, security-stop-routed skills)
534
534
 
535
535
  A skill routed by `security-sensitive-stop` already carries a forbidden-moves or
536
536
  failure-mode list. Those describe **what is wrong**. They do not answer the
@@ -553,7 +553,7 @@ the skip actually happens.
553
553
  Keep it to the arguments that have really been made. An invented rationalization
554
554
  teaches nothing and dilutes the ones that recur.
555
555
 
556
- ## Non-negotiable-deliverable section (required, adjacent-technology clusters)
556
+ ## Non-negotiable-deliverable section (recommended pattern, adjacent-technology clusters)
557
557
 
558
558
  Some skills sit next to a technology that is a *tempting wrong answer* — close
559
559
  enough to look interchangeable, different enough that picking it silently loses
@@ -644,6 +644,84 @@ This duplicates the rules on purpose, and the duplication is the point: the
644
644
  rules are the enforcement, the section is what survives the artifact leaving
645
645
  their reach.
646
646
 
647
+ ## Mechanism-teaching section (optional pattern, skills whose subject has one)
648
+
649
+ A procedure tells the agent what to do in the cases you thought of. A
650
+ **mechanism** tells it why those steps work, which is the only thing that
651
+ transfers to the case you did not. Where a skill's subject has a mechanism worth
652
+ one screen — how the cascade resolves, why the queue drops the message, what the
653
+ scheduler actually orders — state it in a `## How it works` section, ahead of the
654
+ procedure that depends on it.
655
+
656
+ Keep it to one screen and to mechanisms only: no history, no alternatives-considered,
657
+ no restating the procedure in prose. If it takes more than a screen, the skill is
658
+ carrying a guideline's worth of material and should point at one instead.
659
+
660
+ The test for whether it earns its place: name a plausible situation the procedure
661
+ does not cover, and check whether this section is enough to answer it. If the
662
+ answer is still "read the source", the section is decoration.
663
+
664
+ Optional, and it gets no gate: "teaches a mechanism" is a prose judgement, and a
665
+ predicate over prose is the false-positive class this file's other patterns avoid.
666
+
667
+ ## Illustrative-not-verbatim marker (optional pattern, reference code)
668
+
669
+ A code block in a skill is read as copy-me by default. When a block is teaching a
670
+ *shape* — a signature to mirror, a structure to follow, pseudocode standing in for
671
+ the real call — say so on the line above it:
672
+
673
+ ```
674
+ <!-- illustrative: shape only, not a working snippet -->
675
+ ```
676
+
677
+ One line, immediately above the fence, in the skill's own words if you prefer.
678
+ What matters is that the reader can tell shape-teaching code from code that runs,
679
+ because the failure mode is silent: an agent pastes the illustration, it almost
680
+ works, and the debugging starts from the wrong premise.
681
+
682
+ The inverse deserves the same care — a block that IS meant to be run verbatim,
683
+ where a reader might assume otherwise, says so too. See also `### 4. Add
684
+ safe/unsafe example`, which governs a different axis: safe-vs-unsafe, not
685
+ runnable-vs-illustrative.
686
+
687
+ ## Headline metric + closing report (optional pattern, optimization skills)
688
+
689
+ A skill whose job is to make something better — smaller, faster, cheaper, quieter
690
+ — has to say **which single number it moves**. Without one, "optimized" is a
691
+ claim nobody can check and every run reports success.
692
+
693
+ So an optimization skill names, up front:
694
+
695
+ 1. **The headline metric.** One number, with its unit and how it is measured.
696
+ "Initial-context tokens, measured by `audit-tokens`" — not "context cost".
697
+ 2. **The closing report shape.** Before, after, delta, and the command that
698
+ produced both. The same command for both readings, or the delta is not a delta.
699
+
700
+ State what the metric does **not** capture, in one line. An optimization that
701
+ moves the headline number by degrading something it does not measure is the
702
+ failure this pattern exists to make visible, and only the author knows where that
703
+ edge is.
704
+
705
+ ## Contrastive-example slot (optional pattern, authoring and behaviour skills)
706
+
707
+ Where a skill's guidance is easy to agree with and hard to apply — tone, phrasing,
708
+ question shape, what counts as evidence — a wrong/right pair does what prose
709
+ cannot: it shows the near-miss. Six live corpora already carry them:
710
+ [`direct-answers-demos`](../../../docs/guidelines/agent-infra/direct-answers-demos.md),
711
+ [`asking-and-brevity-examples`](../../../docs/guidelines/agent-infra/asking-and-brevity-examples.md),
712
+ [`language-and-tone-examples`](../../../docs/guidelines/agent-infra/language-and-tone-examples.md),
713
+ and `autonomy-examples` / `interrupt-examples` / `cheap-question-mechanics` under
714
+ `src/agent-src/contexts/execution/`.
715
+
716
+ Follow one of those rather than inventing a format. The shape they share: the
717
+ **wrong** version first, in the form it actually gets written; the **right**
718
+ version second; and one line of **why** — which is the load-bearing part, because
719
+ a pair without it teaches the specific case and not the rule.
720
+
721
+ Put the corpus in a guideline or context file and point at it from the skill when
722
+ it outgrows a section. A near-miss corpus is reference material read on demand,
723
+ not always-loaded prose.
724
+
647
725
  ## Do NOT
648
726
 
649
727
  * Write documentation-style, pointer-only, or too-broad skills ("Laravel skill", "Django skill")
@@ -222,10 +222,12 @@ right line beats five minutes of IDE breakpoints.
222
222
 
223
223
  **Known failure signature?** If the symptom has a recognisable shape — a
224
224
  tool/agent loop, HTTP 429, `ECONNREFUSED`, `ENOENT`, timeout/hang, OOM, flaky
225
- test, or works-locally-fails-in-CI — consult the symptom → cause → first-check
225
+ test, works-locally-fails-in-CI, or repeated attempts at a tool that is not
226
+ available — consult the symptom → cause → first-check
226
227
  lookup in [`failure-signatures`](../../../docs/guidelines/agent-infra/failure-signatures.md)
227
- to shortcut Phase 2 (Isolate) with the highest-probability first check. It
228
- supplements the loop; it does not replace it.
228
+ to shortcut Phase 2 (Isolate) with the highest-probability first check. Each row
229
+ carries a stable id you can cite, and a discrimination drill that produces its
230
+ documented symptom. It supplements the loop; it does not replace it.
229
231
 
230
232
  ## Condition-based waiting (intermittent bugs)
231
233
 
@@ -157,8 +157,32 @@ Risks: <arbitrary values, !important, dark-mode gaps>
157
157
 
158
158
  When `DESIGN.md` declares `## Taste Dials`, honour them: Variance → layout-family spread + asymmetry tolerance; Motion → animation budget + reduced-motion posture; Density → spacing scale + information-per-viewport. Absent → follow the design brief's inferred dials.
159
159
 
160
+ ## Security constraints
161
+
162
+ `scripts/tailwind_config_gen.ts` is the only shipped script.
163
+
164
+ - **What it may touch** — exactly one file: `--output PATH`, or
165
+ `tailwind.config.ts` / `.js` in the current working directory when no
166
+ `--output` is given. It reads nothing from the project.
167
+ - **What it must never do** — write anywhere other than that one path,
168
+ reach the network, or spawn a subprocess. It does none of these.
169
+ - **Default invocation** — **mutating**, and stated here because it is a
170
+ real exception rather than a comfortable one: a bare invocation writes
171
+ `tailwind.config.ts` into `cwd`, overwriting an existing config without
172
+ prompting. `--validate-only` is the read-only path — it prints the
173
+ generated config to stdout and writes nothing. Run `--validate-only`
174
+ first, and pass `--output` when the target is not the cwd default.
175
+ This default contradicts `skill-writing`'s "never mutate on a bare
176
+ invocation" line; it is recorded rather than silently tolerated, and
177
+ changing the script's default is a caller-visible behaviour change that
178
+ belongs in its own change, not here.
179
+ - **Outbound** — nothing. No network access.
180
+
160
181
  ## Do NOT
161
182
 
183
+ - Do NOT run `tailwind_config_gen` bare in a project that already has a
184
+ `tailwind.config.*` — it overwrites without asking. Use
185
+ `--validate-only` first, then `--output` at the intended path.
162
186
  - Do NOT add `!important` to win a specificity fight; restructure
163
187
  the cascade or extract the conflicting style.
164
188
  - Do NOT introduce a new colour outside `tailwind.config` without
@@ -39,7 +39,7 @@ schema_version: 1
39
39
  # CI guard: a release bump of `package.json` must update this value
40
40
  # in lockstep — see scripts/check_template_pin_drift.ts (road-to-
41
41
  # portable-runtime-and-update-check P3.3).
42
- agent_config_version: "9.32.0"
42
+ agent_config_version: "9.34.0"
43
43
 
44
44
  # --- Project identity ---
45
45
  project:
@@ -3,7 +3,7 @@
3
3
  # Copy this file to `.github/ownership-map.yml` (preferred) or
4
4
  # `agents/ownership-map.yml` and adapt the entries to your stack.
5
5
  # Omitting the file entirely is fine — routing falls back to the
6
- # generic role vocabulary from `reviewer-awareness`.
6
+ # common role vocabulary in `skill:review-routing`.
7
7
  #
8
8
  # First match wins per file. List narrower globs before broader ones.
9
9
 
@@ -28,10 +28,10 @@ export const REGISTRY = [
28
28
  { name: 'settings:set', disposition: 'delegate', synopsis: 'Set one A/B-class setting in the global file; C-class keys are refused.' },
29
29
  { name: 'uninstall', disposition: 'delegate', synopsis: 'Remove bridge markers (project) or lockfile entries (global).' },
30
30
  { name: 'prune', disposition: 'delegate', synopsis: 'Remove project bridge markers not declared in installed-tools.lock.' },
31
- { name: 'doctor', disposition: 'delegate', synopsis: 'Read-only drift report: manifest ↔ filesystem.' },
31
+ { name: 'doctor', disposition: 'delegate', synopsis: 'Read-only drift report: manifest ↔ filesystem; --anatomy renders the injection anatomy.' },
32
32
  { name: 'converge', disposition: 'delegate', synopsis: 'Consented cleanup of duplicate install surfaces (surface-matrix driven).' },
33
33
  { name: 'conformance', disposition: 'delegate', synopsis: 'Consumer conformance contract: doctor --ci + installed-and-firing checks.' },
34
- { name: 'conformance:behavior', disposition: 'delegate', synopsis: 'Replay local transcripts through the mechanised conformance checks (report, not gate).' },
34
+ { name: 'conformance:behavior', disposition: 'delegate', synopsis: 'Replay local transcripts through the mechanised conformance checks (report, not gate); --why <id> traces one check.' },
35
35
  { name: 'doctor-shell', disposition: 'native', synopsis: 'Native TS-shell environment probe.' },
36
36
  { name: 'rtk:detect', disposition: 'native', synopsis: 'rtk (Rust Token Killer) presence + identity readout — contract: docs/contracts/rtk-detection.md.' },
37
37
  { name: 'ui:serve', disposition: 'native', synopsis: 'Start the local UI server.' },
@@ -58,11 +58,11 @@ export const REGISTRY = [
58
58
  { name: 'use', disposition: 'delegate', synopsis: 'Switch the active experience/profile (writes profile.id).' },
59
59
  { name: 'sessions:list', disposition: 'delegate', synopsis: 'List live agent sessions on this repository (shared session register).' },
60
60
  { name: 'sessions:claim', disposition: 'delegate', synopsis: 'Claim a roadmap for this session so other sessions skip it; --release clears it.' },
61
- { name: 'session:recycle', disposition: 'delegate', synopsis: 'Validate + write the main-session recycle envelope; the successor session resumes from it after /clear.' },
61
+ { name: 'session:recycle', disposition: 'delegate', synopsis: 'Validate + write the main-session recycle envelope (--verify validates only); the successor resumes from it after /clear.' },
62
62
  { name: 'roadmap:progress', disposition: 'delegate', synopsis: 'Regenerate agents/roadmaps-progress.md from open roadmaps.' },
63
63
  { name: 'roadmap:progress-check', disposition: 'delegate', synopsis: 'Fail if agents/roadmaps-progress.md is stale (for CI).' },
64
64
  { name: 'roadmap:archive', disposition: 'delegate', synopsis: 'Archive completed roadmaps (PR-gate sweep).' },
65
- { name: 'gates', disposition: 'delegate', synopsis: 'Open decisions that need you, as actions — owner-filtered roadmap blockers; --all, --json.' },
65
+ { name: 'gates', disposition: 'delegate', synopsis: 'Open decisions that need you, as actions — owner-filtered roadmap blockers; --all, --json, --reply.' },
66
66
  { name: 'capabilities:index', disposition: 'delegate', synopsis: 'Regenerate CAPABILITIES.yaml (the package coverage index); --check for CI.' },
67
67
  { name: 'affected', disposition: 'delegate', synopsis: 'Artefacts related to <artefact> via the discovery relation-graph (BFS).' },
68
68
  { name: 'graph-explain', disposition: 'delegate', synopsis: 'Seed on a <concept>, expand 2 hops over the discovery relation-graph with a node budget.' },
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
+
3
+ // src/shared/settingsClasses.ts
4
+ var SETTINGS_CLASSES = ["A", "B", "C"];
5
+ function isSettingsClass(value) {
6
+ return SETTINGS_CLASSES.includes(value);
7
+ }
8
+ var ROW_RE = /^\|\s*`([^`]+)`\s*\|\s*([^|]*?)\s*\|/;
9
+ function parseSettingsClassRows(markdown) {
10
+ const rows = [];
11
+ const lines = markdown.split("\n");
12
+ for (let i = 0; i < lines.length; i++) {
13
+ const m = ROW_RE.exec(lines[i] ?? "");
14
+ if (m === null) {
15
+ continue;
16
+ }
17
+ const key = m[1] ?? "";
18
+ const cls = m[2] ?? "";
19
+ if (!/^[A-Za-z]$/.test(cls)) {
20
+ continue;
21
+ }
22
+ rows.push({ key, cls, line: i + 1 });
23
+ }
24
+ return rows;
25
+ }
26
+ function buildSettingsClassIndex(rows) {
27
+ const index = /* @__PURE__ */ new Map();
28
+ for (const row of rows) {
29
+ if (!isSettingsClass(row.cls) || index.has(row.key)) {
30
+ continue;
31
+ }
32
+ index.set(row.key, row.cls);
33
+ }
34
+ return index;
35
+ }
36
+ function getSettingsLeaf(root, dotted) {
37
+ let node = root;
38
+ for (const part of dotted.split(".")) {
39
+ if (typeof node !== "object" || node === null || Array.isArray(node)) {
40
+ return void 0;
41
+ }
42
+ node = node[part];
43
+ }
44
+ return node;
45
+ }
46
+ function classOfPath(index, dotted) {
47
+ const exact = index.get(dotted);
48
+ if (exact !== void 0) {
49
+ return exact;
50
+ }
51
+ const parts = dotted.split(".");
52
+ for (let end = parts.length - 1; end > 0; end--) {
53
+ const ancestor = index.get(parts.slice(0, end).join("."));
54
+ if (ancestor !== void 0) {
55
+ return ancestor;
56
+ }
57
+ }
58
+ return void 0;
59
+ }
60
+
61
+ export {
62
+ parseSettingsClassRows,
63
+ buildSettingsClassIndex,
64
+ getSettingsLeaf,
65
+ classOfPath
66
+ };
@@ -449,6 +449,38 @@ function hasBoundaryMarker(block) {
449
449
  // outside the datamarking while still riding in the same block.
450
450
  block.trimEnd().endsWith(ENVELOPE_BOUNDARY_CLOSE);
451
451
  }
452
+ var DECISION_REVERSIBILITY_TAGS = ["reversible", "irreversible"];
453
+ function decisionTagErrors(decisions) {
454
+ if (!Array.isArray(decisions)) {
455
+ return [];
456
+ }
457
+ const errors = [];
458
+ for (const line of decisions) {
459
+ if (typeof line !== "string") {
460
+ continue;
461
+ }
462
+ const m = /\[([^\]]*)\]\s*$/.exec(line.trimEnd());
463
+ if (m === null) {
464
+ continue;
465
+ }
466
+ const inner = (m[1] ?? "").trim();
467
+ const lowered = inner.toLowerCase();
468
+ if (DECISION_REVERSIBILITY_TAGS.includes(lowered)) {
469
+ if (inner !== lowered) {
470
+ errors.push(
471
+ `decisions: reversibility tag must be lower-case \u2014 got \`[${inner}]\`, expected \`[${lowered}]\``
472
+ );
473
+ }
474
+ continue;
475
+ }
476
+ if (/^i?rr?ever[a-z]*[^a-z]*$/i.test(lowered)) {
477
+ errors.push(
478
+ `decisions: \`[${inner}]\` is not a reversibility tag \u2014 use exactly ` + DECISION_REVERSIBILITY_TAGS.map((t) => `\`[${t}]\``).join(" or ") + ", or drop the bracket"
479
+ );
480
+ }
481
+ }
482
+ return errors;
483
+ }
452
484
  var RECYCLE_ENVELOPE_KEYS = /* @__PURE__ */ new Set([
453
485
  "capsule_version",
454
486
  "variant",
@@ -461,6 +493,7 @@ var RECYCLE_ENVELOPE_KEYS = /* @__PURE__ */ new Set([
461
493
  "not_carried_forward",
462
494
  "decisions",
463
495
  "constraints",
496
+ "do_not_touch",
464
497
  "open_worker_envelopes",
465
498
  "artifact_paths",
466
499
  "assumptions",
@@ -513,7 +546,9 @@ function validateRecycleEnvelope(input) {
513
546
  checkList(errors, "remaining", e["remaining"], MAX_LINE_CHARS, true);
514
547
  checkList(errors, "not_carried_forward", e["not_carried_forward"], MAX_LINE_CHARS, true);
515
548
  checkList(errors, "decisions", e["decisions"], MAX_LINE_CHARS, false);
549
+ errors.push(...decisionTagErrors(e["decisions"]));
516
550
  checkList(errors, "constraints", e["constraints"], MAX_LINE_CHARS, false);
551
+ checkList(errors, "do_not_touch", e["do_not_touch"], MAX_REF_CHARS, false);
517
552
  checkList(errors, "open_worker_envelopes", e["open_worker_envelopes"], MAX_REF_CHARS, false);
518
553
  checkList(errors, "artifact_paths", e["artifact_paths"], MAX_REF_CHARS, false);
519
554
  checkList(errors, "suggested_skills", e["suggested_skills"], MAX_REF_CHARS, false);
@@ -3062,7 +3062,7 @@ function ensure_vscode_bridge(project_root, package_type, force) {
3062
3062
  };
3063
3063
  const plugin_path = plugin_paths[package_type] ?? "./plugin/agent-config";
3064
3064
  const bridge = { "chat.pluginLocations": { [plugin_path]: true } };
3065
- merge_json_file(
3065
+ return merge_json_file(
3066
3066
  path5.join(project_root, ".vscode", "settings.json"),
3067
3067
  bridge,
3068
3068
  force,
@@ -3120,7 +3120,8 @@ function _remove_legacy_augment_trampolines() {
3120
3120
  fs6.unlinkSync(legacy);
3121
3121
  skip(`removed legacy ~/.augment/hooks/${name}`);
3122
3122
  }
3123
- } catch {
3123
+ } catch (err) {
3124
+ warn(`could not remove legacy ${legacy}: ${err instanceof Error ? err.message : String(err)}`);
3124
3125
  }
3125
3126
  }
3126
3127
  }
@@ -6169,8 +6170,10 @@ function _main_project_install(opts, project_root, parsed_tools, is_first_run) {
6169
6170
  const tools = parsed_tools;
6170
6171
  const merged_keys_by_tool = {};
6171
6172
  if (!opts.skip_bridges) {
6172
- ensure_vscode_bridge(project_root, package_type, opts.force);
6173
- merged_keys_by_tool["augment"] = ensure_augment_bridge(project_root, opts.force);
6173
+ merged_keys_by_tool["augment"] = [
6174
+ ...ensure_vscode_bridge(project_root, package_type, opts.force),
6175
+ ...ensure_augment_bridge(project_root, opts.force)
6176
+ ];
6174
6177
  if (_is_tool_enabled(tools, "claude-code")) {
6175
6178
  merged_keys_by_tool["claude-code"] = ensure_claude_bridge(project_root, opts.force);
6176
6179
  }