@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.
- package/.claude-plugin/marketplace.json +4 -1
- package/CHANGELOG.md +81 -0
- package/README.md +2 -2
- package/dist/agent-src/commands/fix/pr-comments.md +42 -13
- package/dist/agent-src/commands/review-changes.md +14 -7
- package/dist/agent-src/rules/artifact-engagement-recording.md +9 -0
- package/dist/agent-src/rules/cli-output-handling.md +18 -0
- package/dist/agent-src/rules/domain-safety-pii.md +4 -3
- package/dist/agent-src/rules/icon-consistency.md +1 -0
- package/dist/agent-src/rules/legal-safety-floor.md +2 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +8 -5
- package/dist/agent-src/skills/adr-create/SKILL.md +5 -1
- package/dist/agent-src/skills/adversarial-review/SKILL.md +1 -1
- package/dist/agent-src/skills/blade-ui/SKILL.md +4 -0
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +2 -1
- package/dist/agent-src/skills/code-review/SKILL.md +4 -0
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/SKILL.md +40 -0
- package/dist/agent-src/skills/design-review/SKILL.md +23 -11
- package/dist/agent-src/skills/design-system-capture/SKILL.md +41 -0
- package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +62 -0
- package/dist/agent-src/skills/design-tokens/SKILL.md +1 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +6 -0
- package/dist/agent-src/skills/flux/SKILL.md +4 -0
- package/dist/agent-src/skills/iconography/SKILL.md +1 -0
- package/dist/agent-src/skills/image-editing/evals/triggers.json +13 -13
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +136 -0
- package/dist/agent-src/skills/judge-artifact-completeness/calibration/fixtures.json +149 -0
- package/dist/agent-src/skills/judge-artifact-completeness/evals/triggers.json +17 -0
- package/dist/agent-src/skills/judge-artifact-completeness/rubrics/architecture-score.json +73 -0
- package/dist/agent-src/skills/judge-artifact-completeness/rubrics/pr-review-score.json +65 -0
- package/dist/agent-src/skills/judge-artifact-completeness/rubrics/roadmap-score.json +73 -0
- package/dist/agent-src/skills/judge-artifact-completeness/rubrics/ticket-quality-score.json +73 -0
- package/dist/agent-src/skills/judge-injection-defense/SKILL.md +99 -0
- package/dist/agent-src/skills/judge-injection-defense/calibration/fixtures.json +24 -0
- package/dist/agent-src/skills/judge-injection-defense/evals/triggers.json +17 -0
- package/dist/agent-src/skills/judge-injection-defense/fixtures/behavioral-fixtures.json +63 -0
- package/dist/agent-src/skills/judge-injection-defense/fixtures/coverage-report.md +53 -0
- package/dist/agent-src/skills/judge-injection-defense/fixtures/perturbation-taxonomy.json +110 -0
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +134 -0
- package/dist/agent-src/skills/judge-synthesis/evals/triggers.json +17 -0
- package/dist/agent-src/skills/logo-generation/SKILL.md +1 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +18 -0
- package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +59 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +5 -1
- package/dist/agent-src/skills/release-comms/SKILL.md +1 -1
- package/dist/agent-src/skills/roadmap-management/SKILL.md +4 -0
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/script-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/sql-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +1 -1
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +4 -0
- package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
- package/dist/agent-src/skills/typography-system/SKILL.md +2 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/cli/registry.js +1 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +109 -43
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +8 -5
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +7 -4
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/router.json +1 -1
- package/dist/server/schemas/settings.js +6 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/architecture.md +2 -2
- package/docs/catalog.md +28 -20
- package/docs/command-flows.md +1 -1
- package/docs/enforcement-by-host.md +9 -0
- package/docs/governance-advantage.md +72 -0
- package/docs/guidelines/design-antipatterns.md +26 -0
- package/docs/guidelines/design-canon.md +62 -0
- package/package.json +2 -1
- package/src/config/agent-settings.template.yml +21 -0
- package/src/scripts/_cli/cmd_analyze_session.ts +347 -0
- package/src/scripts/_dispatch.bash +8 -0
- package/src/scripts/_lib/token_count.ts +110 -35
- package/src/scripts/audit_initial_context.ts +37 -12
- package/src/scripts/bench_quality_run.ts +253 -0
- package/src/scripts/bench_rule_load_latency.ts +178 -0
- package/src/scripts/check_kernel_prefix_stability.ts +0 -0
- package/src/scripts/check_quality_regression.ts +244 -0
- package/src/scripts/check_token_quality_golden.ts +253 -0
- package/src/scripts/check_token_regression.ts +266 -0
- package/src/scripts/design_slop_rules.test.ts +193 -0
- package/src/scripts/design_slop_rules.ts +502 -0
- package/src/scripts/external_sources_denylist.json +7 -1
- package/src/scripts/hook_manifest.yaml +26 -3
- package/src/scripts/hooks/design_slop_hook.ts +181 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +228 -0
- package/src/scripts/lint_agent_security.ts +1 -0
- package/src/scripts/lint_confusables.ts +197 -0
- package/src/scripts/lint_design_slop.ts +245 -0
- 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
|
|
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: "
|
|
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?'
|
|
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: "
|
|
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/ —
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 —
|
|
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 —
|
|
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: "
|
|
42
|
+
agent_config_version: "7.4.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
package/dist/cli/registry.js
CHANGED
|
@@ -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' },
|
package/dist/cli/registry.js.map
CHANGED
|
@@ -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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"}
|