This skill ensures that all new or modified UI is implemented in line with the project design system, rather than inventing ad-hoc styles.
Use it when:
- •Implementing a new component, page, or flow.
- •Refactoring existing UI to match the design system.
- •Extending the design system with carefully considered new patterns.
It is designed to be used after a design system has been created (for example via the design-system-from-reference workflow).
Inputs and assumptions
- •The project design system is defined in:
- •
design/design-system.json(implementation-level source of truth). - •Optionally
design/design.json(higher-level style guide).
- •
- •The user can describe:
- •What they want to build or change (component/page/flow).
- •Any relevant constraints (framework, routing, data layer, accessibility).
- •The codebase uses a consistent framework (e.g., React + Tailwind, or another typical web stack).
If design/design-system.json is missing, this skill should not free-style a new design system. Instead, it should:
- •Ask the user to confirm whether a design system exists elsewhere.
- •Suggest running the
design-system-from-referenceworkflow first.
Core responsibilities
When building or updating UI, this skill must:
- •
Load and understand the design system
- •Ingest
design/design-system.json(anddesign/design.jsonif present). - •Identify:
- •Tokens (colors, spacing, radii, typography scales, shadows, etc.).
- •Component definitions and their variants.
- •Layout and spacing rules.
- •Interaction states and motion guidelines.
- •Summarize back to the user how the design system wants buttons, inputs, cards, navigation, etc. to look and behave.
- •Ingest
- •
Map the request to existing patterns
- •For a new request (e.g., "build a billing settings page"):
- •Break the UI into sections and components.
- •For each part, map it to existing component types or patterns in the design system.
- •If something genuinely new is needed:
- •Propose how it fits into existing patterns (e.g., "This is a variant of the card component with…").
- •Avoid inventing totally unrelated styling unless the user explicitly wants to extend the system.
- •For a new request (e.g., "build a billing settings page"):
- •
Implement using the design system
- •Use only tokens, utility classes, and component recipes defined by the design system whenever possible.
- •Avoid arbitrary inline styles or one-off Tailwind utilities that conflict with the system.
- •Respect:
- •Typography hierarchy (headings, body, labels, etc.).
- •Spacing scale and layout rules.
- •Color usage rules for states (primary, secondary, error, warning, success, disabled, etc.).
- •Motion and interaction patterns.
- •Keep code production-quality: clear structure, accessible semantics (ARIA, labels, keyboard navigation), and sensible component boundaries.
- •
Handle extensions carefully
- •When the design system does not explicitly cover a case:
- •First, try to express the new UI using combinations or variants of existing components.
- •If an extension is truly needed, propose an addition to
design/design-system.json:- •Describe new tokens, component variants, or layout rules.
- •Ensure they are consistent with the existing system.
- •Present the proposed JSON patch or snippet to the user for review before updating the design system.
- •When the design system does not explicitly cover a case:
- •
Validate adherence
- •After generating code, briefly explain how it follows the design system:
- •Which tokens/variants were used.
- •How spacing/typography align with the rules.
- •If any deliberate deviations were made (e.g., an experimental component), call them out clearly.
- •After generating code, briefly explain how it follows the design system:
Suggested workflow when invoked
- •Confirm context
- •Ask the user:
- •What they want built or changed.
- •Where in the codebase it lives (paths, existing components).
- •Whether there is an existing design system JSON; if unsure, search for
design/design-system.json.
- •Ask the user:
- •Load design system files
- •Open
design/design-system.json(anddesign/design.jsonif present) and summarize the relevant parts for this task.
- •Open
- •Plan the implementation
- •Break the UI into logical components/sections.
- •For each, decide which design system components or patterns to use.
- •Share this plan with the user and pause for confirmation.
- •Implement incrementally
- •Update or create components in small, reviewable steps.
- •After each significant chunk (e.g., a component or page section), pause and:
- •Show the diff or the new code.
- •Explain how it adheres to the design system.
- •Optional: update the design system
- •If new patterns were introduced, propose JSON additions/changes for
design/design-system.json. - •Only modify the design system after explicit user approval.
- •If new patterns were introduced, propose JSON additions/changes for
- •Summarize and hand off
- •Recap what was built/changed and how it aligns with the design system.
- •List any follow-ups (e.g., applying the same patterns to other screens, updating docs).
Interaction with other skills
- •When combined with
design-system-from-reference:- •Run
design-system-from-referencefirst to create or update the design system files. - •Then use this
design-system-implementationskill for all subsequent UI work.
- •Run
- •When combined with
frontend-design-concept:- •Use
frontend-design-conceptfor exploring bold conceptual directions. - •Once a direction is chosen and codified into the design system, use
design-system-implementationto roll out consistent implementations across the app.
- •Use