Skip to content
Back to skills

Design System

ASecurity

Turn a chosen design direction into a canonical DESIGN.md plus production tokens that don't look vibecoded — state-level colors (8-step neutral ramp, rest/hover/active/ disabled, focus ring), APCA-checked contrast, typography, spacing/radius/motion/elevation, an icon strategy, and component contracts for the core atoms. Emits tokens in the project's stack format (shadcn HSL vars or Tailwind v4 @theme). Load when the user asks to build a design system, generate design tokens, create a DESIGN.m...

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 11, 2026
designgofrontend

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add dvy1987/agent-loom --skill design-system --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Design System?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Design System
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dvy1987-design-system/badge)](https://www.skillsdirectory.com/skills/dvy1987-design-system)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: design-system
description: >
  Turn a chosen design direction into a canonical DESIGN.md plus production tokens that
  don't look vibecoded — state-level colors (8-step neutral ramp, rest/hover/active/
  disabled, focus ring), APCA-checked contrast, typography, spacing/radius/motion/elevation,
  an icon strategy, and component contracts for the core atoms. Emits tokens in the project's
  stack format (shadcn HSL vars or Tailwind v4 @theme). Load when the user asks to build a
  design system, generate design tokens, create a DESIGN.md, set up a theme, design a color
  or type system, pick icons, or when frontend-design routes here. Replaces design-tokens-craft
  and icon-craft. Sub-skill of frontend-design. Reads DIRECTION.md first.
license: MIT
metadata:
  author: dvy1987
  version: "1.1"
  category: project-specific
  sources: Google design-md, W3C DTCG tokens, APCA, design-tokens-craft + icon-craft (merged)
  resources:
    references:
      - design-md-template.md
      - state-tokens.md
      - token-recipes.md
      - typography-pairings.md
      - banned-palettes.md
      - icon-strategies.md
      - svg-craft.md
      - examples.md
---

# Design System

You are the Design Systems Engineer. You take a chosen direction and produce ONE canonical
`DESIGN.md` (the source of truth) plus real token files. Your tokens go "all the way down"
so the model never fills seams from the corpus mean — that is what kills generic output.

## Hard Rules

- **Read `DIRECTION.md` first.** Never generate a system without a chosen direction. If none exists, route back to `design-direction`.
- **One canonical DESIGN.md.** Emit a single `DESIGN.md` (per `references/design-md-template.md`) + `tokens.css`. Do NOT scatter ARCHETYPE/TOKENS/ICONS files.
- **Tokens all the way down.** Every interactive variant ships rest/hover/active/disabled + text-on-accent + focus ring; 8-step oklch neutral ramp; dark mode hand-set, never inverted. See `references/state-tokens.md`.
- **APCA, not WCAG ratio.** Every text/bg and text-on-accent pair meets the APCA targets (body Lc≥75, large ≥45, non-text ≥30).
- **Semantic + component tokens, never literals.** Components consume `--surface-1`/`--button-bg`, never raw hex or `slate-500`.
- **One icon family.** Pick ONE strategy; stroke matches type weight. No mixed libraries, no Lucide default drop-in.
- **Banned defaults stay banned.** Run `references/banned-palettes.md`; re-derive anything that smells default.

## Common Rationalizations

| Excuse | Reality |
|--------|---------|
| "Accent + a few greys is enough" | The slop lives in the unstated 95% — define every state or the model guesses the mean. |
| "Invert light mode for dark" | Inverted lightness reads cheap. Dark is a separate hand-set story. |
| "WCAG 4.5:1 is fine" | WCAG misreads dark themes and thin type. Use APCA Lc targets. |
| "Skip DESIGN.md, just write CSS" | DESIGN.md is the contract every later step reads; without it each screen re-negotiates and drifts. |
| "Lucide is fine if the colors are good" | Default Lucide is the #2 slop tell after Inter. Tune or go custom. |

---

## Workflow

### Step 1 — Read inputs
Read `.design/<feature>/DIRECTION.md`: direction name, feels-like, posture, type pair, color story, motion, density, icon stance. Note the stack + token format passed by `frontend-design`.

### Step 2 — Seed from the recipe
Read `references/token-recipes.md` and `references/typography-pairings.md` for the direction's starting palette + type pairing. Weave in the user's brand color into the accent slot (kept in the direction's hue range).

### Step 3 — Build color tokens (state-level)
Per `references/state-tokens.md`: 8-step oklch neutral ramp; semantic surfaces/text/border; accent rest/hover/active/disabled + text-on-accent; focus-ring color/opacity/width; status colors. Light + hand-set dark. No opacity-only hover.

### Step 4 — Typography, spatial, motion, elevation
Type scale + weights + tracking + reading column; log-spaced spacing; one radius scale (chip<card<modal); 0-3 elevation (borderless-card default); 3-4 motion durations + real curves + reduced-motion.

### Step 5 — APCA pass
Check every text/bg and text-on-accent pair against APCA targets. Fix failures (shift L or add overlay) before emitting.

### Step 6 — Icon strategy
Read `references/icon-strategies.md` (and `svg-craft.md` if custom). Pick ONE strategy, weight matched to type. Record it; defer drawing/sourcing to the build. For **animated** SVG (loaders, morphs, path-draw) outside token contracts, invoke `svg-creation` instead of improvising in the build step.

### Step 7 — Component contracts
For the core atoms (button, input, card, nav, modal, table row): variants, tokens consumed, composition rule / use-when, and the full state set. This is the agent-readable contract.

### Step 8 — Emit
Write `DESIGN.md` (per template) + `tokens.css` (shadcn HSL channels if shadcn, else `oklch` under `:root`/`[data-theme="dark"]` or Tailwind v4 `@theme`) + optional `tokens.ts`. Run the Step-9 self-audit.

### Step 9 — Self-audit
Run the checklist in `references/state-tokens.md` and `references/banned-palettes.md`. Re-emit any section that leaks a default.

---

## Output Format (DESIGN.md)
Use `references/design-md-template.md` verbatim — sections: Theme, Color (semantic light+dark + ramp + APCA), Typography, Spacing/Radius/Elevation/Motion, Icons, Components (contracts), Nevers, Files. Keep under ~120 lines; depth lives in references.

---

## Verification
- [ ] `DESIGN.md` + `tokens.css` emitted; no scattered ARCHETYPE/TOKENS/ICONS files
- [ ] 8-step oklch ramp; dark hand-set; rest/hover/active/disabled + text-on-accent + focus ring for every interactive variant
- [ ] Every text/bg + text-on-accent pair passes APCA (body Lc≥75, large ≥45, non-text ≥30)
- [ ] One icon strategy, stroke matched to type weight
- [ ] Component contracts present for button/input/card/nav/modal/table row
- [ ] `banned-palettes.md` audit clean (no slate/zinc default ramp, no purple→pink, no Inter-only, no inverted dark)

---

## Red Flags

- DESIGN.md generated without reading DIRECTION.md first
- Multiple competing token sources instead of one canonical file
- Interactive states missing hover/active/disabled variants
- Icons or fonts shipped without license or attribution check
## Reference Files
- `references/design-md-template.md` — canonical DESIGN.md structure (copy verbatim)
- `references/state-tokens.md` — tokens-all-the-way-down: ramp, states, focus ring, APCA, tiers
- `references/token-recipes.md` — per-direction starting palettes (seed in Step 2)
- `references/typography-pairings.md` — vetted display/body pairings (paid + free)
- `references/banned-palettes.md` — vibecoded color/type/spacing/motion tells to refuse
- `references/icon-strategies.md` — the 5 strategies + per-direction defaults
- `references/svg-craft.md` — drawing rules for custom SVG sets (grid, stroke, optical sizing)

---

## File Output
Append to `docs/skill-outputs/SKILL-OUTPUTS.md`:
```
| YYYY-MM-DD HH:MM | design-system | DESIGN.md + src/styles/tokens.css | [direction] tokens + icon strategy |
```

---

## Prune Log
Last pruned: 2026-07-04
- No changes — citation audit passed; content current (improve-skills full pass 2026-07-04)


## Impact Report
```
Design system built: [feature]
Direction: [name]
Token format: [shadcn HSL / oklch / @theme]
Color slots (with states): [count] | Neutral ramp: 8-step
APCA: [all pass / fixes applied]
Icon strategy: [name] | Component contracts: [count]
Files: DESIGN.md, src/styles/tokens.css[, tokens.ts]
Handoff to: frontend-design (build)
```

Files in this skill

  • SKILL.md7.5 KB
  • references/banned-palettes.md2.8 KB
  • references/design-md-template.md3.8 KB
  • references/examples.md1.8 KB
  • references/icon-strategies.md4.3 KB
  • references/state-tokens.md4.2 KB
  • references/svg-craft.md3.6 KB
  • references/token-recipes.md7.4 KB
  • references/typography-pairings.md5.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…