Turn Claude into a Senior Design Architect — 15+ years of expertise in design systems, accessibility, and production-ready component engineering.
A comprehensive kit of structured instructions, design tokens, runnable skills, and 138 brand-grade design systems that turn Claude into a UX/UI expert agent — targeting any framework and any design system. Drop it into any project for consistent, accessible, token-driven design outputs, every time.
Current release: v2.3.1 · See the Changelog · All releases
No build tools, dependencies, or runtime required — this is a pure instruction & knowledge layer for AI agents.
| Capability | Description |
|---|---|
| Design Token Generation | Produces DTCG-format JSON tokens (colors, typography, spacing, shadows, borders, breakpoints, motion) with a 3-tier architecture: Primitive → Semantic → Component |
| Component Design | Designs components from Atoms to Templates following Atomic Design, with anatomy, variants, states, token mapping, and accessibility specs |
| Code Generation (any framework) | Adapter Protocol targets any stack — React+Tailwind, Next.js, SwiftUI, Vue, Svelte, Angular, Solid, Web Components/Lit, React Native, Flutter, Jetpack Compose, vanilla CSS, CSS-in-JS — or generates a new adapter on demand |
| Design-System Interop | Maps to/from any design system (Material 3, Apple HIG, Fluent, Carbon, shadcn/ui, Radix…) via a role-based crosswalk |
| Runnable Skills | 17 invocable /skills + real scripts (token + contrast validators, real-render & state-aware WCAG gates, axe-core a11y, focus-trap, RTL, taste audit, token build) |
| Accessibility Auditing | Evaluates against WCAG 2.2 AA/AAA with prioritized findings (P0/P1/P2) |
| Design Review | Scores designs across 6 dimensions with Nielsen's 10 Heuristics and a structured findings table |
| Prototyping & Research | Guides through a 5-level fidelity ladder, user journey mapping, and usability testing scripts |
| Motion Design | Tokenized durations, easing curves, transition presets, and reduced-motion strategy for accessible animation |
| UX Writing | Voice & tone system with error/empty-state formulas, microcopy patterns, and inclusive language guidelines |
| Design Taste | Native anti-slop doctrine, aesthetic archetypes, and a library of 138 design systems for layout variance, editorial typography, and premium visual direction |
Drop the kit into any project, no clone needed:
npx ux-ui-agent-skills init # full kit into the current folder
npx ux-ui-agent-skills add tokens taste design-systems # just some areas
npx ux-ui-agent-skills list # see all areasFlags: --force (overwrite existing files) · --dry (preview, change nothing).
git clone https://github.com/plugin87/ux-ui-agent-skills.git
cp -r ux-ui-agent-skills/ your-project/Then start using — open the project in Claude Code or any Claude-powered IDE. CLAUDE.md loads automatically, activating the agent persona with full access to every tokens / components / taste / design-system file and the runnable /skills.
Example prompts
"Design a notification component with all states and accessibility"
"Review this login page against WCAG 2.2 and Nielsen's heuristics"
"Generate React + Tailwind code for a data table with sorting and pagination"
"Create a color token palette for a fintech brand using blue as the primary"
"Audit this form for accessibility issues — give me a prioritized findings table"
"Write the empty state and error copy for the onboarding flow"
"Spec the motion for the modal open/close with reduced-motion fallback"
New here? Read docs/WORKFLOW.md for the full end-to-end picture — how the Request Router loads layers on demand, real usage scenarios, and the automated release pipeline.
There are three ways to drive the kit. Use whichever fits the moment.
CLAUDE.md loads automatically, so plain requests already route to the right knowledge. Describe what you want and the agent self-routes via the built-in Request Router:
"Generate a Svelte button with all states and dark mode"
"Make this landing page feel like Linear"
"Migrate our Material 3 colors into this token system"
Type a slash command to invoke a capability directly. Each skill loads only the files it needs and can run its own scripts.
| Command | What it does |
|---|---|
/design-tokens |
Generate / extend / validate DTCG tokens, palettes, multi-brand theming |
/design-component |
Spec a component (anatomy, variants, 8 states, a11y) |
/design-code |
Generate code for any framework via the Adapter Protocol |
/design-review |
Score a design (6 dimensions + Nielsen) with a findings table |
/a11y-audit |
WCAG 2.2 audit + contrast checks |
/apply-aesthetic |
Apply an archetype or one of 138 design systems |
/redesign |
Audit-first upgrade of an existing UI without breaking it |
/migrate-design-system |
Map to/from Material 3, Apple HIG, shadcn, Radix, etc. |
/prototype |
Move up the fidelity ladder + plan usability testing |
/ux-writing |
Write/review buttons, errors, empty states, microcopy |
/design-code a pricing card in Vue, dark-mode aware
/apply-aesthetic stripe → make the dashboard feel like Stripe
/a11y-audit this checkout form
/migrate-design-system from Material 3 to our tokens
Plain python3 — useful in the terminal or CI:
python3 scripts/validate_tokens.py # validate token JSON + alias refs
python3 scripts/validate_contrast.py # batch WCAG gate: token pairs, light + dark
python3 scripts/contrast.py "#1d1d1f" "#ffffff" # WCAG contrast ratio for one pair
python3 scripts/validate_component_spec.py # every component spec is complete
python3 scripts/lint_hardcodes.py src/ # no off-theme hex/px/timing (consistency)
python3 scripts/lint_taste.py page.html # heuristic anti-slop taste check
python3 scripts/design_systems.py list # browse the 138-system library
python3 scripts/scaffold_component.py "Date Picker" # emit a component spec stubThese are the same gates CI runs (.github/workflows/ci.yml) — token validity, WCAG contrast in light + dark, spec completeness, and zero hardcoded values — so theme/color stays consistent across every page and accessibility is enforced, not assumed.
1. /apply-aesthetic linear → set the visual direction (tokens re-pointed)
2. /design-component Combobox → spec it with states + a11y
3. /design-code Combobox in React + Tailwind → production code
4. /a11y-audit → verify contrast, keyboard, focus
5. /design-review → score + findings before ship
Tip: skills compose.
apply-aestheticalways re-verifies contrast througha11y-audit;redesigncallsdesign-review+a11y-auditautomatically.
.
├── CLAUDE.md # Agent persona & master instructions
│
├── .claude/skills/ # Runnable skills — invoke via /name
│ └── design-tokens · design-component · design-code · design-review · a11y-audit
│ apply-aesthetic · redesign · migrate-design-system · prototype · ux-writing
│
├── scripts/ # Real helper scripts (python3, no deps)
│ ├── validate_tokens.py # JSON + alias validation for tokens/
│ ├── contrast.py # WCAG 2.2 contrast-ratio checker
│ ├── design_systems.py # Browse/search the 138-system library
│ └── scaffold_component.py # Emit a component spec stub
│
├── tokens/ # Design tokens (DTCG format) — 13 files
│ ├── colors · typography · spacing · shadows · borders · breakpoints · motion
│ └── gradients · opacity · blur · sizing · states · theming
│
├── taste/ # Aesthetic judgment layer
│ ├── design-taste.md # Anti-slop doctrine, banned defaults, pre-flight check
│ ├── aesthetic-systems.md # Archetypes + catalog of 138 design systems
│ └── motion-choreography.md # Motion grammar + reduced-motion parity
│
├── design-systems/ # Interop + brand library
│ ├── interop-protocol.md # Map to/from ANY design system
│ ├── crosswalk.md # Material 3 · Apple HIG · Fluent · Carbon · shadcn · Radix
│ │ # · Ant · Polaris · Primer · Atlassian · Bootstrap
│ └── library/<name>/ # 138 brand-grade DESIGN.md specs
│
├── content/ # UX writing & content design
│ └── voice-tone.md # Voice & tone, error/empty-state copy, microcopy, inclusive language
│
├── components/ # Component specs (Atomic Design) — 50 components
│ ├── atoms · molecules · organisms · templates
│ ├── navigation · feedback · forms-advanced · overlays
│ └── data-display · data-viz · icon-system
│
├── accessibility/ # WCAG & ARIA references + inclusive design
│ ├── wcag-checklist.md # WCAG 2.2 checklist (POUR, P0/P1/P2)
│ ├── aria-patterns.md # WAI-ARIA patterns for 19 components
│ ├── cognitive.md · vision.md · i18n-rtl.md # cognitive · low-vision/CVD/forced-colors · RTL
│ └── wcag-aaa.md # AAA upgrade delta
│
├── workflows/ # Design process + ops/pipeline guides
│ ├── design-review.md · design-to-code.md · prototyping.md · redesign-audit.md
│ └── governance.md · token-build.md · figma-integration.md · design-qa.md · performance.md
│
└── frameworks/ # Implementation patterns — ANY framework
├── adapter-protocol.md # Universal translation contract
├── react-tailwind.md · nextjs.md · swiftui.md # full references
└── adapters/ # vue · svelte · angular · solid · web-components-lit · qwik · astro
# mui · mantine · chakra · bootstrap
# react-native · flutter · jetpack-compose · vanilla-css · css-in-js
Note
The design-taste layer (taste/) and the 138-system library (design-systems/library/) set visual direction; the system (tokens, components, accessibility) keeps it correct. Taste serves the Aesthetics tier and never overrides accessibility. Skills under .claude/skills/ run with agent permissions — review before use.
The design token system follows a 3-tier hierarchy using the DTCG standard:
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ COMPONENT TOKENS │ ──► │ SEMANTIC TOKENS │ ──► │ PRIMITIVE TOKENS │
│ button-bg-primary │ │ action.primary │ │ blue.600 = #2563EB │
│ (use in code) │ │ (use in design) │ │ (raw palette) │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
| Tier | Role | Example |
|---|---|---|
| Primitive | Raw color/size values — never referenced directly | blue.600, space.4 |
| Semantic | Purpose-based aliases — used in design | action.primary, text.secondary, surface.card |
| Component | Scoped to specific components — used in code | button.primary-bg, input.border-focus |
Dark mode works by swapping semantic tokens — primitives stay the same.
The Framework Adapter Protocol defines a universal token→framework contract, so the agent can target a stack even with no dedicated file (it generates an adapter on demand).
Full references
| Framework | Version | Key Patterns |
|---|---|---|
| React + Tailwind | React 19, Tailwind v4 | forwardRef, cva, cn(), CSS custom properties |
| Next.js | 15 (App Router) | Server/Client Components, next/font, next/image, Server Actions |
| SwiftUI | 6 (iOS 18+) | ButtonStyle, ViewModifier, @ScaledMetric, Dynamic Type |
Concise adapters — Vue 3 · Svelte 5 · Angular · SolidJS · Web Components (Lit) · React Native · Flutter · Jetpack Compose · vanilla CSS · CSS-in-JS (emotion/vanilla-extract/Panda)
Adopt, build on, or migrate between external design systems via a role-based crosswalk (interop-protocol + crosswalk). Curated tables: Material Design 3 · Apple HIG · Fluent 2 · Carbon · shadcn/ui · Radix (others derived on demand). Plus a library of 138 brand-grade design systems (apple, linear, stripe, vercel, notion, spotify, tesla…) under design-systems/library/.
All outputs follow WCAG 2.2 Level AA as a minimum:
- Color contrast: 4.5:1 (text), 3:1 (UI components)
- Keyboard navigable with visible focus indicators
- Screen reader compatible with proper ARIA roles and live regions
- Touch targets: 24×24px minimum (WCAG 2.5.8)
- WCAG 2.2 criteria: Focus Not Obscured, Target Size, Accessible Authentication
When reviewing designs, the agent scores across 6 weighted dimensions:
| Dimension | Weight | Dimension | Weight | |
|---|---|---|---|---|
| Visual Hierarchy | 20% | Usability | 20% | |
| Consistency | 20% | Responsiveness | 10% | |
| Accessibility | 20% | Performance | 10% |
Findings are categorized: Critical (must fix) → Major (fix this sprint) → Minor (when convenient) → Enhancement (backlog).
This is a starter kit — make it yours:
- Brand colors — edit
tokens/colors.jsonprimitives, then update semantic references - Typography — swap font families in
tokens/typography.jsonand framework files - Components — add new components following the existing spec format in
components/ - Frameworks — add new framework files in
frameworks/(e.g.,vue.md,flutter.md) - Workflows — adapt review rubrics and checklists in
workflows/to your team's process
- Claude Code CLI or any Claude-powered IDE
- A Claude model with sufficient context (Sonnet, Opus, or Haiku)
- Zero emoji, everywhere. Purged every emoji / decorative pictograph from the entire repo — the agent instruction surface (CLAUDE.md, skills, component / workflow / content / accessibility specs, design-system library), the gate scripts' output,
cover.html,docs/, and the README. Generated output was picking up emoji because the files the model reads were full of them; the instruction surface is now clean, so the model has nothing to imitate. - No-emoji rule is now global + absolute — promoted from a narrow "no emoji as UI icons" note to a top-of-file ABSOLUTE rule covering UI, code, JSON, copy, comments, and commit messages. Replacements are lucide icons or plain words.
- The gate now guards the instruction surface too.
scripts/check_no_emoji.pypreviously scanned onlyexamples/+taste/; it now also scans CLAUDE.md, the skills, and the spec directories, so emoji cannot drift back in.accuracy_reportstays 25/25 = 100%.
- 22 component-states harnesses — full set under
examples/component-states/, each gated in light + dark: Button, Input, Modal, Tabs, Select/Combobox, Checkbox-Radio-Switch, Toast, Feedback, Navigation, Overlays, Misc, Card, Data Table, Drawer, Date Picker, File Upload, Search/Form-Field, Charts, Tree/Carousel/Image carousel/Divider, Command Palette, App Shell (header + sidebar landmarks), Context Menu.accuracy_reportnow 25/25 = 100%. - Charts / data-viz — Bar, Line+area, Donut, Sparkline, Scatter (
role="img"+ legend), animated on entry (pathLengthline-draw,scaleYbars, staggered points) withprefers-reduced-motionparity. - lucide icon sprite —
examples/component-states/icons.jsinjects one<symbol>sprite; icons are referenced by name<svg class="ico"><use href="#i-bell"/></svg>— no per-use path, no network, offline + gate-safe. Every harness icon converted (hand-drawn approximations that rendered as broken glyphs are gone). - Responsive gate —
scripts/verify_responsive.mjsfails on any horizontal overflow at 280 / 320 / 414 px. Fixed fixed-width / unreset-list-padding / non-wrapping-flex /minmaxtraps across the set. - New theme tokens — motion (
--duration-*,--ease-*,--transition-micro), color-blind-aware chart palette (--color-chart-1..6), and a dark-aware--color-surface-brand. - Gate refinements —
verify_statesholds graphical / icon-only controls to 3:1 (WCAG 1.4.11, not 4.5) and exempts disabled controls;verify_focustrapno longer false-passes adisplay:noneposition:fixeddialog (caught a drawer that never closed). - Verified patterns — thin custom checkbox/radio (real
<input>under apointer-events:nonebox, check + dash as two<path>in one<svg>), smooth grid-rows accordion,auto-fit(notauto-fill) card grids, equal-height panels, mobile sidebar that pushes content down instead of overlapping. design-componentskill — added "RENDER AND LOOK — gates don't prove pixels", responsive, motion, layout, icons-by-sprite, and graphical-control rules.
- Input + Modal states harnesses —
examples/component-states/input.html(default/hover/focus/disabled/read-only/error/loading/filled, each with an associated<label>) andmodal.html(focus trap + Escape + return-focus). Both gated byverify_states+axe+measure_render(+verify_focustrapfor the modal), light + dark. Added a verified--color-text-errortoken (light + dark).accuracy_reportnow 18/18 = 100%.
- Component accuracy — verify every state. A component is "correct" only when every variant × state renders right, not just the resting default. New
examples/component-states/button.htmlrenders all variants × states (default/hover/focus/disabled/loading/selected) and is gated byverify_states+axe+measure_render(light + dark).design-componentskill now mandates a states harness + running the gates. Wired intoaccuracy_report(now 16/16 = 100%).
- Focus-trap gate —
scripts/verify_focustrap.mjsopens a modal and verifies with a real keyboard that Tab stays trapped, role/aria-modal/name are present, and Escape closes + returns focus (WCAG 2.1.2 / 2.4.3). Proven to catch a leaking modal. - RTL gate —
scripts/verify_rtl.mjsrenders LTR vsdir="rtl"and flags layout that overflows only when mirrored (the tell of physical left/right instead of logical properties). - Token build (real artifact) —
scripts/build_tokens.mjs(npm run build:tokens) resolves all DTCG aliases (incl. cross-file + dark) and emits a CSS-variable theme (:root+[data-theme="dark"]). 85 light + 17 dark color vars, fully resolved. - All three wired into
accuracy_report(now 15/15 = 100%) and CI.
- axe-core a11y gate —
scripts/axe_audit.mjs(npm run test:axe) runs axe-core (WCAG 2.0/2.1/2.2 A + AA) against rendered HTML, catching ARIA/role/label/landmark/name issues the contrast + state gates can't. Already caught a real missing-<label>bug in an example. Wired intoaccuracy_report(now 12 checks, 100%) and CI. - CI render job now also runs the state-aware gate + axe across examples.
- State-aware WCAG gate —
scripts/verify_states.mjs(npm run test:states) measures real computed contrast of every interactive element in default / hover / focus (light + dark), catching state bugs the resting-state gate missed (e.g. a secondary button picking up the primary fill on hover). Wired intoaccuracy_report(now 11 checks, 100%). - Verification Protocol — new top-of-CLAUDE.md rule: never report a quality number you didn't measure; verify all states; run the gate before declaring done; build with the gates.
design-codestep 13 anda11y-auditnow run the render gates instead of eyeballing. - Fixed real hover-state AA failures in
examples/apple-demo; addedexamples/brandkit-demo(generated OKLCH foundation, light+dark, every state AA).
- 2 new runnable skills (15 → 17) —
image-to-code(reference image/screenshot → infer the design system → token-driven, verified code) andbrandkit(brief → complete primitive→semantic→component DTCG token foundation + theme.css, light + dark, WCAG-verified). Both native, fit the kit's gates. - Render-based taste audit —
scripts/taste_audit.mjs(npm run taste) measures structural slop tells from real computed styles: timid type-scale contrast, uniform repetition, over-wide measure, palette sprawl. Wired into thedesign-codetaste pre-flight. Heuristic by design — a strong signal, not proof (taste is subjective). - De-emoji'd the taste doctrine itself; router rows + skills list updated.
- Accuracy report —
npm run verify(scripts/accuracy_report.mjs) runs every objective correctness gate as one all-or-nothing, reproducible check: token validity + alias resolution, WCAG contrast (token pairs), component-spec completeness, no hardcoded values (golden + sample), theme-ref resolution, no-emoji, and real headless-Chrome WCAG measurement (sample-app, light + dark). PrintsN/N = 100%or the exact failures. - Block-level lint exemption —
scripts/lint_hardcodes.pysupportsds-allow-hardcode:start/:endfor justified illustration blocks (e.g. CSS product art), keeping the rest of the file strictly token-only.
Breaking: dark-mode token values changed (link, primary action) and
border.strongnow meets 3:1 — re-verify any snapshots/visual tests. The kit moves from advisory guidance to enforced gates.
Theme consistency + real WCAG, enforced (driven by real-world audit feedback):
- Single-theme consistency — every page renders from ONE shared token theme; CLAUDE.md rule +
examples/golden/(theme.css with full color/type/spacing/breakpoint tokens, Button.tsx, Modal.tsx).design-code/redesignrequire consuming the one theme — no per-page palettes. - Hardcode linter catches real drift —
scripts/lint_hardcodes.pynow flags raw hex/px/ms, raw Tailwind palette utilities (bg-gray-500,text-blue-600), and literalfont-family(the 527-hardcode problem). - No floating tokens —
scripts/validate_theme_refs.pyproves everyvar(--…)a component uses is defined in the theme (precision/consistency gate). - Real WCAG gate —
scripts/validate_contrast.pychecks required text/action/border pairs in light + dark; fixed genuine dark-mode contrast bugs (link, primary action) and madeborder.strongmeet 3:1 for essential control borders. - One Modal primitive — golden
Modal.tsx+ hardened spec: focus trap,role="dialog",aria-modal, return-focus on close (fixes the 0/14-focus-trap class of bug, WCAG 2.4.3 + 2.1.2). - One CI enforces all of it —
.github/workflows/ci.ymlruns tokens + contrast + spec + hardcode + theme-ref +npm teston every push/PR. Drift, contrast regressions, off-theme colors, and floating tokens cannot merge. - 5 new runnable skills (10 → 15) —
governance,token-build,figma-integration,design-qa,performance; verification steps added todesign-code/prototype/ux-writing; router rows for all newer knowledge. validate_component_spec.py+lint_taste.py; fixedvalidate_tokens.pycross-file aliases; atoms Button/Input document all 8 states.
- Docs — added
docs/WORKFLOW.md: end-to-end how-it-works guide (Request Router, on-demand layer loading, real usage scenarios, automated release pipeline) + linked from the README - CI — first release shipped fully automatically by the
release.ymlworkflow (GitHub Release notes from this changelog +npm publish --provenanceon tag push)
- 8 new component specs —
data-display.md(Calendar, Carousel, Tree) +data-viz.md(Bar, Line/Area, Pie/Donut, Sparkline, Scatter) → 50 components; pluscomponents/icon-system.md - Data-viz tokens —
tokens/data-viz.json: color-blind-aware (Okabe–Ito) categorical/sequential/diverging palettes + axis/grid/tooltip → 14 token files - ⟨⟩ 6 new framework adapters — Qwik, Astro, MUI, Mantine, Chakra, Bootstrap → 16 adapters
- Extended interop crosswalks — Ant Design 5, Shopify Polaris, GitHub Primer, Atlassian, Bootstrap (color-role tables + per-system notes)
- Accessibility depth —
cognitive.md(load, plain language, dyslexia, reduced-data),i18n-rtl.md(logical properties, RTL mirroring, text expansion),vision.md(color blindness, low vision, forced-colors),wcag-aaa.md(AAA upgrade delta); +4 ARIA patterns (Carousel, Grid, Toolbar, Feed) - Ops & pipeline workflows —
governance.md(SemVer, contribution, deprecation),token-build.md(Style Dictionary / DTCG → multi-platform),figma-integration.md(token↔Variable sync, Figma MCP),design-qa.md(visual regression + a11y CI),performance.md(Core Web Vitals)
- npm package — install into any project with
npx ux-ui-agent-skills init(zero-dependency CLI:init/add/list,--force/--dry) - Runnable skills — 10 invocable
/skillsunder.claude/skills/+ real helper scripts (validate_tokens.py,contrast.py,design_systems.py,scaffold_component.py) - Intelligence layer — Request Router in
CLAUDE.md; Framework Adapter Protocol (target any framework) with 10 concise adapters; Design-System Interop Protocol + crosswalk (map to/from any design system) - Native design-taste —
taste/(anti-slop doctrine, aesthetic archetypes, motion choreography) + a library of 138 brand-grade design systems - 6 new token categories — gradients, opacity, blur, sizing, states, theming (multi-brand + density)
- 16 new component specs — Tabs, Breadcrumb, Pagination, Stepper, Menu, Toast, Banner, Skeleton, Progress, Empty State, Combobox, Select, Slider, Date Picker, File Upload, Popover, Command Palette, Divider
- Removed the externally-bundled taste skills in favor of native, first-party content
- Motion tokens —
tokens/motion.json: duration scale, easing curves, transition presets, keyframes, reduced-motion strategy - UX writing guide —
content/voice-tone.md: voice & tone system, error/empty-state formulas, microcopy patterns, inclusive language, pre-ship checklist - Added
cover.htmlrepo cover image
- Initial release — agent persona, 6 token files, 26 components (Atomic Design), WCAG 2.2 + ARIA references, 3 workflow guides, 3 framework guides
Released under the MIT License.
If this kit helps you, consider giving it a