@event4u/agent-config 5.5.0 → 5.6.1

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 (65) hide show
  1. package/.agent-src/commands/image/analyse.md +51 -0
  2. package/.agent-src/commands/image/create.md +53 -0
  3. package/.agent-src/commands/image/verify.md +48 -0
  4. package/.agent-src/commands/image.md +69 -0
  5. package/.agent-src/commands/video/from-song.md +40 -6
  6. package/.agent-src/contexts/authority/commit-mechanics.md +8 -0
  7. package/.agent-src/rules/commit-policy.md +3 -8
  8. package/.agent-src/rules/media-sync-ground-truth.md +58 -0
  9. package/.agent-src/skills/image-analyser/SKILL.md +121 -0
  10. package/.agent-src/skills/image-analyser/canon-spec.md +109 -0
  11. package/.agent-src/skills/image-analyser/evals/triggers.json +16 -0
  12. package/.agent-src/skills/image-creator/SKILL.md +117 -0
  13. package/.agent-src/skills/image-creator/evals/triggers.json +16 -0
  14. package/.agent-src/skills/song-to-script/SKILL.md +36 -13
  15. package/.claude-plugin/marketplace.json +7 -1
  16. package/CHANGELOG.md +56 -0
  17. package/README.md +2 -2
  18. package/config/agent-settings.template.yml +18 -0
  19. package/dist/discovery/deprecation-report.md +1 -1
  20. package/dist/discovery/discovery-manifest.json +171 -18
  21. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  22. package/dist/discovery/discovery-manifest.summary.md +4 -4
  23. package/dist/discovery/orphan-report.md +1 -1
  24. package/dist/discovery/packs.json +15 -8
  25. package/dist/discovery/trust-report.md +3 -3
  26. package/dist/discovery/workspaces.json +13 -6
  27. package/dist/mcp/registry-manifest.json +3 -3
  28. package/dist/router.json +1 -1
  29. package/dist/server/schemas/settings.js +4 -0
  30. package/dist/server/schemas/settings.js.map +1 -1
  31. package/docs/architecture.md +3 -3
  32. package/docs/catalog.md +20 -6
  33. package/docs/contracts/benchmark-report-schema.md +12 -10
  34. package/docs/contracts/command-clusters.md +1 -0
  35. package/docs/contracts/rule-router.md +39 -0
  36. package/docs/contracts/value-dashboard-spec.md +7 -3
  37. package/docs/contracts/value-report-schema.md +6 -1
  38. package/docs/getting-started.md +2 -2
  39. package/docs/value.md +17 -17
  40. package/package.json +1 -1
  41. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  42. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  43. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  44. package/scripts/_lib/bench_report.py +13 -14
  45. package/scripts/_lib/bench_telegraph_report.py +1 -2
  46. package/scripts/_lib/token_count.py +95 -0
  47. package/scripts/_lib/value_report.py +3 -3
  48. package/scripts/ai-video/adapters/higgsfield.sh +163 -6
  49. package/scripts/ai-video/adapters/openai-images.sh +92 -6
  50. package/scripts/audit_auto_rules.py +22 -6
  51. package/scripts/audit_command_surface.py +6 -1
  52. package/scripts/audit_initial_context.py +210 -0
  53. package/scripts/bench_ab_diff.py +4 -11
  54. package/scripts/bench_run.py +2 -3
  55. package/scripts/bench_runner.py +2 -2
  56. package/scripts/condense.py +44 -3
  57. package/scripts/iron_law_sha.py +14 -5
  58. package/scripts/measure_rule_budget.py +15 -0
  59. package/scripts/pack_mcp_content.py +1 -1
  60. package/scripts/project_thin_rules.py +168 -0
  61. package/scripts/render_value_md.py +14 -23
  62. package/scripts/schemas/command.schema.json +1 -1
  63. package/scripts/schemas/rule.schema.json +1 -1
  64. package/scripts/schemas/skill.schema.json +2 -2
  65. package/scripts/trigger_coverage.py +129 -0
@@ -0,0 +1,117 @@
1
+ ---
2
+ model_tier: high
3
+ name: image-creator
4
+ description: "Use to generate a character image to spec — max-fidelity reproducible prompt from a Canon Spec, anchors-first, provider/governance-gated. Triggers 'generate this character', 'render to spec'."
5
+ personas:
6
+ - hollywood-director
7
+ domain: product
8
+ workspaces:
9
+ - small-business
10
+ packs:
11
+ - ai-video
12
+ lifecycle: experimental
13
+ trust:
14
+ level: experimental
15
+ install:
16
+ default: false
17
+ removable: true
18
+ ---
19
+
20
+ # image-creator
21
+
22
+ > Turn a **Canon Spec** + a scene into a maximally-detailed, reproducible
23
+ > generation prompt that renders a character to spec — then hand the result to
24
+ > [`image-analyser`](../image-analyser/SKILL.md) to verify. The loop partner.
25
+ > Schema + rubric + loop: [`canon-spec.md`](../image-analyser/canon-spec.md).
26
+
27
+ ## When to use
28
+
29
+ - "Generate / render / create this character", "render Veikko in scene X to
30
+ spec", "make the image match the canon".
31
+ - Inside the fidelity loop, fed by `image-analyser`'s correction directives.
32
+
33
+ NOT for: scene blocking / motion (→ `video-director`, `motion-choreographer`,
34
+ which take a verified still from here), non-character art (→ `canvas-design`).
35
+
36
+ ## Input
37
+
38
+ - Character id / Canon Spec (`agents/reference/ai-video/<project>/characters/<id>.json`).
39
+ - Scene brief (setting + pose). Optional: prior `image-analyser` diff (loop mode).
40
+
41
+ ## Procedure
42
+
43
+ 1. **Governance gate FIRST** (per `media-governance-routing`): if the character
44
+ is a real-person likeness, consult `agents/settings/policies/media/likeness.md`
45
+ + `public-figures.md` + `disclosure.md` before emitting anything. Fictional
46
+ characters (odins-beard trio) are exempt; the routing decision is in-session.
47
+ 2. **Provider gate** (per `provider-lifecycle-discipline`): read the resolved
48
+ provider's tier; if non-stable (experimental/deprecated/community), surface
49
+ the tier and ask before running. Never default to a non-stable provider
50
+ silently. Name the provider + tier in the run summary.
51
+ 3. **Assemble the prompt from the spec — anchors first.** Order matters: the
52
+ hard-to-render `identity_anchors` go at the TOP (the canon's lesson —
53
+ heterochromia + hair-split get forgotten if buried). Then physique, face
54
+ (+ marks), per-location tattoos (incl. exact `text`), outfit, jewelry.
55
+ 4. **Asymmetry block** — for split / heterochromatic characters, an explicit
56
+ left/right section ("LEFT half black / RIGHT half blond", "blue LEFT eye /
57
+ green RIGHT eye") with concrete comparison refs for engines that drop it.
58
+ 5. **Negative block + engine settings** — reuse the canon's proven structure
59
+ (negatives that kill "single hair colour", "both eyes same colour", etc.;
60
+ per-engine `--ar`/`--style`/CFG/steps). Do not reinvent; the character book's
61
+ prompt format is the template.
62
+ 6. **Generate** through the existing provider/adapter layer
63
+ (`scripts/ai-video/adapters/`, the `/video|image` surface). Do **not** add a
64
+ new provider path where one exists.
65
+ 7. **Verify** — hand the output to `image-analyser`; in loop mode, fold its
66
+ correction directives into the next prompt (see the loop in `canon-spec.md`).
67
+
68
+ ## Anchors-first — why
69
+
70
+ The fidelity-loss evidence (`img_2.png`): Veikko's split hair + heterochromia
71
+ were missed because they are hard for the engine and were not front-loaded. The
72
+ analyser-derived fixes go to the TOP of the next prompt, with negatives, and the
73
+ loop re-verifies — that is how the smallest mole comes back.
74
+
75
+ ## Output format
76
+
77
+ 1. **Generation prompt** — anchors block · positive · asymmetry (if any) · negative · engine settings.
78
+ 2. **Provider + tier line** (the audit entry).
79
+ 3. **Verify call** — the `image-analyser` invocation on the result + the loop stop-state.
80
+
81
+ ## Example (anchors-first vs buried)
82
+
83
+ - Safe (Veikko): prompt opens with `HAIR: exact vertical centre split, LEFT pitch-black, RIGHT platinum-blond` + `EYES: heterochromia — LEFT ice-blue, RIGHT forest-green`, then the rest.
84
+ - Unsafe: physique/outfit first, the split + heterochromia in a trailing sentence → the engine drops them (the observed `img_2.png` failure).
85
+
86
+ ## Gotchas
87
+
88
+ - Never claim "canon-perfect" without an `image-analyser` pass (per `verify-before-complete`).
89
+ - DALL-E drops heterochromia + split hair — use concrete comparisons; expect multiple generations.
90
+ - Keep the spec the single source: regenerate from the Canon Spec, never paraphrase it into a fresh prompt.
91
+
92
+ ## Do NOT
93
+
94
+ - Do NOT claim "canon-perfect" / "matches the canon" without an `image-analyser`
95
+ pass on the output (per `verify-before-complete` — no completion without evidence).
96
+ - Do NOT bury the `identity_anchors` — the hard-to-render features (heterochromia,
97
+ hair-split) go at the TOP of the prompt, never in a trailing sentence.
98
+ - Do NOT default to a non-stable provider silently — surface the tier and ask
99
+ first (per `provider-lifecycle-discipline`).
100
+ - Do NOT emit a prompt for a real-person likeness before the governance gate
101
+ (step 1) clears it.
102
+ - Do NOT add a new provider/generation path where the existing adapter layer
103
+ (`scripts/ai-video/adapters/`) already covers it.
104
+ - Do NOT paraphrase the Canon Spec into a fresh prompt — regenerate from the spec
105
+ so it stays the single source of truth.
106
+
107
+ ## Policies
108
+
109
+ `media-governance-routing` + `agents/settings/policies/media/` (likeness, style,
110
+ public-figures, disclosure) — consulted in step 1 before any prompt is emitted
111
+ for a real-person likeness.
112
+
113
+ ## Related skills
114
+
115
+ - [`image-analyser`](../image-analyser/SKILL.md) — the verify/loop partner.
116
+ - [`character-consistency`](../character-consistency/SKILL.md) — supplies the locked identity tokens.
117
+ - [`video-director`](../video-director/SKILL.md) / [`motion-choreographer`](../motion-choreographer/SKILL.md) — take the verified still into scene + motion.
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "image-creator",
3
+ "description": "5 should-trigger + 5 should-not-trigger. Should-trigger covers generate/render/to-spec/loop-fix paths (DE + EN). Should-not covers near-miss neighbours: analysis (image-analyser), scene/motion (video-director, motion-choreographer), non-character art (canvas-design), and token-lock (character-consistency).",
4
+ "queries": [
5
+ {"q": "generate Veikko in the forge scene, matched to the canon", "trigger": true},
6
+ {"q": "render this character to spec, max detail", "trigger": true},
7
+ {"q": "create the image and make every tattoo placement exact", "trigger": true},
8
+ {"q": "erzeuge das Bild so detailgenau wie möglich nach der Vorlage", "trigger": true},
9
+ {"q": "regenerate with the heterochromia and hair-split fixed", "trigger": true},
10
+ {"q": "analyse this image and tell me what drifted", "trigger": false, "note": "analysis → image-analyser"},
11
+ {"q": "turn this still into a cinematic motion prompt for Veo", "trigger": false, "note": "motion → motion-choreographer"},
12
+ {"q": "expand this one-line idea into a scene blueprint", "trigger": false, "note": "scene → scene-expander/video-director"},
13
+ {"q": "design a tour poster", "trigger": false, "note": "static non-character art → canvas-design"},
14
+ {"q": "lock the character tokens so all scenes reuse them", "trigger": false, "note": "token lock → character-consistency"}
15
+ ]
16
+ }
@@ -99,23 +99,46 @@ Then assign per scene:
99
99
  | breakdown / dip | close-up / detail, quiet, single light source |
100
100
  | outro / fade | pull-back, resolve, hold |
101
101
 
102
- ### Step 3: Lyric / lip-sync lines (auto mode, vocal tracks)
102
+ ### Step 3: Vocal map transcribe, never guess (vocal tracks)
103
103
 
104
- If the probe flags vocal energy in a section and the operator provided
105
- lyrics (or asked to lip-sync), place the matching lines in that scene's
106
- `dialogue:` block so the video adapter can drive mouth motion. No
107
- lyrics leave `dialogue:` empty; the scene is performance/B-roll, not
108
- lip-sync. **Never fabricate lyrics** — absent text means no dialogue.
109
- Lip-sync requires a character subject; in style mode, `dialogue:` stays
110
- empty.
104
+ ```
105
+ LYRIC TIMING AND SINGER COME FROM THE TRANSCRIBED AUDIO, NEVER FROM A
106
+ BRIEF / STORY SKELETON OR A GUESSED STRETCH. NEVER PUT ONE SINGER'S
107
+ LINE ON ANOTHER SINGER'S SCENE.
108
+ ```
109
+
110
+ Track has vocals and the run intends lip-sync → build a **vocal map**
111
+ from the real audio before assigning any `dialogue:`:
112
+
113
+ 1. **Transcribe** audio to timestamped lines — OpenAI
114
+ `/v1/audio/transcriptions` (`response_format=verbose_json` →
115
+ `segments[].{start,end,text}`) or local whisper. Only source of lyric
116
+ timing.
117
+ 2. **Label the singer** per line. Operator who-sings reference (roster, a
118
+ brief naming who sings which line, or a character cast) → match each
119
+ line to its singer. Genuinely ambiguous → mark `singer: "?"` and
120
+ surface; never guess a singer to fill the slot.
121
+ 3. **Emit** `<project>/vocal-map.json`: `[{start, end, text, singer}]`,
122
+ timing verbatim from the transcript.
123
+ 4. **Place lines into the matching scene's** `dialogue:` block using
124
+ transcript timing, tagged with the singer (`singer: "<line>"`). A
125
+ scene's lip-sync subject MUST be the line's labelled singer.
126
+
127
+ No vocals / no transcript / no lip-sync intent → leave `dialogue:` empty;
128
+ scene is performance / B-roll. **Never fabricate lyrics**, **never
129
+ re-time a line off the brief**, and in style mode `dialogue:` stays empty
130
+ (lip-sync needs a character subject). The `/video:from-song` sign-off
131
+ gate (its Step 6) shows this map for approval before any render.
111
132
 
112
133
  ### Step 4: Emit + reconcile
113
134
 
114
- Write `<project>/script.md`. Report the delta, the section→scene map,
115
- **and the probe `method`** (so the operator sees whether cuts are
116
- silence-derived, energy-derived, or interval-fallback). If the sum cannot
117
- be reconciled (e.g. provider max-duration forces more time than the song
118
- has), **halt and surface the conflict** do not pad silently.
135
+ Write `<project>/script.md` (and `<project>/vocal-map.json` when the
136
+ track has vocals). Report the delta, the section→scene map, **the probe
137
+ `method`** (silence-derived, energy-derived, or interval-fallback), **and
138
+ whether lyric timing is transcript-derived** (it must be never
139
+ brief-derived). If the sum cannot be reconciled (e.g. provider
140
+ max-duration forces more time than the song has), **halt and surface the
141
+ conflict** — do not pad silently.
119
142
 
120
143
  ### Step 5: Validate before handoff
121
144
 
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Shared agent configuration \u2014 skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
9
- "version": "5.5.0",
9
+ "version": "5.6.1",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
@@ -187,6 +187,12 @@
187
187
  "./.claude/skills/gtm-launch",
188
188
  "./.claude/skills/guideline-writing",
189
189
  "./.claude/skills/hiring-loop-design",
190
+ "./.claude/skills/image",
191
+ "./.claude/skills/image-analyse",
192
+ "./.claude/skills/image-analyser",
193
+ "./.claude/skills/image-create",
194
+ "./.claude/skills/image-creator",
195
+ "./.claude/skills/image-verify",
190
196
  "./.claude/skills/implement-ticket",
191
197
  "./.claude/skills/incident-commander",
192
198
  "./.claude/skills/jira-integration",
package/CHANGELOG.md CHANGED
@@ -811,6 +811,62 @@ our recommendation order, not its support status.
811
811
  > that forces a new era split (`# Era: 5.5.x`, etc.) — see
812
812
  > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
813
813
 
814
+ ## [5.6.1](https://github.com/event4u-app/agent-config/compare/5.6.0...5.6.1) (2026-06-01)
815
+
816
+ ### Bug Fixes
817
+
818
+ * **mcp:** send bearer auth in post-deploy smoke probe ([9d12489](https://github.com/event4u-app/agent-config/commit/9d124894b03e5e962e8014171f965ce9367de58d))
819
+ * correct gzip kwarg in pack_mcp_content (condenselevel -> compresslevel) ([6d27677](https://github.com/event4u-app/agent-config/commit/6d2767736d6d20327a5853875fd4e9cb172babcc))
820
+
821
+ Tests: 5375 (+0 since 5.6.0)
822
+
823
+ ## [5.6.0](https://github.com/event4u-app/agent-config/compare/5.5.0...5.6.0) (2026-05-31)
824
+
825
+ ### Features
826
+
827
+ * **ai-video:** add /image command cluster (analyse/create/verify) ([9d53c81](https://github.com/event4u-app/agent-config/commit/9d53c81e3aed3549c4135a641e306a32fa224a68))
828
+ * **ai-video:** add image-analyser + image-creator character-fidelity skills ([b76a4db](https://github.com/event4u-app/agent-config/commit/b76a4db19d537ad5443f2c920c4701a49d08e584))
829
+ * **ai-video:** extend from-song + song-to-script + adapters; add media-sync-ground-truth rule ([dab9f0f](https://github.com/event4u-app/agent-config/commit/dab9f0f41e0d4b93eef423541269d54408bf36f4))
830
+ * **kernel:** kernel-budget soak — trim commit-policy + scope-control, fences byte-identical (Phase 1) ([b0547f0](https://github.com/event4u-app/agent-config/commit/b0547f0207df6e057e2ff97283391ddad88fd2e3))
831
+ * **schema:** tighten description caps + warning window (Phase 2.1); record 3.2 as obviated ([c65d3ae](https://github.com/event4u-app/agent-config/commit/c65d3ae8b569eb3507b83c31967231e64a31a742))
832
+ * **projection:** thin rule-layer projection behind a flag — measured -35,845 GPT tok (Phase 3.1) ([d786363](https://github.com/event4u-app/agent-config/commit/d7863635ee342ab61210ed14b95eeb1fface9582))
833
+ * **value:** drop the € comparison from the value dashboard — tokens only ([33f6fc8](https://github.com/event4u-app/agent-config/commit/33f6fc81e934ca426e5a4c82c37f41624228a636))
834
+ * **bench:** drop the monetary cost comparison — report tokens only ([1a2d3ad](https://github.com/event4u-app/agent-config/commit/1a2d3ad6a177122f0249bb903b3d7d74d62676e1))
835
+ * **audit:** unified audit:tokens analyzer + budget CI gate (Phase 0B.2/0B.4/1.3/1.4) ([c27061f](https://github.com/event4u-app/agent-config/commit/c27061fd47be600d79a5b0a8484a4061f9cdadfd))
836
+ * **safety:** trigger-coverage MUST-LOAD floor + thin-projection kill-switch (Phase 2) ([b210e0b](https://github.com/event4u-app/agent-config/commit/b210e0b9f402e26c813d6fd45e85fdad42876c1d))
837
+ * **budget:** add real-tokenizer measurement alongside chars (Phase 0B.1) ([1602d7f](https://github.com/event4u-app/agent-config/commit/1602d7f2f41a3d6b1069ad675583262542c970cf))
838
+
839
+ ### Bug Fixes
840
+
841
+ * **ai-video:** add workspaces + packs to media-sync-ground-truth rule ([cebe846](https://github.com/event4u-app/agent-config/commit/cebe8465d5cc1b07c8426b91ab52c0fb07e79f5b))
842
+ * sync command count to 145 in README badge + browse lines ([7a881e2](https://github.com/event4u-app/agent-config/commit/7a881e243fe73faad725050d684af682445c4eda))
843
+ * **kernel:** restore 2nd 'Iron Law' mention in commit-policy (obligation-baseline regression from #310) ([693c287](https://github.com/event4u-app/agent-config/commit/693c28791cbe124942835c3b309ca72921ee13f5))
844
+ * **tools:** repoint audit_auto_rules + audit_command_surface to packages/core (Phase 2.3) ([fae234c](https://github.com/event4u-app/agent-config/commit/fae234cfda21372adb493b259a47e8a9a00a0036))
845
+ * **schema:** rule description cap 160 -> 190 (smoke gate treats over-cap as FAIL) ([72f05e0](https://github.com/event4u-app/agent-config/commit/72f05e02cca4e196e514d8f4f573ac9890f52583))
846
+ * **kernel:** repoint iron_law_sha to packages/core layout (Iron-Law SHA gate was broken) ([aab5755](https://github.com/event4u-app/agent-config/commit/aab57558f7047fc21d0107dbab5aa3b49ebe4e2f))
847
+ * **schema:** add lean_projection.mode to the settings schema (template-parity gate) ([51ed03e](https://github.com/event4u-app/agent-config/commit/51ed03ec9e74d4573b7da43a6b45804535986690))
848
+ * **bench:** repoint bench_runner SKILLS_DIR to .agent-src for packages/core layout ([e183527](https://github.com/event4u-app/agent-config/commit/e183527c0efa4e3fe7dfb6a9df2c1e21534925a8))
849
+
850
+ ### Performance
851
+
852
+ * **projection:** minimal thin entries — measured saving 35,845 -> 45,182 GPT tok (77%) ([b1aabe0](https://github.com/event4u-app/agent-config/commit/b1aabe05a9e68aa87a8396f3276530d480582dbe))
853
+
854
+ ### Documentation
855
+
856
+ * **roadmap:** honest dispositions for remaining build-out items ([68e8bb5](https://github.com/event4u-app/agent-config/commit/68e8bb5ab3ec95c516707d9b8e0f2bfd6f7c5ec9))
857
+ * **roadmap:** land Phase 0+2 of road-to-lean-initial-context; spawn build-out follow-up ([8b0bec2](https://github.com/event4u-app/agent-config/commit/8b0bec2efab7128fa4c45d186e3feea4ebd632f8))
858
+
859
+ ### Chores
860
+
861
+ * update reports ([eb52977](https://github.com/event4u-app/agent-config/commit/eb52977cf398f6691e55fc063ba9f1b4f63f03b9))
862
+ * regenerate index + catalog for image skills + /image cluster ([f71f024](https://github.com/event4u-app/agent-config/commit/f71f024dba491ff36c071d9fd25d372e39b0c9c2))
863
+ * regenerate derived (router, marketplace, manifests, counts, command-surface) ([2fcc321](https://github.com/event4u-app/agent-config/commit/2fcc3214451bec3114dee0d55d7f03c0f3392ca0))
864
+ * archive road-to-character-image-fidelity (complete) ([ef16067](https://github.com/event4u-app/agent-config/commit/ef16067c0636a0c8279922bbb160531efb477ddb))
865
+ * track linter-debt roadmap + command-surface report (unrelated to lean-context) ([a52a604](https://github.com/event4u-app/agent-config/commit/a52a6048a55805e5a25b9dc68fd1e98091ba0fec))
866
+ * **router:** regenerate stale dist/router.json from source ([af782fe](https://github.com/event4u-app/agent-config/commit/af782fe179d7ba573ec916e48ac0b9e3752cf6f5))
867
+
868
+ Tests: 5375 (+39 since 5.5.0)
869
+
814
870
  ## [5.5.0](https://github.com/event4u-app/agent-config/compare/5.4.1...5.5.0) (2026-05-31)
815
871
 
816
872
  ### Features
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![Smoke](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [![Public install smoke (3 OS × 2 Node)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [![npm](https://img.shields.io/npm/v/@event4u/agent-config?style=flat-square&label=npm&color=orange)](https://www.npmjs.com/package/@event4u/agent-config)
6
6
 
7
- [![Skills](https://img.shields.io/badge/Skills-220-orange?style=flat-square)](.agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-78-orange?style=flat-square)](.agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-141-orange?style=flat-square)](.agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-73-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-24-orange?style=flat-square)](.agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](.agent-src/personas/advisors/)
7
+ [![Skills](https://img.shields.io/badge/Skills-222-orange?style=flat-square)](.agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-79-orange?style=flat-square)](.agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-145-orange?style=flat-square)](.agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-73-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-24-orange?style=flat-square)](.agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](.agent-src/personas/advisors/)
8
8
 
9
9
  > **The Universal AI Agent OS for Founders, Content Creators, Consultants, Sales, Finance, and Engineering teams. Bring your own AI provider.**
10
10
 
@@ -369,7 +369,7 @@ When a prompt matches a command's purpose ("setze ticket ABC-123 um" → `/imple
369
369
  | [**Migration**](docs/MIGRATION.md) | Per-version upgrade steps |
370
370
  | [**Showcase**](docs/showcase.md) | More examples & expected behavior |
371
371
 
372
- Browse content: [all 141 commands](.agent-src/commands/) · [skills catalog](docs/skills-catalog.md) · [full catalog](docs/catalog.md) · [`llms.txt`](llms.txt).
372
+ Browse content: [all 145 commands](.agent-src/commands/) · [skills catalog](docs/skills-catalog.md) · [full catalog](docs/catalog.md) · [`llms.txt`](llms.txt).
373
373
 
374
374
  ---
375
375
 
@@ -30,6 +30,24 @@ agent_config_version: ""
30
30
  # custom = ignore profile — every matrix value must be set explicitly.
31
31
  cost_profile: __COST_PROFILE__
32
32
 
33
+ # --- Lean projection (experimental, opt-in) ---
34
+ #
35
+ # How the per-tool projector emits the rule layer. See
36
+ # docs/contracts/rule-router.md § Kill-switch.
37
+ #
38
+ # eager-all = every rule body inlined into every projection (DEFAULT,
39
+ # today's behaviour). Safe — bodies are always in context.
40
+ # thin = kernel rules full-bodied + non-kernel rules as
41
+ # router-resolved pointers (the agent loads the body on
42
+ # trigger-match). Measured ~45k GPT-tok lighter per session
43
+ # (77% of the rule layer). EXPERIMENTAL: a thin projection
44
+ # only holds behaviour if the pointer is resolved on match —
45
+ # validate with `task bench:ab:live` before flipping, and
46
+ # keep `task trigger-coverage` at 100%. One-flip revert:
47
+ # set eager-all + `task generate-tools`.
48
+ lean_projection:
49
+ mode: eager-all
50
+
33
51
  # --- Cost tracking + budget enforcement ---
34
52
  #
35
53
  # USD budgets evaluated against `agents/cost-tracking/sessions.jsonl` by
@@ -1,6 +1,6 @@
1
1
  # Discovery — Deprecation Report
2
2
 
3
- - Generated: `2026-05-30T23:34:47Z`
3
+ - Generated: `2026-06-01T05:28:53Z`
4
4
  - Deprecated artefacts: **0**
5
5
 
6
6
  _None. Tree is clean._
@@ -1452,6 +1452,94 @@
1452
1452
  "agent-config-maintainer"
1453
1453
  ]
1454
1454
  },
1455
+ {
1456
+ "category": "command",
1457
+ "checksum": "sha256:426afb09329018fc1e93e3cc339f379dae686cfbdcdcbf2ceb8fc28c7632ade9",
1458
+ "install": {
1459
+ "default": true,
1460
+ "removable": false
1461
+ },
1462
+ "lifecycle": "active",
1463
+ "name": "image",
1464
+ "packs": [
1465
+ "meta"
1466
+ ],
1467
+ "path": "packages/core/.agent-src.uncondensed/commands/image.md",
1468
+ "trust": {
1469
+ "confidence": "high",
1470
+ "human_review_required": false,
1471
+ "level": "core"
1472
+ },
1473
+ "workspaces": [
1474
+ "agent-config-maintainer"
1475
+ ]
1476
+ },
1477
+ {
1478
+ "category": "command",
1479
+ "checksum": "sha256:51d8c695ca843304e2a413e720b6e38714e2efe1502867ea57e73226dc1a00d2",
1480
+ "install": {
1481
+ "default": true,
1482
+ "removable": false
1483
+ },
1484
+ "lifecycle": "active",
1485
+ "name": "image:analyse",
1486
+ "packs": [
1487
+ "meta"
1488
+ ],
1489
+ "path": "packages/core/.agent-src.uncondensed/commands/image/analyse.md",
1490
+ "trust": {
1491
+ "confidence": "high",
1492
+ "human_review_required": false,
1493
+ "level": "core"
1494
+ },
1495
+ "workspaces": [
1496
+ "agent-config-maintainer"
1497
+ ]
1498
+ },
1499
+ {
1500
+ "category": "command",
1501
+ "checksum": "sha256:29d05010061853d7097080026ebbfb8e76c4f3bc99af76780440c8c06975ec14",
1502
+ "install": {
1503
+ "default": true,
1504
+ "removable": false
1505
+ },
1506
+ "lifecycle": "active",
1507
+ "name": "image:create",
1508
+ "packs": [
1509
+ "meta"
1510
+ ],
1511
+ "path": "packages/core/.agent-src.uncondensed/commands/image/create.md",
1512
+ "trust": {
1513
+ "confidence": "high",
1514
+ "human_review_required": false,
1515
+ "level": "core"
1516
+ },
1517
+ "workspaces": [
1518
+ "agent-config-maintainer"
1519
+ ]
1520
+ },
1521
+ {
1522
+ "category": "command",
1523
+ "checksum": "sha256:89bbd844b115c7751023c7c7c2e35936dea440e1db6978045f0a9711c6cda062",
1524
+ "install": {
1525
+ "default": true,
1526
+ "removable": false
1527
+ },
1528
+ "lifecycle": "active",
1529
+ "name": "image:verify",
1530
+ "packs": [
1531
+ "meta"
1532
+ ],
1533
+ "path": "packages/core/.agent-src.uncondensed/commands/image/verify.md",
1534
+ "trust": {
1535
+ "confidence": "high",
1536
+ "human_review_required": false,
1537
+ "level": "core"
1538
+ },
1539
+ "workspaces": [
1540
+ "agent-config-maintainer"
1541
+ ]
1542
+ },
1455
1543
  {
1456
1544
  "category": "command",
1457
1545
  "checksum": "sha256:832051aaea9f0f9b2b8ae8af36d07b4b7491ef531bd095bd752034a2cb15b6d5",
@@ -2994,7 +3082,7 @@
2994
3082
  },
2995
3083
  {
2996
3084
  "category": "command",
2997
- "checksum": "sha256:dac28649cc18c4d61a10be2a3cefaa839403727c7cffca83ada228e970baf562",
3085
+ "checksum": "sha256:529966acac18a3bdd79dfdae55ca332b8ecd222a65dac26b965023ae88513eed",
2998
3086
  "install": {
2999
3087
  "default": false,
3000
3088
  "removable": true
@@ -3356,7 +3444,7 @@
3356
3444
  },
3357
3445
  {
3358
3446
  "category": "rule",
3359
- "checksum": "sha256:875509eeea9675bf6e0e26bbc395b6c959766116d9c6f41de97b643952d8c20f",
3447
+ "checksum": "sha256:498c1dbb98847207442cc123bd54a3c36a98635198ba863660fd71cfdfeabae2",
3360
3448
  "install": {
3361
3449
  "default": true,
3362
3450
  "removable": false
@@ -3859,6 +3947,27 @@
3859
3947
  "agent-config-maintainer"
3860
3948
  ]
3861
3949
  },
3950
+ {
3951
+ "category": "rule",
3952
+ "checksum": "sha256:365b53c303286784c7509ff3b884796bd9fca58579b68e593ec9c2f77a54fc9b",
3953
+ "install": {
3954
+ "default": true,
3955
+ "removable": false
3956
+ },
3957
+ "lifecycle": "active",
3958
+ "packs": [
3959
+ "meta"
3960
+ ],
3961
+ "path": "packages/core/.agent-src.uncondensed/rules/media-sync-ground-truth.md",
3962
+ "trust": {
3963
+ "confidence": "high",
3964
+ "human_review_required": false,
3965
+ "level": "core"
3966
+ },
3967
+ "workspaces": [
3968
+ "agent-config-maintainer"
3969
+ ]
3970
+ },
3862
3971
  {
3863
3972
  "category": "rule",
3864
3973
  "checksum": "sha256:9f639b9cc1ec55ceeb6d38b4936b2741952cde4311aacb520a30ce9f0837fbd0",
@@ -4283,7 +4392,7 @@
4283
4392
  },
4284
4393
  {
4285
4394
  "category": "rule",
4286
- "checksum": "sha256:a1a9ae7b611bdd9d8566da2cc7d62308316eada52c56dae0a0fe17da2e7dcc9c",
4395
+ "checksum": "sha256:3fd9b80ab60d8f8ab98a7f04077a1c37597dfd19ed3cce9007e9b86518196a49",
4287
4396
  "install": {
4288
4397
  "default": true,
4289
4398
  "removable": false
@@ -7520,6 +7629,50 @@
7520
7629
  "small-business"
7521
7630
  ]
7522
7631
  },
7632
+ {
7633
+ "category": "skill",
7634
+ "checksum": "sha256:b89b62a691b61569a1bf4dbda12bc01fa8d50f23cb129883898aa5a004092771",
7635
+ "install": {
7636
+ "default": false,
7637
+ "removable": true
7638
+ },
7639
+ "lifecycle": "experimental",
7640
+ "name": "image-analyser",
7641
+ "packs": [
7642
+ "ai-video"
7643
+ ],
7644
+ "path": "packages/pack-ai-video/.agent-src.uncondensed/skills/image-analyser/SKILL.md",
7645
+ "trust": {
7646
+ "confidence": "high",
7647
+ "human_review_required": false,
7648
+ "level": "experimental"
7649
+ },
7650
+ "workspaces": [
7651
+ "small-business"
7652
+ ]
7653
+ },
7654
+ {
7655
+ "category": "skill",
7656
+ "checksum": "sha256:f06440d56e1b28039f77bf4c32f9c3aba937c8d276153ae39c1bd924fc6ca4f6",
7657
+ "install": {
7658
+ "default": false,
7659
+ "removable": true
7660
+ },
7661
+ "lifecycle": "experimental",
7662
+ "name": "image-creator",
7663
+ "packs": [
7664
+ "ai-video"
7665
+ ],
7666
+ "path": "packages/pack-ai-video/.agent-src.uncondensed/skills/image-creator/SKILL.md",
7667
+ "trust": {
7668
+ "confidence": "high",
7669
+ "human_review_required": false,
7670
+ "level": "experimental"
7671
+ },
7672
+ "workspaces": [
7673
+ "small-business"
7674
+ ]
7675
+ },
7523
7676
  {
7524
7677
  "category": "skill",
7525
7678
  "checksum": "sha256:87599a712516b77dba188caf6409f24d9e1a83378c0af5cee0e8ae9ddc9a3e93",
@@ -7588,7 +7741,7 @@
7588
7741
  },
7589
7742
  {
7590
7743
  "category": "skill",
7591
- "checksum": "sha256:50b3da1d289905ec799969e527748e15fc65a3cdc8bb647abf6dd64c8114bc85",
7744
+ "checksum": "sha256:2c01a27d221c1b7acaf4c5d4a96321f74a3129e0b1b7fbeccfb84eb2a2cae680",
7592
7745
  "install": {
7593
7746
  "default": false,
7594
7747
  "removable": true
@@ -9606,7 +9759,7 @@
9606
9759
  ]
9607
9760
  }
9608
9761
  ],
9609
- "checksum": "sha256:179774d9f11641c6a2709286fb24d3ff708743bf6e58c697f8987c9fbcab31ae",
9762
+ "checksum": "sha256:0fbd4637a523a2e97b9f5811172c148ea939f9bb928a963e12e60756f7b35bfe",
9610
9763
  "documented_unassigned": [
9611
9764
  {
9612
9765
  "category": "template",
@@ -9719,7 +9872,7 @@
9719
9872
  "reason": "scaffold for new SKILL.md authoring"
9720
9873
  }
9721
9874
  ],
9722
- "generated_at": "2026-05-30T23:34:47Z",
9875
+ "generated_at": "2026-06-01T05:28:53Z",
9723
9876
  "packs": [
9724
9877
  {
9725
9878
  "artefact_count": 85,
@@ -10106,7 +10259,7 @@
10106
10259
  ]
10107
10260
  },
10108
10261
  {
10109
- "artefact_count": 7,
10262
+ "artefact_count": 9,
10110
10263
  "description": "AI video pipeline.",
10111
10264
  "human_review_required": 0,
10112
10265
  "id": "ai-video",
@@ -10115,7 +10268,7 @@
10115
10268
  "trust_summary": {
10116
10269
  "advisory": 0,
10117
10270
  "core": 0,
10118
- "experimental": 7,
10271
+ "experimental": 9,
10119
10272
  "professional": 0,
10120
10273
  "restricted": 0
10121
10274
  },
@@ -10124,7 +10277,7 @@
10124
10277
  ]
10125
10278
  },
10126
10279
  {
10127
- "artefact_count": 258,
10280
+ "artefact_count": 263,
10128
10281
  "description": "Artefacts that maintain this package (agent-config itself).",
10129
10282
  "human_review_required": 0,
10130
10283
  "id": "meta",
@@ -10132,7 +10285,7 @@
10132
10285
  "trust_level_default": "core",
10133
10286
  "trust_summary": {
10134
10287
  "advisory": 0,
10135
- "core": 257,
10288
+ "core": 262,
10136
10289
  "experimental": 1,
10137
10290
  "professional": 0,
10138
10291
  "restricted": 0
@@ -10145,26 +10298,26 @@
10145
10298
  "scanner_version": "ca7acd2ec7af",
10146
10299
  "stats": {
10147
10300
  "by_category": {
10148
- "command": 141,
10149
- "rule": 78,
10150
- "skill": 220,
10301
+ "command": 145,
10302
+ "rule": 79,
10303
+ "skill": 222,
10151
10304
  "template": 1
10152
10305
  },
10153
10306
  "by_lifecycle": {
10154
- "active": 429,
10307
+ "active": 434,
10155
10308
  "archived": 0,
10156
10309
  "deprecated": 0,
10157
- "experimental": 11
10310
+ "experimental": 13
10158
10311
  },
10159
10312
  "by_trust_level": {
10160
10313
  "advisory": 2,
10161
- "core": 350,
10162
- "experimental": 9,
10314
+ "core": 355,
10315
+ "experimental": 11,
10163
10316
  "professional": 79,
10164
10317
  "restricted": 0
10165
10318
  },
10166
10319
  "documented_unassigned_count": 22,
10167
- "total_artefacts": 440,
10320
+ "total_artefacts": 447,
10168
10321
  "unassigned_count": 0
10169
10322
  },
10170
10323
  "unassigned": [],
@@ -1 +1 @@
1
- 4899ff3ab9b0d366795f7cda664646b990f52a17c5a050837052d1fcd86e372a discovery-manifest.json
1
+ c4e48aaf1d8692605b84470cdfde6164b496b96a4a2fcce192ce5dc16a03b6e0 discovery-manifest.json