@event4u/agent-config 5.4.0 → 5.5.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 (49) hide show
  1. package/.agent-src/commands/knowledge/cross-repo.md +71 -0
  2. package/.agent-src/commands/knowledge.md +2 -0
  3. package/.agent-src/commands/skill/preview.md +67 -0
  4. package/.agent-src/commands/skill.md +48 -0
  5. package/.agent-src/commands/skills/discover.md +76 -0
  6. package/.agent-src/commands/skills.md +56 -0
  7. package/.agent-src/commands/video/from-song.md +317 -0
  8. package/.agent-src/commands/video.md +19 -9
  9. package/.agent-src/rules/linked-projects-onboarding-gate.md +1 -1
  10. package/.agent-src/skills/song-to-script/SKILL.md +193 -0
  11. package/.claude-plugin/marketplace.json +9 -2
  12. package/CHANGELOG.md +49 -0
  13. package/CONTRIBUTING.md +6 -0
  14. package/README.md +3 -3
  15. package/dist/cli/registry.js +1 -0
  16. package/dist/cli/registry.js.map +1 -1
  17. package/dist/discovery/deprecation-report.md +1 -1
  18. package/dist/discovery/discovery-manifest.json +171 -17
  19. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  20. package/dist/discovery/discovery-manifest.summary.md +4 -4
  21. package/dist/discovery/orphan-report.md +1 -1
  22. package/dist/discovery/packs.json +17 -10
  23. package/dist/discovery/trust-report.md +3 -3
  24. package/dist/discovery/workspaces.json +13 -6
  25. package/dist/mcp/registry-manifest.json +2 -2
  26. package/docs/architecture.md +2 -2
  27. package/docs/contracts/command-clusters.md +4 -1
  28. package/docs/contracts/cross-repo-retrieval.md +64 -0
  29. package/docs/contracts/skill-discovery.md +80 -0
  30. package/docs/contracts/skill-dry-run.md +47 -0
  31. package/docs/decisions/ADR-032-linked-projects-scope.md +7 -3
  32. package/docs/getting-started.md +1 -1
  33. package/docs/guides/cross-repo-linked-projects.md +7 -0
  34. package/docs/guides/cross-repo-retrieval.md +61 -0
  35. package/docs/guides/skill-discovery.md +71 -0
  36. package/docs/guides/skill-preview.md +71 -0
  37. package/package.json +1 -1
  38. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  39. package/scripts/_dispatch.bash +10 -0
  40. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  41. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  42. package/scripts/ai-video/lib/probe-audio.sh +181 -0
  43. package/scripts/cross_repo_retrieve.py +172 -0
  44. package/scripts/inventory_meta_layers.py +288 -0
  45. package/scripts/linked_projects_list.py +91 -0
  46. package/scripts/memory_lookup.py +53 -2
  47. package/scripts/skill_discovery.py +254 -0
  48. package/scripts/skill_linter.py +8 -4
  49. package/scripts/skill_preview.py +179 -0
@@ -3,7 +3,7 @@ model_tier: inherit
3
3
  name: video
4
4
  tier: 2
5
5
  cluster: video
6
- description: Video-creation orchestrator — Hollywood-level AI video pipeline. Routes to from-script, scene, storyboard, stitch.
6
+ description: Video-creation orchestrator — Hollywood-level AI video pipeline. Routes to from-script, from-song, scene, storyboard, stitch.
7
7
  type: orchestrator
8
8
  suggestion:
9
9
  eligible: true
@@ -19,31 +19,41 @@ packs:
19
19
 
20
20
  Top-level orchestrator for the `/video:*` family — multi-provider AI
21
21
  video creation. Reads provider keys + defaults from
22
- [`agents/.ai-video.xml`](../agents/templates/.ai-video.xml.example) (gitignored
22
+ [`agents/.ai-video.xml`](../../agents/templates/.ai-video.xml.example) (gitignored
23
23
  real file; example shipped). Every subcommand is **dry-run by default**;
24
24
  network calls require explicit per-turn confirmation per the adapter
25
- contract under [`scripts/ai-video/lib/adapter-contract.md`](../scripts/ai-video/lib/adapter-contract.md).
25
+ contract under [`scripts/ai-video/lib/adapter-contract.md`](../../scripts/ai-video/lib/adapter-contract.md).
26
26
 
27
27
  ## Sub-commands
28
28
 
29
29
  | Sub-command | Routes to | Purpose |
30
30
  |---|---|---|
31
31
  | `/video:from-script <path>` | `commands/video/from-script.md` | Full pipeline: script → scenes → blueprint → images → operator pick → motion → video → stitch |
32
+ | `/video:from-song <images-dir> <song>` | `commands/video/from-song.md` | Music-video: song + reference images → derived/briefed script → render → stitch → song muxed as master track |
32
33
  | `/video:scene "<idea>"` | `commands/video/scene.md` | Single-scene iteration without a full script |
33
34
  | `/video:storyboard <path>` | `commands/video/storyboard.md` | Image-only output; contact-sheet storyboard PNG via `ffmpeg` montage |
34
35
  | `/video:stitch <slug>` | `commands/video/stitch.md` | Re-stitches existing clips after operator edits, no re-render |
35
36
 
36
37
  ## Dispatch
37
38
 
38
- 1. Parse `/video <sub-command> [args]`.
39
+ 1. Parse `/video <sub-command> [args]`. The sub-command is the first
40
+ token; match it against the table's exact sub-command names only. A
41
+ token that is a **file path** (contains `/`, `.`, or a known media
42
+ extension — e.g. `from-song.mp3`, `clip/from-song.wav`) is NOT a
43
+ sub-command: it belongs to `from-script` (a script path) or is a
44
+ mis-typed `/video:from-song` invocation. Never treat `from-song.mp3`
45
+ as the `from-song` sub-command, and never route a bare `from-song`
46
+ (no images-dir + song args) into `from-script` with the song as the
47
+ script. On this ambiguity → ask rather than best-guess.
39
48
  2. Look up the sub-command in the table above and execute its file
40
49
  verbatim with the remaining args.
41
50
  3. Unknown / missing sub-command → print the table and ask:
42
51
 
43
52
  > 1. from-script — full script → final video
44
- > 2. scenesingle-scene iteration
45
- > 3. storyboardimage-only contact sheet
46
- > 4. stitchre-stitch existing clips
53
+ > 2. from-songmusic video from a song + reference images
54
+ > 3. scenesingle-scene iteration
55
+ > 4. storyboardimage-only contact sheet
56
+ > 5. stitch — re-stitch existing clips
47
57
 
48
58
  ## Rules
49
59
 
@@ -59,5 +69,5 @@ contract under [`scripts/ai-video/lib/adapter-contract.md`](../scripts/ai-video/
59
69
 
60
70
  ## See also
61
71
 
62
- - [`scripts/ai-video/lib/adapter-contract.md`](../scripts/ai-video/lib/adapter-contract.md) — provider adapter v1 contract
63
- - [`docs/contracts/command-clusters.md`](../docs/contracts/command-clusters.md) — `video` cluster registration
72
+ - [`scripts/ai-video/lib/adapter-contract.md`](../../scripts/ai-video/lib/adapter-contract.md) — provider adapter v1 contract
73
+ - [`docs/contracts/command-clusters.md`](../../docs/contracts/command-clusters.md) — `video` cluster registration
@@ -73,7 +73,7 @@ Experimental, removable rule. If opt-in consistently declined or siblings never
73
73
 
74
74
  ## Follow-up (not yet shipped)
75
75
 
76
- - Consumer-install detector reachability: detector lives in `scripts/_lib/`; exposing it as an `agent-config` CLI subcommand for consumers is a follow-up. Import-reachable in this repo / co-located maintainer setups today.
76
+ - Consumer-install detector reachability: shipped 2026-05-30 detector now exposed as `agent-config linked-projects:list` (closes ADR-032 follow-up); cross-repo retrieval over opted-in siblings ships as `/knowledge:cross-repo`.
77
77
  - Multi-agent verification: only Claude Code empirically validated (ADR-032). Cursor / Augment / Copilot unverified — manual fallback in the guide covers them until tested.
78
78
 
79
79
  Trigger-set above activates this routing under the `balanced` and `full` profiles.
@@ -0,0 +1,193 @@
1
+ ---
2
+ model_tier: inherit
3
+ name: song-to-script
4
+ description: "Turn an audio track into a timed `## Scene N` script: song sections → per-scene durations, auto mode adds mood + lip-sync lines. Triggers 'music video', 'from the song', 'cut to the beat'."
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
+ # song-to-script
21
+
22
+ > Turn a song into `<project>/script.md` — a sequence of `## Scene N`
23
+ > blocks whose `duration:` values sum to the track length and whose cut
24
+ > points land on real section boundaries. Consumed by
25
+ > [`/video:from-song`](../../commands/video/from-song.md), then handed
26
+ > to [`scene-expander`](../scene-expander/SKILL.md) and
27
+ > [`video-director`](../video-director/SKILL.md). Never invents timing —
28
+ > every boundary comes from the audio probe, and the probe's `method`
29
+ > tells this skill how musical (or not) those boundaries actually are.
30
+
31
+ ## When to use
32
+
33
+ - A music-video run needs scenes cut to the song (`/video:from-song`).
34
+ - An existing script must be **re-timed** to a track after the edit
35
+ drifted from the beat (the named second consumer — re-time without a
36
+ full re-author).
37
+
38
+ Do NOT use when:
39
+
40
+ - The operator already supplies a `## Scene N` script with `duration:`
41
+ values — feed it straight to `scene-expander`.
42
+ - There is no audio — use the operator brief with `scene-expander`
43
+ directly.
44
+
45
+ ## Inputs
46
+
47
+ - **Audio probe** — JSON from
48
+ [`scripts/ai-video/lib/probe-audio.sh`](../../../../scripts/ai-video/lib/probe-audio.sh):
49
+ `{duration, method, warning?, sections:[{start,end,energy,label}]}`.
50
+ - `method: silence` — boundaries are real quiet gaps; trust them as cuts.
51
+ - `method: rms` — boundaries are energy-delta inflections; usable but
52
+ coarse.
53
+ - `method: interval` — **the track is structurally flat** (brick-walled
54
+ / sustained); sections are fixed-interval, NOT musical. When `method`
55
+ is `interval` (or `warning` is set), the emitted script header states
56
+ that timing is interval-based and the operator should pass
57
+ `--scene-durations` for musical sync. Never present interval cuts as
58
+ beat-synced.
59
+ - **Mode** — `brief` (operator text is the creative source) or `auto`
60
+ (infer mood + action from energy).
61
+ - **Brief** (brief mode only) — free text: story, settings, look.
62
+ - **Character lock** (optional) — `<project>/character.json` if a human
63
+ subject was locked. **Absent is normal** — abstract / landscape /
64
+ visualiser videos have no locked subject; see Step 2.
65
+
66
+ ## Procedure
67
+
68
+ ### Step 1: Map sections → scenes
69
+
70
+ One `## Scene N` per probe section. `duration:` = `end - start`
71
+ (rounded to 0.5 s). Merge any section shorter than the provider's
72
+ `min-duration` into its neighbour; split any section longer than the
73
+ provider's `max-duration` into equal sub-scenes so no single clip
74
+ exceeds the backend limit (read both from the resolved provider tuning).
75
+
76
+ ### Step 2: Assign mood + action
77
+
78
+ First decide the **subject mode**:
79
+
80
+ - **Character mode** — `character.json` exists: every scene's `action:`
81
+ names the locked subject, never a fresh description.
82
+ - **Style mode** — no `character.json`: scenes describe setting, palette,
83
+ and motion continuity (the recurring *look*), not a person. This is the
84
+ valid abstract / landscape / visualiser path — do not invent a human
85
+ subject to fill the slot.
86
+
87
+ Then assign per scene:
88
+
89
+ - **Brief mode** — distribute the brief's beats across scenes in order;
90
+ energy only modulates pacing (low energy → slow push-in, high energy →
91
+ fast cuts / motion). Do not add story the brief did not state.
92
+ - **Auto mode** — derive mood per section from `energy` and `label`:
93
+
94
+ | label / energy | default scene intent |
95
+ |---|---|
96
+ | intro / low | establishing wide, slow camera, calm subject/scene |
97
+ | build / rising | approach, tightening framing |
98
+ | drop / peak | dynamic motion, weather/FX, fast push |
99
+ | breakdown / dip | close-up / detail, quiet, single light source |
100
+ | outro / fade | pull-back, resolve, hold |
101
+
102
+ ### Step 3: Lyric / lip-sync lines (auto mode, vocal tracks)
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.
111
+
112
+ ### Step 4: Emit + reconcile
113
+
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.
119
+
120
+ ### Step 5: Validate before handoff
121
+
122
+ Concrete checks (all must pass before the script is handed to
123
+ `scene-expander`):
124
+
125
+ - **Assert** `Σ(duration) == probe.duration` within ±1.0 s; report the
126
+ exact delta. A larger delta → halt, do not pad.
127
+ - **Verify** every scene boundary equals a probe section boundary (or a
128
+ `--scene-durations` value) — no invented cut points.
129
+ - **Confirm** no scene `duration:` exceeds the provider `max-duration`
130
+ or falls below `min-duration`.
131
+ - **Ensure** every `## Scene N` carries all five keys (`duration` ·
132
+ `mood` · `action` · `camera` · `dialogue`), and that `dialogue:` is
133
+ empty in style mode.
134
+
135
+ ## Output format
136
+
137
+ ```markdown
138
+ # <project> — derived from <song-file> (<mode> mode · cuts: <method>)
139
+
140
+ ## Scene 1
141
+ duration: 6.0
142
+ mood: establishing, cold, pre-storm
143
+ action: <subject from character.json, OR style description in style mode>
144
+ camera: slow push-in
145
+ dialogue:
146
+
147
+ ## Scene 2
148
+ duration: 4.5
149
+ mood: build, rising tension
150
+ action: close on <subject / detail>, wind picking up
151
+ camera: handheld tighten
152
+ dialogue:
153
+ - "<subject>: \"<lyric line for this section, if any>\""
154
+ ```
155
+
156
+ `scene-expander` consumes this verbatim — keep the keys
157
+ (`duration` · `mood` · `action` · `camera` · `dialogue`) exact.
158
+
159
+ ## Gotcha
160
+
161
+ - **`method: interval` is the brick-walled-master signal, not a bug.**
162
+ A compressed modern master has near-constant RMS and no silence, so the
163
+ probe degrades to fixed intervals. That is the honest floor — surface
164
+ it and point the operator at `--scene-durations`; never dress interval
165
+ cuts up as beat-synced.
166
+ - **A vocal section without supplied lyrics is B-roll, not lip-sync.**
167
+ Detected vocal energy alone does not authorise `dialogue:` — only
168
+ operator-supplied lyrics do.
169
+ - **Style mode is the default for a no-character run**, not an error
170
+ path. Landscape / abstract / visualiser videos never get a fabricated
171
+ human subject.
172
+
173
+ ## Do NOT
174
+
175
+ - **Do NOT invent timing.** Every cut maps to a probe boundary or a
176
+ `--scene-durations` value — never to taste.
177
+ - **Do NOT present `interval`-fallback cuts as beat-synced.** Always
178
+ surface the probe `method`.
179
+ - **Do NOT emit a clip outside the provider's min/max duration** —
180
+ split/merge in Step 1 instead.
181
+ - **Do NOT fabricate lyrics or story** beyond the brief / detected vocals.
182
+ - **Do NOT invent a human subject** in style mode; defer identity to
183
+ `character.json` only when a lock exists.
184
+ - **Do NOT pad a unreconcilable timing sum** — halt and surface it.
185
+
186
+ ## See also
187
+
188
+ - [`/video:from-song`](../../commands/video/from-song.md) — the command
189
+ that drives this skill
190
+ - [`scene-expander`](../scene-expander/SKILL.md) — consumes the emitted
191
+ script
192
+ - [`character-consistency`](../character-consistency/SKILL.md) — supplies
193
+ the locked subject referenced in `action:` (character mode only)
@@ -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.4.0",
9
+ "version": "5.5.0",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
@@ -349,6 +349,7 @@
349
349
  "./.claude/skills/skill-management",
350
350
  "./.claude/skills/skill-reviewer",
351
351
  "./.claude/skills/skill-writing",
352
+ "./.claude/skills/song-to-script",
352
353
  "./.claude/skills/sql-writing",
353
354
  "./.claude/skills/stakeholder-tradeoff",
354
355
  "./.claude/skills/subagent-orchestration",
@@ -384,13 +385,19 @@
384
385
  "./.claude/skills/video",
385
386
  "./.claude/skills/video-director",
386
387
  "./.claude/skills/video-from-script",
388
+ "./.claude/skills/video-from-song",
387
389
  "./.claude/skills/video-scene",
388
390
  "./.claude/skills/video-stitch",
389
391
  "./.claude/skills/video-storyboard",
390
392
  "./.claude/skills/vision-articulation",
391
393
  "./.claude/skills/voc-extract",
392
394
  "./.claude/skills/voice-and-tone-design",
393
- "./.claude/skills/work"
395
+ "./.claude/skills/work",
396
+ "./.claude/skills/knowledge-cross-repo",
397
+ "./.claude/skills/skill",
398
+ "./.claude/skills/skill-preview",
399
+ "./.claude/skills/skills",
400
+ "./.claude/skills/skills-discover"
394
401
  ]
395
402
  }
396
403
  ]
package/CHANGELOG.md CHANGED
@@ -811,6 +811,55 @@ 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.5.0](https://github.com/event4u-app/agent-config/compare/5.4.1...5.5.0) (2026-05-31)
815
+
816
+ ### Features
817
+
818
+ * /skill:preview — non-destructive skill dry-run ([03ce5fc](https://github.com/event4u-app/agent-config/commit/03ce5fc757f9b42226083627ad7380dd0d895ef7))
819
+ * cross-repo retrieval + linked-projects:list (ADR-032 Option A) ([894e2e8](https://github.com/event4u-app/agent-config/commit/894e2e88c2a7e6744eb45a90907c634953aec0ec))
820
+ * /skills:discover — local, explained skill recommender ([d887c56](https://github.com/event4u-app/agent-config/commit/d887c561514b019f2ae1a3eca068087f4ffee351))
821
+ * meta-layer concept-surface audit tool + zero-cut evidence ([b4a7f3e](https://github.com/event4u-app/agent-config/commit/b4a7f3e5e87ab0c5aa4a820784fba09d8306284a))
822
+ * **video:** add /video:from-song music-video command + register in cluster ([05752df](https://github.com/event4u-app/agent-config/commit/05752dfd0837759923bf02f3731fecfb81dec9e7))
823
+ * **ai-video:** add probe-audio.sh hybrid audio segmentation ([41b4f8d](https://github.com/event4u-app/agent-config/commit/41b4f8dd57d1352df49bdc31bc81ea8e7e04f550))
824
+
825
+ ### Bug Fixes
826
+
827
+ * classify command-cluster files as commands, not skills ([0fd25da](https://github.com/event4u-app/agent-config/commit/0fd25dad8f75cfb7021512e2905b23b24fea88c1))
828
+ * **ai-video:** portability + regenerate stale derived for from-song ([9d728b8](https://github.com/event4u-app/agent-config/commit/9d728b88687a6c27dfa647dd233fb4412f7e8d5a))
829
+
830
+ ### Documentation
831
+
832
+ * reword execution-type mentions to dodge check-refs false positive ([dc84ed0](https://github.com/event4u-app/agent-config/commit/dc84ed01d3aa6845a1e15674ed1ec3ff3bbfb9ce))
833
+ * add discoverable BREAKING_CHANGES.md + major-bump rationale ([385b8a2](https://github.com/event4u-app/agent-config/commit/385b8a225b764cfe09a7e31640184140de4e07d9))
834
+ * **roadmap:** avoid check-refs false-positive on pack name ([bd02ef0](https://github.com/event4u-app/agent-config/commit/bd02ef0b07d27653dbec4971b984d1d12b75ac5e))
835
+ * **roadmap:** /video:from-song implementation roadmap + dashboard ([e4899c2](https://github.com/event4u-app/agent-config/commit/e4899c2c4f57b77bc62aa9187d4aa768ea6885f6))
836
+
837
+ ### Tests
838
+
839
+ * **ai-video:** cover probe-audio segmentation + from-song registration ([9a58807](https://github.com/event4u-app/agent-config/commit/9a588071de1601337e6e65dc9b940b0a36dcfd42))
840
+
841
+ ### Chores
842
+
843
+ * archive road-to-leaner-core-and-discovery (all phases complete) ([6b6b191](https://github.com/event4u-app/agent-config/commit/6b6b191f3b9ff328b9b7f3d6aa6eaf718e471934))
844
+ * regenerate core pack manifest with skill/skill:preview commands ([9bd88c9](https://github.com/event4u-app/agent-config/commit/9bd88c9b7b18bdd16ef2c77066aa485d96fc2b2f))
845
+ * register skills/skill/knowledge clusters + regen outputs ([1156566](https://github.com/event4u-app/agent-config/commit/1156566ad82647c596e47483d57b3fcb71f9a275))
846
+ * bump command count 135 -> 136 in README badge + browse lines ([82c27c3](https://github.com/event4u-app/agent-config/commit/82c27c3383f53d29735784bae5fb86a151c19e39))
847
+ * **ai-video:** regenerate manifests, counts, condensation hashes ([fe4dc28](https://github.com/event4u-app/agent-config/commit/fe4dc280437f209b31190a5117848feb92290015))
848
+
849
+ Tests: 5336 (+65 since 5.4.1)
850
+
851
+ ## [5.4.1](https://github.com/event4u-app/agent-config/compare/5.4.0...5.4.1) (2026-05-30)
852
+
853
+ ### Documentation
854
+
855
+ * **roadmap:** add road-to-leaner-core-and-discovery ([abf7074](https://github.com/event4u-app/agent-config/commit/abf7074913247a13c6c79b5be8c2ef49aba44aa4))
856
+
857
+ ### Tests
858
+
859
+ * **condense:** assert new PATH-fallback hook command shape ([3e72789](https://github.com/event4u-app/agent-config/commit/3e727898e4ca4f66a3a7d414e48067950f6845e3))
860
+
861
+ Tests: 5271 (+22 since 5.4.0)
862
+
814
863
  ## [5.4.0](https://github.com/event4u-app/agent-config/compare/5.3.0...5.4.0) (2026-05-30)
815
864
 
816
865
  ### Features
package/CONTRIBUTING.md CHANGED
@@ -237,6 +237,12 @@ Release notes live in [`CHANGELOG.md`](CHANGELOG.md) and are generated by
237
237
  the last tag. Contributors do **not** edit the changelog by hand; writing
238
238
  clean commit subjects is how notes are authored.
239
239
 
240
+ The consumer-facing breaking changes per major are indexed for discovery in
241
+ [`BREAKING_CHANGES.md`](BREAKING_CHANGES.md) — one row per `X.0.0`, each pointing
242
+ back to the full `CHANGELOG.md` entry. That file is the discoverable index; this
243
+ section and [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts/CHANGELOG-conventions.md)
244
+ remain the canonical policy.
245
+
240
246
  ### Runtime dependency floors — never pin to the freshest patch
241
247
 
242
248
  `dependencies` in `package.json` are resolved on the **consumer's** machine
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-219-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-135-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-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/)
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
 
@@ -43,7 +43,7 @@ Beyond software: [`user-types/`](packages/core/.agent-src.uncondensed/user-types
43
43
  </p>
44
44
 
45
45
  <p align="center">
46
- <sub>Distribution: <code>npm install @event4u/agent-config</code> · npm-primary per <a href="docs/decisions/ADR-033-distribution-identity-npm-primary.md">ADR-033</a>. Major bumps follow <a href="CONTRIBUTING.md#versioning-policy">semver</a>; each ships a <a href="CHANGELOG.md#breaking--v400-unified-setup-road-to-unified-setup"><code>### Breaking</code></a> entry.</sub>
46
+ <sub>Distribution: <code>npm install @event4u/agent-config</code> · npm-primary per <a href="docs/decisions/ADR-033-distribution-identity-npm-primary.md">ADR-033</a>. Major bumps follow <a href="CONTRIBUTING.md#versioning-policy">semver</a>; each ships a <a href="CHANGELOG.md#breaking--v400-unified-setup-road-to-unified-setup"><code>### Breaking</code></a> entry — all majors indexed in <a href="BREAKING_CHANGES.md">BREAKING_CHANGES.md</a>.</sub>
47
47
  </p>
48
48
 
49
49
  ---
@@ -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 135 commands](.agent-src/commands/) · [skills catalog](docs/skills-catalog.md) · [full catalog](docs/catalog.md) · [`llms.txt`](llms.txt).
372
+ Browse content: [all 141 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
 
@@ -50,6 +50,7 @@ export const REGISTRY = [
50
50
  { name: 'keys:install-openai', disposition: 'delegate' },
51
51
  { name: 'first-run', disposition: 'delegate' },
52
52
  { name: 'memory:lookup', disposition: 'delegate' },
53
+ { name: 'linked-projects:list', disposition: 'delegate' },
53
54
  { name: 'memory:signal', disposition: 'delegate' },
54
55
  { name: 'memory:hash', disposition: 'delegate' },
55
56
  { name: 'memory:check', disposition: 'delegate' },
@@ -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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"}
@@ -1,6 +1,6 @@
1
1
  # Discovery — Deprecation Report
2
2
 
3
- - Generated: `2026-05-30T13:53:39Z`
3
+ - Generated: `2026-05-30T23:34:47Z`
4
4
  - Deprecated artefacts: **0**
5
5
 
6
6
  _None. Tree is clean._