@event4u/agent-config 7.3.0 → 7.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 (100) hide show
  1. package/.claude-plugin/marketplace.json +4 -1
  2. package/CHANGELOG.md +81 -0
  3. package/README.md +2 -2
  4. package/dist/agent-src/commands/fix/pr-comments.md +42 -13
  5. package/dist/agent-src/commands/review-changes.md +14 -7
  6. package/dist/agent-src/rules/artifact-engagement-recording.md +9 -0
  7. package/dist/agent-src/rules/cli-output-handling.md +18 -0
  8. package/dist/agent-src/rules/domain-safety-pii.md +4 -3
  9. package/dist/agent-src/rules/icon-consistency.md +1 -0
  10. package/dist/agent-src/rules/legal-safety-floor.md +2 -2
  11. package/dist/agent-src/rules/untrusted-input-defense.md +8 -5
  12. package/dist/agent-src/skills/adr-create/SKILL.md +5 -1
  13. package/dist/agent-src/skills/adversarial-review/SKILL.md +1 -1
  14. package/dist/agent-src/skills/blade-ui/SKILL.md +4 -0
  15. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +2 -1
  16. package/dist/agent-src/skills/code-review/SKILL.md +4 -0
  17. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  18. package/dist/agent-src/skills/design-intelligence/SKILL.md +40 -0
  19. package/dist/agent-src/skills/design-review/SKILL.md +23 -11
  20. package/dist/agent-src/skills/design-system-capture/SKILL.md +41 -0
  21. package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +62 -0
  22. package/dist/agent-src/skills/design-tokens/SKILL.md +1 -0
  23. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +6 -0
  24. package/dist/agent-src/skills/flux/SKILL.md +4 -0
  25. package/dist/agent-src/skills/iconography/SKILL.md +1 -0
  26. package/dist/agent-src/skills/image-editing/evals/triggers.json +13 -13
  27. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +136 -0
  28. package/dist/agent-src/skills/judge-artifact-completeness/calibration/fixtures.json +149 -0
  29. package/dist/agent-src/skills/judge-artifact-completeness/evals/triggers.json +17 -0
  30. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/architecture-score.json +73 -0
  31. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/pr-review-score.json +65 -0
  32. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/roadmap-score.json +73 -0
  33. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/ticket-quality-score.json +73 -0
  34. package/dist/agent-src/skills/judge-injection-defense/SKILL.md +99 -0
  35. package/dist/agent-src/skills/judge-injection-defense/calibration/fixtures.json +24 -0
  36. package/dist/agent-src/skills/judge-injection-defense/evals/triggers.json +17 -0
  37. package/dist/agent-src/skills/judge-injection-defense/fixtures/behavioral-fixtures.json +63 -0
  38. package/dist/agent-src/skills/judge-injection-defense/fixtures/coverage-report.md +53 -0
  39. package/dist/agent-src/skills/judge-injection-defense/fixtures/perturbation-taxonomy.json +110 -0
  40. package/dist/agent-src/skills/judge-synthesis/SKILL.md +134 -0
  41. package/dist/agent-src/skills/judge-synthesis/evals/triggers.json +17 -0
  42. package/dist/agent-src/skills/logo-generation/SKILL.md +1 -1
  43. package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
  44. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +18 -0
  45. package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +59 -0
  46. package/dist/agent-src/skills/refine-ticket/SKILL.md +5 -1
  47. package/dist/agent-src/skills/release-comms/SKILL.md +1 -1
  48. package/dist/agent-src/skills/roadmap-management/SKILL.md +4 -0
  49. package/dist/agent-src/skills/roadmap-writing/SKILL.md +1 -1
  50. package/dist/agent-src/skills/script-writing/SKILL.md +1 -1
  51. package/dist/agent-src/skills/sql-writing/SKILL.md +1 -1
  52. package/dist/agent-src/skills/systematic-debugging/SKILL.md +1 -1
  53. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +4 -0
  54. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  55. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  56. package/dist/agent-src/skills/typography-system/SKILL.md +2 -1
  57. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  58. package/dist/cli/registry.js +1 -0
  59. package/dist/cli/registry.js.map +1 -1
  60. package/dist/discovery/deprecation-report.md +1 -1
  61. package/dist/discovery/discovery-manifest.json +109 -43
  62. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  63. package/dist/discovery/discovery-manifest.summary.md +3 -3
  64. package/dist/discovery/orphan-report.md +1 -1
  65. package/dist/discovery/packs.json +8 -5
  66. package/dist/discovery/trust-report.md +2 -2
  67. package/dist/discovery/workspaces.json +7 -4
  68. package/dist/mcp/registry-manifest.json +3 -3
  69. package/dist/router.json +1 -1
  70. package/dist/server/schemas/settings.js +6 -0
  71. package/dist/server/schemas/settings.js.map +1 -1
  72. package/docs/architecture.md +2 -2
  73. package/docs/catalog.md +28 -20
  74. package/docs/command-flows.md +1 -1
  75. package/docs/enforcement-by-host.md +9 -0
  76. package/docs/governance-advantage.md +72 -0
  77. package/docs/guidelines/design-antipatterns.md +26 -0
  78. package/docs/guidelines/design-canon.md +62 -0
  79. package/package.json +2 -1
  80. package/src/config/agent-settings.template.yml +21 -0
  81. package/src/scripts/_cli/cmd_analyze_session.ts +347 -0
  82. package/src/scripts/_dispatch.bash +8 -0
  83. package/src/scripts/_lib/token_count.ts +110 -35
  84. package/src/scripts/audit_initial_context.ts +37 -12
  85. package/src/scripts/bench_quality_run.ts +253 -0
  86. package/src/scripts/bench_rule_load_latency.ts +178 -0
  87. package/src/scripts/check_kernel_prefix_stability.ts +0 -0
  88. package/src/scripts/check_quality_regression.ts +244 -0
  89. package/src/scripts/check_token_quality_golden.ts +253 -0
  90. package/src/scripts/check_token_regression.ts +266 -0
  91. package/src/scripts/design_slop_rules.test.ts +193 -0
  92. package/src/scripts/design_slop_rules.ts +502 -0
  93. package/src/scripts/external_sources_denylist.json +7 -1
  94. package/src/scripts/hook_manifest.yaml +26 -3
  95. package/src/scripts/hooks/design_slop_hook.ts +181 -0
  96. package/src/scripts/hooks/rtk_wrap_hook.ts +228 -0
  97. package/src/scripts/lint_agent_security.ts +1 -0
  98. package/src/scripts/lint_confusables.ts +197 -0
  99. package/src/scripts/lint_design_slop.ts +245 -0
  100. package/src/scripts/probe_host_compliance.ts +145 -0
@@ -0,0 +1,134 @@
1
+ ---
2
+ model_tier: high
3
+ name: judge-synthesis
4
+ description: "Use to consolidate multiple already-run judge verdicts into one report — consensus, conflicts, must-fix/should-fix with per-judge provenance. Consume-only, no opaque score, never auto-gates."
5
+ domain: quality
6
+ workspaces:
7
+ - agent-config-maintainer
8
+ packs:
9
+ - meta
10
+ ---
11
+
12
+ # judge-synthesis
13
+
14
+ > The **synthesizer** across an already-run set of judges. Does **not** run or
15
+ > re-judge — **consumes** their verdict blocks and produces one structured
16
+ > report: a side-by-side verdict table, **consensus** findings (≥2 judges =
17
+ > highest confidence), **conflicts** (judges disagree), and a synthesized
18
+ > **must-fix / should-fix / advisory** split with per-finding judge provenance.
19
+ > No opaque single score. Never auto-gates — the human decides.
20
+
21
+ ## When to use
22
+
23
+ * Two+ judges ran on the same target; their verdict blocks need to become one decision-ready report.
24
+ * A **mixed** review spanning code judges + artifact/defence judges (PR shipping a roadmap + code + an injection fixture) — no single command consolidates across all seven lenses.
25
+ * `/review-changes` step 5 wants the canonical synthesis format instead of an ad-hoc merge.
26
+
27
+ Do NOT use when:
28
+
29
+ * Only one judge ran — nothing to synthesize; surface that block directly.
30
+ * You need to **produce** a verdict — that is the individual judge's job ([`judge-bug-hunter`](../judge-bug-hunter/SKILL.md), [`judge-artifact-completeness`](../judge-artifact-completeness/SKILL.md), [`judge-injection-defense`](../judge-injection-defense/SKILL.md)).
31
+ * You are tempted to compute a single quality number — forbidden (Do NOT).
32
+
33
+ ## Inputs
34
+
35
+ The verdict blocks judges already emit (judge name + verdict + findings with severity). Three verdict vocabularies map onto one ordered axis:
36
+
37
+ | Judge family | Verdict vocabulary |
38
+ |---|---|
39
+ | code judges (`judge-bug-hunter`, `-code-quality`, `-security-auditor`, `-test-coverage`, `architecture-review-lens`) | `apply` / `revise` / `reject` |
40
+ | `judge-artifact-completeness` | `complete` / `partial` / `incomplete` |
41
+ | `judge-injection-defense` | `defended` / `partial` / `breached` |
42
+
43
+ Ordered worst→best: **`reject`/`incomplete`/`breached` > `revise`/`partial` > `apply`/`complete`/`defended`**.
44
+
45
+ ## Procedure
46
+
47
+ ### 1. Inspect the inputs and tabulate
48
+
49
+ Check ≥2 judge verdict blocks are present (only one → stop, nothing to synthesize). Tabulate one row per judge: judge · target · verdict · finding count. Preserve each judge's own verdict word (don't normalise `breached` into `reject`); add a severity tier (worst/mid/clean) only as a sort key.
50
+
51
+ ### 2. Find consensus (highest confidence)
52
+
53
+ A finding flagged by **≥2 judges** (same file:line / dimension / technique) is a **consensus finding** — highest confidence. List first. By overlap of the finding, never by counting votes for a score.
54
+
55
+ ### 3. Find conflicts
56
+
57
+ Two judges with opposite verdicts on one target (one `apply`, another `reject`) is a **conflict**. **Surface both verdicts + the disagreement explicitly — never silently resolve by averaging or vote-count.** Human adjudicates. Only deterministic rule: for the **must-fix list**, the most severe verdict wins (one `reject` → must-fix even if four said `apply`) — but the conflict is still shown.
58
+
59
+ ### 4. Synthesize the action split
60
+
61
+ - **Must-fix** — every worst-tier (`reject`/`incomplete`/`breached`) finding + every highest-severity consensus finding.
62
+ - **Should-fix** — mid-tier (`revise`/`partial`) findings.
63
+ - **Advisory** — single-judge low-severity suggestions.
64
+
65
+ Each entry carries **provenance** (which judge(s) raised it). Never merge two judges' findings into one unattributed line.
66
+
67
+ ### 5. Overall recommendation
68
+
69
+ One sentence, not a number: `block` (any worst-tier), `revise` (any mid-tier, no worst-tier), or `proceed` (all clean). A recommendation the human acts on — it does not gate.
70
+
71
+ ## Validation
72
+
73
+ 1. Every judge that ran appears exactly once in the table.
74
+ 2. Every action entry names its source judge(s).
75
+ 3. No single numeric quality score appears anywhere.
76
+ 4. Conflicts are shown, not silently resolved.
77
+ 5. The recommendation follows the severity rule (worst-tier → block), not a vote.
78
+
79
+ ## Output format
80
+
81
+ ```
82
+ Synthesis: <N> judges over <target>
83
+ Recommendation: block | revise | proceed
84
+
85
+ Verdicts:
86
+ judge-bug-hunter reject (2 findings)
87
+ judge-security-auditor apply (0)
88
+ judge-artifact-completeness partial (1)
89
+ ...
90
+
91
+ Consensus (≥2 judges — highest confidence):
92
+ 🔴 path:line — <finding> [judge-bug-hunter, judge-code-quality]
93
+
94
+ Conflicts (judges disagree — human adjudicates):
95
+ <target>: judge-bug-hunter=reject vs judge-security-auditor=apply
96
+
97
+ Must-fix:
98
+ 🔴 <finding> [judge]
99
+ Should-fix:
100
+ 🟡 <finding> [judge]
101
+ Advisory:
102
+ 🟢 <finding> [judge]
103
+ ```
104
+
105
+ Required fields (ordered):
106
+
107
+ 1. **Synthesis header + Recommendation** — judge count, target, one-word rec
108
+ 2. **Verdicts** — one row per judge, its own verdict word + finding count
109
+ 3. **Consensus** — ≥2-judge findings, with provenance (omit if none)
110
+ 4. **Conflicts** — opposing verdicts on one target (omit if none)
111
+ 5. **Action split** — must-fix / should-fix / advisory, each with provenance
112
+
113
+ ## Gotcha
114
+
115
+ * **No opaque score** — the value is the *structure* (consensus + conflict + provenance), not a rolled-up number that hides which lens objected.
116
+ * **Don't normalise verdict words away** — `breached` and `reject` sort the same but mean different things; keep each judge's own word.
117
+ * **A single reject blocks** — even against a majority of `apply`; but show the conflict, never bury it.
118
+ * **Consume, don't dispatch** — no judge blocks yet → stop, run the judges first (or hand back to `/review-changes`).
119
+ * **Recommendation ≠ gate** — surface it; the human decides.
120
+
121
+ ## Do NOT
122
+
123
+ * NEVER compute or emit a single numeric quality score
124
+ * NEVER resolve a conflict silently (averaging, vote-count) — surface it
125
+ * NEVER drop a judge's verdict because it disagrees with the majority
126
+ * NEVER run or re-run the judges — this skill consumes their output
127
+ * NEVER auto-gate, auto-reject, or auto-merge on the synthesized recommendation
128
+
129
+ ## References
130
+
131
+ - Code judges: [`judge-bug-hunter`](../judge-bug-hunter/SKILL.md), [`judge-code-quality`](../judge-code-quality/SKILL.md), [`judge-security-auditor`](../judge-security-auditor/SKILL.md), [`judge-test-coverage`](../judge-test-coverage/SKILL.md), [`architecture-review-lens`](../architecture-review-lens/SKILL.md).
132
+ - Artifact / defence judges: [`judge-artifact-completeness`](../judge-artifact-completeness/SKILL.md), [`judge-injection-defense`](../judge-injection-defense/SKILL.md).
133
+ - Dispatchers that feed this: [`/review-changes`](../../commands/review-changes.md) (5 code judges), [`subagent-orchestration`](../subagent-orchestration/SKILL.md) (parallel judge fan-out).
134
+ - **LLM-as-a-Judge** — Zheng et al. (2023), [arxiv.org/abs/2306.05685](https://arxiv.org/abs/2306.05685); the consolidation layer over the specialized-judge pattern, with consensus/conflict surfacing instead of a single aggregate score.
@@ -0,0 +1,17 @@
1
+ {
2
+ "skill": "judge-synthesis",
3
+ "last_eval": "2026-06-28",
4
+ "description": "5 should-trigger + 5 should-not-trigger. Should-trigger covers consolidating multiple already-run judge verdicts into one report (consensus, conflicts, must-fix). Should-not covers near-misses: producing a single judge verdict (the individual judges), dispatching judges (review-changes), code-only review, asking for a quality number, and running one judge.",
5
+ "queries": [
6
+ { "q": "consolidate these judge verdicts into one report — where do they agree and disagree?", "trigger": true },
7
+ { "q": "I ran the bug, security and artifact-completeness judges — synthesize the findings", "trigger": true },
8
+ { "q": "which findings did multiple judges flag, and what are the conflicts?", "trigger": true },
9
+ { "q": "merge the judge outputs into a must-fix / should-fix / advisory split with provenance", "trigger": true },
10
+ { "q": "give me one decision-ready report across all the judges that ran on this PR", "trigger": true },
11
+ { "q": "judge this diff for bugs", "trigger": false, "note": "single verdict → judge-bug-hunter" },
12
+ { "q": "self-review my changes before the PR", "trigger": false, "note": "dispatches the code judges → /review-changes" },
13
+ { "q": "score this roadmap for completeness", "trigger": false, "note": "single artifact verdict → judge-artifact-completeness" },
14
+ { "q": "give me one overall quality score for this PR", "trigger": false, "note": "opaque single number — explicitly forbidden by this skill" },
15
+ { "q": "run the security auditor on this code", "trigger": false, "note": "runs one judge → judge-security-auditor" }
16
+ ]
17
+ }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: inherit
3
3
  name: logo-generation
4
- description: "Generate a logo or brand mark — structured prompt + provider routing, with a true-vector path via a vector-native provider or LLM-authored SVG for simple marks. Use for logo or brand mark generation."
4
+ description: "Generate a logo or brand mark — structured prompt + provider routing, with a true-vector path (vector-native provider or LLM-authored SVG). Use for logo or brand mark generation."
5
5
  domain: product
6
6
  personas:
7
7
  - design-director
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: medium
3
3
  name: markitdown
4
- description: "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'."
4
+ description: "Convert PDF, DOCX, XLSX, PPTX, EPUB, images, or audio to Markdown via the markitdown-mcp server — 'extract this PDF', 'OCR this image', 'transcribe this audio'."
5
5
  status: active
6
6
  tier: senior
7
7
  domain: process
@@ -125,6 +125,20 @@ declared version:
125
125
  - Streaming / partial-prerender boundaries — use the project's framework
126
126
  patterns (Next.js / Remix), not shadcn/ui.
127
127
 
128
+ ## Registry & MCP awareness (opt-in)
129
+
130
+ Default path = bundled `scripts/shadcn_add.ts` + `components.json`; works on most projects, stays default. Modern registry model is OPT-IN — no round-trips on every op. JSON-schema + namespace detail lazy-loaded from [`reference/registry.md`](reference/registry.md); read only on this path.
131
+
132
+ **`shadcn info --json` handshake** — run as grounding step WHEN `components.json` declares custom/namespaced `registries`, OR theme-alignment in scope. Returns framework / aliases / installed components / icon lib / base settings. NOT a forced first action on every `add` (over-gating, low ROI vanilla).
133
+
134
+ - **Precedence:** prefer live `shadcn info --json`; fall back to `state.ui_audit.shadcn_inventory` (existing-ui-audit) when CLI/MCP unreachable. Live read wins.
135
+
136
+ **Namespaced installs** — `@ns/item` resolves via the `registries` map to a `registry-item.json` URL (see reference). `view @ns/item` before `add`. Honour `registryDependencies` (install the graph, incl. version-pinned GitHub refs `acme/ui/button#v1.2.0`); keep propose-never-silent-run + `--dry-run`.
137
+
138
+ **Token-aware scaffolding** — `registry-item.json` `cssVars` (OKLCH light/dark/theme) → align to project tokens (`info --json` / `components.json` / `state.ui_audit.design_tokens`); never inject the default shadcn neutral theme (flagged anti-slop tell: default theme + Inter + neutral grays).
139
+
140
+ **MCP path (opt-in)** — shadcn MCP server: browse / search-across-registries / install-with-NL over MCP; wire per [`mcp`](../mcp/SKILL.md). Alternative to CLI, never a hard dep. Decision: CLI = default + universal; MCP = opt-in when configured; registry-JSON literacy underpins both.
141
+
128
142
  ## Procedure: render a shadcn/ui component for the design brief
129
143
 
130
144
  ### Step 0: Inspect
@@ -234,6 +248,10 @@ synthesise the updated `state.ui_review.findings` (including any
234
248
  remaining `a11y_violation` entries) so the engine's gate sees the
235
249
  current state on the next polish round.
236
250
 
251
+ ## Taste Dials
252
+
253
+ `DESIGN.md` `## Taste Dials` → honour: Variance → layout-family spread + asymmetry; Motion → animation budget + reduced-motion posture; Density → spacing scale + info-per-viewport. Absent → follow brief's inferred dials.
254
+
237
255
  ## Do NOT
238
256
 
239
257
  - Do NOT install `shadcn-ui` from npm — primitives are scaffolded.
@@ -0,0 +1,59 @@
1
+ # shadcn registry & namespace reference
2
+
3
+ > Lazy-loaded by `react-shadcn-ui` ONLY on the registry/MCP path (custom or
4
+ > namespaced registries, or theme-alignment). Not in the always-on skill body —
5
+ > zero token cost on the vanilla `shadcn add` path.
6
+
7
+ ## `registry-item.json` — the self-describing component unit
8
+
9
+ Each item is a JSON doc the agent reads before scaffolding — never guesses
10
+ paths, deps, or tokens.
11
+
12
+ - `name` — item id.
13
+ - `type` — one of: `registry:ui`, `registry:component`, `registry:block`,
14
+ `registry:hook`, `registry:lib`, `registry:theme`, `registry:style`,
15
+ `registry:page`, `registry:file`, `registry:base`, `registry:item`.
16
+ - `dependencies` / `devDependencies` — npm packages.
17
+ - `registryDependencies` — other items to pull first (the dependency graph):
18
+ built-in (`"button"`), namespaced (`"@acme/input"`), GitHub
19
+ (`"acme/ui/button#v1.2.0"`), URL, or local path.
20
+ - `files[]` — each `{ path, type, target }`; `target` uses the project alias
21
+ placeholders (`~`, `@ui/`, `@lib/`, `@hooks/`) from `components.json`.
22
+ - `cssVars` — tokens scoped by mode: `theme` (font/radius), `light`, `dark`,
23
+ OKLCH. **Align to the project's tokens; do not inject the default neutral
24
+ theme** (anti-slop C1/C5/T7).
25
+ - `css` — raw `@layer` / `@utility` / `@keyframes` / `@plugin`.
26
+
27
+ Scaffold order: read item → install npm `dependencies` → resolve
28
+ `registryDependencies` (recurse) → write `files[]` to alias targets → merge
29
+ `cssVars` into the project token layer (reconcile, don't overwrite).
30
+
31
+ ## Namespaced registries
32
+
33
+ `components.json` maps a namespace → URL template under `registries`:
34
+
35
+ ```json
36
+ {
37
+ "registries": {
38
+ "@acme-ui": "https://registry.acme.com/ui/{name}.json",
39
+ "@acme-auth": {
40
+ "url": "https://registry.acme.com/auth/{name}.json",
41
+ "headers": { "Authorization": "Bearer ${ACME_TOKEN}" }
42
+ }
43
+ }
44
+ }
45
+ ```
46
+
47
+ - Resolution: `@ns/name` → look up `@ns` → substitute `{name}` (+ optional
48
+ `{style}`). Reference regex: `^(@[a-zA-Z0-9](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?)\/(.+)$`.
49
+ - Auth registries: per-registry `headers` with `${ENV_VAR}` — never inline a
50
+ token; read from the environment.
51
+ - Namespace space is **decentralized** — no central collision authority; the
52
+ `components.json` map is the project's source of truth.
53
+
54
+ ## CLI surface (the agent drives these)
55
+
56
+ `init` · `add [item|@ns/item]` · `search @ns -q <q>` · `view @ns/item` (inspect
57
+ JSON before install) · `docs [item] --json` · `diff` (drift vs updated
58
+ registry) · `info --json` (project context — see the SKILL handshake) · `build`
59
+ (publish). Inspect with `view` before `add` — evidence before action.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: inherit
3
3
  name: "refine-ticket"
4
- description: "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."
4
+ description: "Refine a Jira/Linear ticket before planning — 'refine ticket', 'tighten AC on PROJ-123', 'ist das Ticket klar?'; rewritten ticket, risks, persona voices, close-prompt."
5
5
  personas:
6
6
  - developer
7
7
  - senior-engineer
@@ -304,6 +304,10 @@ Per user interaction rules, accept number or free text. `editmeta`
304
304
  is cheap and cacheable; cache the result per Jira project key for
305
305
  the session, re-probe on project change.
306
306
 
307
+ ## Rubric pass (optional, surfacing-only)
308
+
309
+ After refinement, run [`judge-artifact-completeness`](../judge-artifact-completeness/SKILL.md) with rubric `ticket-quality-score` to verify DoR readiness — AC, test plan, risk, estimate. Invoke when user asks for DoR check — not automatically.
310
+
307
311
  ## Output format
308
312
 
309
313
  1. **Refined ticket** section with rewritten title + description, wrapped in a copyable markdown block.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: inherit
3
3
  name: release-comms
4
- description: "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'."
4
+ description: "Turn a shipped changelog into a release narrative — value-not-feature framing, audience-segmented surfaces. Triggers on 'announce the release', 'write changelog post'."
5
5
  status: active
6
6
  tier: senior
7
7
  domain: product
@@ -455,6 +455,10 @@ No global tooling required.
455
455
 
456
456
  The dashboard is a **read-only snapshot**. Do not edit it by hand — regenerate it.
457
457
 
458
+ ## Rubric pass (optional, surfacing-only)
459
+
460
+ After producing roadmap, run [`judge-artifact-completeness`](../judge-artifact-completeness/SKILL.md) with rubric `roadmap-score` to surface missing dimensions (risk, tests, migration, maintainability). Score is a recommendation; never blocks shipping. Invoke only when user wants completeness check — not by default.
461
+
458
462
  ## Output format
459
463
 
460
464
  1. Roadmap file in agents/roadmaps/ with ordered phases and tasks
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: inherit
3
3
  name: roadmap-writing
4
- description: "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'."
4
+ description: "Use when authoring or rewriting a roadmap in agents/roadmaps/ — phases, goal, acceptance criteria, council notes; fires even on 'write a plan for X' / 'draft a roadmap'."
5
5
  domain: process
6
6
  workspaces:
7
7
  - agent-config-maintainer
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: medium
3
3
  name: script-writing
4
- description: "Use when adding or editing any script under `scripts/` — `--quiet` flag, `_lib/script_output` helpers, silent Taskfile wiring, Iron-Law carve-outs — even when you just say 'add a check script for X'."
4
+ description: "Use when adding or editing any script under `scripts/` — `--quiet`, `_lib/script_output`, silent Taskfile wiring, Iron-Law carve-outs; fires on 'add a check script for X'."
5
5
  domain: process
6
6
  workspaces:
7
7
  - agent-config-maintainer
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: medium
3
3
  name: sql-writing
4
- description: "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."
4
+ description: "Use when writing raw SQL — MariaDB/MySQL syntax, parameterization, raw migrations, seeders with `DB::statement`; fires even on a pasted query asking 'why is this slow'."
5
5
  domain: engineering
6
6
  workspaces:
7
7
  - engineering
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: high
3
3
  name: systematic-debugging
4
- description: "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'."
4
+ description: "Use on a bug, test failure, crash, or unexpected behavior — enforce reproduce → isolate → hypothesize → verify before any fix; fires even on 'this is broken' / 'quick fix'."
5
5
  domain: discovery
6
6
  council_depth: deep
7
7
  workspaces:
@@ -152,6 +152,10 @@ Risks: <arbitrary values, !important, dark-mode gaps>
152
152
  flow) when the brief allows; cite the design brief's `aesthetic:`
153
153
  line if `fe-design`'s aesthetic-direction section produced one.
154
154
 
155
+ ## Taste Dials
156
+
157
+ `DESIGN.md` `## Taste Dials` → honour: Variance → layout-family spread + asymmetry; Motion → animation budget + reduced-motion posture; Density → spacing scale + info-per-viewport. Absent → follow brief's inferred dials.
158
+
155
159
  ## Do NOT
156
160
 
157
161
  - Do NOT add `!important` to win a specificity fight; restructure
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: medium
3
3
  name: testing-anti-patterns
4
- description: "Use BEFORE writing or changing tests, adding mocks, or putting test-only methods on production classes — five Iron Laws and gates against mocking-the-mock, production pollution, silent partial mocks."
4
+ description: "Use BEFORE writing/changing tests, adding mocks, or test-only methods on production classes — Iron Laws against mocking-the-mock, production pollution, silent partial mocks."
5
5
  domain: quality
6
6
  workspaces:
7
7
  - engineering
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: medium
3
3
  name: token-optimizer
4
- description: "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."
4
+ description: "Use BEFORE any verbose CLI run, large file read, doc conversion, or near-context handoff — decision tree keyed by intent citing the canonical token-saving asset."
5
5
  domain: process
6
6
  execution:
7
7
  type: assisted
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: inherit
3
3
  name: typography-system
4
- description: "Derive a type system from a style constraint — query curated font pairings, set scale/line-height/weights, emit DTCG tokens via design-tokens. Use when choosing fonts or building a typographic scale."
4
+ description: "Derive a type system from a style constraint — font pairings, scale/line-height/weights, DTCG tokens via design-tokens. Use to choose fonts or build a typographic scale."
5
5
  domain: product
6
6
  personas: []
7
7
  workspaces:
@@ -127,6 +127,7 @@ brand already registers fonts, use them and skip the filter.
127
127
 
128
128
  ## See also
129
129
 
130
+ - [`design-canon.md`](../../../docs/guidelines/design-canon.md) — named-systems + typography-craft (foundry/theory) grounding index; pull to escape the AI-default fonts.
130
131
  - [`design-tokens`](../design-tokens/SKILL.md) — toolchain that generates CSS
131
132
  vars and the Tailwind snippet from `tokens.json`.
132
133
  - [`design-intelligence`](../design-intelligence/SKILL.md) — idiom corpus that
@@ -39,7 +39,7 @@ schema_version: 1
39
39
  # CI guard: a release bump of `package.json` must update this value
40
40
  # in lockstep — see scripts/check_template_pin_drift.py (road-to-
41
41
  # portable-runtime-and-update-check P3.3).
42
- agent_config_version: "5.10.1"
42
+ agent_config_version: "7.4.0"
43
43
 
44
44
  # --- Project identity ---
45
45
  project:
@@ -36,6 +36,7 @@ export const REGISTRY = [
36
36
  { name: 'commands', disposition: 'native', synopsis: 'List/explain the command surface from the discovery manifest (ls / explain subcommands).' },
37
37
  { name: 'help', disposition: 'native', synopsis: 'Show TS-shell help; delegates --tier=N to Bash.' },
38
38
  { name: 'explain', disposition: 'delegate' },
39
+ { name: 'analyze-session', disposition: 'delegate', synopsis: 'Read-only post-session report from on-disk runtime state.' },
39
40
  { name: 'migrate', disposition: 'delegate' },
40
41
  { name: 'mcp:render', disposition: 'delegate' },
41
42
  { name: 'mcp: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-06-25T19:49:27Z`
3
+ - Generated: `2026-06-29T10:58:18Z`
4
4
  - Deprecated artefacts: **0**
5
5
 
6
6
  _None. Tree is clean._