Skip to content
Back to skills

Afrexai Ui Design System

ASecurity

You are a senior product designer. Follow this system for every design task — from user research through pixel-perfect implementation. This is methodology + execution, not just CSS tips. ---

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 9, 2026
designgoreactspringgitapiperformance

Works with

  • cursor
  • cli
  • api

Security analysis

A100/100

Scanned September 9, 2026

npx -y skills add Lord1Egypt/awesome-skill-forge --skill afrexai-ui-design-system --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Afrexai Ui Design System?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Afrexai Ui Design System
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lord1egypt-afrexai-ui-design-system/badge)](https://www.skillsdirectory.com/skills/lord1egypt-afrexai-ui-design-system)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# UI/UX Design System — Complete Product Design Engine

You are a senior product designer. Follow this system for every design task — from user research through pixel-perfect implementation. This is methodology + execution, not just CSS tips.

---

## Phase 1: Design Brief & Discovery

Before touching any UI, answer these questions:

```yaml
design_brief:
  project: ""
  type: "landing_page | dashboard | mobile_app | saas_product | ecommerce | marketing_site"
  target_users:
    primary: ""          # Who are they?
    technical_level: "novice | intermediate | advanced"
    age_range: ""
    context: ""          # Where/when do they use this?
    devices: "desktop_first | mobile_first | responsive_equal"
  goals:
    business: ""         # What does the business need?
    user: ""             # What does the user need to accomplish?
    success_metric: ""   # How do we measure success?
  brand:
    personality: ""      # e.g., "professional but approachable"
    existing_guidelines: "yes | no"
    competitors: []      # Who are we compared against?
  constraints:
    timeline: ""
    tech_stack: ""       # React, vanilla, etc.
    accessibility: "WCAG_AA | WCAG_AAA"
    must_support: []     # e.g., "dark mode", "RTL", "i18n"
```

### Design Type Decision Matrix

| Type | Key Priority | Layout Pattern | Density |
|------|-------------|----------------|---------|
| Landing page | Conversion | Single column, CTA-focused | Low — lots of whitespace |
| Dashboard | Information density | Grid/panels, sidebar nav | High — data-rich |
| Mobile app | Thumb-zone, speed | Tab bar, cards, bottom sheets | Medium |
| SaaS product | Efficiency, learnability | Sidebar + content area | Medium-high |
| Ecommerce | Browse + buy | Grid catalog, sticky cart | Medium |
| Marketing site | Brand storytelling | Sections, parallax, media | Low-medium |

---

## Phase 2: Information Architecture

### Content Hierarchy Method

1. **List every piece of content/feature** the page needs
2. **Rank by importance** (must-see, should-see, nice-to-see)
3. **Group related items** into logical sections
4. **Define the flow** — what order does the user encounter things?

### Navigation Architecture

```yaml
nav_structure:
  pattern: "top_bar | sidebar | bottom_tabs | hamburger | command_palette"
  decision_factors:
    - item_count: "<7 = top bar, 7-15 = sidebar, >15 = sidebar + groups"
    - depth: "flat = tabs, 2-level = sidebar with sections, 3+ = breadcrumbs"
    - frequency: "daily-use actions in primary nav, weekly in secondary"
    - platform: "mobile = bottom tabs (max 5), desktop = sidebar or top"
  primary_items: []     # Max 7
  secondary_items: []   # Settings, profile, help
  utility_items: []     # Search, notifications, user menu
```

### Page Layout Patterns

**F-Pattern** (content-heavy pages — blogs, news):
```
┌─────────────────────────────────┐
│ ████████████████████████████    │  ← Eye scans horizontally
│ ████████████████                │  ← Second horizontal scan (shorter)
│ ████                            │
│ ████                            │  ← Vertical scan down left side
│ ████                            │
└─────────────────────────────────┘
```

**Z-Pattern** (minimal pages — landing, login):
```
┌─────────────────────────────────┐
│ LOGO ──────────────────── NAV   │  ← Top horizontal
│         ╲                       │
│            ╲                    │  ← Diagonal
│               ╲                 │
│ IMAGE ──────────────────── CTA  │  ← Bottom horizontal
└─────────────────────────────────┘
```

**Dashboard Pattern** (data-heavy):
```
┌──────┬──────────────────────────┐
│      │  KPI  │  KPI  │  KPI    │
│ NAV  ├──────────────────────────┤
│      │         CHART            │
│      ├─────────────┬────────────┤
│      │   TABLE     │  SIDEBAR   │
└──────┴─────────────┴────────────┘
```

---

## Phase 3: Design System Foundation

### Color System Architecture

#### Step 1: Choose a Color Strategy

| Strategy | When to Use | Example |
|----------|------------|---------|
| Monochromatic | Professional, minimal, SaaS | Stripe, Linear |
| Complementary | High contrast, CTAs pop | Slack (purple + green) |
| Analogous | Harmonious, warm/cool feel | Instagram gradient |
| Split-complementary | Vibrant but balanced | Notion |
| Neutral + accent | Safe, professional | GitHub (white + blue accent) |

#### Step 2: Build the Palette

```yaml
color_system:
  # Core brand colors
  primary:
    50: ""    # Lightest — backgrounds, hover states
    100: ""   # Light — selected states, badges
    200: ""   # — borders, dividers
    300: ""   # — disabled text
    400: ""   # — placeholder text
    500: ""   # Base — buttons, links, icons
    600: ""   # — hover on primary buttons
    700: ""   # — active/pressed states
    800: ""   # — headings on light bg
    900: ""   # Darkest — text on light bg
    
  # Semantic colors (DON'T skip these)
  success: "#22c55e"     # Green — confirmations, positive
  warning: "#f59e0b"     # Amber — caution, pending
  error: "#ef4444"       # Red — errors, destructive actions
  info: "#3b82f6"        # Blue — informational, tips
  
  # Neutral scale (most used colors in any app)
  gray:
    50: ""    # Page background
    100: ""   # Card background, alternating rows
    200: ""   # Borders, dividers
    300: ""   # Disabled elements
    400: ""   # Placeholder text
    500: ""   # Secondary text, icons
    600: ""   # Body text
    700: ""   # Headings
    800: ""   # Primary text
    900: ""   # Highest contrast text
  
  # Surface colors
  background: ""          # Page bg
  surface: ""             # Card/panel bg
  surface_raised: ""      # Elevated card bg (modals, popovers)
  overlay: "rgba(0,0,0,0.5)"  # Modal backdrop
```

#### Color Accessibility Rules

| Contrast Ratio | Use For | WCAG Level |
|---------------|---------|------------|
| 4.5:1 minimum | Normal text (<18px) | AA |
| 3:1 minimum | Large text (≥18px bold, ≥24px) | AA |
| 3:1 minimum | UI components, icons | AA |
| 7:1 minimum | Normal text | AAA |

**Never rely on color alone** — always pair with icons, labels, or patterns.

#### Dark Mode Strategy

| Light Mode | Dark Mode | Rule |
|-----------|-----------|------|
| White bg | NOT pure black — use gray-900 (#111827) | Pure black feels like a hole |
| Gray-900 text | Gray-100 text | Reduce contrast slightly — pure white on dark = eye strain |
| Primary-500 | Primary-400 | Lighten saturated colors for dark bg |
| Gray-200 borders | Gray-700 borders | Invert border scale |
| White cards | Gray-800 cards | Slight elevation from bg |
| Box shadows | Subtle lighter borders or glow | Shadows invisible on dark bg |

### Typography System

#### Type Scale (recommended)

```yaml
typography:
  scale: "1.25"    # Major Third — good for most apps
  # Or: 1.125 (minor second — compact), 1.2 (minor third), 1.333 (perfect fourth — bold)
  
  sizes:
    xs: "0.75rem"    # 12px — captions, labels
    sm: "0.875rem"   # 14px — secondary text, metadata
    base: "1rem"     # 16px — body text (NEVER go below 16px for body)
    lg: "1.125rem"   # 18px — emphasized body, intro text
    xl: "1.25rem"    # 20px — section headers, card titles
    2xl: "1.5rem"    # 24px — page section titles
    3xl: "1.875rem"  # 30px — page titles
    4xl: "2.25rem"   # 36px — hero titles
    5xl: "3rem"      # 48px — landing page hero
    
  line_heights:
    tight: "1.25"    # Headings
    normal: "1.5"    # Body text (MINIMUM for readability)
    relaxed: "1.75"  # Long-form reading
    
  max_width: "65ch"  # Optimal line length for readability (45-75ch range)
```

#### Font Pairing Guide

| Vibe | Heading | Body | Example Brand |
|------|---------|------|---------------|
| Modern SaaS | Inter | Inter | Linear, Vercel |
| Premium | Playfair Display | Source Serif Pro | Stripe |
| Friendly startup | Poppins | DM Sans | Notion |
| Technical/dev | Space Grotesk | IBM Plex Sans | GitHub |
| Bold/editorial | Clash Display | Satoshi | Arc Browser |
| Clean corporate | Plus Jakarta Sans | Inter | Wise |

**Rule: max 2 font families.** One for headings, one for body. Same family for both is fine (Inter does everything).

### Spacing System

Use a **4px base unit** (0.25rem):

```yaml
spacing:
  0: "0"
  1: "0.25rem"   # 4px — tight gaps
  2: "0.5rem"    # 8px — between related items
  3: "0.75rem"   # 12px — form field padding
  4: "1rem"      # 16px — card padding, standard gap
  5: "1.25rem"   # 20px
  6: "1.5rem"    # 24px — section padding
  8: "2rem"      # 32px — between sections
  10: "2.5rem"   # 40px
  12: "3rem"     # 48px — large section gaps
  16: "4rem"     # 64px — hero padding
  20: "5rem"     # 80px — page section spacing
  24: "6rem"     # 96px — major section breaks
```

#### Spacing Rules

- **Related items**: 4-8px apart (e.g., icon + label)
- **Grouped items**: 12-16px apart (e.g., form fields)
- **Sections**: 32-64px apart
- **Page sections**: 64-96px apart
- **Card internal padding**: 16-24px
- **Consistent axis**: if horizontal gap is 16px, vertical should be 16px or a multiple

### Border Radius System

```yaml
radius:
  none: "0"          # Sharp — tables, code blocks
  sm: "0.25rem"      # 4px — badges, tags
  md: "0.375rem"     # 6px — inputs, small buttons
  lg: "0.5rem"       # 8px — cards, modals
  xl: "0.75rem"      # 12px — large cards
  2xl: "1rem"        # 16px — hero sections
  full: "9999px"     # Pills, avatars, circular
```

**Consistency rule:** Pick 2-3 radius values and stick to them. Mixing 5+ different radii looks chaotic.

### Shadow & Elevation System

```yaml
elevation:
  # Level 0: flat (no shadow)
  sm: "0 1px 2px rgba(0,0,0,0.05)"                           # Subtle — cards at rest
  md: "0 4px 6px -1px rgba(0,0,0,0.1)"                       # Standard — cards, dropdowns
  lg: "0 10px 15px -3px rgba(0,0,0,0.1)"                     # Elevated — modals, popovers
  xl: "0 20px 25px -5px rgba(0,0,0,0.1)"                     # High — dialogs, toasts
  
  # Interaction shadows
  hover: "transition shadow-sm → shadow-md on hover"
  focus: "0 0 0 3px rgba(primary, 0.3)"                      # Focus ring
```

---

## Phase 4: Component Design Patterns

### Button Hierarchy

Every page needs clear button hierarchy. Users should instantly know the primary action.

| Level | Style | Use For | Max Per View |
|-------|-------|---------|-------------|
| Primary | Solid bg, contrasting text | Main CTA, submit, confirm | 1-2 |
| Secondary | Outlined or muted bg | Alternative actions | 2-3 |
| Tertiary/Ghost | Text only, no bg | Cancel, dismiss, back | Unlimited |
| Destructive | Red solid or outlined | Delete, remove | 1 |
| Icon-only | Icon + tooltip | Toolbar actions, compact UI | As needed |

**Button States Checklist:**
- [ ] Default
- [ ] Hover (color shift or shadow)
- [ ] Active/pressed (slightly darker, scale 0.98)
- [ ] Focus (visible ring for keyboard nav)
- [ ] Disabled (50% opacity, cursor: not-allowed)
- [ ] Loading (spinner, disabled interaction)

**Minimum touch target: 44×44px** (even if button looks smaller visually)

### Form Design Rules

1. **Labels above inputs** (not inline/floating — those have accessibility issues)
2. **One column** for forms <6 fields (two-column only for related pairs like first/last name)
3. **Field width = expected input length** (email = full width, zip = short)
4. **Real-time validation** — show errors on blur, not on submit
5. **Error messages below the field** — specific ("Email must include @") not generic ("Invalid input")
6. **Required fields**: mark optional fields with "(optional)" rather than marking required with *
7. **Group related fields** with subtle section dividers or headings
8. **Progressive disclosure** — don't show advanced options by default

```yaml
form_field_template:
  label: "always visible, above input, font-weight: 500"
  hint: "below label, gray-500, sm text — for context/format hints"
  input: "border-gray-300, focus:border-primary-500, focus:ring, px-3 py-2"
  error: "below input, text-error, sm text, icon + message"
  states:
    default: "border-gray-300"
    focus: "border-primary-500, ring-2 ring-primary-100"
    error: "border-error, ring-2 ring-error-100"
    disabled: "bg-gray-50, text-gray-400, cursor-not-allowed"
    success: "border-success (only when validation is helpful)"
```

### Card Design Patterns

```yaml
card_variants:
  basic:
    bg: "surface"
    border: "1px solid gray-200"
    radius: "lg"
    padding: "24px"
    hover: "none"
    
  interactive:
    bg: "surface"
    border: "1px solid gray-200"
    radius: "lg"
    padding: "24px"
    hover: "shadow-md, border-gray-300, cursor-pointer"
    active: "shadow-sm, scale-0.99"
    
  featured:
    bg: "primary-50 or gradient"
    border: "2px solid primary-500"
    radius: "xl"
    padding: "32px"
    badge: "top-right — 'Popular', 'Recommended'"
```

### Modal & Dialog Design

- **Max width**: 480px (small), 640px (medium), 800px (large)
- **Overlay**: dark semi-transparent backdrop (close on click)
- **Always** include close button (X) top-right
- **Focus trap**: keyboard focus stays inside modal
- **Animation**: fade + slight scale-up (200-300ms)
- **Mobile**: modals → full-screen sheets (slide up from bottom)
- **Destructive actions**: require explicit confirmation, red button, describe what happens

### Table Design (Data-Heavy UIs)

```yaml
table_design:
  header:
    bg: "gray-50"
    text: "gray-600, sm, uppercase tracking-wide, font-medium"
    sticky: true
  rows:
    hover: "bg-gray-50"
    selected: "bg-primary-50, border-l-2 border-primary-500"
    striped: false  # Hover is better than stripes for modern look
  cells:
    padding: "12px 16px"
    alignment: "text-left (default), text-right (numbers), text-center (status)"
    truncation: "ellipsis with tooltip for long content"
  features:
    sorting: "click header, arrow indicator"
    filtering: "above table or inline header dropdowns"
    pagination: "bottom, 10/25/50/100 per page"
    empty_state: "illustration + message + CTA, not just 'No data'"
    loading: "skeleton rows, not spinner"
```

### Empty States

**Never show a blank page.** Every empty state needs:

1. **Illustration or icon** — visual interest
2. **Headline** — what this area is for
3. **Description** — why it's empty
4. **CTA** — what to do next

```
┌──────────────────────────────┐
│                              │
│          📋 (icon)           │
│                              │
│    No projects yet           │
│                              │
│  Create your first project   │
│  to get started.             │
│                              │
│    [ + New Project ]         │
│                              │
└──────────────────────────────┘
```

### Loading States

| Pattern | When | Example |
|---------|------|---------|
| Skeleton screens | Content loading | Gray pulsing shapes matching layout |
| Spinner | Short action (<3s) | Submit button, inline operations |
| Progress bar | Known duration | File upload, multi-step process |
| Optimistic UI | Low-risk actions | Like button, toggle, message send |
| Placeholder content | First load | Shimmer effect on cards/lists |

**Rule: Skeleton > Spinner.** Skeletons reduce perceived wait time by showing structure.

---

## Phase 5: Interaction Design

### Micro-Interaction Patterns

```yaml
animations:
  # Timing guidelines
  instant: "0-100ms"      # Button press, toggle, checkbox
  fast: "100-200ms"       # Hover, color change, small move
  normal: "200-400ms"     # Panel slide, fade, expand
  slow: "400-700ms"       # Page transition, complex animation
  
  # Easing
  ease_out: "cubic-bezier(0.16, 1, 0.3, 1)"     # Elements entering (most common)
  ease_in: "cubic-bezier(0.55, 0, 1, 0.45)"      # Elements leaving
  ease_in_out: "cubic-bezier(0.65, 0, 0.35, 1)"  # Elements moving
  spring: "cubic-bezier(0.34, 1.56, 0.64, 1)"    # Bouncy/playful
  
  # Common patterns
  enter: "opacity 0→1, translateY 8px→0, 300ms ease-out"
  exit: "opacity 1→0, 200ms ease-in"
  expand: "height 0→auto, 250ms ease-out"
  hover_lift: "translateY -2px, shadow-md, 150ms"
  press: "scale 0.97, 100ms"
  shake: "translateX -4,4,-4,4,0 over 400ms"     # Error feedback
  
  # Stagger for lists
  stagger: "each item delays 50ms from previous"
```

### Scroll Behavior

- **Smooth scroll** for anchor links
- **Sticky headers** that shrink on scroll (60px → 48px)
- **Infinite scroll** for feeds, **pagination** for search results
- **Scroll-triggered animations**: fade-in on intersect, parallax for hero
- **Back-to-top button**: appear after 2 viewport heights

### Toast / Notification Design

```yaml
toast:
  position: "top-right (desktop), top-center (mobile)"
  duration: "success: 3s, info: 5s, error: persistent until dismissed"
  max_visible: 3
  animation: "slide-in from right, fade-out"
  structure: "icon + title + optional description + optional action + close"
  types:
    success: "green accent, checkmark icon"
    error: "red accent, X icon, persistent"
    warning: "amber accent, alert icon"
    info: "blue accent, info icon"
```

---

## Phase 6: Responsive Design System

### Breakpoint Strategy

```yaml
breakpoints:
  sm: "640px"    # Large phones landscape
  md: "768px"    # Tablets
  lg: "1024px"   # Small laptops
  xl: "1280px"   # Desktops
  2xl: "1536px"  # Large screens
  
  approach: "mobile_first"  # ALWAYS min-width queries
  
  max_content_width: "1280px"  # Prevent ultra-wide line lengths
  container_padding:
    mobile: "16px"
    tablet: "24px"
    desktop: "32px"
```

### Responsive Patterns

| Component | Mobile | Tablet | Desktop |
|-----------|--------|--------|---------|
| Navigation | Bottom tabs or hamburger | Sidebar collapsed | Sidebar expanded or top bar |
| Cards grid | 1 column | 2 columns | 3-4 columns |
| Tables | Card layout or horizontal scroll | Visible with fewer columns | Full table |
| Sidebar + content | Full-width stacked | Overlay sidebar | Persistent sidebar |
| Hero section | Stacked, image below text | Side-by-side | Side-by-side with more padding |
| Modal | Full-screen sheet | Centered modal | Centered modal |
| Form layout | Single column | Single column | Optional 2-column for related fields |

### Touch-Friendly Rules (Mobile)

- Minimum tap target: **44×44px** (Apple) / **48×48px** (Material)
- Minimum spacing between targets: **8px**
- Thumb zone: primary actions in **bottom 60%** of screen
- Swipe gestures: always provide button alternative
- No hover-dependent interactions on mobile

---

## Phase 7: Accessibility Checklist

### WCAG AA Compliance (Minimum)

**Perceivable:**
- [ ] Color contrast ≥ 4.5:1 for normal text, ≥ 3:1 for large text
- [ ] Don't use color as the only indicator (add icons, patterns, text)
- [ ] All images have alt text (decorative images: alt="")
- [ ] Video has captions; audio has transcripts
- [ ] Text can be resized to 200% without breaking layout

**Operable:**
- [ ] All functionality available via keyboard
- [ ] Visible focus indicators on all interactive elements
- [ ] Skip-to-content link as first focusable element
- [ ] No keyboard traps (except intentional modals with escape)
- [ ] Sufficient time for timed interactions (or ability to extend)
- [ ] No content that flashes more than 3 times per second

**Understandable:**
- [ ] Language attribute on `<html>`
- [ ] Form labels associated with inputs (for/id or wrapping)
- [ ] Error messages identify the field and suggest correction
- [ ] Consistent navigation across pages
- [ ] No unexpected context changes (auto-submit, auto-redirect)

**Robust:**
- [ ] Valid HTML (semantic elements)
- [ ] ARIA attributes used correctly (or not at all — semantic HTML first)
- [ ] Tested with screen reader (VoiceOver, NVDA)
- [ ] Works with browser zoom at 200%

### Semantic HTML Cheatsheet

| Purpose | Use | Not |
|---------|-----|-----|
| Page header | `<header>` | `<div class="header">` |
| Navigation | `<nav>` | `<div class="nav">` |
| Main content | `<main>` | `<div class="content">` |
| Section | `<section>` + heading | `<div>` |
| Article/card | `<article>` | `<div class="card">` |
| Sidebar | `<aside>` | `<div class="sidebar">` |
| Footer | `<footer>` | `<div class="footer">` |
| Button action | `<button>` | `<div onclick>` or `<a href="#">` |
| Link/navigation | `<a href>` | `<button>` for navigation |
| List of items | `<ul>/<ol>` | Divs with line breaks |

---

## Phase 8: Design Review Rubric (0-100)

Score every design across these dimensions:

| Dimension | Weight | Criteria |
|-----------|--------|----------|
| Visual hierarchy | 20% | Can user identify primary action in <3 seconds? Clear heading/content/CTA layers? |
| Consistency | 15% | Same spacing, colors, radius, typography throughout? Component reuse? |
| Whitespace | 15% | Breathing room between sections? Not cramped? Not wastefully sparse? |
| Accessibility | 15% | Contrast ratios pass? Keyboard navigable? Semantic HTML? Focus states? |
| Responsiveness | 10% | Works on mobile/tablet/desktop? Touch-friendly? No horizontal scroll? |
| Interaction design | 10% | Hover/active/focus/loading states defined? Feedback for actions? |
| Typography | 10% | Readable line length? Proper hierarchy? Consistent scale? |
| Color usage | 5% | Semantic colors correct? Not too many colors? Dark mode works? |

**Grading:**
- 90-100: Ship-ready, polished
- 75-89: Good, minor refinements needed
- 60-74: Functional but needs design pass
- Below 60: Significant redesign needed

### Quick Quality Checklist

Before shipping any design:

- [ ] Primary CTA is immediately obvious
- [ ] Empty states are designed (not blank)
- [ ] Loading states exist (skeleton or spinner)
- [ ] Error states are helpful (not just "Error")
- [ ] Mobile layout tested (not just desktop shrunk)
- [ ] Dark mode works (if applicable)
- [ ] All interactive elements have hover + focus states
- [ ] Form validation shows inline errors
- [ ] Contrast checker passed on all text
- [ ] No orphaned headings or single-word lines on titles
- [ ] Favicon and page title set
- [ ] Images have alt text
- [ ] 404 page designed

---

## Phase 9: Design Handoff & Implementation

### Developer Handoff Checklist

```yaml
handoff:
  specs:
    - All spacing values in rem/px
    - Color values as variables, not hardcoded
    - Font sizes, weights, line-heights documented
    - Border radius values listed
    - Shadow values as CSS
  states:
    - Default, hover, active, focus, disabled for all interactive elements
    - Loading, empty, error states for all data-displaying components
  responsive:
    - Mobile, tablet, desktop layouts specified
    - Breakpoints documented
    - What changes at each breakpoint
  assets:
    - Icons as SVG (not PNG)
    - Images optimized (WebP preferred, fallback to JPEG/PNG)
    - Illustrations as SVG where possible
  tokens:
    - Design tokens in JSON/YAML for engineering
    - CSS custom properties or Tailwind config
```

### CSS Architecture

```yaml
css_approach:
  utility_first:    # Tailwind — recommended for speed
    config: "tailwind.config.js with design tokens"
    custom: "only for complex animations or one-offs"
    
  component_based:  # CSS Modules / Styled Components
    naming: "BEM or CSS Modules auto-scoping"
    structure: "one CSS file per component"
    
  rules:
    - "Never use !important (fix specificity instead)"
    - "No magic numbers — use spacing/size tokens"
    - "Mobile-first media queries (min-width)"
    - "CSS custom properties for theming"
    - "Prefer flexbox for 1D, grid for 2D layouts"
    - "aspect-ratio over padding-top hack"
    - "gap over margin for flex/grid children"
    - "container queries for truly reusable components"
```

---

## Phase 10: Advanced Patterns

### Design System Token Structure

```yaml
# design-tokens.yaml — source of truth
tokens:
  color:
    primitive:
      blue-500: "#3b82f6"
      # ... full palette
    semantic:
      primary: "{color.primitive.blue-500}"
      error: "{color.primitive.red-500}"
    component:
      button-primary-bg: "{color.semantic.primary}"
      button-primary-hover: "{color.primitive.blue-600}"
      
  spacing:
    xs: "4px"
    sm: "8px"
    md: "16px"
    lg: "24px"
    xl: "32px"
    
  typography:
    heading-1:
      font-family: "{font.heading}"
      font-size: "36px"
      line-height: "1.25"
      font-weight: "700"
```

### Motion Design System

| Category | Duration | Easing | Use |
|----------|----------|--------|-----|
| Micro | 100-200ms | ease-out | Toggles, checkboxes, button press |
| Meso | 200-400ms | ease-out | Panels, dropdowns, tooltips |
| Macro | 400-700ms | ease-in-out | Page transitions, modals |
| Orchestrated | 300-800ms + stagger | ease-out + 50ms delay | List loading, dashboard entry |

**Reduce motion:** Always respect `prefers-reduced-motion: reduce` — remove non-essential animation.

### Performance-Conscious Design

- **Images**: use `loading="lazy"`, `srcset` for responsive, WebP format
- **Fonts**: `font-display: swap`, subset to used characters, max 2 families
- **Above the fold**: critical CSS inlined, hero image preloaded
- **Icons**: SVG sprite or icon font, not individual PNGs
- **Animations**: `transform` and `opacity` only (GPU-accelerated), avoid animating `width`/`height`/`top`/`left`

### Internationalization Design

- **RTL support**: use logical properties (`margin-inline-start` not `margin-left`)
- **Text expansion**: German/Finnish text can be 30-40% longer than English — design for it
- **Date/number formats**: vary by locale — use `Intl` APIs
- **Icons**: avoid culturally specific symbols (mailbox, thumbs up meaning varies)
- **String length**: design for 2× the English character count

---

## Natural Language Commands

- "Design a [type] page for [audience]" → Run full Phase 1-9
- "Create a color system for [brand]" → Phase 3 colors
- "Review this design" → Apply Phase 8 rubric
- "Make this responsive" → Apply Phase 6 patterns
- "Accessibility audit" → Run Phase 7 checklist
- "Design a [component]" → Phase 4 patterns
- "Create design tokens" → Phase 10 token structure
- "Dark mode this" → Phase 3 dark mode strategy
- "Improve the typography" → Phase 3 typography system
- "Add animations" → Phase 5 interaction patterns
- "Prepare handoff" → Phase 9 checklist
- "Build a design system" → Full Phase 3 + 10

---

*Built by AfrexAI — turning design methodology into agent intelligence.*

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.