ui-design-system

v2026.09.24

Use when the user needs to build or maintain design tokens, component libraries, theme systems, or Tailwind CSS v4 configurations with responsive patterns. Triggers: user says "design system", "design tokens", "component library", "theme", "Tailwind config", "dark mode tokens", "color system", building reusable UI components.

GitHub
安装命令
npx skhub add pixel-process-ug/ui-design-system
Markdown
SKILL.md

UI Design System

Overview

Build and maintain scalable design systems with a token-first architecture. This skill covers the full pipeline from primitive design tokens through semantic mapping to themed component libraries, with deep expertise in Tailwind CSS v4, CSS custom properties, and responsive design patterns.

Phase 1: Token Foundation

  1. Audit existing design assets (colors, fonts, spacing, shadows)
  2. Define primitive tokens (raw values with no semantic meaning)
  3. Create semantic token layer (map primitives to intentions)
  4. Build component token layer (map semantics to component parts)

STOP — Present the token hierarchy to user for review before building components.

Token Layer Decision Table

LayerPurposeNaming ConventionExample
PrimitiveRaw values, single source of truth--color-blue-500, --space-4oklch(0.55 0.18 250)
SemanticMap to purpose/intention--action-primary, --text-secondaryvar(--color-blue-600)
ComponentScoped to specific components--button-height-md, --card-radiusvar(--space-4)

When to Create Each Layer

SituationLayers Needed
Brand new projectAll three (primitive + semantic + component)
Adding dark mode to existingSemantic + component (remap primitives)
Updating brand colorsPrimitive only (semantic/component auto-update)
Adding new componentComponent only (reference existing semantic)
Tailwind project with @themePrimitive via @theme, semantic via CSS vars

Phase 2: Token Implementation

Level 1: Primitive Tokens

Raw values with systematic naming. Single source of truth for all values.

/* Colors — using OKLCH for perceptual uniformity */
--color-blue-50: oklch(0.97 0.01 250);
--color-blue-100: oklch(0.93 0.03 250);
--color-blue-500: oklch(0.55 0.18 250);
--color-blue-900: oklch(0.25 0.10 250);

/* Spacing — 4px base unit */
--space-1: 0.25rem;   /* 4px */
--space-2: 0.5rem;    /* 8px */
--space-3: 0.75rem;   /* 12px */
--space-4: 1rem;      /* 16px */
--space-6: 1.5rem;    /* 24px */
--space-8: 2rem;      /* 32px */
--space-12: 3rem;     /* 48px */
--space-16: 4rem;     /* 64px */

/* Typography */
--font-sans: 'Inter', system-ui, sans-serif;
--font-mono: 'Geist Mono', monospace;
--font-size-xs: 0.75rem;
--font-size-sm: 0.875rem;
--font-size-base: 1rem;
--font-size-lg: 1.125rem;
--font-size-xl: 1.25rem;
--font-size-2xl: 1.5rem;
--font-size-3xl: 1.875rem;
--font-size-4xl: 2.25rem;

/* Line Heights */
--leading-tight: 1.25;
--leading-normal: 1.5;
--leading-relaxed: 1.75;

/* Border Radius */
--radius-sm: 0.25rem;
--radius-md: 0.375rem;
--radius-lg: 0.5rem;
--radius-xl: 0.75rem;
--radius-2xl: 1rem;
--radius-full: 9999px;

/* Shadows */
--shadow-sm: 0 1px 2px 0 oklch(0 0 0 / 0.05);
--shadow-md: 0 4px 6px -1px oklch(0 0 0 / 0.1);
--shadow-lg: 0 10px 15px -3px oklch(0 0 0 / 0.1);

Level 2: Semantic Tokens

Map primitives to purpose. These are what components reference.

/* Surface */
--surface-primary: var(--color-white);
--surface-secondary: var(--color-gray-50);
--surface-elevated: var(--color-white);
--surface-overlay: oklch(0 0 0 / 0.5);

/* Text */
--text-primary: var(--color-gray-900);
--text-secondary: var(--color-gray-600);
--text-tertiary: var(--color-gray-400);
--text-inverse: var(--color-white);
--text-link: var(--color-blue-600);

/* Action */
--action-primary: var(--color-blue-600);
--action-primary-hover: var(--color-blue-700);
--action-secondary: var(--color-gray-100);
--action-danger: var(--color-red-600);

/* Border */
--border-default: var(--color-gray-200);
--border-strong: var(--color-gray-300);
--border-focus: var(--color-blue-500);

/* Status */
--status-success: var(--color-green-600);
--status-warning: var(--color-amber-500);
--status-error: var(--color-red-600);
--status-info: var(--color-blue-600);

Level 3: Component Tokens

Scoped to specific components.

/* Button */
--button-height-sm: 2rem;
--button-height-md: 2.5rem;
--button-height-lg: 3rem;
--button-padding-x: var(--space-4);
--button-radius: var(--radius-md);
--button-font-weight: 500;

/* Input */
--input-height: 2.5rem;
--input-padding-x: var(--space-3);
--input-border: var(--border-default);
--input-border-focus: var(--border-focus);
--input-radius: var(--radius-md);

/* Card */
--card-padding: var(--space-6);
--card-radius: var(--radius-xl);
--card-shadow: var(--shadow-sm);
--card-border: var(--border-default);

Phase 3: Component Architecture

  1. Identify atomic components (Button, Input, Badge, Avatar)
  2. Define molecule components (FormField, SearchBar, Card)
  3. Build organism components (Header, Sidebar, DataTable)
  4. Establish composition patterns (layouts, page templates)

STOP — Present component inventory for review before building variants.

Component Complexity Decision Table

LevelComponentsComposition
AtomButton, Input, Badge, Avatar, IconSingle element, no children
MoleculeFormField, SearchBar, Card, Tooltip2-3 atoms combined
OrganismHeader, Sidebar, DataTable, ModalMultiple molecules
TemplateDashboardLayout, AuthLayoutPage-level composition

Variant Pattern (using CVA or Tailwind Variants)

const buttonVariants = cva("inline-flex items-center justify-center rounded-md font-medium", {
  variants: {
    variant: {
      primary: "bg-action-primary text-white hover:bg-action-primary-hover",
      secondary: "bg-action-secondary text-text-primary hover:bg-gray-200",
      ghost: "hover:bg-action-secondary",
      danger: "bg-action-danger text-white hover:bg-red-700",
    },
    size: {
      sm: "h-8 px-3 text-sm",
      md: "h-10 px-4 text-sm",
      lg: "h-12 px-6 text-base",
    },
  },
  defaultVariants: {
    variant: "primary",
    size: "md",
  },
});

Composition Patterns

  • Compound components for complex UI (Tabs, Accordion, Combobox)
  • Slot-based composition for flexible layouts
  • Render props for maximum customization
  • Forward refs for DOM access

Phase 4: Theming and Responsiveness

  1. Implement light/dark themes via token swapping
  2. Define breakpoint system with container queries
  3. Build responsive component variants
  4. Test across viewports and color schemes

STOP — Verify theme switching works correctly before declaring complete.

Tailwind CSS v4 Configuration

/* app.css — Tailwind v4 uses CSS-based config */
@import "tailwindcss";

@theme {
  --color-primary-50: oklch(0.97 0.01 250);
  --color-primary-500: oklch(0.55 0.18 250);
  --color-primary-600: oklch(0.48 0.18 250);
  --color-primary-700: oklch(0.40 0.18 250);

  --font-sans: 'Inter', system-ui, sans-serif;
  --font-mono: 'Geist Mono', monospace;

  --breakpoint-sm: 40rem;
  --breakpoint-md: 48rem;
  --breakpoint-lg: 64rem;
  --breakpoint-xl: 80rem;
}

Dark / Light Theming

:root {
  color-scheme: light dark;
  --surface-primary: var(--color-white);
  --text-primary: var(--color-gray-900);
}

@media (prefers-color-scheme: dark) {
  :root {
    --surface-primary: var(--color-gray-950);
    --text-primary: var(--color-gray-50);
    --surface-elevated: var(--color-gray-900);
  }
}

/* Class-based override for manual toggle */
[data-theme="dark"] {
  --surface-primary: var(--color-gray-950);
  --text-primary: var(--color-gray-50);
}

Responsive Design Patterns

Breakpoint System

Mobile-first approach:
Default    -> 0px+     (mobile)
sm         -> 640px+   (large phone / small tablet)
md         -> 768px+   (tablet)
lg         -> 1024px+  (laptop)
xl         -> 1280px+  (desktop)
2xl        -> 1536px+  (large desktop)

Container Queries (Preferred for Components)

.card-container {
  container-type: inline-size;
  container-name: card;
}

@container card (min-width: 400px) {
  .card-content {
    flex-direction: row;
  }
}

Responsive Patterns Decision Table

PatternMobile BehaviorDesktop Behavior
Stack to RowVertical columnHorizontal row
Sidebar CollapseDrawer overlayPersistent sidebar
Table to CardsCard listFull data table
Hide/ShowSecondary content hiddenAll content visible
ReorderPriority content firstStandard order

Verification Checklist

  • Primitive tokens defined for all raw values
  • Semantic tokens map primitives to intentions
  • Component tokens reference only semantic tokens
  • Dark mode theme with proper token remapping
  • Breakpoint system defined (mobile-first)
  • Container queries used for component-level responsiveness
  • Typography scale follows consistent ratio
  • Spacing scale uses 4px/8px base unit
  • Focus states visible and accessible
  • Color contrast ratios meet WCAG AA (4.5:1)

Anti-Patterns / Common Mistakes

Anti-PatternWhy It Is WrongWhat to Do Instead
Hard-coding hex values in componentsCannot theme, cannot dark-modeUse semantic tokens
Creating dark mode by inverting colorsLooks terrible, wrong contrastRemap tokens to dark-appropriate values
Using !important to override systemSpecificity wars, unmaintainableFix the cascade or use data attributes
Mixing spacing units (px, rem, em)Inconsistent layout, scaling issuesUse rem everywhere, reference tokens
One-off components instead of extendingDesign system fragmentationExtend existing components with variants
Skipping the semantic layerTight coupling to primitivesAlways map primitives -> semantics -> components
Primitive tokens directly in componentsCannot retheme without rewritingComponents reference semantic tokens only
No container queries for componentsComponents break in different contextsUse container queries for adaptive components

Integration Points

SkillIntegration
ui-ux-pro-maxProvides style, palette, and UX guidelines
senior-frontendImplements design system in React/Next.js
canvas-designData visualization tokens and chart theming
mobile-designMobile-specific token adaptations
artifacts-builderDesign system preview artifacts
planningDesign system is planned like any feature

Skill Type

FLEXIBLE — Adapt token naming, component structure, and theming approach to the project's existing conventions and tooling. The three-layer token hierarchy (primitive -> semantic -> component) is strongly recommended but can be simplified for small projects.

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

MIT

源路径

templates/skills/ui-design-system

默认分支

main

最新提交

cc7fcb7

Tree SHA

7a49a40