.design Skill
You are operating against a living visual contract. The .design file is data. This skill is the procedure: READ → FOLLOW → UPDATE → VERIFY.
Project .design always beats generic frontend/taste skills. User chat can override for the current task only.
When to activate
- Any UI generation, restyle, design review, or brand-consistency task
- A
.design or *.design file exists in the repo
- User asks to bootstrap, remix, sync, lock, unlock, or verify design
1. Discover
- From the edited path (or cwd), walk upward.
- Prefer
.design; else a single *.design; if multiple named files and no .design, ask.
- Nearest file wins (monorepo package overrides root).
- Resolve
extends depth-first; child overrides parent; cycles = error — stop and report.
- If no file exists and UI work is requested, offer bootstrap (do not invent an invisible system).
When bootstrapping or extracting, scan adjacent design signals before proposing anything: design notes in AGENTS.md / CLAUDE.md, an existing DESIGN.md, globals.css / theme files, Tailwind config, components.json, Storybook. Extract the full visual vocabulary — not just hex values: density, elevation language, hover/motion character, copy tone. Record what you scanned in sources.
Load order once found:
agent.instructions
overview / intent / rationale.overview
constraints (+ rationale.dos / rationale.donts)
policy / decisions
tokens (including elevation, motion, and sound when present) + themes (active mode)
voice (applies to all UI copy)
rationale (colors, typography, layout, elevation, shapes, components)
components / patterns (bind every property in each bag)
integrations (e.g. shadcn)
examples
locked when updating
omitted (do not invent filler for listed sections)
2. Read
Treat tokens and structured rules as normative. Use intent.reference and overview for taste. Adjective-only intent without a specific reference is weak — prefer the reference sentence. When present, intent.direction is the committed aesthetic direction and intent.signature is where boldness concentrates — everything else stays quiet.
For large files, read in tiers (SPEC §8.1): the normative core (agent, intent, constraints, policy, decisions, tokens, components, locked, themes, voice) MUST load before UI work; long rationale.* sections MAY load on demand per task.
Self-contained: every valid file MUST include agent.instructions. If you were given only this file (drag-drop / @-mention) and the skill package is missing, obey agent.instructions in the file — it duplicates the essential READ → FOLLOW → UPDATE → VERIFY loop.
If agent.skill is design, you are on the correct procedure.
3. Follow (generate / edit UI)
First calibrate treatment for the surface: patterns.<name>.treatment > intent.treatment > request type (memo/dashboard/internal tool → utilitarian; landing/marketing/keepsake → editorial). Utilitarian surfaces get restrained product craft; only editorial surfaces run the distinctive-identity register.
Walk this loop every time:
Need UI change?
├── Match an existing components.* entry?
│ ├── Yes → walk decisions.<component> (first match wins)
│ │ bind tokens (never hardcode if token exists)
│ │ obey when / when_not
│ └── No → policy.if_missing
│ ├── ask → ask the user
│ ├── nearest → closest approved component + note
│ └── invent_with_note → invent once, then update .design catalog
├── Apply patterns.* if the surface matches
├── Enforce constraints.always / constraints.never
├── If integrations.shadcn.enabled:
│ prefer shadcn components (aliases.ui)
│ write css_vars (from map_from_tokens / literals) into integrations.shadcn.css
│ keep components.json style, aliases, cssVariables aligned
│ tokens.* win if they disagree with css_vars
└── Else: match the project's styling system (Tailwind, CSS, CSS-in-JS) —
apply .design VALUES into the existing stack; never impose a new stack
Preserve policy.hierarchy when trading off (default: typography → spacing → contrast → color).
Then apply craft defaults from references/CRAFT.md wherever .design is silent (hierarchy, surfaces, motion, a11y, copy). .design wins on conflict. Apply voice to all UI copy with the same force as tokens.
Self-check before finishing (report inline):
- Every
constraints.never item absent; constraints.always items present
- One primary emphasis per view; boldness only in the signature
- No raw hex/spacing/radius where a token exists
- Both theme modes legible (or
themes.single declared)
- No catalogued default look (CRAFT "Default looks to avoid") claimed by accident
Then cite which tokens and components you used.
Detailed trees: references/APPLY.md. Craft: references/CRAFT.md. shadcn: docs/shadcn.md.
4. Update (design progress)
Edit the .design file in place. Git is the history — do not invent an in-file proposal queue.
| Situation |
Action |
Path in locked |
Ask the user before changing |
| Unlocked path + user asked to update |
Edit file; bump version + updated_at |
| Bootstrap / extract |
Plan → critique → confirm → write (below) |
| Sync from Claude Design / Stitch / Figma |
Merge into file; ask before overwriting locked keys |
| Breaking change |
Confirm with user; MAJOR SemVer bump |
Bootstrap / remix is a two-pass process. The .design file is the design plan:
- Plan — draft the token proposal: 4–6 named colors, 2+ type roles (characterful display used sparingly, complementary body, utility face), one-line layout intent, and the
intent.signature.
- Critique — ask: would this plan be identical for any similar product? If yes, it is a default, not a decision — revise before writing. Check it against the CRAFT "Default looks to avoid" catalogue.
- Confirm — for restyles, show a small swatch sheet (palette + type roles, both modes) and get user confirmation before mutating the contract.
- Write — fill the file, set
status: bootstrap, populate sources; derive all subsequent UI only from the file.
SemVer: MAJOR = breaking visual/API; MINOR = additive; PATCH = fix/clarify.
Full rules: references/UPDATE.md and SPEC.md §18.
5. Verify (drift)
When asked to sync/verify, or after large UI refactors:
- Compare
tokens to CSS custom properties / Tailwind theme / token files
- If
integrations.shadcn.enabled, compare css_vars + radius to globals.css and components.json
- Compare
components to real imports and variants
- Flag hardcoded hex/spacing that should be tokens
- Report findings per token group as added / removed / modified, plus a regression flag when anything consumers may rely on was removed or changed (
scripts/diff_design.py implements this shape); update .design only when asked
Checklist: references/REVIEW.md (includes CRAFT escalation triggers and Before/After/Why table).
6. Precedence conflicts
- Explicit user prompt (this task)
- Nearest
.design
- This skill (procedure + CRAFT.md)
- Generic design/taste skills
- Model defaults
7. What not to do
- Do not invent a parallel design system when
.design exists
- Do not hardcode colors/fonts/spacing when tokens exist
- Do not put full page HTML trees or binaries into
.design
- Do not edit locked paths without asking
- Do not replace the project's styling toolchain
- Do not add
proposed_changes or in-file changelog blocks
8. Companion skills (route, don't duplicate)
.design is the contract; other skills are procedure and taste below it (precedence §6). When one of these is installed, hand the matching job to it and pass the contract along — never re-derive what it already knows, and never let its output redefine a token.
| Job |
Hand to |
The contract's role |
| UI code review, motion timing, sound design, AI-default-tell audit, "why does this feel flat" |
AgentsORG design-engineering (skill graph + subagents; /design-engineering routes) |
Its craft applies only where this file is silent; tokens.motion / tokens.sound win over its duration and level tables |
| A named polish pass — polish, critique, audit, typeset, layout, colorize, animate, distill, harden, onboard, clarify, adapt, optimize |
impeccable (/impeccable <command>) |
Point it at .design first; if it writes or updates a DESIGN.md, import per docs/design-md-mapping.md rather than keeping two sources |
| A launch video, logo reveal, or any rendered motion piece |
HyperFrames (hyperframes-creative + hyperframes-audio) |
Emit exports.frame_md from this file; HyperFrames reads frame.md ahead of design.md / DESIGN.md |
Generating the files assets.sounds points at |
ElevenLabs sound-effects skill, or the design-engineering sound generator |
tokens.sound.material is the prompt prefix; tokens.sound.duration / peak are the spec |
| Installing or theming components |
shadcn CLI / MCP (info, search, view, add --dry-run, apply --preset, migrate) |
integrations.shadcn drives it; tokens win over css_vars |
Detection: a skill is "installed" when its SKILL.md exists under the agent's skills directory (.agents/skills/, .claude/skills/, a plugin cache) or its slash command is registered. If none is installed, do the job with CRAFT.md and say which skill would have owned it.
Quick field map
See references/SPEC-SUMMARY.md.
References
| File |
Role |
| APPLY.md |
Decision trees for follow |
| CRAFT.md |
Design-engineering bar when contract is silent |
| REVIEW.md |
Verify / critique |
| UPDATE.md |
In-place edit rules |
1---2name: design3description: Discover, read, follow, update, and verify AgentsORG .design living visual contracts. Use when generating or reviewing UI, restyling, extracting or remixing a design system, fixing design drift, locking tokens, or when a .design / *.design file exists. Triggers on .design, design system, brand, tokens, components, DESIGN.md, restyle, visual identity, UI generation, design drift, remix, bootstrap design, verify design, landing page, dashboard, shadcn theme, design progress, UI review, polish, craft, accessibility.4license: MIT5---67# `.design` Skill89You are operating against a **living visual contract**. The `.design` file is data. This skill is the procedure: **READ → FOLLOW → UPDATE → VERIFY**.1011Project `.design` always beats generic frontend/taste skills. User chat can override for the current task only.1213## When to activate1415- Any UI generation, restyle, design review, or brand-consistency task16- A `.design` or `*.design` file exists in the repo17- User asks to bootstrap, remix, sync, lock, unlock, or verify design1819## 1. Discover20211. From the edited path (or cwd), walk upward.222. Prefer `.design`; else a single `*.design`; if multiple named files and no `.design`, ask.233. Nearest file wins (monorepo package overrides root).244. Resolve `extends` depth-first; child overrides parent; cycles = error — stop and report.255. If no file exists and UI work is requested, offer **bootstrap** (do not invent an invisible system).2627When bootstrapping or extracting, scan **adjacent design signals** before proposing anything: design notes in `AGENTS.md` / `CLAUDE.md`, an existing `DESIGN.md`, `globals.css` / theme files, Tailwind config, `components.json`, Storybook. Extract the full visual vocabulary — not just hex values: density, elevation language, hover/motion character, copy tone. Record what you scanned in `sources`.2829Load order once found:30311. `agent.instructions`322. `overview` / `intent` / `rationale.overview`333. `constraints` (+ `rationale.dos` / `rationale.donts`)344. `policy` / `decisions`355. `tokens` (including `elevation`, `motion`, and `sound` when present) + `themes` (active mode)366. `voice` (applies to all UI copy)377. `rationale` (colors, typography, layout, elevation, shapes, components)388. `components` / `patterns` (bind every property in each bag)399. `integrations` (e.g. shadcn)4010. `examples`4111. `locked` when updating4212. `omitted` (do not invent filler for listed sections)4344## 2. Read4546Treat tokens and structured rules as **normative**. Use `intent.reference` and `overview` for taste. Adjective-only intent without a specific reference is weak — prefer the reference sentence. When present, `intent.direction` is the committed aesthetic direction and `intent.signature` is where boldness concentrates — everything else stays quiet.4748For large files, read in tiers (SPEC §8.1): the normative core (`agent`, `intent`, `constraints`, `policy`, `decisions`, `tokens`, `components`, `locked`, `themes`, `voice`) MUST load before UI work; long `rationale.*` sections MAY load on demand per task.4950**Self-contained:** every valid file MUST include `agent.instructions`. If you were given only this file (drag-drop / @-mention) and the skill package is missing, obey `agent.instructions` in the file — it duplicates the essential READ → FOLLOW → UPDATE → VERIFY loop.5152If `agent.skill` is `design`, you are on the correct procedure.5354## 3. Follow (generate / edit UI)5556First calibrate **treatment** for the surface: `patterns.<name>.treatment` > `intent.treatment` > request type (memo/dashboard/internal tool → `utilitarian`; landing/marketing/keepsake → `editorial`). Utilitarian surfaces get restrained product craft; only editorial surfaces run the distinctive-identity register.5758Walk this loop every time:5960```61Need UI change?62├── Match an existing components.* entry?63│ ├── Yes → walk decisions.<component> (first match wins)64│ │ bind tokens (never hardcode if token exists)65│ │ obey when / when_not66│ └── No → policy.if_missing67│ ├── ask → ask the user68│ ├── nearest → closest approved component + note69│ └── invent_with_note → invent once, then update .design catalog70├── Apply patterns.* if the surface matches71├── Enforce constraints.always / constraints.never72├── If integrations.shadcn.enabled:73│ prefer shadcn components (aliases.ui)74│ write css_vars (from map_from_tokens / literals) into integrations.shadcn.css75│ keep components.json style, aliases, cssVariables aligned76│ tokens.* win if they disagree with css_vars77└── Else: match the project's styling system (Tailwind, CSS, CSS-in-JS) —78 apply .design VALUES into the existing stack; never impose a new stack79```8081Preserve `policy.hierarchy` when trading off (default: typography → spacing → contrast → color).8283Then apply craft defaults from [references/CRAFT.md](references/CRAFT.md) wherever `.design` is silent (hierarchy, surfaces, motion, a11y, copy). **`.design` wins** on conflict. Apply `voice` to all UI copy with the same force as tokens.8485**Self-check before finishing** (report inline):8687- Every `constraints.never` item absent; `constraints.always` items present88- One primary emphasis per view; boldness only in the signature89- No raw hex/spacing/radius where a token exists90- Both theme modes legible (or `themes.single` declared)91- No catalogued default look (CRAFT "Default looks to avoid") claimed by accident9293Then cite which tokens and components you used.9495Detailed trees: [references/APPLY.md](references/APPLY.md). Craft: [references/CRAFT.md](references/CRAFT.md). shadcn: [docs/shadcn.md](../../docs/shadcn.md).9697## 4. Update (design progress)9899Edit the `.design` file **in place**. Git is the history — do not invent an in-file proposal queue.100101| Situation | Action |102| --- | --- |103| Path in `locked` | Ask the user before changing |104| Unlocked path + user asked to update | Edit file; bump `version` + `updated_at` |105| Bootstrap / extract | **Plan → critique → confirm → write** (below) |106| Sync from Claude Design / Stitch / Figma | Merge into file; ask before overwriting locked keys |107| Breaking change | Confirm with user; MAJOR SemVer bump |108109**Bootstrap / remix is a two-pass process.** The `.design` file *is* the design plan:1101111. **Plan** — draft the token proposal: 4–6 named colors, 2+ type roles (characterful display used sparingly, complementary body, utility face), one-line layout intent, and the `intent.signature`.1122. **Critique** — ask: *would this plan be identical for any similar product?* If yes, it is a default, not a decision — revise before writing. Check it against the CRAFT "Default looks to avoid" catalogue.1133. **Confirm** — for restyles, show a small swatch sheet (palette + type roles, both modes) and get user confirmation before mutating the contract.1144. **Write** — fill the file, set `status: bootstrap`, populate `sources`; derive all subsequent UI only from the file.115116SemVer: MAJOR = breaking visual/API; MINOR = additive; PATCH = fix/clarify.117118Full rules: [references/UPDATE.md](references/UPDATE.md) and [SPEC.md](../../SPEC.md) §18.119120## 5. Verify (drift)121122When asked to sync/verify, or after large UI refactors:1231241. Compare `tokens` to CSS custom properties / Tailwind theme / token files1252. If `integrations.shadcn.enabled`, compare `css_vars` + `radius` to `globals.css` and `components.json`1263. Compare `components` to real imports and variants1274. Flag hardcoded hex/spacing that should be tokens1285. Report findings per token group as **added / removed / modified**, plus a **regression** flag when anything consumers may rely on was removed or changed (`scripts/diff_design.py` implements this shape); update `.design` only when asked129130Checklist: [references/REVIEW.md](references/REVIEW.md) (includes CRAFT escalation triggers and Before/After/Why table).131132## 6. Precedence conflicts1331341. Explicit user prompt (this task) 1352. Nearest `.design` 1363. This skill (procedure + [CRAFT.md](references/CRAFT.md)) 1374. Generic design/taste skills 1385. Model defaults 139140## 7. What not to do141142- Do not invent a parallel design system when `.design` exists143- Do not hardcode colors/fonts/spacing when tokens exist144- Do not put full page HTML trees or binaries into `.design`145- Do not edit locked paths without asking146- Do not replace the project's styling toolchain147- Do not add `proposed_changes` or in-file changelog blocks148149## 8. Companion skills (route, don't duplicate)150151`.design` is the contract; other skills are procedure and taste *below* it (precedence §6). When one of these is installed, hand the matching job to it and pass the contract along — never re-derive what it already knows, and never let its output redefine a token.152153| Job | Hand to | The contract's role |154| --- | --- | --- |155| UI code review, motion timing, sound design, AI-default-tell audit, "why does this feel flat" | AgentsORG `design-engineering` (skill graph + subagents; `/design-engineering` routes) | Its craft applies only where this file is silent; `tokens.motion` / `tokens.sound` win over its duration and level tables |156| A named polish pass — polish, critique, audit, typeset, layout, colorize, animate, distill, harden, onboard, clarify, adapt, optimize | impeccable (`/impeccable <command>`) | Point it at `.design` first; if it writes or updates a `DESIGN.md`, import per [docs/design-md-mapping.md](../../docs/design-md-mapping.md) rather than keeping two sources |157| A launch video, logo reveal, or any rendered motion piece | HyperFrames (`hyperframes-creative` + `hyperframes-audio`) | Emit `exports.frame_md` from this file; HyperFrames reads `frame.md` ahead of `design.md` / `DESIGN.md` |158| Generating the files `assets.sounds` points at | ElevenLabs `sound-effects` skill, or the `design-engineering` sound generator | `tokens.sound.material` is the prompt prefix; `tokens.sound.duration` / `peak` are the spec |159| Installing or theming components | shadcn CLI / MCP (`info`, `search`, `view`, `add --dry-run`, `apply --preset`, `migrate`) | `integrations.shadcn` drives it; tokens win over `css_vars` |160161Detection: a skill is "installed" when its `SKILL.md` exists under the agent's skills directory (`.agents/skills/`, `.claude/skills/`, a plugin cache) or its slash command is registered. If none is installed, do the job with [CRAFT.md](references/CRAFT.md) and say which skill would have owned it.162163## Quick field map164165See [references/SPEC-SUMMARY.md](references/SPEC-SUMMARY.md).166167## References168169| File | Role |170| --- | --- |171| [APPLY.md](references/APPLY.md) | Decision trees for follow |172| [CRAFT.md](references/CRAFT.md) | Design-engineering bar when contract is silent |173| [REVIEW.md](references/REVIEW.md) | Verify / critique |174| [UPDATE.md](references/UPDATE.md) | In-place edit rules |