mcpField
D
design-system-architecture

design-system-architecture

github.com/nickcrewDesign & UI6272 installsUpdated 17w ago
Repository

About design-system-architecture

A skill for designing and maintaining scalable design systems, aimed at teams creating or evolving component libraries. It covers token layers, component API patterns, and documentation practices.

Key features

  1. 01Three-tier design token architecture
  2. 02Light, dark, and semantic theme guidance
  3. 03Typed and compound component API patterns
  4. 04Atomic Design component categories
  5. 05Component documentation and maintenance practices

Use cases

  1. 01Starting a design system from scratch
  2. 02Restructuring tokens for an existing library
  3. 03Defining consistent component APIs
  4. 04Planning component documentation and releases

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/nickcrew/claude-cortex --skill design-system-architecture

After installing, type/design-system-architecturein Claude Code to confirm it loaded.

Details

From the project README

Design System Architecture

Comprehensive guide to building scalable design systems with proper token architecture, component APIs, and documentation strategies.

When to Use This Skill

  • Creating a new design system from scratch
  • Evolving an existing component library
  • Defining token architecture
  • Establishing component API patterns
  • Setting up design system documentation

Token Architecture

Three-Tier Token System
┌─────────────────────────────────────┐
│       Component Tokens              │  → button-primary-bg
│     (Specific to components)        │
├─────────────────────────────────────┤
│       Semantic Tokens               │  → color-action-primary
│     (Purpose-based naming)          │
├─────────────────────────────────────┤
│       Primitive Tokens              │  → blue-500
│     (Raw values)                    │
└─────────────────────────────────────┘
Token Categories
/* Primitive Tokens */
--color-blue-500: #3b82f6;
--spacing-4: 1rem;
--font-size-base: 16px;
--radius-md: 8px;

/* Semantic Tokens */
--color-action-primary: var(--color-blue-500);
--color-text-primary: var(--color-gray-900);
--spacing-component-gap: var(--spacing-4);

/* Component Tokens */
--button-bg: var(--color-action-primary);
--button-padding-x: var(--spacing-4);
--card-radius: var(--radius-md);
Theme Support
// tokens/themes.ts
export const lightTheme = {
  'color-bg-primary': 'var(--color-white)',
  'color-text-primary': 'var(--color-gray-900)',
  'color-border': 'var(--color-gray-200)',
}

export const darkTheme = {
  'color-bg-primary': 'var(--color-gray-900)',
  'color-text-primary': 'var(--color-gray-100)',
  'color-border': 'var(--color-gray-700)',
}

Component API Patterns

Prop API Design
// ✅ Good: Clear, typed, with sensible defaults
interface ButtonProps {
  variant?: 'primary' | 'secondary' | 'ghost';
  size?: 'sm' | 'md' | 'lg';
  isLoading?: boolean;
  isDisabled?: boolean;
  leftIcon?: React.ReactNode;
  children: React.ReactNode;
  onClick?: () => void;
}

// ✅ With defaults
const Button = ({
  variant = 'primary',
  size = 'md',
  isLoading = false,
  isDisabled = false,
  ...props
}: ButtonProps) => { ... }
Compound Component Pattern
// Compound components for complex UIs
const Tabs = ({ children, defaultValue }) => { ... }
Tabs.List = ({ children }) => { ... }
Tabs.Tab = ({ value, children }) => { ... }
Tabs.Panel = ({ value, children }) => { ... }

// Usage
<Tabs defaultValue="tab1">
  <Tabs.List>
    <Tabs.Tab value="tab1">First</Tabs.Tab>
    <Tabs.Tab value="tab2">Second</Tabs.Tab>
  </Tabs.List>
  <Tabs.Panel value="tab1">Content 1</Tabs.Panel>
  <Tabs.Panel value="tab2">Content 2</Tabs.Panel>
</Tabs>
Polymorphic Components
// Component that can render as different elements
interface BoxProps<C extends React.ElementType> {
  as?: C;
  children?: React.ReactNode;
}

type PolymorphicProps<C extends React.ElementType> =
  BoxProps<C> & Omit<React.ComponentPropsWithoutRef<C>, keyof BoxProps<C>>;

const Box = <C extends React.ElementType = 'div'>({
  as,
  ...props
}: PolymorphicProps<C>) => {
  const Component = as || 'div';
  return <Component {...props} />;
};

// Usage
<Box as="section" className="...">Content</Box>
<Box as="button" onClick={...}>Click me</Box>

Component Categories (Atomic Design)

Atoms (Primitives)
  • Button, Input, Label, Icon
  • Typography (Text, Heading)
  • Box, Flex, Grid (layout primitives)
Molecules (Compositions)
  • FormField (Label + Input + Error)
  • SearchInput (Input + Icon + Button)
  • Card (Box + padding + border)
Organisms (Features)
  • Header (Logo + Nav + UserMenu)
  • DataTable (Table + Pagination + Filters)
  • Modal (Overlay + Card + Actions)

Documentation Strategy

Component Documentation
# Button

Buttons trigger actions or navigate users.

## Usage

\`\`\`jsx
import { Button } from '@/components/ui'

<Button variant="primary" size="md">
  Click me
</Button>
\`\`\`

## Props

| Prop | Type | Default | Description |
|------|------|---------|-------------|
| variant | 'primary' \| 'secondary' \| 'ghost' | 'primary' | Visual style |
| size | 'sm' \| 'md' \| 'lg' | 'md' | Size preset |

## Examples

### Variants
[Interactive examples]

### With Icons
[Interactive examples]

## Accessibility

- Uses `<button>` element by default
- Supports keyboard activation
- Loading state announced to screen readers

Best Practices

Design Principles
  1. Composition over configuration: Small, composable pieces
  2. Sensible defaults: Works out of the box
  3. Accessible by default: a11y is not optional
  4. Type-safe APIs: TypeScript guides usage
  5. Minimal API surface: Only expose what's needed
Maintenance
  • Semantic versioning for breaking changes
  • Deprecation warnings before removal
  • Migration guides for major versions
  • Automated visual regression testing

Resources

Comments

Markdown supported