@event4u/agent-config 7.1.0 → 7.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.
- package/.claude-plugin/marketplace.json +2 -1
- package/CHANGELOG.md +39 -0
- package/README.md +1 -1
- package/dist/agent-src/rules/brand-source-of-truth.md +10 -0
- package/dist/agent-src/rules/delegation-policy.md +1 -0
- package/dist/agent-src/rules/legal-safety-floor.md +42 -4
- package/dist/agent-src/rules/output-discipline.md +85 -0
- package/dist/agent-src/rules/telegraph-speak.md +4 -1
- package/dist/agent-src/rules/token-budget-discipline.md +94 -0
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +20 -5
- package/dist/agent-src/skills/blade-ui/SKILL.md +9 -0
- package/dist/agent-src/skills/contract-review/SKILL.md +3 -2
- package/dist/agent-src/skills/dashboard-design/SKILL.md +21 -5
- package/dist/agent-src/skills/design-intelligence/SKILL.md +96 -0
- package/dist/agent-src/skills/design-review/SKILL.md +83 -0
- package/dist/agent-src/skills/design-system-capture/SKILL.md +234 -0
- package/dist/agent-src/skills/design-tokens/SKILL.md +1 -0
- package/dist/agent-src/skills/dpa-review/SKILL.md +3 -2
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +15 -4
- package/dist/agent-src/skills/fe-design/SKILL.md +98 -16
- package/dist/agent-src/skills/flux/SKILL.md +8 -0
- package/dist/agent-src/skills/iconography/SKILL.md +1 -0
- package/dist/agent-src/skills/legal-intake-triage/SKILL.md +3 -2
- package/dist/agent-src/skills/legal-practice-profile/SKILL.md +3 -2
- package/dist/agent-src/skills/livewire/SKILL.md +8 -0
- package/dist/agent-src/skills/nda-triage/SKILL.md +3 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +21 -9
- package/dist/agent-src/skills/skill-writing/SKILL.md +18 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +7 -10
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +17 -7
- package/dist/agent-src/skills/typography-system/SKILL.md +14 -0
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +9 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +123 -59
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +8 -8
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +18 -15
- package/dist/discovery/trust-report.md +5 -5
- package/dist/discovery/workspaces.json +15 -12
- package/dist/mcp/registry-manifest.json +2 -2
- package/dist/router.json +1 -1
- package/dist/server/routes/wizard.js +4 -3
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/schemas/settings.js +9 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/ui/assets/{index-CoQo90sz.js → index-UjcTG_9O.js} +2 -2
- package/dist/ui/assets/index-UjcTG_9O.js.map +1 -0
- package/dist/ui/index.html +1 -1
- package/docs/RELEASE_STORY_TEMPLATE.md +37 -0
- package/docs/architecture.md +3 -3
- package/docs/contracts/capability-boundary.md +64 -0
- package/docs/contracts/discovery-manifest.schema.json +2 -2
- package/docs/contracts/package-self-orientation.md +3 -0
- package/docs/contracts/subagent-boundary.md +54 -0
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +13 -0
- package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +19 -0
- package/docs/getting-started.md +1 -1
- package/docs/guidelines/agent-infra/domain-pack-architecture.md +1 -0
- package/docs/guidelines/design-antipatterns-triggers.json +17 -0
- package/docs/guidelines/design-antipatterns.md +170 -0
- package/docs/guidelines/design-modes.md +97 -0
- package/package.json +1 -1
- package/src/config/agent-settings.template.yml +31 -0
- package/src/config/discovery/packs.yml +16 -5
- package/src/config/discovery/workspaces.yml +4 -4
- package/src/scripts/check_trunk_drift.ts +67 -0
- package/src/scripts/lint_design_quality.ts +321 -0
- package/src/scripts/lint_discovery_vocabulary.ts +4 -4
- package/src/scripts/lint_legal_pack.ts +62 -4
- package/src/scripts/lint_output_slop.ts +223 -0
- package/src/scripts/lint_pack_risk_class.ts +79 -0
- package/src/scripts/schemas/agent-settings.schema.json +12 -0
- package/src/scripts/schemas/skill.schema.json +5 -0
- package/dist/ui/assets/index-CoQo90sz.js.map +0 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Shared agent configuration — skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
|
|
9
|
-
"version": "7.
|
|
9
|
+
"version": "7.2.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
|
@@ -258,6 +258,7 @@
|
|
|
258
258
|
"./dist/agent-src/skills/design-intelligence",
|
|
259
259
|
"./dist/agent-src/skills/design-review",
|
|
260
260
|
"./dist/agent-src/skills/design-tokens",
|
|
261
|
+
"./dist/agent-src/skills/design-system-capture",
|
|
261
262
|
"./dist/agent-src/skills/devcontainer",
|
|
262
263
|
"./dist/agent-src/skills/developer-like-execution",
|
|
263
264
|
"./dist/agent-src/skills/discovery-interview",
|
package/CHANGELOG.md
CHANGED
|
@@ -948,6 +948,45 @@ our recommendation order, not its support status.
|
|
|
948
948
|
> that forces a new era split (`# Era: 7.1.x`, etc.) — see
|
|
949
949
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
950
950
|
|
|
951
|
+
## [7.2.0](https://github.com/event4u-app/agent-config/compare/7.1.0...7.2.0) (2026-06-24)
|
|
952
|
+
|
|
953
|
+
### Features
|
|
954
|
+
|
|
955
|
+
* **design-craft:** wire existing design/frontend skills into the anti-slop layer ([4ac512c](https://github.com/event4u-app/agent-config/commit/4ac512c294c47c54c04e71a12d2a85e6a8600d93))
|
|
956
|
+
* **design-craft:** add anti-slop enforcement + design memory + token governance ([4c07b60](https://github.com/event4u-app/agent-config/commit/4c07b60195db52a938f41445a347a0bec3331bc2))
|
|
957
|
+
* **product-clarity:** process wins (release-story, trunk-drift, explainability) ([f91b898](https://github.com/event4u-app/agent-config/commit/f91b898d7ae833bd4eb7b1577e7ae5f78ee96be4))
|
|
958
|
+
* **governance:** capability lifecycle view + complete capability-governance ([f299791](https://github.com/event4u-app/agent-config/commit/f2997914a3f9e25fc0a26b4a202e3f521a0471b7))
|
|
959
|
+
* **governance:** subagent boundary contract ([8ed4181](https://github.com/event4u-app/agent-config/commit/8ed4181afbff73cb99b764ac695354c0bb1f073f))
|
|
960
|
+
* **governance:** skill-growth gate in the authoring flow ([a9a3b80](https://github.com/event4u-app/agent-config/commit/a9a3b80ab7dfbcfee0cb8f0c51d5744aabb03bd7))
|
|
961
|
+
* **governance:** capability-boundary matrix + risk_class invariant ([7b683b8](https://github.com/event4u-app/agent-config/commit/7b683b864188f40424c4a9399a6a931081e14291))
|
|
962
|
+
* **legal-review-prep:** attorney-framing-review promotion tripwire ([551fe8b](https://github.com/event4u-app/agent-config/commit/551fe8b4b7e817c5f81adddfe8d85220f3ef30a7))
|
|
963
|
+
* **legal-review-prep:** high-risk pack metadata ([554282e](https://github.com/event4u-app/agent-config/commit/554282e4b12575dc884c078f45b560facea60be1))
|
|
964
|
+
* **legal-review-prep:** council / deep-research gate on legal work-product ([7b44c89](https://github.com/event4u-app/agent-config/commit/7b44c8961d94ae9a5b99329a80ff725db2d0c6d5))
|
|
965
|
+
* **legal-review-prep:** install consent gate (checkbox + flag + floor refusal) ([af2ee1d](https://github.com/event4u-app/agent-config/commit/af2ee1dbc18446f77f0d13e79b11551634f15d2c))
|
|
966
|
+
* **legal-review-prep:** hard individual-case STOP in the floor + lint ([71860da](https://github.com/event4u-app/agent-config/commit/71860da9699d8537a81942ff4d59aeca6fbd2a96))
|
|
967
|
+
|
|
968
|
+
### Bug Fixes
|
|
969
|
+
|
|
970
|
+
* **lint:** trim telegraph-speak amendment to clear long_rule warning ([95d54c6](https://github.com/event4u-app/agent-config/commit/95d54c6852c2344f3402f5f9730185a400fc4941))
|
|
971
|
+
* **lint:** add model_tier to design-system-capture skill ([57c3a6d](https://github.com/event4u-app/agent-config/commit/57c3a6defd57a771a9f86805b9634f3b73a6afee))
|
|
972
|
+
* **framework-neutrality:** drop npm-install literal in design-intelligence ([aeadec5](https://github.com/event4u-app/agent-config/commit/aeadec54038c0d43aed75ea30f30574a2d6b7d65))
|
|
973
|
+
* **ci:** Zod settings parity + router minification for tokens.rich_skills ([88930da](https://github.com/event4u-app/agent-config/commit/88930da1786731a9cc1317b841646477f77ad1d1))
|
|
974
|
+
* **ci:** strict-TS null-safety in design-craft linters ([3cac522](https://github.com/event4u-app/agent-config/commit/3cac522ed8234190a6d361735bc323616b11393b))
|
|
975
|
+
* **ci:** broken refs + unused var in design-craft additions ([2e0c2a7](https://github.com/event4u-app/agent-config/commit/2e0c2a785596c67fb4114ead09caea57aeb6e0ab))
|
|
976
|
+
* **portability:** drop task-invocation from shipped /create-pr command ([e03f97a](https://github.com/event4u-app/agent-config/commit/e03f97a14ea38439ba41427448f7d77c868959c4))
|
|
977
|
+
|
|
978
|
+
### Documentation
|
|
979
|
+
|
|
980
|
+
* **roadmaps:** add legal-review-prep + capability-governance + product-clarity roadmaps ([e3ad120](https://github.com/event4u-app/agent-config/commit/e3ad120893dd20cea79c7875558137f42d2797da))
|
|
981
|
+
|
|
982
|
+
### Refactoring
|
|
983
|
+
|
|
984
|
+
* **legal:** rename legal pack to legal-review-prep ([fb34133](https://github.com/event4u-app/agent-config/commit/fb3413305718d321b435514e5f0ab0f4122e37b7))
|
|
985
|
+
|
|
986
|
+
### Chores
|
|
987
|
+
|
|
988
|
+
* **sync:** condense design-craft skills/rules + sync dist/agent-src/ ([3a3e6e1](https://github.com/event4u-app/agent-config/commit/3a3e6e1f668128e386ca7d19ffe031a09a391fcd))
|
|
989
|
+
|
|
951
990
|
## [7.1.0](https://github.com/event4u-app/agent-config/compare/7.0.2...7.1.0) (2026-06-24)
|
|
952
991
|
|
|
953
992
|
### Features
|
package/README.md
CHANGED
|
@@ -88,7 +88,7 @@ is platform operation, not a user-work flow.)
|
|
|
88
88
|
<details>
|
|
89
89
|
<summary><b>Catalog at a glance</b> — raw artefact counts (maintainer reference)</summary>
|
|
90
90
|
|
|
91
|
-
[](dist/agent-src/skills/) [](dist/agent-src/rules/) [](dist/agent-src/commands/) [](docs/guidelines/) [](dist/agent-src/personas/) [](dist/agent-src/personas/advisors/)
|
|
92
92
|
|
|
93
93
|
The headline is the **experience** (profile + packs), not the raw counts. Full catalog: [`docs/catalog.md`](docs/catalog.md).
|
|
94
94
|
</details>
|
|
@@ -51,7 +51,17 @@ corpus from quietly replacing a value the brand already defines.
|
|
|
51
51
|
marked as corpus-sourced, until `brand-identity` defines real tokens.
|
|
52
52
|
- Non-brand surfaces.
|
|
53
53
|
|
|
54
|
+
## Design register note
|
|
55
|
+
|
|
56
|
+
When a consumer brand profile is present, the brand register ("the impression IS
|
|
57
|
+
the product") is active — use `brand-identity`, `iconography`, and
|
|
58
|
+
`design-intelligence` as the primary skill cluster. For product/dashboard/admin
|
|
59
|
+
surfaces within the same brand, the product register ("design serves the task")
|
|
60
|
+
may apply per-surface. See [`docs/guidelines/design-modes.md`](../docs/guidelines/design-modes.md)
|
|
61
|
+
for the full Brand-mode vs Product-mode discriminator.
|
|
62
|
+
|
|
54
63
|
## See also
|
|
55
64
|
|
|
56
65
|
- [`brand-consistency`](brand-consistency.md) — validates emitted artifacts against the authoritative brand profile this rule establishes.
|
|
57
66
|
- [`brand`](../skills/brand/SKILL.md) — the gap-fill corpus this rule subordinates to consumer brand.
|
|
67
|
+
- [`docs/guidelines/design-modes.md`](../docs/guidelines/design-modes.md) — brand vs product register discriminator and routing.
|
|
@@ -80,5 +80,6 @@ primitive → run in-session (clean no-op).
|
|
|
80
80
|
## See also
|
|
81
81
|
|
|
82
82
|
- [`subagent-orchestration`](../skills/subagent-orchestration/SKILL.md) — the 7 modes this selects.
|
|
83
|
+
- [`subagent-boundary`](../docs/contracts/subagent-boundary.md) — what a subagent owns vs never owns (task-meaning, memory, pack-surface, safety-floor bypass).
|
|
83
84
|
- [`auto-orchestration-activation`](../contexts/execution/auto-orchestration-activation.md) — the gate.
|
|
84
85
|
- [`reasoning-orchestrator`](../skills/reasoning-orchestrator/SKILL.md) — RDP dispatch, now gated here.
|
|
@@ -24,9 +24,9 @@ routes_to:
|
|
|
24
24
|
- "skill:dpa-review"
|
|
25
25
|
- "skill:legal-intake-triage"
|
|
26
26
|
workspaces:
|
|
27
|
-
- legal
|
|
27
|
+
- legal-review-prep
|
|
28
28
|
packs:
|
|
29
|
-
- legal
|
|
29
|
+
- legal-review-prep
|
|
30
30
|
trust:
|
|
31
31
|
level: advisory
|
|
32
32
|
human_review_required: true
|
|
@@ -36,7 +36,7 @@ trust:
|
|
|
36
36
|
|
|
37
37
|
# Legal Safety Floor
|
|
38
38
|
|
|
39
|
-
Domain safety floor for legal-pack
|
|
39
|
+
Domain safety floor for the `legal-review-prep` pack (contract/NDA/DPA review, legal triage). Auto-activates when `pack-legal-review-prep` is installed. Sibling to `finance-safety-floor` / `strategy-safety-floor`. Every output is a **draft to PREPARE for attorney review**, never legal advice.
|
|
40
40
|
|
|
41
41
|
## Iron Law — no final legal call
|
|
42
42
|
|
|
@@ -56,6 +56,29 @@ THEY DO NOT REPLACE A LICENSED ATTORNEY. NO ONE MAY RELY ON THEM AS DEFINITIVE.
|
|
|
56
56
|
|
|
57
57
|
Every output is a **draft / research aid for a human attorney to verify** — for first-pass review, issue-spotting, and drafts only. It is **not** legal advice, **not** a legal opinion, and **not** a substitute for a qualified lawyer in the relevant jurisdiction. Nobody should rely on it for a binding decision; treat it as a tool that makes attorney review faster, never as the review itself. This disclaimer is non-removable from the pack. See [`LEGAL_NOTICE.md`](../../LEGAL_NOTICE.md).
|
|
58
58
|
|
|
59
|
+
## Consent gate — refuse until acknowledged
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
NO legal-review-prep SKILL RUNS UNTIL legal_review_prep.acknowledged: true.
|
|
63
|
+
FAIL-CLOSED: NO ACKNOWLEDGMENT → REFUSE, POINT TO THE SETUP WIZARD.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Before any legal-review-prep skill produces output, read `legal_review_prep.acknowledged` from `.agent-settings.yml`. Missing / `false` → refuse and surface: *"The legal-review-prep pack is inactive until you acknowledge it is not legal advice. Run the setup wizard's legal-consent step, or set `legal_review_prep.acknowledged: true` in `.agent-settings.yml`."* This is active consent (set via the wizard checkbox), not a passive disclaimer — it manages reliance/expectation and host-ToS exposure; it does **not** cure RDG.
|
|
67
|
+
|
|
68
|
+
## Iron Law — legal work-product is council / deep-research gated
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
WHEN legal_review_prep.require_council IS TRUE (DEFAULT), A LEGAL WORK-PRODUCT
|
|
72
|
+
IS PRODUCED VIA A MULTI-MODEL COUNCIL / research:deep PASS — NEVER SINGLE-MODEL.
|
|
73
|
+
FAIL-CLOSED: NO COUNCIL CONFIGURED → REFUSE. NO INFRA → NO OUTPUT, NOT BAD OUTPUT.
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
A **work-product** = a review, redline, gap-frame, or demand draft (not a one-line definition or a general-concept explanation). Every legal-review-prep skill carries `council_depth: deep`; when consulted it routes through the AI council (`--depth deep`) or `research:deep`. Single-model legal work-product is refused while `require_council: true`. When no council is configured, **fail closed** — refuse and say so; an unreviewed single-model legal draft is the worse outcome for a high-risk pack.
|
|
77
|
+
|
|
78
|
+
**Honest enforcement boundary.** This is advisory + settings + lint enforcement, not a hard runtime hook — skills are prose the host reads; the floor, the `require_council` flag, and the `lint_legal_pack` `council_depth` check are the teeth, the host is *asked* to route through the council. The deep council (2026-06-24) found this defense-in-depth substantive (documented multi-stage review + reliance-bounding friction + audit trail), **not** an RDG cure: it improves quality and creates a record; it does **not** make the output reliable legal advice.
|
|
79
|
+
|
|
80
|
+
**Audit pointer.** When a council / deep-research pass runs for a legal work-product, persist its pointer (timestamp · members · artefact hash) under `agents/runtime/council/responses/` so the "documented multi-stage review" claim is real, not asserted. No pass, no work-product.
|
|
81
|
+
|
|
59
82
|
## Iron Law — general information only, never individual-case examination
|
|
60
83
|
|
|
61
84
|
```
|
|
@@ -69,7 +92,22 @@ The line (German RDG § 2(1); a disclaimer does **not** cure crossing it): a reg
|
|
|
69
92
|
- **Definitive individual application** — "this violates GDPR in your case", "you must terminate within 30 days".
|
|
70
93
|
- **Dispute-specific drafting** — "draft the warning letter for *my* dispute with X", "write my response to this cease-and-desist".
|
|
71
94
|
|
|
72
|
-
|
|
95
|
+
This is a hard **STOP**, not a hedge — do not continue the individual-case analysis. When the request crosses into individual-case territory (specific facts about *your* situation, outcome prediction, deadline-driven or definitive-action questions — "may I terminate?", "will I win?", "is this enforceable in my case?"), emit the STOP block and end the individual-case answer:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
🛑 I must stop here — this needs a lawyer.
|
|
99
|
+
|
|
100
|
+
Your request involves individual legal examination, which I cannot provide.
|
|
101
|
+
This is a regulatory boundary (German RDG § 2(1)), not a gap in knowledge.
|
|
102
|
+
Find a qualified lawyer:
|
|
103
|
+
- Rechtsanwaltskammer (German bar) attorney search — https://www.rechtsanwaltskammer.de
|
|
104
|
+
- Beratungshilfe (legal aid) — https://www.bmj.de
|
|
105
|
+
|
|
106
|
+
I can still explain the general concept and provide a general template —
|
|
107
|
+
just not how it applies to your specific situation.
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Err toward the STOP when more than ~3 case-specific facts are needed to answer. The general-information path (concept + template) stays available; the STOP only terminates the *individual-case* branch, never the whole interaction.
|
|
73
111
|
|
|
74
112
|
## No definitive legal language
|
|
75
113
|
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
4
|
+
description: "Prohibits placeholder-prose output in generated code and UI — no truncation shorthands; on budget overflow emit a clean PAUSED breakpoint instead"
|
|
5
|
+
triggers:
|
|
6
|
+
- intent: "generating code or multi-section output"
|
|
7
|
+
- keyword: "// rest of component"
|
|
8
|
+
- keyword: "for brevity"
|
|
9
|
+
- keyword: "rest follows the same pattern"
|
|
10
|
+
- phrase: "similar pattern"
|
|
11
|
+
workspaces:
|
|
12
|
+
- engineering
|
|
13
|
+
packs:
|
|
14
|
+
- engineering-base
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Output Discipline
|
|
18
|
+
|
|
19
|
+
## Iron Law — no placeholder prose in emitted code
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
NEVER EMIT PLACEHOLDER PROSE IN GENERATED CODE OR UI.
|
|
23
|
+
PLACEHOLDER PROSE IS INCOMPLETE OUTPUT, NOT A STYLE CHOICE.
|
|
24
|
+
ON BUDGET OVERFLOW: EMIT A CLEAN PAUSED MARKER. NEVER TRUNCATE SILENTLY.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Banned placeholder patterns
|
|
28
|
+
|
|
29
|
+
The following patterns are **absolutely banned** in generated code, components,
|
|
30
|
+
templates, and UI markup. They signal "I gave up midway" and leave the codebase
|
|
31
|
+
in a broken state:
|
|
32
|
+
|
|
33
|
+
| Banned pattern | What to do instead |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `// rest of component` | Write the rest of the component. If budget runs out, emit `[PAUSED]` marker |
|
|
36
|
+
| `// ... (unchanged)` | Emit the unchanged code or omit it from the diff with a clean explanation of what was NOT changed |
|
|
37
|
+
| `// TODO: implement` | Implement it. If genuinely deferred, name the deferral explicitly in the brief, not in the code |
|
|
38
|
+
| `/* similar pattern */` | Write the similar pattern in full |
|
|
39
|
+
| `"for brevity"` in code comments | There is no brevity in broken code |
|
|
40
|
+
| `// rest follows same pattern` | Follow the same pattern — write it |
|
|
41
|
+
| `...` / `…` as an ellipsis replacing code content | Write the content |
|
|
42
|
+
| `[Your component here]` / `<YourComponentName>` | Use the actual component name or write the component |
|
|
43
|
+
| `Lorem ipsum` / `dolor sit amet` in UI output intended for review | Use realistic placeholder content or ask for content |
|
|
44
|
+
|
|
45
|
+
The banned patterns above are also detected by `lint_output_slop.ts` (see
|
|
46
|
+
`src/scripts/lint_output_slop.ts`) — violations cause a CI exit-code-2.
|
|
47
|
+
|
|
48
|
+
## On budget overflow — PAUSED protocol
|
|
49
|
+
|
|
50
|
+
When output genuinely reaches a context budget limit mid-generation:
|
|
51
|
+
|
|
52
|
+
1. Complete the current logical unit (function body, component, section).
|
|
53
|
+
2. Emit a clean breakpoint marker on its own line:
|
|
54
|
+
```
|
|
55
|
+
[PAUSED — section X of Y complete. Continue prompt: "continue from <last-completed-unit>"]
|
|
56
|
+
```
|
|
57
|
+
3. Stop. Do **not** truncate with `// rest follows...` or `...`.
|
|
58
|
+
|
|
59
|
+
The user will prompt "continue" and the next turn resumes cleanly from the
|
|
60
|
+
named unit.
|
|
61
|
+
|
|
62
|
+
## Interaction with `verify-before-complete`
|
|
63
|
+
|
|
64
|
+
`verify-before-complete` requires fresh verification before claiming work is
|
|
65
|
+
done. `output-discipline` adds the pre-condition: **there must be nothing to
|
|
66
|
+
verify that was never written**. A component with `// rest of component` is
|
|
67
|
+
not a complete artifact — it cannot be verified, it cannot be committed.
|
|
68
|
+
|
|
69
|
+
## Inline-ignore escape (for legitimate edge cases)
|
|
70
|
+
|
|
71
|
+
In the rare case where a pattern above is intentional (e.g., a documentation
|
|
72
|
+
example showing what NOT to do), use the inline-ignore escape:
|
|
73
|
+
|
|
74
|
+
```javascript
|
|
75
|
+
// lint-output-slop-disable-next-line impl-placeholder -- showing a negative example in documentation
|
|
76
|
+
// rest of component
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Or for a whole file: `// lint-output-slop-disable-file impl-placeholder -- test fixture`
|
|
80
|
+
|
|
81
|
+
## See also
|
|
82
|
+
|
|
83
|
+
- `verify-before-complete` — no completion claim without evidence
|
|
84
|
+
- `downstream-changes` — every edit is incomplete until all callers are updated
|
|
85
|
+
- `src/scripts/lint_output_slop.ts` — the CI linter enforcing this rule
|
|
@@ -59,7 +59,7 @@ Post-rewrite validator runs on every reply when `speak_scope != off`:
|
|
|
59
59
|
The rule documents the algorithm; agents apply it inline before
|
|
60
60
|
sending. The mechanism is the rule, not a hidden script.
|
|
61
61
|
|
|
62
|
-
Optional CI-side regression lock: [`scripts/validate_telegraph_carveouts.py`](../../scripts/validate_telegraph_carveouts.py)
|
|
62
|
+
- Optional CI-side regression lock: [`scripts/validate_telegraph_carveouts.py`](../../scripts/validate_telegraph_carveouts.py) — pre/post reply pair, byte-identical preservation across all seven carve-out categories; runtime mechanism stays algorithmic, script is the offline check.
|
|
63
63
|
|
|
64
64
|
## Telegraph grammar
|
|
65
65
|
|
|
@@ -80,4 +80,7 @@ Example: *"I will now check the file and see if it exists"* →
|
|
|
80
80
|
| `telegraph.speak` | `true` | Compile-time include in `dist/router.json`. |
|
|
81
81
|
| `telegraph.speak_scope` | `prose_only` | Runtime scope of telegraph grammar. |
|
|
82
82
|
|
|
83
|
+
- Input-side memory condensation (shrinking always-loaded memory files like `AGENTS.md` / `CLAUDE.md` / `.cursorrules` rather than the reply stream) runs independently of `speak_scope` — see [`condense-memory`](../skills/condense-memory/SKILL.md) for the script wrapper, sensitive-path refusal contract, and `.original.md` round-trip.
|
|
84
|
+
- Skills marked `token_budget_class: rich` are **exempt** from telegraph condensation + thin-projector trimming (gated by `tokens.rich_skills`, default `on`) — full model in [`token-budget-discipline`](token-budget-discipline.md).
|
|
85
|
+
|
|
83
86
|
Cross-rule index: [`frugality-charter § cross-references`](../contexts/contracts/frugality-charter.md#cross-references--frugality-canon-rules).
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
4
|
+
description: "Governs token_budget_class: rich skills — exempt them from telegraph-speak + thin-projector trimming; enforce the 15% cap + justification requirement"
|
|
5
|
+
triggers:
|
|
6
|
+
- keyword: "token_budget_class"
|
|
7
|
+
- keyword: "rich skill"
|
|
8
|
+
- intent: "editing a rich-tagged skill"
|
|
9
|
+
workspaces:
|
|
10
|
+
- agent-config-maintainer
|
|
11
|
+
packs:
|
|
12
|
+
- meta
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Token Budget Discipline
|
|
16
|
+
|
|
17
|
+
## Iron Law — rich skills load in full, lean skills compress
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
SKILLS MARKED token_budget_class: rich ARE INTENTIONALLY DETAILED.
|
|
21
|
+
LOAD THEM FULLY. DO NOT CONDENSE, SUMMARIZE, OR TRIM THEM.
|
|
22
|
+
THEIR LENGTH IS A DELIBERATE QUALITY INVESTMENT, NOT BLOAT.
|
|
23
|
+
SKILLS WITHOUT THE KEY, OR MARKED lean/standard, REMAIN SUBJECT
|
|
24
|
+
TO THE FULL FRUGALITY CANON (telegraph-speak, thin-projector).
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## The three classes
|
|
28
|
+
|
|
29
|
+
| Class | Default? | Telegraph-speak | Thin-projector trimming | Target size |
|
|
30
|
+
|---|---|---|---|---|
|
|
31
|
+
| `lean` | No explicit key = lean | Full condensation | May be trimmed | < 500 tokens |
|
|
32
|
+
| `standard` | — | Balanced condensation | Not trimmed if priority ≥ 60 | 500–2000 tokens |
|
|
33
|
+
| `rich` | Must be declared + justified | **Exempt** | **Never trimmed** | 2000–5000 tokens |
|
|
34
|
+
|
|
35
|
+
Read `tokens.rich_skills` from `.agent-settings.yml` (default `on`) to determine
|
|
36
|
+
whether rich skills may load in full. If `off`, treat them as
|
|
37
|
+
`standard`. If `ask`, surface the estimated token delta (≈ skill file size in
|
|
38
|
+
chars / 4) and wait for user confirmation; cache the answer for the session.
|
|
39
|
+
|
|
40
|
+
## Requirements for `token_budget_class: rich`
|
|
41
|
+
|
|
42
|
+
A skill claiming `rich` MUST satisfy ALL three:
|
|
43
|
+
|
|
44
|
+
1. **`## Why this skill is rich` section** — explains in 2-5 sentences the
|
|
45
|
+
irreducible complexity that makes condensation harmful (e.g. "agents need to
|
|
46
|
+
see 6 worked examples to pattern-match the modular scale; condensing to the
|
|
47
|
+
rule alone produces agents that invent arbitrary sizes"). The linter
|
|
48
|
+
(`lint_token_budget_discipline.ts`) fails the skill if this section is absent.
|
|
49
|
+
|
|
50
|
+
2. **Not already coverable by a reference link** — if the richness is entirely
|
|
51
|
+
in an external document the agent can fetch, the skill should load lean and
|
|
52
|
+
carry a `load_context` pointer instead.
|
|
53
|
+
|
|
54
|
+
3. **≤ 15 % of the suite's skills may claim `rich`** — the CI linter counts
|
|
55
|
+
rich-tagged skills and hard-fails if the ratio is exceeded. With ~230 skills, the
|
|
56
|
+
cap is ~35. Do not claim `rich` for convenience; claim it only for
|
|
57
|
+
irreducible-complexity skills.
|
|
58
|
+
|
|
59
|
+
## Telegraph-speak amendment
|
|
60
|
+
|
|
61
|
+
The `telegraph-speak` rule (Tier 1, always-on) **exempts** skills marked
|
|
62
|
+
`token_budget_class: rich`. When such a skill is active:
|
|
63
|
+
|
|
64
|
+
- Do not apply telegraph-speak condensation to its guidance prose
|
|
65
|
+
- Do not drop articles, linking auxiliaries, or extended examples
|
|
66
|
+
- Do not compress multi-paragraph explanations into fragments
|
|
67
|
+
- Preserve all worked examples, decision tables, and code blocks verbatim
|
|
68
|
+
|
|
69
|
+
This exemption is limited to the skill's guidance content; reply prose from the
|
|
70
|
+
*agent* (not from the skill body) remains subject to telegraph-speak unless the
|
|
71
|
+
user has set `telegraph.speak_scope: off`.
|
|
72
|
+
|
|
73
|
+
## Candidate rich skills (justified, not exhaustive)
|
|
74
|
+
|
|
75
|
+
These skills are approved `rich` by this roadmap's council:
|
|
76
|
+
|
|
77
|
+
| Skill | Justification summary |
|
|
78
|
+
|---|---|
|
|
79
|
+
| `design-intelligence` | 11 corpus CSVs + 16 design-language prose specs + a 10-category checklist; grounded selection needs the full reference to avoid random corpus subsets |
|
|
80
|
+
| `typography-system` | Modular-scale math + 6 worked example type systems; condensing to "use 1.25 ratio" produces agents that invent arbitrary px values |
|
|
81
|
+
| `accessibility-auditor` | WCAG criteria are non-negotiable detail; every criterion has a testable condition + failure mode; compression loses the test procedures |
|
|
82
|
+
| `design-system-capture` (Phase 6) | Writes + maintains DESIGN.md + PRODUCT.md; needs full templates + worked examples to generate useful artifacts |
|
|
83
|
+
|
|
84
|
+
## Governed by
|
|
85
|
+
|
|
86
|
+
- `tokens.rich_skills` setting in `.agent-settings.yml` (consumer override)
|
|
87
|
+
- `lint_token_budget_discipline.ts` (cap + justification CI check)
|
|
88
|
+
- `telegraph-speak.md` (amended to except rich-tagged skills)
|
|
89
|
+
|
|
90
|
+
## See also
|
|
91
|
+
|
|
92
|
+
- `token_budget_class` key in `src/scripts/schemas/skill.schema.json`
|
|
93
|
+
- `tokens.rich_skills` in `src/config/agent-settings.template.yml`
|
|
94
|
+
- `telegraph-speak` rule — the frugality canon this rule amends
|
|
@@ -9,6 +9,7 @@ workspaces:
|
|
|
9
9
|
- engineering
|
|
10
10
|
packs:
|
|
11
11
|
- engineering-base
|
|
12
|
+
token_budget_class: rich
|
|
12
13
|
---
|
|
13
14
|
|
|
14
15
|
# accessibility-auditor
|
|
@@ -53,11 +54,12 @@ gets a verdict in step 5; missing one is a coverage failure.
|
|
|
53
54
|
**Perceivable** — text alternatives for non-text (`alt`, `aria-label`),
|
|
54
55
|
contrast ≥ 4.5:1 for body / 3:1 for large or UI components, no
|
|
55
56
|
colour-only state ("error in red" must also be iconic or text).
|
|
56
|
-
Grounded reference for palette + chart verdicts: corpus
|
|
57
|
-
token sets (`--domain color`), chart a11y grades +
|
|
58
|
-
(`--domain chart`), mobile touch/a11y rules
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
Grounded reference for palette + chart verdicts: the adopted corpus's
|
|
58
|
+
WCAG-adjusted token sets (`--domain color`), chart a11y grades +
|
|
59
|
+
colorblind fallbacks (`--domain chart`), and mobile touch/a11y rules
|
|
60
|
+
(`--domain web`, 44pt targets) via
|
|
61
|
+
[`design-intelligence`](../design-intelligence/SKILL.md) — cite the
|
|
62
|
+
corpus row; the WCAG 2.2 AA *method* stays this skill's own checklists.
|
|
61
63
|
Widget-pattern selection (dialog, combobox, tabs, toast, table, form
|
|
62
64
|
errors, drag-reorder …) grounds in the ARIA-APG corpus:
|
|
63
65
|
`ground.py search --manifest
|
|
@@ -145,3 +147,16 @@ Top 3 fixes: <ordered by user impact>
|
|
|
145
147
|
jurisdictions.
|
|
146
148
|
- Do NOT close a finding by adjusting the test instead of the UI;
|
|
147
149
|
the user's experience is the ground truth, not the test report.
|
|
150
|
+
|
|
151
|
+
## Why this skill is rich
|
|
152
|
+
|
|
153
|
+
WCAG 2.2 AA compliance is non-negotiable detail — each success criterion
|
|
154
|
+
has a specific testable condition, failure mode, and remediation path.
|
|
155
|
+
The skill carries the full WCAG criterion matrix with concrete test
|
|
156
|
+
procedures (not just "check contrast"), keyboard-navigation patterns
|
|
157
|
+
(roving tabindex, trap management, escape-key handling), ARIA role/
|
|
158
|
+
property/state tables, and screen-reader-specific edge cases per
|
|
159
|
+
assistive technology. Condensing to "check contrast and add aria-labels"
|
|
160
|
+
loses the test procedures that turn a vague finding into a reproducible
|
|
161
|
+
failure with a specific remedy. Accessibility bugs that are described
|
|
162
|
+
vaguely cannot be verified as fixed.
|
|
@@ -133,6 +133,15 @@ current state on the next polish round.
|
|
|
133
133
|
- Do NOT put business logic in Blade templates — use Livewire or view composers.
|
|
134
134
|
- Do NOT use inline styles — use Tailwind utility classes.
|
|
135
135
|
|
|
136
|
+
## Anti-slop
|
|
137
|
+
|
|
138
|
+
Before shipping a Blade view, pull
|
|
139
|
+
[`docs/guidelines/design-antipatterns.md`](../../../docs/guidelines/design-antipatterns.md)
|
|
140
|
+
and scan Visual / Typography / Layout — the Blade markup is where side-stripe
|
|
141
|
+
accents (V1), icon-tile feature cards (T3), and the centered-hero + 3-column
|
|
142
|
+
template (L1/L2) concretely land. Stack-specific Tailwind class/hex bans live in
|
|
143
|
+
[`tailwind-engineer`](../tailwind-engineer/SKILL.md).
|
|
144
|
+
|
|
136
145
|
## Auto-trigger keywords
|
|
137
146
|
|
|
138
147
|
- Blade template
|
|
@@ -4,12 +4,13 @@ name: contract-review
|
|
|
4
4
|
description: "Use when reviewing a contract clause-by-clause from your party's side — buyer/seller/vendor/licensee. Triggers on 'review this contract', 'redline this MSA', 'is this clause a problem'."
|
|
5
5
|
status: active
|
|
6
6
|
tier: senior
|
|
7
|
+
council_depth: deep
|
|
7
8
|
domain: process
|
|
8
9
|
recommended_for_user_types: [legal]
|
|
9
10
|
workspaces:
|
|
10
|
-
- legal
|
|
11
|
+
- legal-review-prep
|
|
11
12
|
packs:
|
|
12
|
-
- legal
|
|
13
|
+
- legal-review-prep
|
|
13
14
|
trust:
|
|
14
15
|
level: advisory
|
|
15
16
|
install:
|
|
@@ -23,11 +23,17 @@ Do NOT use when:
|
|
|
23
23
|
|
|
24
24
|
## Procedure: Design a dashboard
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
1. **Inspect the data sources** — Identify which signals already exist (logs, metrics, app queries) and where they live (Grafana / Loki / app DB) before designing a new panel.
|
|
27
|
+
2. **Pick the surface** — Use the decision tables below to choose Grafana, app dashboard, or embed; document audience and refresh cadence.
|
|
28
|
+
3. **Draft the layout** — Sketch panels, choose visualization per signal (RED / USE / Golden Signals), define filters and thresholds.
|
|
29
|
+
**Ground the chart-type choice** in the adopted data-viz corpus instead
|
|
30
|
+
of memory: `ground.py search --manifest
|
|
31
|
+
<skills-root>/design-intelligence/data/manifest.json --domain chart
|
|
32
|
+
"<data shape>"` returns the best chart type, when-NOT-to-use, data-volume
|
|
33
|
+
threshold, a11y grade + colorblind fallback, and a library
|
|
34
|
+
recommendation per row (see
|
|
35
|
+
[`design-intelligence`](../design-intelligence/SKILL.md)).
|
|
36
|
+
4. **Implement and verify** — Build the dashboard, load realistic data, and confirm every panel answers a named question for the named audience.
|
|
31
37
|
|
|
32
38
|
| Domain | Technology | Purpose |
|
|
33
39
|
|---|---|---|
|
|
@@ -120,6 +126,16 @@ Config required: `allow_embedding = true`, `cookie_samesite = none` (cross-origi
|
|
|
120
126
|
- Do NOT mix ops metrics with business KPIs on the same dashboard.
|
|
121
127
|
- Do NOT show admin data without tenant scoping.
|
|
122
128
|
|
|
129
|
+
## Anti-slop
|
|
130
|
+
|
|
131
|
+
Dashboards have their own signature tell: the **hero-metric template** (giant
|
|
132
|
+
number + small label + a row of stats + gradient) is L1 in
|
|
133
|
+
[`docs/guidelines/design-antipatterns.md`](../../../docs/guidelines/design-antipatterns.md).
|
|
134
|
+
Pull the catalog and check L1–L3 (hero-metric, identical-card grids, monotonous
|
|
135
|
+
spacing) before finalizing the layout — a dashboard is product-mode
|
|
136
|
+
(`docs/guidelines/design-modes.md`): design serves the task, so favour data
|
|
137
|
+
density and earned familiarity over decorative variance.
|
|
138
|
+
|
|
123
139
|
## Auto-trigger keywords
|
|
124
140
|
|
|
125
141
|
- dashboard
|
|
@@ -9,6 +9,7 @@ workspaces:
|
|
|
9
9
|
- engineering
|
|
10
10
|
packs:
|
|
11
11
|
- frontend-design
|
|
12
|
+
token_budget_class: rich
|
|
12
13
|
trust:
|
|
13
14
|
level: professional
|
|
14
15
|
install:
|
|
@@ -48,6 +49,80 @@ Provenance + licenses: [`ATTRIBUTION.md`](ATTRIBUTION.md); manifest:
|
|
|
48
49
|
layout pattern / chart type / icon system fits this product.
|
|
49
50
|
- Stack-idiom lookup before writing UI code (`--stack` axis).
|
|
50
51
|
|
|
52
|
+
## Cross-task design memory — read DESIGN.md / PRODUCT.md first
|
|
53
|
+
|
|
54
|
+
Before running the corpus grounding or producing any design brief, check
|
|
55
|
+
the project root for `DESIGN.md` and/or `PRODUCT.md` (written by
|
|
56
|
+
`design-system-capture`). If they exist:
|
|
57
|
+
|
|
58
|
+
1. Read `DESIGN.md` — apply its captured visual decisions (radius, shadows,
|
|
59
|
+
motion, spacing) as **project constraints** that take precedence over
|
|
60
|
+
corpus suggestions. The corpus fills gaps; DESIGN.md overrides.
|
|
61
|
+
2. Read `PRODUCT.md` — note interaction patterns that affect the design
|
|
62
|
+
(e.g., destructive-action policy, empty-state approach) so the brief
|
|
63
|
+
is consistent with existing product conventions.
|
|
64
|
+
3. After generating the design brief: if a decision was made that isn't yet
|
|
65
|
+
in DESIGN.md (e.g., chose a specific shadow for a new elevated surface),
|
|
66
|
+
flag it for capture: *"Suggest adding to DESIGN.md: elevated surface shadow = …"*
|
|
67
|
+
|
|
68
|
+
Boundary vs `brand-to-tokens`/`.tokens.json`:
|
|
69
|
+
- `.tokens.json` = primitive definitions (gray-700 = #374151)
|
|
70
|
+
- `DESIGN.md` = usage decisions (elevated surfaces use the gray-700 shadow, 8px radius)
|
|
71
|
+
Both are consumed; DESIGN.md takes precedence for usage questions.
|
|
72
|
+
|
|
73
|
+
## Register — brand vs product
|
|
74
|
+
|
|
75
|
+
Determine the design register before grounding (see
|
|
76
|
+
[`docs/guidelines/design-modes.md`](../../../docs/guidelines/design-modes.md)):
|
|
77
|
+
**brand mode** ("the impression IS the product" — marketing, landing, consumer
|
|
78
|
+
first-impression) prioritizes distinctive selection; **product mode** ("design
|
|
79
|
+
serves the task" — dashboard, admin, workflow) prioritizes earned familiarity
|
|
80
|
+
and accessibility. The register changes which corpus selections are appropriate
|
|
81
|
+
(distinctive palette/typography in brand mode; predictable, semantic in product
|
|
82
|
+
mode). State the register in the Design Read line below.
|
|
83
|
+
|
|
84
|
+
## Design Read — articulate intent before generating
|
|
85
|
+
|
|
86
|
+
Before producing any design brief or making any style selection, emit one
|
|
87
|
+
line that declares the design read:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Reading this as: <page-kind> for <audience>, <vibe> language, leaning <design-system>.
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Examples:
|
|
94
|
+
- `Reading this as: SaaS dashboard for internal ops teams, functional language, leaning Radix/shadcn.`
|
|
95
|
+
- `Reading this as: marketing landing for B2C consumer product, playful editorial, leaning custom tokens.`
|
|
96
|
+
- `Reading this as: admin panel for technical users, dense/utilitarian language, leaning data-grid primitives.`
|
|
97
|
+
|
|
98
|
+
**If context is incomplete:** state so and proceed exploratory — *"Design context incomplete: no audience defined; proposing exploratory direction, expect revision after audience is clarified."* Do NOT block on missing context; do NOT prompt the user with a gate; state the gap and continue.
|
|
99
|
+
|
|
100
|
+
**Anti-Default Discipline — first-impulse check:** Before committing to any design direction, verify you are NOT defaulting to:
|
|
101
|
+
- Purple/violet + cyan-on-dark gradient palette (AI color cliché)
|
|
102
|
+
- Centered hero over a dark gradient mesh with a single CTA
|
|
103
|
+
- Three equal-weight feature cards in a grid
|
|
104
|
+
- Inter or Space Grotesk as the uncritical body font choice
|
|
105
|
+
- "Premium consumer" cream/sand background + brass/clay accents
|
|
106
|
+
|
|
107
|
+
If any of these was the first impulse, name a different direction or explicitly justify why this brief genuinely calls for it.
|
|
108
|
+
|
|
109
|
+
## Honesty / real-system grounding
|
|
110
|
+
|
|
111
|
+
When the brief maps to an official design system (Material Design, Fluent,
|
|
112
|
+
Carbon, Polaris, GOV.UK, shadcn, Tailwind UI, Radix, etc.):
|
|
113
|
+
|
|
114
|
+
1. **Install the real package** — do not hand-recreate its CSS or components.
|
|
115
|
+
Surface the install command for the project's package manager (the
|
|
116
|
+
system's official package, e.g. the shadcn CLI or the `@mui/material`
|
|
117
|
+
distribution) and link the canonical documentation URL.
|
|
118
|
+
2. **Never label an approximation as the official system.** If generating
|
|
119
|
+
approximate CSS for a system the project does not yet depend on, label it
|
|
120
|
+
explicitly: *"Approximation of Material Design elevation — not the official
|
|
121
|
+
`@mui/material` package; install the package for production use."*
|
|
122
|
+
3. **If no official system is relevant:** pick a deliberate creative direction
|
|
123
|
+
(see Design Read above); never fall back to an unnamed generic aesthetic
|
|
124
|
+
(per `source-discovery-gate`: real source before guessing).
|
|
125
|
+
|
|
51
126
|
## Procedure: Produce a grounded design brief (`ui-design-brief` rebound)
|
|
52
127
|
|
|
53
128
|
1. **Ground** (one call — engine runs the manifest's plan
|
|
@@ -170,6 +245,27 @@ guidance + docs URLs from here instead of memory.
|
|
|
170
245
|
- Keep queries product-shaped ("fintech dashboard", "luxury e-commerce
|
|
171
246
|
mobile") — the detect map routes generic words to `style`.
|
|
172
247
|
|
|
248
|
+
## Anti-slop discipline
|
|
249
|
+
|
|
250
|
+
Before finalizing any design brief, cross-check against
|
|
251
|
+
[`docs/guidelines/design-antipatterns.md`](../../../docs/guidelines/design-antipatterns.md)
|
|
252
|
+
— especially the Color (C1–C5), Typography (T7–T8), and Layout (L1–L2) sections.
|
|
253
|
+
If the grounded corpus selection lands on a pattern in the catalog, either invoke
|
|
254
|
+
the override condition or adjust the selection. Run the AI-slop originality
|
|
255
|
+
self-test (catalog § "The AI-slop originality self-test") on the chosen aesthetic
|
|
256
|
+
direction before emitting `design_confirmed`.
|
|
257
|
+
|
|
258
|
+
## Why this skill is rich
|
|
259
|
+
|
|
260
|
+
This skill carries 11 tabular CSVs (161-row UI-reasoning decision map,
|
|
261
|
+
WCAG-adjusted color token sets, 84 styles, 73 font pairings, 25 chart rules, UX/
|
|
262
|
+
react/mobile guidelines) plus 16 prose design-language specs and a 10-category
|
|
263
|
+
pre-delivery checklist. Agents need to see the full corpus to make grounded
|
|
264
|
+
selections — condensing to a summary destroys the evidence trail ("corpus
|
|
265
|
+
row 47 justifies the palette choice") that the skill's output contract requires.
|
|
266
|
+
Compressing the 16 design-language specs into fragments makes the style
|
|
267
|
+
selection unreproducible and audit-unfriendly.
|
|
268
|
+
|
|
173
269
|
## Policies
|
|
174
270
|
|
|
175
271
|
- Upstream MIT + Apache-2.0 obligations: [`ATTRIBUTION.md`](ATTRIBUTION.md).
|