@event4u/agent-config 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.agent-src/commands/fix/{pr-bots.md → pr-bot-comments.md} +3 -3
  2. package/.agent-src/commands/fix/{pr.md → pr-comments.md} +6 -6
  3. package/.agent-src/commands/fix/{pr-developers.md → pr-developer-comments.md} +3 -3
  4. package/.agent-src/commands/fix.md +6 -6
  5. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +2 -2
  6. package/.agent-src/rules/no-cheap-questions.md +11 -2
  7. package/.agent-src/skills/readme-writing-package/SKILL.md +24 -0
  8. package/.claude-plugin/marketplace.json +4 -4
  9. package/CHANGELOG.md +79 -0
  10. package/README.md +76 -12
  11. package/docs/architecture.md +2 -2
  12. package/docs/catalog.md +3 -3
  13. package/docs/contracts/command-clusters.md +3 -3
  14. package/docs/contracts/file-ownership-matrix.json +9 -9
  15. package/docs/contracts/tier-3-contrib-plugin.md +129 -0
  16. package/docs/decisions/ADR-007-agent-discovery-scopes.md +278 -0
  17. package/docs/decisions/ADR-008-installed-tools-manifest.md +160 -0
  18. package/docs/decisions/INDEX.md +2 -0
  19. package/docs/getting-started.md +16 -25
  20. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +32 -0
  21. package/docs/guidelines/agent-infra/installed-tools-manifest.md +135 -0
  22. package/docs/installation.md +116 -49
  23. package/docs/migrations/commands-1.15.0.md +3 -3
  24. package/docs/setup/per-ide/claude-desktop.md +8 -4
  25. package/docs/skills-catalog.md +23 -2
  26. package/docs/troubleshooting.md +20 -32
  27. package/llms.txt +22 -1
  28. package/package.json +1 -1
  29. package/scripts/_cli/cmd_export.py +157 -0
  30. package/scripts/_cli/cmd_sync.py +162 -0
  31. package/scripts/_cli/cmd_update.py +23 -1
  32. package/scripts/_cli/cmd_validate.py +164 -0
  33. package/scripts/_lib/installed_lock.py +160 -0
  34. package/scripts/_lib/installed_tools.py +237 -0
  35. package/scripts/agent-config +62 -0
  36. package/scripts/install +68 -13
  37. package/scripts/install.py +984 -33
  38. package/scripts/install.sh +6 -11
  39. package/templates/agent-config-wrapper.sh +40 -25
  40. package/templates/consumer-settings/README.md +2 -2
  41. package/scripts/setup.sh +0 -230
@@ -0,0 +1,135 @@
1
+ # Installed-Tools Manifest
2
+
3
+ Project-committed bill of materials for AI tooling. Answers the
4
+ question "which AIs does this project use, where do their bridges live,
5
+ and is everyone on the team on the same set?". Canonical schema is
6
+ ADR-008 ([`docs/decisions/ADR-008-installed-tools-manifest.md`](../../decisions/ADR-008-installed-tools-manifest.md)).
7
+ Phase 3 of [`road-to-global-first-install`](../../../agents/roadmaps/road-to-global-first-install.md).
8
+
9
+ This file lives at **`agents/installed-tools.lock`** — committed,
10
+ machine-managed, and orthogonal to `.agent-project-settings.yml`
11
+ (which owns *behaviour*, not *bill of materials*).
12
+
13
+ ## Schema (v1)
14
+
15
+ ```yaml
16
+ schema_version: 1
17
+ agent_config_version: "2.x.y" # last package version that wrote the file
18
+ tools:
19
+ - name: claude-code # must match _VALID_TOOLS in scripts/install.py
20
+ scope: global # one of: global, project
21
+ bridge_marker: ~/.claude/ # validate checks this path exists
22
+ installed_at: "2026-05-12"
23
+ - name: roocode
24
+ scope: project # workspace-wins → must live in repo
25
+ bridge_marker: .roo/rules/agent-config.md
26
+ installed_at: "2026-05-12"
27
+ ```
28
+
29
+ | Field | Owner | Notes |
30
+ |---|---|---|
31
+ | `schema_version` | machine | bumps on breaking schema changes |
32
+ | `agent_config_version` | machine | last writer's package version; `validate` flags drift |
33
+ | `tools[]` | machine | append-on-init order preserved (not alphabetised) |
34
+ | `tools[].name` | machine | one of the 17 valid IDs in `scripts/install.py` |
35
+ | `tools[].scope` | machine | `global` (user-home) or `project` (workspace bridge) |
36
+ | `tools[].bridge_marker` | machine | absolute / `~`-prefixed for global, repo-relative for project |
37
+ | `tools[].installed_at` | machine | ISO date; informational only |
38
+
39
+ The file is **machine-managed**. Hand-editing is discouraged — every
40
+ mutation goes through `init`, `sync`, or `init --force`.
41
+
42
+ ## Workflow
43
+
44
+ ### Team onboarding (clone → sync → done)
45
+
46
+ ```bash
47
+ git clone <repo>
48
+ cd <repo>
49
+ npx @event4u/agent-config sync
50
+ ```
51
+
52
+ `sync` reads `agents/installed-tools.lock`, checks every listed tool's
53
+ bridge marker, and replays `install.py --tools=<id>` for each missing
54
+ one. Tools whose marker is already present are skipped — `sync` is
55
+ idempotent and safe to re-run.
56
+
57
+ ### Adding a tool
58
+
59
+ ```bash
60
+ npx @event4u/agent-config init --tools=<id>
61
+ # or --tools=<id1>,<id2>
62
+ ```
63
+
64
+ `init` writes an entry per tool. Existing entry with the same
65
+ `(name, scope)` → no-op. Entry with **different scope** → loud warning
66
+ and refusal until you pass `--force` (see scope migration below).
67
+
68
+ ### Drift detection (CI gate)
69
+
70
+ ```bash
71
+ npx @event4u/agent-config validate
72
+ ```
73
+
74
+ Read-only. Exit code 1 if any drift is found. Surfaces three drift
75
+ kinds; no auto-fix.
76
+
77
+ | Kind | Trigger | Fix |
78
+ |---|---|---|
79
+ | `marker_missing` | recorded `bridge_marker` does not exist | `agent-config sync` |
80
+ | `scope_divergence` | marker only exists at the *other* scope | `agent-config init --tools=<id> --force` |
81
+ | `version_drift` | manifest's `agent_config_version` ≠ installed package | `agent-config update` then `agent-config init --force` |
82
+
83
+ `--skip-version-check` suppresses the third kind for repositories that
84
+ intentionally pin an older version of the manifest.
85
+
86
+ ## Scope migration
87
+
88
+ Moving a tool between `project` and `global` is supported but loud:
89
+
90
+ 1. Run `init --tools=<id> --scope=<new> --force`. The installer detects
91
+ the conflict, warns, and rewrites the entry only when `--force` is
92
+ present.
93
+ 2. The old bridge is **not** removed automatically — clean up the
94
+ leftover marker yourself (`rm .windsurf/agent-config.md` etc.).
95
+ 3. `validate` afterwards confirms the new state.
96
+
97
+ Reasoning: scope is a project-wide decision; flipping it silently
98
+ would surprise other team members who never asked for the change. The
99
+ loud refusal forces an explicit `--force` so the diff is reviewable in
100
+ the next commit.
101
+
102
+ ## Relationship to other files
103
+
104
+ | File | What it answers | Layer |
105
+ |---|---|---|
106
+ | `agents/installed-tools.lock` | **which AIs?** (this guideline) | bill of materials |
107
+ | `.agent-project-settings.yml` | **how do agents behave?** | layered-settings (team file) |
108
+ | `~/.config/agent-config/installed.lock` | **which package version did I install globally?** | per-developer global lockfile (Phase 1) |
109
+ | `.agent-settings.yml` | **what are my personal preferences in this project?** | layered-settings (developer file) |
110
+
111
+ Each file has one job. They never overlap. The two `.lock` files look
112
+ similar by name but answer different questions: `installed.lock` is
113
+ per-developer / cross-project (the package itself), while
114
+ `installed-tools.lock` is per-project / team-shared (which tools are
115
+ expected in *this* repo).
116
+
117
+ ## CI integration
118
+
119
+ Recommended gate (GitHub Actions / GitLab CI):
120
+
121
+ ```yaml
122
+ - name: Validate installed-tools manifest
123
+ run: npx @event4u/agent-config validate
124
+ ```
125
+
126
+ Pair it with `agent-config sync` in your dev-setup script so new
127
+ contributors get a working environment without reading the manifest by
128
+ hand.
129
+
130
+ ## References
131
+
132
+ - [`ADR-008`](../../decisions/ADR-008-installed-tools-manifest.md) — manifest decision and schema.
133
+ - [`ADR-007`](../../decisions/ADR-007-agent-discovery-scopes.md) — global-first install (prerequisite).
134
+ - [`docs/installation.md`](../../installation.md) — team-onboarding flow.
135
+ - [`layered-settings.md`](layered-settings.md) — parallel settings hierarchy (orthogonal to this manifest).
@@ -1,7 +1,32 @@
1
1
  # Installation
2
2
 
3
- **Principle:** Project-installed by default, plugin-enhanced when available.
4
- No Task, no Make, no build tools required for installation.
3
+ **Principle:** Global-first install (cross-project, in `~/.claude/`,
4
+ `~/.cursor/`, …), opt-in project export when a team wants the config
5
+ committed to a repo. No Task, no Make, no build tools required.
6
+
7
+ > **v2.1+** — the installer detects intent. Running `npx
8
+ > @event4u/create-agent-config init` in `~/` or any directory without a
9
+ > project manifest defaults to **global**. Running it inside a project
10
+ > (`package.json` / `composer.json` / `pyproject.toml` / etc.) defaults
11
+ > to **project**. Pass `--scope=global` or `--scope=project` to override
12
+ > detection. See `--scope` in the CLI help for the full matrix.
13
+
14
+ A global install records itself in `~/.config/agent-config/installed.lock`
15
+ (schema_version, agent_config_version, installed_at, tools[]). `npx
16
+ @event4u/create-agent-config update` keeps that manifest in lockstep
17
+ with the project pin in `.agent-settings.yml`. A version-mismatched
18
+ re-run of `init --scope=global` is refused with exit code 1 until you
19
+ `update` or pass `--force`.
20
+
21
+ To commit a specific tool's config into a project repo, use:
22
+
23
+ ```bash
24
+ agent-config export --tool=<id> --output=<path>
25
+ ```
26
+
27
+ (Idempotent; `--force` overrides drift. `--list` enumerates supported
28
+ tool ids. See [`docs/contracts/command-clusters.md`](contracts/command-clusters.md)
29
+ for the export contract.)
5
30
 
6
31
  ## Per-IDE setup — quick index
7
32
 
@@ -31,6 +56,41 @@ Combine surfaces by comma-separating: `--tools=claude-code,cursor,windsurf`.
31
56
 
32
57
  ---
33
58
 
59
+ ## Upgrading from v1
60
+
61
+ v2 is a breaking change: the local-install scheme (Composer
62
+ `require-dev`, npm `devDependency`, the `--global` symlink namespace
63
+ under `~/.claude/`, `~/.cursor/`, `~/.codeium/windsurf/`,
64
+ `~/.config/agent-config/`) is **retired**. v2 is npx-only — the
65
+ runtime is resolved per invocation, pinned by
66
+ `agent_config_version` in `.agent-settings.yml`.
67
+
68
+ One command does the cutover, idempotently:
69
+
70
+ ```bash
71
+ ./agent-config migrate # remove legacy install signals
72
+ ./agent-config migrate --dry-run # detect only, no writes
73
+ ```
74
+
75
+ What `migrate` cleans up:
76
+
77
+ | What | Action |
78
+ |---|---|
79
+ | `package.json` → `devDependencies.@event4u/agent-config` | Removed (lockfile updated on next `npm install`). |
80
+ | `composer.json` → `require*.event4u/agent-config` | Removed (lockfile updated on next `composer update`). |
81
+ | Symlinks `.augment/`, `.claude/`, `.cursor/`, `.clinerules/`, `.windsurfrules` pointing into `vendor/` or `node_modules/` | Deleted. User-owned links are preserved with a warning. |
82
+ | `.agent-settings.yml` | Written fresh if missing, with `agent_config_version` pinned. |
83
+ | `.gitignore` agent-config block | Refreshed. |
84
+
85
+ After `migrate` runs, you can drop the now-unreferenced
86
+ `node_modules/@event4u/agent-config/` and `vendor/event4u/agent-config/`
87
+ directories with `npm prune` and `composer update` respectively.
88
+
89
+ Full contract sketch + the retired `--global` namespace teardown:
90
+ [`docs/migration/v1-to-v2.md`](migration/v1-to-v2.md).
91
+
92
+ ---
93
+
34
94
  ## Mechanisms reference
35
95
 
36
96
  The rest of this page documents the underlying install mechanisms
@@ -46,9 +106,9 @@ the per-IDE index above.
46
106
  > 2. `scripts/install.py` — bridge files (`.agent-settings.yml`, VSCode /
47
107
  > Augment / Copilot JSON descriptors).
48
108
  >
49
- > `bin/install.php` and `scripts/postinstall.sh` are thin wrappers that
50
- > delegate to `scripts/install`. Both underlying stages remain callable
51
- > directly for advanced use; see their `--help`.
109
+ > `npx @event4u/create-agent-config init` and `setup.sh` (curl-based)
110
+ > are thin wrappers that delegate to `scripts/install`. Both underlying
111
+ > stages remain callable directly for advanced use; see their `--help`.
52
112
  >
53
113
  > Python 3.10+ is required for bridges. If it is missing, the orchestrator
54
114
  > prints a warning and continues with the payload sync only.
@@ -80,9 +140,9 @@ the per-IDE index above.
80
140
  ## Quickstart — one-liner entrypoints
81
141
 
82
142
  Try `@event4u/agent-config` in any directory in under 30 seconds, without
83
- `composer require` or `git clone` first. Both entrypoints are thin
84
- wrappers around `scripts/install` — same payload, same flags, no extra
85
- state.
143
+ adding it as a dev dependency or cloning the repo first. Both
144
+ entrypoints are thin wrappers around `scripts/install` — same payload,
145
+ same flags, no extra state.
86
146
 
87
147
  ### `npx` (Node ≥ 18)
88
148
 
@@ -139,41 +199,26 @@ used. Pass `--yes` (or `-y`) to force non-interactive mode anywhere.
139
199
  Install once in the project — available to everyone working on it.
140
200
  The package is versioned with the project. Settings are committed once.
141
201
 
142
- ### Composer (PHP projects)
202
+ ### npx (recommended for any project)
143
203
 
144
204
  ```bash
145
- composer require --dev event4u/agent-config
146
- php vendor/bin/install.php
205
+ npx @event4u/create-agent-config init --tools=claude-code,cursor
147
206
  ```
148
207
 
149
- Composer does **not** run a post-install hook for this package — the
150
- installer is an explicit step. `bin/install.php` is a thin wrapper that
151
- calls `scripts/install` (the bash orchestrator). To pick a non-default
152
- profile:
208
+ The wrapper downloads the latest `@event4u/agent-config` tarball into a
209
+ temp dir, runs `scripts/install` with the selected tools, and cleans up
210
+ afterwards. Nothing is added to `package.json`.
153
211
 
154
- ```bash
155
- php vendor/bin/install.php --profile=balanced
156
- ```
157
-
158
- The `--profile` flag controls the initial `cost_profile` value written
159
- to `.agent-settings.yml`.
160
-
161
- ### npm (JavaScript/TypeScript projects)
212
+ ### Global CLI (one install per machine)
162
213
 
163
214
  ```bash
164
- npm install --save-dev @event4u/agent-config
215
+ npm install -g @event4u/agent-config
216
+ agent-config --help
165
217
  ```
166
218
 
167
- npm runs `scripts/postinstall.sh` automatically, which invokes
168
- `scripts/install` the same orchestrator every other entry point uses.
169
-
170
- If your setup disables install scripts (`npm config set ignore-scripts
171
- true` or similar), nothing happens and the command prints no warning.
172
- Re-run the installer manually in that case:
173
-
174
- ```bash
175
- bash node_modules/@event4u/agent-config/scripts/install
176
- ```
219
+ The global install puts `agent-config` on `$PATH` so the project
220
+ wrapper (`./agent-config`) can fall through to it when no
221
+ `node_modules/@event4u/agent-config/` exists.
177
222
 
178
223
  ### Installer orchestrator (`scripts/install`)
179
224
 
@@ -188,12 +233,6 @@ bash scripts/install --skip-sync # bridges only
188
233
  bash scripts/install --dry-run # show payload sync plan, skip bridges
189
234
  ```
190
235
 
191
- PHP users can use the Composer wrapper, which forwards all flags:
192
-
193
- ```bash
194
- php vendor/bin/install.php --profile=balanced
195
- ```
196
-
197
236
  Under the hood:
198
237
 
199
238
  - `scripts/install.sh` — payload sync (callable directly for sync-only runs).
@@ -234,6 +273,7 @@ After initial setup, commit these files:
234
273
 
235
274
  ```
236
275
  .agent-settings.yml ← shared profile (e.g., cost_profile: minimal)
276
+ agents/installed-tools.lock ← AI bill of materials (ADR-008, Phase 3)
237
277
  .augment/ ← rules, skills, commands (symlinks)
238
278
  .cursor/rules/ ← Cursor rules (symlinks)
239
279
  .claude/ ← Claude rules, skills (symlinks)
@@ -241,7 +281,37 @@ AGENTS.md ← Copilot/Gemini instructions
241
281
  .github/copilot-instructions.md ← GitHub Copilot instructions
242
282
  ```
243
283
 
244
- New team members: run `composer install` (or `npm install`) open editor → done.
284
+ `agents/installed-tools.lock` lists every AI tool the project expects,
285
+ its scope (`global` or `project`), and its bridge marker path. Written
286
+ by `init`, replayed by `sync`, checked by `validate`. Schema and
287
+ workflow: [`docs/guidelines/agent-infra/installed-tools-manifest.md`](guidelines/agent-infra/installed-tools-manifest.md).
288
+
289
+ ### Team onboarding — clone → sync → done
290
+
291
+ New team members get every AI bridge online with a single command:
292
+
293
+ ```bash
294
+ git clone <repo>
295
+ cd <repo>
296
+ npx @event4u/agent-config sync
297
+ ```
298
+
299
+ `sync` reads `agents/installed-tools.lock` and re-runs the installer
300
+ for every tool whose bridge marker is missing locally. Idempotent —
301
+ re-running after every clone is safe. Tools with markers already in
302
+ place are skipped.
303
+
304
+ Pair it with a CI gate to catch drift in PRs:
305
+
306
+ ```bash
307
+ npx @event4u/agent-config validate
308
+ ```
309
+
310
+ `validate` is read-only. Exit 1 on any of: marker missing, scope
311
+ divergence (manifest says `project` but marker only exists at the
312
+ global anchor, or vice versa), version drift (manifest's
313
+ `agent_config_version` ≠ installed package). Full drift catalog and
314
+ fix table: [`installed-tools-manifest.md § Drift detection`](guidelines/agent-infra/installed-tools-manifest.md#drift-detection-ci-gate).
245
315
 
246
316
  ---
247
317
 
@@ -544,15 +614,12 @@ for the upgrade path.
544
614
  When a new version of the package is published:
545
615
 
546
616
  ```bash
547
- composer update event4u/agent-config
548
- php vendor/bin/install.php # refresh bridges + symlinks
549
- ```
617
+ # npx (one-shot, recommended) — always uses the latest tarball
618
+ npx @event4u/create-agent-config init --tools=claude-code,cursor
550
619
 
551
- Or for npm projects:
552
-
553
- ```bash
554
- npm update @event4u/agent-config
555
- bash node_modules/@event4u/agent-config/scripts/install
620
+ # Global CLI
621
+ npm install -g @event4u/agent-config@latest
622
+ agent-config --help
556
623
  ```
557
624
 
558
625
  The installer is idempotent — re-running it after an update refreshes
@@ -15,9 +15,9 @@ invocation and are removed in `1.16.0`.
15
15
  | Old command | New invocation | Removed in |
16
16
  |---|---|---|
17
17
  | `/fix-ci` | `/fix ci` | 1.16.0 |
18
- | `/fix-pr-comments` | `/fix pr` | 1.16.0 |
19
- | `/fix-pr-bot-comments` | `/fix pr-bots` | 1.16.0 |
20
- | `/fix-pr-developer-comments` | `/fix pr-developers` | 1.16.0 |
18
+ | `/fix-pr-comments` | `/fix pr-comments` | 1.16.0 |
19
+ | `/fix-pr-bot-comments` | `/fix pr-bot-comments` | 1.16.0 |
20
+ | `/fix-pr-developer-comments` | `/fix pr-developer-comments` | 1.16.0 |
21
21
  | `/fix-portability` | `/fix portability` | 1.16.0 |
22
22
  | `/fix-references` | `/fix refs` | 1.16.0 |
23
23
  | `/fix-seeder` | `/fix seeder` | 1.16.0 |
@@ -3,10 +3,14 @@
3
3
  The fastest path to running our skills, rules, and (optionally) the MCP
4
4
  server inside Claude Desktop. macOS / Windows / Linux. ~5 minutes.
5
5
 
6
- > **TL;DR** — run `npx @event4u/agent-config init --tools=claude-code`
7
- > inside each project that should expose the skills/rules to Claude
8
- > Desktop. The package now ships as an npx-resolved runtime; the
9
- > retired `--global` symlink scheme has been removed.
6
+ > **TL;DR** — Claude Desktop reads from `~/.claude/` (global only, no
7
+ > project-local discovery on macOS). Run `npx @event4u/agent-config
8
+ > global --tools=claude-desktop` once per user, or
9
+ > `npx @event4u/agent-config init --tools=claude-code` per project
10
+ > (Claude Code's project install also covers Desktop on macOS via the
11
+ > shared `~/.claude/` location seeded during `init`). The v1 npm /
12
+ > composer install scheme is retired; the new global-first scheme is
13
+ > ADR-007 and writes through `~/.config/agent-config/installed.lock`.
10
14
 
11
15
  ## Prerequisites
12
16
 
@@ -1,6 +1,6 @@
1
1
  # Skills Catalog
2
2
 
3
- All **153 skills** available in this package, in alphabetical order.
3
+ All **174 skills** available in this package, in alphabetical order.
4
4
  Click a skill name to open its SKILL.md and read the full guidance.
5
5
 
6
6
  > **Regenerate:** `python3 scripts/generate_catalog.py`
@@ -8,6 +8,7 @@ Click a skill name to open its SKILL.md and read the full guidance.
8
8
 
9
9
  | Skill | What your agent learns |
10
10
  |---|---|
11
+ | [`accessibility-auditor`](../.agent-src/skills/accessibility-auditor/SKILL.md) | Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'. |
11
12
  | [`adr-create`](../.agent-src/skills/adr-create/SKILL.md) | Use when capturing an architectural decision — naming the file, picking the next ADR number, filling Status / Context / Decision / Consequences, and regenerating the index — even without saying 'ADR'. |
12
13
  | [`adversarial-review`](../.agent-src/skills/adversarial-review/SKILL.md) | ONLY when user explicitly requests adversarial review, devil's advocate analysis, stress-testing a plan, or 'poke holes in this' — NOT for regular code review or design feedback. |
13
14
  | [`agent-docs-writing`](../.agent-src/skills/agent-docs-writing/SKILL.md) | Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure. |
@@ -18,6 +19,7 @@ Click a skill name to open its SKILL.md and read the full guidance.
18
19
  | [`api-design`](../.agent-src/skills/api-design/SKILL.md) | Use when designing APIs, planning endpoints, REST conventions, versioning, or deprecation — even when the user just says 'expose this as an endpoint' without naming API design. |
19
20
  | [`api-endpoint`](../.agent-src/skills/api-endpoint/SKILL.md) | Use when the user says "create endpoint", "new API route", or "add controller". Creates a complete endpoint with Controller, FormRequest, Resource, route, and OpenAPI docs. |
20
21
  | [`api-testing`](../.agent-src/skills/api-testing/SKILL.md) | Use when writing API endpoint tests — integration tests, contract validation, response assertions, mocked external services — even when the user says 'test this route' without naming API testing. |
22
+ | [`architecture-review-lens`](../.agent-src/skills/architecture-review-lens/SKILL.md) | Use when a diff may break system boundaries, dependency direction, or cross-service contracts — fifth judge dispatched by /review-changes alongside the four standard judges. |
21
23
  | [`artisan-commands`](../.agent-src/skills/artisan-commands/SKILL.md) | Use when creating or modifying Artisan commands. Covers clear signatures, safe execution flow, helpful output, and project conventions for console tooling. |
22
24
  | [`async-python-patterns`](../.agent-src/skills/async-python-patterns/SKILL.md) | Use when writing Python asyncio code — picking between gather / TaskGroup / wait, structured concurrency, timeouts, cancellation, sync-bridging — decision framework only, cookbook externalized. |
23
25
  | [`authz-review`](../.agent-src/skills/authz-review/SKILL.md) | Use when reviewing authorization end-to-end — route → gate → policy → query scope → response filter — before changes to permissions, tenants, ownership, or admin flows. |
@@ -30,16 +32,19 @@ Click a skill name to open its SKILL.md and read the full guidance.
30
32
  | [`code-review`](../.agent-src/skills/code-review/SKILL.md) | Use when the user says "review this", "check my code", or wants feedback on changes. Reviews for correctness, quality, security, and coding standards. |
31
33
  | [`command-routing`](../.agent-src/skills/command-routing/SKILL.md) | Use when the user invokes a slash command like /create-pr, /commit, /fix-ci, or pastes command file content — routes to the right command with context inference and GitHub API patterns. |
32
34
  | [`command-writing`](../.agent-src/skills/command-writing/SKILL.md) | Use when creating or editing a slash command in .agent-src.uncompressed/commands/ — frontmatter, numbered steps, safety gates — even when the user just says 'add a /command for X'. |
35
+ | [`competitive-positioning`](../.agent-src/skills/competitive-positioning/SKILL.md) | Use when comparing this package to a peer / competitor — ours-vs-theirs verdict table, axis selection, adoption queue. Triggers on 'how do we compare to X', 'should we adopt their pattern'. |
33
36
  | [`composer-packages`](../.agent-src/skills/composer-packages/SKILL.md) | Use when building or maintaining a Composer library — versioning, Laravel integration, autoloading, publishing to private registries — even when the user says 'release a new version'. |
34
37
  | [`context-authoring`](../.agent-src/skills/context-authoring/SKILL.md) | Use when filling in knowledge-layer context files — auth-model, tenant-boundaries, data-sensitivity, deployment-order, observability — interactive walkthrough that turns templates into reviewer fuel. |
35
38
  | [`context-document`](../.agent-src/skills/context-document/SKILL.md) | Use when the user says "create context", "document this area", or wants a structured snapshot of a codebase area for agent orientation. |
36
39
  | [`conventional-commits-writing`](../.agent-src/skills/conventional-commits-writing/SKILL.md) | Use when writing commit messages or squash-merge titles — `feat:`, `fix:`, `chore:`, scopes, breaking changes — even when the user just says 'commit this' without naming Conventional Commits. |
37
40
  | [`copilot-agents-optimization`](../.agent-src/skills/copilot-agents-optimization/SKILL.md) | Use when optimizing AGENTS.md or copilot-instructions.md — deduplicates against .augment/ content, enforces line budgets, and focuses each file on its audience. |
38
41
  | [`copilot-config`](../.agent-src/skills/copilot-config/SKILL.md) | Use when configuring GitHub Copilot — copilot-instructions.md, PR review patterns, output optimization — even when the user just says 'tune Copilot' or 'why is Copilot commenting on X'. |
42
+ | [`customer-research`](../.agent-src/skills/customer-research/SKILL.md) | Use when shaping a discovery slice — JTBD-framed interview guide, switch-event focus, verbatim quotes not summaries. Triggers on 'talk to users', 'why did they cancel', 'before we build X'. |
39
43
  | [`dashboard-design`](../.agent-src/skills/dashboard-design/SKILL.md) | Use when designing monitoring dashboards — visualization selection, layout principles, observability strategies (RED/USE/Golden Signals), and data storytelling. |
40
44
  | [`data-flow-mapper`](../.agent-src/skills/data-flow-mapper/SKILL.md) | Use BEFORE editing code that touches user data — traces the value from entry → validation → transformation → storage → egress, every hop cited with file:line. |
41
45
  | [`database`](../.agent-src/skills/database/SKILL.md) | Use when working with database architecture, MariaDB/MySQL tuning, indexing strategies, slow queries, or multi-connection patterns — even when the user just says 'this query is slow'. |
42
46
  | [`dcf-modeling`](../.agent-src/skills/dcf-modeling/SKILL.md) | Wing-4 valuation cognition for a CFO / finance-partner. Use when a deal, internal investment, or board ask names DCF, intrinsic value, WACC, terminal value, or 'what's it worth on a 5-year hold'. |
47
+ | [`decision-record`](../.agent-src/skills/decision-record/SKILL.md) | Use when locking a trade-off, structuring an ADR draft, or wiring supersession chains — frames options · trade-offs · consequences before the file is written by `adr-create`. |
43
48
  | [`deep-reading-analyst`](../.agent-src/skills/deep-reading-analyst/SKILL.md) | Deep analysis of articles/long-form via thinking frameworks (SCQA, mental models, inversion) — 'analyze article', 'deep dive', 'extract insights', URL/text wanting depth not summary. |
44
49
  | [`defense-in-depth`](../.agent-src/skills/defense-in-depth/SKILL.md) | Use when validation needs entry, business-logic, environment, and instrumentation guards so a bad value cannot reach the failure point — turns a local bug fix into a structural one. |
45
50
  | [`dependency-upgrade`](../.agent-src/skills/dependency-upgrade/SKILL.md) | Use when upgrading dependencies — "update Laravel", "bump PHP version", or "upgrade packages". Covers changelog review, breaking change detection, and verification. |
@@ -47,6 +52,7 @@ Click a skill name to open its SKILL.md and read the full guidance.
47
52
  | [`design-review`](../.agent-src/skills/design-review/SKILL.md) | Use when the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility, and more. |
48
53
  | [`devcontainer`](../.agent-src/skills/devcontainer/SKILL.md) | Use when configuring DevContainers or GitHub Codespaces — devcontainer.json, custom images, secrets, VS Code features — even when the user just says 'why does my Codespace not start'. |
49
54
  | [`developer-like-execution`](../.agent-src/skills/developer-like-execution/SKILL.md) | Use when implementing, debugging, refactoring, or reviewing code — enforces the think → analyze → verify → execute workflow — even when the user just says 'implement X' without naming it. |
55
+ | [`discovery-interview`](../.agent-src/skills/discovery-interview/SKILL.md) | Use when running discovery interviews — question-bank build, bias audit, insight extraction. Triggers on 'audit my guide', 'extract insights from transcript', 'is my hypothesis falsifiable'. |
50
56
  | [`docker`](../.agent-src/skills/docker/SKILL.md) | Use when working with Docker — Dockerfile edits, docker-compose services, containers, or the dual-container (fast + Xdebug) setup — even when the user just says 'my container won't start'. |
51
57
  | [`dto-creator`](../.agent-src/skills/dto-creator/SKILL.md) | Use when the user says "create a DTO", "new data transfer object", or needs to convert request/response data into a typed PHP class. Creates DTOs with SimpleDto base class and attribute mapping. |
52
58
  | [`eloquent`](../.agent-src/skills/eloquent/SKILL.md) | Use when writing Eloquent models, relationships, scopes, or queries via Model:: — 'fetch users with their orders'. NOT for PHPStan output, non-Eloquent services, or raw SQL questions. |
@@ -58,11 +64,13 @@ Click a skill name to open its SKILL.md and read the full guidance.
58
64
  | [`file-editor`](../.agent-src/skills/file-editor/SKILL.md) | Use when opening edited files in the user's IDE. Reads settings from .agent-settings.yml to determine IDE and whether auto-open is enabled. |
59
65
  | [`finishing-a-development-branch`](../.agent-src/skills/finishing-a-development-branch/SKILL.md) | Use when the feature is implementation-complete and the next step is 'ship it' — verifies, cleans up, and routes to merge/PR/park/discard — even when the user just says 'I'm done, what now?'. |
60
66
  | [`flux`](../.agent-src/skills/flux/SKILL.md) | Use when the project uses `livewire/flux` — dispatched by `directives/ui/{apply,review,polish}.py`. Covers Flux components, slots, variants, and form primitives. |
67
+ | [`form-handler`](../.agent-src/skills/form-handler/SKILL.md) | Use when designing or reviewing a form — validation timing, error display, submission lifecycle, optimistic UI, dirty/pristine state, idempotency — even on 'why does submit double-fire?'. |
61
68
  | [`funnel-analysis`](../.agent-src/skills/funnel-analysis/SKILL.md) | Use when diagnosing where a SaaS or product funnel leaks — visitor → signup → activation → paid → retained — channel-agnostic, conversion-rate-driven. |
62
69
  | [`git-workflow`](../.agent-src/skills/git-workflow/SKILL.md) | Use when working with Git — branch naming, commit messages, PR creation, rebasing, or the code review process — even when the user says 'push this' or 'merge the branch' without naming Git. |
63
70
  | [`github-ci`](../.agent-src/skills/github-ci/SKILL.md) | Use when working with GitHub Actions — workflow YAML, quality gates, test matrices, deployment triggers, reusable workflows — even when the user just says 'my CI is failing' or 'add a check'. |
64
71
  | [`grafana`](../.agent-src/skills/grafana/SKILL.md) | Use when working with Grafana — dashboards, Loki LogQL queries, alerting rules, monitoring panels — even when the user just says 'build me a dashboard' or 'query the logs' without naming Grafana. |
65
72
  | [`guideline-writing`](../.agent-src/skills/guideline-writing/SKILL.md) | Use when creating or editing a guideline in docs/guidelines/ — reference material cited by skills, no auto-triggers — even when the user just says 'write up our naming conventions'. |
73
+ | [`incident-commander`](../.agent-src/skills/incident-commander/SKILL.md) | Use during or right after an incident — frames severity, sets comms cadence, drafts the post-mortem skeleton — even when the user just says 'production is down' or 'wir haben einen Vorfall'. |
66
74
  | [`jira-integration`](../.agent-src/skills/jira-integration/SKILL.md) | Use when the user says "check Jira", "create ticket", "update issue", or needs JQL queries, ticket transitions, or branch-to-ticket linking. |
67
75
  | [`jobs-events`](../.agent-src/skills/jobs-events/SKILL.md) | Use when creating Laravel jobs, queued workflows, events, or listeners. Covers clear responsibilities, safe serialization, and retry/failure handling. |
68
76
  | [`judge-bug-hunter`](../.agent-src/skills/judge-bug-hunter/SKILL.md) | Use when a diff needs correctness review — null-safety, edge cases, off-by-one, races, error handling — dispatched by /review-changes, /do-and-judge, /judge, even without 'judge'. |
@@ -79,15 +87,19 @@ Click a skill name to open its SKILL.md and read the full guidance.
79
87
  | [`laravel-reverb`](../.agent-src/skills/laravel-reverb/SKILL.md) | Use when configuring Laravel Reverb — the first-party WebSocket server with Pusher protocol compatibility, horizontal scaling, and Pulse monitoring. |
80
88
  | [`laravel-scheduling`](../.agent-src/skills/laravel-scheduling/SKILL.md) | Use when configuring Laravel task scheduling — cron expressions, frequency helpers, overlap prevention, maintenance mode, or output handling. |
81
89
  | [`laravel-validation`](../.agent-src/skills/laravel-validation/SKILL.md) | Use when writing validation — Form Requests, rules, custom rule objects, request-boundary design — even when the user just says 'validate this input' or 'check the request' without naming it. |
90
+ | [`launch-readiness`](../.agent-src/skills/launch-readiness/SKILL.md) | Use before merging a release-shaped PR — pre-merge checklist, rollout plan, rollback criteria, ops handoff. Triggers on 'ready to ship', 'launch checklist', 'rollout plan for X'. |
82
91
  | [`learning-to-rule-or-skill`](../.agent-src/skills/learning-to-rule-or-skill/SKILL.md) | Use when a repeated learning, mistake, or successful pattern should be turned into a new rule or skill. Also use after completing a task to capture learnings from the work. |
83
92
  | [`lint-skills`](../.agent-src/skills/lint-skills/SKILL.md) | Use when running the package's skill linter against all skills and rules to validate frontmatter, required sections, and execution metadata. |
84
93
  | [`livewire`](../.agent-src/skills/livewire/SKILL.md) | Use when the project's frontend stack is Livewire — dispatched by `directives/ui/{apply,review,polish}.py`. Covers reactive state, events, lifecycle hooks, and component/view separation. |
94
+ | [`livewire-architect`](../.agent-src/skills/livewire-architect/SKILL.md) | Use when shaping a Livewire component before code — full-page vs partial, parent/child split, event flow, state-vs-props boundary, hydration cost — even on 'add this Livewire component'. |
85
95
  | [`logging-monitoring`](../.agent-src/skills/logging-monitoring/SKILL.md) | Use when working with logging or monitoring — Sentry error tracking, Grafana/Loki log aggregation, structured logging channels, or monitoring helpers. |
86
96
  | [`markitdown`](../.agent-src/skills/markitdown/SKILL.md) | Use when converting PDF, DOCX, XLSX, PPTX, EPUB, images, or audio to Markdown for LLM ingestion via the upstream markitdown-mcp server — 'extract this PDF', 'OCR this image', 'transcribe this audio'. |
87
97
  | [`mcp`](../.agent-src/skills/mcp/SKILL.md) | Use when working with MCP (Model Context Protocol) servers — their tools, capabilities, and best practices for effective agent workflows. |
88
98
  | [`mcp-builder`](../.agent-src/skills/mcp-builder/SKILL.md) | Use when building an MCP server in Python (FastMCP) or Node/TypeScript (MCP SDK) — agent-centric tool design, input schemas, error handling, and the 10-question evaluation harness. |
89
99
  | [`md-language-check`](../.agent-src/skills/md-language-check/SKILL.md) | Use BEFORE saving any .md under .augment/, .agent-src*/, or agents/ — scans umlauts, German function words, and quoted German phrases outside DE:/EN: anchor blocks. Hard gate per language-and-tone. |
100
+ | [`memory-consolidation`](../.agent-src/skills/memory-consolidation/SKILL.md) | Use when consolidating session signals into curated memory — four-phase loop ORIENT → GATHER → CONSOLIDATE → PRUNE. Triggers on 'mine my sessions', 'consolidate memory', 'review intake signals'. |
90
101
  | [`merge-conflicts`](../.agent-src/skills/merge-conflicts/SKILL.md) | Use when the user has merge conflicts or says "resolve conflicts". Understands conflict markers, resolution strategies, and verification workflow. |
102
+ | [`migration-architect`](../.agent-src/skills/migration-architect/SKILL.md) | Use when shaping a non-trivial migration — rollout phases, dual-write windows, cutover sequencing, deprecation cycles — hands off to `migration-creator` for DDL once locked. |
91
103
  | [`migration-creator`](../.agent-src/skills/migration-creator/SKILL.md) | Use when the user says "create migration", "add column", or "new table". Creates migrations with correct table prefixes, column naming, and multi-tenant awareness. |
92
104
  | [`mobile-e2e-strategy`](../.agent-src/skills/mobile-e2e-strategy/SKILL.md) | Use when picking a mobile E2E framework — Detox / Appium / Maestro / XCUITest / Espresso — or planning iOS Simulator / Android Emulator coverage in CI for RN, Expo, or native apps. |
93
105
  | [`module-management`](../.agent-src/skills/module-management/SKILL.md) | Use when the user says "create module", "explore module", or works within app/Modules/. Understands module structure, auto-loading, route registration, and namespace conventions. |
@@ -102,7 +114,9 @@ Click a skill name to open its SKILL.md and read the full guidance.
102
114
  | [`php-coder`](../.agent-src/skills/php-coder/SKILL.md) | Writes or edits PHP code — controllers, classes, type hints, SOLID refactors, modern idioms — even without naming PHP. NOT for writing tests (use pest-testing) or explaining PHP concepts. |
103
115
  | [`php-debugging`](../.agent-src/skills/php-debugging/SKILL.md) | Use when debugging PHP with Xdebug — breakpoints, step-through, dual-container setup, IDE configuration, header-based routing — even when the user just says 'why does this blow up on request X'. |
104
116
  | [`php-service`](../.agent-src/skills/php-service/SKILL.md) | Use when the user says 'create service', 'new service class', or needs a PHP service following SOLID principles with proper DI and repository usage. |
117
+ | [`playwright-architect`](../.agent-src/skills/playwright-architect/SKILL.md) | Use when shaping a Playwright suite — locator strategy, Page Object boundaries, fixture composition, flake-prevention architecture, CI-vs-local split — even on 'design our E2E tests'. |
105
118
  | [`playwright-testing`](../.agent-src/skills/playwright-testing/SKILL.md) | Use when writing Playwright E2E tests — browser automation, visual regression testing, Page Objects, fixtures, and reliable test patterns. |
119
+ | [`po-discovery`](../.agent-src/skills/po-discovery/SKILL.md) | Use when shaping a fuzzy product ask into a refined backlog item — problem framing, user-story rewrite, AC tightening — even if the user just says 'help me write this ticket'. |
106
120
  | [`project-analysis-core`](../.agent-src/skills/project-analysis-core/SKILL.md) | Use for the universal deep-analysis workflow: project discovery, version resolution, docs loading, architecture mapping, execution flow, and package research. |
107
121
  | [`project-analysis-hypothesis-driven`](../.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md) | Use when a bug has multiple plausible causes across layers — competing hypotheses, validation loops, evidence-based conclusions — even when the user just says 'why is this happening?'. |
108
122
  | [`project-analysis-laravel`](../.agent-src/skills/project-analysis-laravel/SKILL.md) | Use for deep Laravel project analysis: boot flow, request lifecycle, container usage, Eloquent/data flow, async systems, and Laravel-specific failure patterns. |
@@ -124,10 +138,12 @@ Click a skill name to open its SKILL.md and read the full guidance.
124
138
  | [`receiving-code-review`](../.agent-src/skills/receiving-code-review/SKILL.md) | Use when processing code review feedback (bot or human) before changing anything — triages, verifies, and pushes back with technical reasoning — even when the user just says 'fix the comments'. |
125
139
  | [`"refine-prompt"`](../.agent-src/skills/"refine-prompt"/SKILL.md) | Reconstruct a free-form prompt into actionable AC + assumptions + confidence band before the engine plans — '/work \"…\"', 'baue X', 'ist der Prompt klar genug für die Engine?'. |
126
140
  | [`"refine-ticket"`](../.agent-src/skills/"refine-ticket"/SKILL.md) | Refine a Jira/Linear ticket before planning — 'refine ticket', 'tighten AC on PROJ-123', 'ist das Ticket klar?' — rewritten ticket, Top-5 risks, persona voices, sub-skills orchestrated, close-prompt. |
141
+ | [`release-comms`](../.agent-src/skills/release-comms/SKILL.md) | Use when turning a shipped changelog into a release narrative — value-not-feature framing, audience-segmented surfaces, one source of truth. Triggers on 'announce the release', 'write changelog post'. |
127
142
  | [`repomix-packer`](../.agent-src/skills/repomix-packer/SKILL.md) | Use when packaging a codebase to a single AI-friendly file for LLM analysis — local or remote, XML/Markdown/JSON, token counting, gitignore filtering, peer-side `repomix` CLI. |
128
143
  | [`requesting-code-review`](../.agent-src/skills/requesting-code-review/SKILL.md) | Use when asking for a review or creating a PR — self-review first, frame the right context, test plan included — even when the user just says 'open a PR' or 'ready to merge'. |
129
144
  | [`review-routing`](../.agent-src/skills/review-routing/SKILL.md) | Use when preparing a PR description, suggesting reviewers, or flagging risk — produces owner-mapped roles plus historical bug-pattern matches from project-local YAML. |
130
145
  | [`rice-prioritization`](../.agent-src/skills/rice-prioritization/SKILL.md) | Use when ranking competing initiatives for a roadmap, breaking a tie between two features, or auditing a backlog for hidden low-value work via Reach × Impact × Confidence ÷ Effort. |
146
+ | [`risk-officer`](../.agent-src/skills/risk-officer/SKILL.md) | Use when surfacing and prioritising risk before commit — blast-radius framing, mitigations, residual-risk verdict — even if the user just says 'what could go wrong here?'. |
131
147
  | [`roadmap-management`](../.agent-src/skills/roadmap-management/SKILL.md) | Use when the user says "create roadmap", "show roadmap", or "execute roadmap". Creates, reads, and manages roadmap files with phase tracking. |
132
148
  | [`roadmap-writing`](../.agent-src/skills/roadmap-writing/SKILL.md) | Use when authoring or rewriting a roadmap in agents/roadmaps/ — phase prose, goal sentence, acceptance criteria, council notes — even when the user just says 'write a plan for X' or 'draft a roadmap'. |
133
149
  | [`rtk-output-filtering`](../.agent-src/skills/rtk-output-filtering/SKILL.md) | Use when running verbose CLI commands — wraps them with rtk (Rust Token Killer) for 60-90% token savings. Covers installation, configuration, and usage patterns. |
@@ -143,8 +159,11 @@ Click a skill name to open its SKILL.md and read the full guidance.
143
159
  | [`skill-reviewer`](../.agent-src/skills/skill-reviewer/SKILL.md) | Use when reviewing, auditing, or optimizing skills — validates against the 7 Skill Killers checklist and produces fix recommendations. |
144
160
  | [`skill-writing`](../.agent-src/skills/skill-writing/SKILL.md) | Use when deciding 'should this be a skill or a rule?', creating/improving/reviewing agent skills, SKILL.md frontmatter, or procedure sections — even without saying 'skill-writing'. |
145
161
  | [`sql-writing`](../.agent-src/skills/sql-writing/SKILL.md) | Use when writing raw SQL — MariaDB/MySQL syntax, parameterization, raw migrations, seeders with `DB::statement` — even when the user just pastes a query and asks 'why is this slow' without naming SQL. |
146
- | [`subagent-orchestration`](../.agent-src/skills/subagent-orchestration/SKILL.md) | Use when orchestrating implementer/judge subagentssix modes (do-and-judge, do-in-steps, do-in-parallel, do-competitively, judge-with-debate, do-in-worktrees)models from .agent-settings.yml. |
162
+ | [`stakeholder-tradeoff`](../.agent-src/skills/stakeholder-tradeoff/SKILL.md) | Use when stakeholders pull a decision in different directions frames each lens, builds a trade-off matrix, surfaces the cost of every choice even if the user just says 'PO and ops disagree'. |
163
+ | [`subagent-orchestration`](../.agent-src/skills/subagent-orchestration/SKILL.md) | Use when orchestrating implementer/judge subagents — seven modes (do-and-judge ±two-stage, do-in-steps/parallel/worktrees, do-competitively, judge-with-debate) — models from .agent-settings.yml. |
147
164
  | [`systematic-debugging`](../.agent-src/skills/systematic-debugging/SKILL.md) | Use when hitting a bug, test failure, crash, or unexpected behavior — enforces reproduce → isolate → hypothesize → verify before any fix — even when the user just says 'this is broken' or 'quick fix'. |
165
+ | [`tailwind-engineer`](../.agent-src/skills/tailwind-engineer/SKILL.md) | Use when writing or reviewing Tailwind CSS — utility-first, design-token discipline, no inline-style drift, responsive variants, dark mode — even on 'style this' or 'mach das hübsch'. |
166
+ | [`tech-debt-tracker`](../.agent-src/skills/tech-debt-tracker/SKILL.md) | Use when surfacing tech debt as trackable items — interest-vs-principal framing, prioritisation by carrying cost, repayment plan — even if the user just says 'this codebase is a mess'. |
148
167
  | [`technical-specification`](../.agent-src/skills/technical-specification/SKILL.md) | Use when the user says "write a spec", "create RFC", "write a PRD", or "document this decision". Writes technical specifications, PRDs, RFCs, and ADRs with clear structure. |
149
168
  | [`terraform`](../.agent-src/skills/terraform/SKILL.md) | Use when writing Terraform — AWS modules, resources, variables, outputs, remote state — even when the user just says 'provision this infra' or 'add an S3 bucket' without naming Terraform. |
150
169
  | [`terragrunt`](../.agent-src/skills/terragrunt/SKILL.md) | Use when working with Terragrunt — DRY multi-env configs, module dependencies, remote state orchestration — even when the user just says 'deploy this to staging and prod' without naming Terragrunt. |
@@ -154,12 +173,14 @@ Click a skill name to open its SKILL.md and read the full guidance.
154
173
  | [`threat-modeling`](../.agent-src/skills/threat-modeling/SKILL.md) | Use when adding auth, webhooks, uploads, queues, secrets, tenant boundaries, or public endpoints — produces trust boundaries + abuse cases mapped to files, BEFORE implementation. |
155
174
  | [`token-optimizer`](../.agent-src/skills/token-optimizer/SKILL.md) | Use BEFORE any verbose CLI run, large file read, doc conversion, or near-context handoff — single decision tree keyed by intent that cites the canonical token-saving asset. Consult before the action. |
156
175
  | [`traefik`](../.agent-src/skills/traefik/SKILL.md) | Use when setting up Traefik as a local reverse proxy — real domains on 127.0.0.1, trusted HTTPS via mkcert, automatic service discovery, and multi-project routing. |
176
+ | [`ui-component-architect`](../.agent-src/skills/ui-component-architect/SKILL.md) | Use when shaping a UI component tree — composition vs inheritance, slot patterns, prop API design, controlled vs uncontrolled, polymorphic — even on 'split this component'. |
157
177
  | [`unit-economics-modeling`](../.agent-src/skills/unit-economics-modeling/SKILL.md) | Use when modeling CAC, LTV, gross-margin payback, or contribution margin per customer — for SaaS, marketplace, or transactional businesses. |
158
178
  | [`universal-project-analysis`](../.agent-src/skills/universal-project-analysis/SKILL.md) | ONLY when user explicitly requests: full project analysis, deep codebase audit, or comprehensive architecture review. Routes to core and framework-specific analysis skills. |
159
179
  | [`upstream-contribute`](../.agent-src/skills/upstream-contribute/SKILL.md) | Use when a learning, new skill, rule improvement, or bug fix from a consumer project should be contributed back to the shared agent-config package. |
160
180
  | [`using-git-worktrees`](../.agent-src/skills/using-git-worktrees/SKILL.md) | Use when starting parallel work in isolation from the current branch — spawn a git worktree with ignore-safety checks and a clean test baseline — even when the user says 'try this on the side'. |
161
181
  | [`"validate-feature-fit"`](../.agent-src/skills/"validate-feature-fit"/SKILL.md) | Validate whether a feature request fits the existing codebase — check for duplicates, contradictions, scope creep, and architectural misfit |
162
182
  | [`verify-completion-evidence`](../.agent-src/skills/verify-completion-evidence/SKILL.md) | Use when claiming 'done', suggesting a commit, push, or PR — runs the evidence gate so completion claims come from fresh output in this message, not memory or earlier runs. |
183
+ | [`voc-extract`](../.agent-src/skills/voc-extract/SKILL.md) | Use when extracting Voice-of-Customer themes from existing artefacts — GH issues, PR threads, Sentry patterns. Triggers on 'what are users saying', 'recurring complaints', 'top themes'. |
163
184
  | [`websocket`](../.agent-src/skills/websocket/SKILL.md) | Use when building real-time features — WebSocket broadcasting, live updates, presence channels, connection state — even when the user just says 'push this to the client live'. |
164
185
 
165
186
  ---