Design System
Use this skill when the main question is "what shared UI rules should govern this product or product family before we design or refactor individual screens?"
This is the repo's canonical frontend UI-system anchor.
It should:
- classify the system problem,
- choose the right design-system mode,
- route neighboring frontend work out early,
- define a compact system packet another human or agent can execute.
Read references/system-modes.md before choosing an approach.
Read references/token-and-governance-checklist.md before changing shared tokens, primitives, or naming rules.
Read references/scope-boundaries.md when deciding whether the work belongs here, responsive-design, or web-accessibility.
Read references/design-system-packet-template.md before writing the final handoff.
When to use this skill
- Define or refactor a shared design system for a product, product suite, or app + marketing surface
- Set token policy for color, typography, spacing, radius, elevation, motion, and breakpoint scales
- Choose primitive naming rules, contribution boundaries, and reusable visual-language conventions
- Create a coherent system direction for landing pages, dashboards, forms, and component libraries that must feel related
- Turn vague requests like “our UI feels inconsistent” into a system-level direction packet instead of a one-off page redesign
- Review whether a team needs a system decision before component, accessibility, or responsive implementation starts
- Design reusable primitive / slot / variant APIs and extract component families out of ad-hoc UI
- Prepare a design-system handoff for Figma, code tokens, primitives, and downstream frontend work
When not to use this skill
- The main task is viewport adaptation, container-query strategy, overflow, or mobile layout verification → use
responsive-design
- The main task is keyboard/focus behavior, WCAG remediation, labels, semantics, contrast, or manual a11y verification → use
web-accessibility
- The main task is a broad page or flow critique for hierarchy, CTA clarity, polish, and launch readiness → use
web-accessibility
- The task is implementation-only and the system rules are already clear; implement directly instead of reopening system governance
Core idea
A good design system is not a random palette plus a hero-section mock.
It is a shared decision layer that defines:
- what stays consistent,
- what may vary by surface,
- which neighboring skill owns the next implementation step,
- and what artifact downstream teams should follow.
Do not let this skill become a catch-all for every frontend concern.
System governance stays here; specialist remediation routes out.
Instructions
Step 1: Classify the design-system request before generating examples
Pick one primary mode so the answer stays bounded.
Modes:
- Foundations mode — tokens, scales, naming, motion, density, breakpoint policy
- Cross-surface alignment mode — landing page + dashboard + app-shell consistency, shared hierarchy, shared brand/system language
- Primitive governance mode — when the team needs rules for primitive naming, ownership, contribution boundaries, and promotion from product-local UI into shared primitives
- System handoff mode — package already-decided system rules into a concise artifact for design/dev execution
- System review mode — assess whether inconsistency is really a design-system problem or should route to a neighboring skill
Quick frame:
Design-system request:
- Surface: marketing site + logged-in dashboard
- Primary mode: cross-surface alignment
- System question: shared tokens and hierarchy, separate page-specific layouts
- Likely route-outs: responsive verification to responsive-design, a11y remediation to web-accessibility
Step 2: Define the shared system boundary
Before changing tokens or page direction, decide what the system actually owns.
Keep in design-system when the job is to define:
- token scales and naming rules
- primitive naming and contribution policy
- visual-language principles that should apply across many screens
- breakpoint or density policy that multiple surfaces should inherit
- motion principles and accessibility baseline that many components depend on
Do not keep the work here when the question becomes:
- one page’s layout breakage →
responsive-design
- one accessibility failure or remediation plan →
web-accessibility
- one broad UX/UI critique →
web-accessibility
Step 3: Make the minimum shared decisions first
Do not start by dumping dozens of example tokens.
For each system request, decide these shared layers first:
- Foundations — color, type, spacing, radius, elevation, motion, density, breakpoints
- Primitive policy — which primitives exist, how they are named, what is shared vs product-local
- Surface rules — how landing pages, dashboards, forms, nav, and data-heavy surfaces should differ while staying coherent
- Accessibility baseline — contrast expectations, focus visibility, reduced-motion posture, semantic expectations
- Governance — who can add/change tokens or primitives, what must be reviewed, and when work should route to another skill
If a layer is unknown, say so and capture it as an open decision instead of inventing detail.
Step 4: Keep examples subordinate to the rules
Examples are useful only after the shared rules are explicit.
Good example usage:
- show one token naming pattern
- show one page-system contrast between landing and dashboard surfaces
- show one primitive promotion rule
- show one motion baseline or accessibility baseline
Bad example usage:
- dumping a full palette, TS token file, CSS animation sheet, and JSX screen mock before saying what problem the system is solving
Use this rule:
- rules first,
- one or two illustrative examples second,
- handoff packet last.
Step 5: Route neighboring frontend work out early
Mixed requests are normal. Split them explicitly.
Examples:
- if the team asks for button variants, slot structure, and controlled/uncontrolled behavior, define that primitive API here alongside the system naming/tokens
- if the team asks how cards collapse on mobile, keep shared breakpoint policy here but route layout adaptation to
responsive-design
- if the team asks whether icon-only buttons meet keyboard/focus/label requirements, keep baseline a11y expectations here but route remediation to
web-accessibility
- if the request is “audit this dashboard and tell us what feels off,” route the broad critique to
web-accessibility
Do not hide unclear ownership by calling everything “design-system work.”
Step 6: Produce the design-system packet
End with a concise artifact that downstream design/dev work can follow.
Preferred format:
# Design System Packet
## Scope
- Products / surfaces covered:
- Primary mode:
- Shared system goal:
## Foundations
- Color / semantic token rules:
- Typography / spacing / radius / elevation:
- Motion / density / breakpoint policy:
## Primitive policy
- Shared primitives:
- Naming rules:
- What stays product-local:
## Surface guidance
- Landing / marketing:
- Dashboard / app shell:
- Forms / workflows:
## Accessibility baseline
- Contrast / focus / reduced motion / semantics:
## Route-outs
- `responsive-design`:
- `web-accessibility`:
## Open decisions
- ...
If the user asks for a terse answer, keep the same sections but compress them into bullets.
Step 7: Only then add a small illustrative example when needed
Use at most one or two examples and keep them obviously subordinate to the packet.
Healthy example shapes:
- semantic color tokens (
surface/default, surface/emphasis, text/muted) instead of giant fixed palettes
- landing-page hero vs dashboard header comparison to show shared hierarchy but different density
- primitive promotion rule such as “shared button stays primitive; billing-upsell banner stays product-local”
Step 8: Finish with a boundary sentence
End with a sentence that prevents overlap drift.
Examples:
- "This packet defines the shared UI system and its primitive APIs; per-feature product components stay product-local."
- "This packet sets breakpoint and density policy; page-level layout fixes belong in
responsive-design."
- "This packet sets accessibility baseline expectations; remediation and verification belong in
web-accessibility."
Examples
Example 1: shared landing page + dashboard system
Input: "We need one design system for our marketing site and B2B dashboard so tokens, typography, and motion feel related without making both surfaces identical."
Good response shape:
- choose cross-surface alignment mode
- define shared foundations and surface-specific differences
- leave one compact design-system packet
- define the component-family API alongside the shared foundations
Example 2: token and primitive governance
Input: "Our team keeps adding random colors and spacing values. We need naming rules and a review policy for shared primitives."
Good response shape:
- choose foundations or primitive governance mode
- define token/naming rules and review thresholds
- keep one or two naming examples only
- avoid turning the answer into a full page mock
Example 3: mixed system + responsive request
Input: "Should the dashboard and mobile web app share one breakpoint policy, and how should the layout collapse on small screens?"
Good response shape:
- keep shared breakpoint/density policy in
design-system
- route the actual collapse strategy and verification to
responsive-design
- make the split explicit in the packet
Example 4: accessibility-heavy follow-up
Input: "We already have tokens, but our forms still fail focus visibility and error-state accessibility."
Good response shape:
- note the design-system baseline briefly
- route the real remediation and manual verification to
web-accessibility
- do not absorb the full a11y fix into this skill
Best practices
- Decide the mode first so the skill stays bounded.
- Define shared rules before examples to avoid overfitting on one mockup.
- Keep governance explicit: token changes, primitive promotion, and ownership rules are part of the system.
- Use route-outs early so
design-system does not steal layout, accessibility, or broad-audit work.
- Leave a compact packet another human or agent can follow.
References
1---2name: design-system3description: Define or refactor a shared frontend UI system by establishing token governance, visual-language rules, primitive naming, and cross-product consistency before polishing individual screens.4license: MIT5---67# Design System89Use this skill when the main question is **"what shared UI rules should govern this product or product family before we design or refactor individual screens?"**1011This is the repo's **canonical frontend UI-system anchor**.12It should:131. classify the system problem,142. choose the right design-system mode,153. route neighboring frontend work out early,164. define a compact system packet another human or agent can execute.1718Read [references/system-modes.md](references/system-modes.md) before choosing an approach.19Read [references/token-and-governance-checklist.md](references/token-and-governance-checklist.md) before changing shared tokens, primitives, or naming rules.20Read [references/scope-boundaries.md](references/scope-boundaries.md) when deciding whether the work belongs here, `responsive-design`, or `web-accessibility`.21Read [references/design-system-packet-template.md](references/design-system-packet-template.md) before writing the final handoff.2223## When to use this skill24- Define or refactor a shared design system for a product, product suite, or app + marketing surface25- Set token policy for color, typography, spacing, radius, elevation, motion, and breakpoint scales26- Choose primitive naming rules, contribution boundaries, and reusable visual-language conventions27- Create a coherent system direction for landing pages, dashboards, forms, and component libraries that must feel related28- Turn vague requests like “our UI feels inconsistent” into a system-level direction packet instead of a one-off page redesign29- Review whether a team needs a system decision before component, accessibility, or responsive implementation starts30- Design reusable primitive / slot / variant APIs and extract component families out of ad-hoc UI31- Prepare a design-system handoff for Figma, code tokens, primitives, and downstream frontend work3233## When not to use this skill34- **The main task is viewport adaptation, container-query strategy, overflow, or mobile layout verification** → use `responsive-design`35- **The main task is keyboard/focus behavior, WCAG remediation, labels, semantics, contrast, or manual a11y verification** → use `web-accessibility`36- **The main task is a broad page or flow critique for hierarchy, CTA clarity, polish, and launch readiness** → use `web-accessibility`37- **The task is implementation-only and the system rules are already clear**; implement directly instead of reopening system governance3839## Core idea40A good design system is not a random palette plus a hero-section mock.41It is a shared decision layer that defines:42- what stays consistent,43- what may vary by surface,44- which neighboring skill owns the next implementation step,45- and what artifact downstream teams should follow.4647Do **not** let this skill become a catch-all for every frontend concern.48System governance stays here; specialist remediation routes out.4950## Instructions5152### Step 1: Classify the design-system request before generating examples53Pick one primary mode so the answer stays bounded.5455Modes:56- **Foundations mode** — tokens, scales, naming, motion, density, breakpoint policy57- **Cross-surface alignment mode** — landing page + dashboard + app-shell consistency, shared hierarchy, shared brand/system language58- **Primitive governance mode** — when the team needs rules for primitive naming, ownership, contribution boundaries, and promotion from product-local UI into shared primitives59- **System handoff mode** — package already-decided system rules into a concise artifact for design/dev execution60- **System review mode** — assess whether inconsistency is really a design-system problem or should route to a neighboring skill6162Quick frame:63```markdown64Design-system request:65- Surface: marketing site + logged-in dashboard66- Primary mode: cross-surface alignment67- System question: shared tokens and hierarchy, separate page-specific layouts68- Likely route-outs: responsive verification to responsive-design, a11y remediation to web-accessibility69```7071### Step 2: Define the shared system boundary72Before changing tokens or page direction, decide what the system actually owns.7374Keep in `design-system` when the job is to define:75- token scales and naming rules76- primitive naming and contribution policy77- visual-language principles that should apply across many screens78- breakpoint or density policy that multiple surfaces should inherit79- motion principles and accessibility baseline that many components depend on8081Do **not** keep the work here when the question becomes:82- one page’s layout breakage → `responsive-design`83- one accessibility failure or remediation plan → `web-accessibility`84- one broad UX/UI critique → `web-accessibility`8586### Step 3: Make the minimum shared decisions first87Do not start by dumping dozens of example tokens.8889For each system request, decide these shared layers first:901. **Foundations** — color, type, spacing, radius, elevation, motion, density, breakpoints912. **Primitive policy** — which primitives exist, how they are named, what is shared vs product-local923. **Surface rules** — how landing pages, dashboards, forms, nav, and data-heavy surfaces should differ while staying coherent934. **Accessibility baseline** — contrast expectations, focus visibility, reduced-motion posture, semantic expectations945. **Governance** — who can add/change tokens or primitives, what must be reviewed, and when work should route to another skill9596If a layer is unknown, say so and capture it as an open decision instead of inventing detail.9798### Step 4: Keep examples subordinate to the rules99Examples are useful only after the shared rules are explicit.100101Good example usage:102- show one token naming pattern103- show one page-system contrast between landing and dashboard surfaces104- show one primitive promotion rule105- show one motion baseline or accessibility baseline106107Bad example usage:108- dumping a full palette, TS token file, CSS animation sheet, and JSX screen mock before saying what problem the system is solving109110Use this rule:111- **rules first**,112- **one or two illustrative examples second**,113- **handoff packet last**.114115### Step 5: Route neighboring frontend work out early116Mixed requests are normal. Split them explicitly.117118Examples:119- if the team asks for button variants, slot structure, and controlled/uncontrolled behavior, define that primitive API here alongside the system naming/tokens120- if the team asks how cards collapse on mobile, keep shared breakpoint policy here but route layout adaptation to `responsive-design`121- if the team asks whether icon-only buttons meet keyboard/focus/label requirements, keep baseline a11y expectations here but route remediation to `web-accessibility`122- if the request is “audit this dashboard and tell us what feels off,” route the broad critique to `web-accessibility`123124Do not hide unclear ownership by calling everything “design-system work.”125126### Step 6: Produce the design-system packet127End with a concise artifact that downstream design/dev work can follow.128129Preferred format:130```markdown131# Design System Packet132133## Scope134- Products / surfaces covered:135- Primary mode:136- Shared system goal:137138## Foundations139- Color / semantic token rules:140- Typography / spacing / radius / elevation:141- Motion / density / breakpoint policy:142143## Primitive policy144- Shared primitives:145- Naming rules:146- What stays product-local:147148## Surface guidance149- Landing / marketing:150- Dashboard / app shell:151- Forms / workflows:152153## Accessibility baseline154- Contrast / focus / reduced motion / semantics:155156## Route-outs157- `responsive-design`:158- `web-accessibility`:159160## Open decisions161- ...162```163164If the user asks for a terse answer, keep the same sections but compress them into bullets.165166### Step 7: Only then add a small illustrative example when needed167Use at most one or two examples and keep them obviously subordinate to the packet.168169Healthy example shapes:170- semantic color tokens (`surface/default`, `surface/emphasis`, `text/muted`) instead of giant fixed palettes171- landing-page hero vs dashboard header comparison to show shared hierarchy but different density172- primitive promotion rule such as “shared button stays primitive; billing-upsell banner stays product-local”173174### Step 8: Finish with a boundary sentence175End with a sentence that prevents overlap drift.176177Examples:178- "This packet defines the shared UI system and its primitive APIs; per-feature product components stay product-local."179- "This packet sets breakpoint and density policy; page-level layout fixes belong in `responsive-design`."180- "This packet sets accessibility baseline expectations; remediation and verification belong in `web-accessibility`."181182## Examples183184### Example 1: shared landing page + dashboard system185**Input:** "We need one design system for our marketing site and B2B dashboard so tokens, typography, and motion feel related without making both surfaces identical."186187**Good response shape:**188- choose cross-surface alignment mode189- define shared foundations and surface-specific differences190- leave one compact design-system packet191- define the component-family API alongside the shared foundations192193### Example 2: token and primitive governance194**Input:** "Our team keeps adding random colors and spacing values. We need naming rules and a review policy for shared primitives."195196**Good response shape:**197- choose foundations or primitive governance mode198- define token/naming rules and review thresholds199- keep one or two naming examples only200- avoid turning the answer into a full page mock201202### Example 3: mixed system + responsive request203**Input:** "Should the dashboard and mobile web app share one breakpoint policy, and how should the layout collapse on small screens?"204205**Good response shape:**206- keep shared breakpoint/density policy in `design-system`207- route the actual collapse strategy and verification to `responsive-design`208- make the split explicit in the packet209210### Example 4: accessibility-heavy follow-up211**Input:** "We already have tokens, but our forms still fail focus visibility and error-state accessibility."212213**Good response shape:**214- note the design-system baseline briefly215- route the real remediation and manual verification to `web-accessibility`216- do not absorb the full a11y fix into this skill217218## Best practices2191. **Decide the mode first** so the skill stays bounded.2202. **Define shared rules before examples** to avoid overfitting on one mockup.2213. **Keep governance explicit**: token changes, primitive promotion, and ownership rules are part of the system.2224. **Use route-outs early** so `design-system` does not steal layout, accessibility, or broad-audit work.2235. **Leave a compact packet** another human or agent can follow.224225## References226- [System modes](references/system-modes.md)227- [Token and governance checklist](references/token-and-governance-checklist.md)228- [Scope boundaries](references/scope-boundaries.md)229- [Design-system packet template](references/design-system-packet-template.md)230- [Responsive layout neighbor](../responsive-design/SKILL.md)231- [Accessibility neighbor](../web-accessibility/SKILL.md)