ui-design

Comprehensive UI design skill covering fundamentals, patterns, and anti-patterns. Layout, typography, color, spacing, accessibility, motion, and component design. Use when building any web interface, reviewing design quality, or creating distinctive UIs.

7 stars

Best use case

ui-design is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Comprehensive UI design skill covering fundamentals, patterns, and anti-patterns. Layout, typography, color, spacing, accessibility, motion, and component design. Use when building any web interface, reviewing design quality, or creating distinctive UIs.

Teams using ui-design should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/ui-design/SKILL.md --create-dirs "https://raw.githubusercontent.com/wpank/ai/main/skills/design-systems/ui-design/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/ui-design/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How ui-design Compares

Feature / Agentui-designStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Comprehensive UI design skill covering fundamentals, patterns, and anti-patterns. Layout, typography, color, spacing, accessibility, motion, and component design. Use when building any web interface, reviewing design quality, or creating distinctive UIs.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# UI Design Fundamentals

The definitive guide for building production-grade web interfaces. Covers the full stack of design decisions from layout to motion.

## WHEN To Use

- Designing new UI components or pages
- Building landing pages, dashboards, or applications
- Reviewing code for design quality
- Creating distinctive interfaces that avoid generic aesthetics
- Implementing accessibility requirements

## KEYWORDS

ui design, web design, layout, typography, color palette, spacing, visual hierarchy, responsive design, accessibility, motion design, component design, design tokens, frontend, css, tailwind


## Installation

### OpenClaw / Moltbot / Clawbot

```bash
npx clawhub@latest install ui-design
```


---

## Design Philosophy

### The 80/20 of Design Quality

| Factor | Impact | Time Investment |
|--------|--------|-----------------|
| **Typography** | 40% | Choose 1-2 fonts well |
| **Spacing** | 25% | Use consistent scale |
| **Color** | 20% | Limit palette, ensure contrast |
| **Everything else** | 15% | Shadows, borders, motion |

Focus on typography and spacing first. They're 65% of perceived quality.

### Commit to a Direction

Mediocrity is forgettable. Pick an extreme:

| Direction | Characteristics | Use When |
|-----------|-----------------|----------|
| **Brutally Minimal** | Stark, essential, nothing extra | Developer tools, productivity |
| **Luxury/Refined** | Premium, subtle elegance | High-end products, fashion |
| **Playful** | Fun, bright, approachable | Consumer apps, games |
| **Editorial** | Type-forward, grid-based | Content sites, magazines |
| **Industrial** | Function-forward, robust | B2B, enterprise |

---

## Layout

### Grid vs Flexbox Decision

| Layout Need | Tool | Why |
|-------------|------|-----|
| Page-level structure | CSS Grid (`grid-template-areas`) | Named regions, explicit control |
| Navigation bars | Flexbox | Single-axis, `gap` spacing |
| Card grids | Grid (`auto-fill`/`auto-fit`) | Responsive without media queries |
| Centering | Grid (`place-items: center`) | Shortest, most reliable |
| Sidebar + content | Grid (`250px 1fr`) | Fixed + fluid |
| Stacking/overlaps | Grid + `grid-area: 1/1` | No `position: absolute` needed |

### Container Strategy

```css
/* Standard content width */
.container {
  width: 100%;
  max-width: 1280px;
  margin-inline: auto;
  padding-inline: clamp(1rem, 5vw, 3rem);
}

/* Full-bleed with contained content */
.full-bleed {
  width: 100vw;
  margin-left: calc(50% - 50vw);
}
```

### Common Layout Mistakes

| Mistake | Problem | Fix |
|---------|---------|-----|
| Mixing container widths | Inconsistent alignment | Use single `max-w-*` value |
| Content behind fixed navbar | Hidden content | Add `pt-[navbar-height]` |
| No mobile padding | Edge-to-edge text | Add `px-4` minimum |
| Centered everything | Weak hierarchy | Left-align body text |

---

## Typography

Typography carries 90% of a design's personality.

### Font Pairing by Context

| Context | Display Font | Body Font | Example |
|---------|--------------|-----------|---------|
| Editorial | High-contrast serif | Neutral humanist | Playfair + Source Sans |
| SaaS | Geometric sans | Matching sans | DM Sans + DM Mono |
| Luxury | Thin modern serif | Elegant sans | Cormorant + Jost |
| Developer | Monospace display | Monospace body | JetBrains Mono + IBM Plex |
| Playful | Rounded/quirky | Clean readable | Nunito + Outfit |

### Type Scale (1.25 ratio)

```css
--text-xs: 0.64rem;   /* 10px - captions */
--text-sm: 0.8rem;    /* 13px - secondary */
--text-base: 1rem;    /* 16px - body */
--text-lg: 1.25rem;   /* 20px - lead */
--text-xl: 1.563rem;  /* 25px - h4 */
--text-2xl: 1.953rem; /* 31px - h3 */
--text-3xl: 2.441rem; /* 39px - h2 */
--text-4xl: 3.052rem; /* 49px - h1 */
```

### Typography Rules

| Rule | Value | Why |
|------|-------|-----|
| Minimum body size | 16px | Below is hard to read |
| Body line-height | 1.5-1.75 | Improves readability |
| Heading line-height | 1.1-1.2 | Tighter for large text |
| Line length | 60-75 characters | Optimal reading |
| Paragraph spacing | 1.5em | Clear separation |

### Typography Mistakes

| Mistake | Problem | Fix |
|---------|---------|-----|
| System fonts only | Generic look | Use Google Fonts or variable fonts |
| Too many fonts | Visual chaos | Max 2 families |
| Weak weight contrast | Poor hierarchy | Bold headings (600+), regular body |
| Long lines | Hard to read | Add `max-w-prose` (65ch) |

---

## Color

### Building a Palette

Every palette needs five functional roles:

| Role | Purpose | Usage |
|------|---------|-------|
| **Primary** | Brand identity | Buttons, links, active states |
| **Neutral** | Text, backgrounds | Body text, cards, dividers |
| **Accent** | Secondary actions | Tags, badges, highlights |
| **Semantic** | Feedback | Success/warning/error states |
| **Surface** | Layered backgrounds | Cards, modals, overlays |

### Surface Layering (Dark Mode)

Create depth through lightness, not shadows:

```css
:root {
  --surface-0: hsl(220 15% 8%);   /* page background */
  --surface-1: hsl(220 15% 12%);  /* card */
  --surface-2: hsl(220 15% 16%);  /* raised element */
  --surface-3: hsl(220 15% 20%);  /* popover/modal */
}
```

### Contrast Requirements (WCAG)

| Text Size | Minimum Ratio | Enhanced (AAA) |
|-----------|---------------|----------------|
| Normal text (<18px) | 4.5:1 | 7:1 |
| Large text (≥18px bold, ≥24px) | 3:1 | 4.5:1 |
| UI components | 3:1 | — |

### Color Mistakes

| Mistake | Problem | Fix |
|---------|---------|-----|
| Purple gradient on white | "AI aesthetic" cliché | Use intentional brand colors |
| Low contrast text | Accessibility fail | Test with contrast checker |
| Color-only indicators | Colorblind users excluded | Add icons/text |
| Too many colors | Visual noise | 3-5 colors maximum |
| Light gray text on white | Unreadable | `slate-600` minimum |

---

## Spacing

### 8px Base Unit Scale

```css
--space-1: 0.25rem;  /* 4px - tight gaps */
--space-2: 0.5rem;   /* 8px - input padding */
--space-3: 0.75rem;  /* 12px - button padding */
--space-4: 1rem;     /* 16px - default spacing */
--space-6: 1.5rem;   /* 24px - section padding */
--space-8: 2rem;     /* 32px - section gaps */
--space-12: 3rem;    /* 48px - major breaks */
--space-16: 4rem;    /* 64px - page rhythm */
```

### Spacing Rules

| Rule | Implementation |
|------|----------------|
| Use `gap` not margins | `display: flex; gap: var(--space-4)` |
| Consistent padding | Same values on all cards/sections |
| More space between groups | Less space within groups (Gestalt) |
| No arbitrary values | Only use scale tokens |

### Spacing Mistakes

| Mistake | Problem | Fix |
|---------|---------|-----|
| Arbitrary pixel values | Inconsistent rhythm | Use spacing scale only |
| Margin on children | Margin collapse bugs | Use `gap` on parent |
| Equal spacing everywhere | No visual grouping | More between, less within |
| Tight mobile padding | Cramped feeling | Minimum `p-4` on mobile |

---

## Visual Hierarchy

Guide the eye through deliberate contrast.

### Hierarchy Techniques

| Technique | How | Impact |
|-----------|-----|--------|
| **Size** | Hero 3-4x body | Immediate focal point |
| **Weight** | Bold headings, regular body | Scannability |
| **Color** | Primary vs muted | Information layers |
| **Space** | Isolation creates emphasis | Draws attention |
| **Position** | Top-left anchors reading | Natural flow |

### Card Hierarchy Pattern

```
Eyebrow  ← xs, uppercase, muted color
Title    ← xl, semibold, primary color
Body     ← base, secondary color, 1.6 line-height
Action   ← spaced apart, mt-4 minimum
```

---

## Responsive Design

### Breakpoint Strategy

| Breakpoint | Target | Key Changes |
|------------|--------|-------------|
| < 640px | Mobile | Single column, stacked nav, 44px touch targets |
| 640-1024px | Tablet | Two columns, collapsible sidebars |
| 1024-1440px | Desktop | Full layout, hover enabled |
| > 1440px | Wide | Max-width container, prevent ultra-wide lines |

### Fluid Techniques

```css
/* Fluid typography */
h1 { font-size: clamp(2rem, 1.5rem + 2.5vw, 3.5rem); }

/* Fluid spacing */
section { padding-block: clamp(2rem, 1rem + 4vw, 6rem); }

/* Intrinsic grid */
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
  gap: var(--space-6);
}
```

### Responsive Mistakes

| Mistake | Problem | Fix |
|---------|---------|-----|
| No viewport meta | Broken mobile | Add `width=device-width` |
| Fixed widths | Overflow on mobile | Use `max-w-*` and `%` |
| Tiny touch targets | Frustrating taps | Minimum 44x44px |
| Hidden horizontal scroll | Broken layout | Test at 375px width |

---

## Accessibility

Accessibility is not optional.

### Critical Requirements

| Requirement | Implementation | Standard |
|-------------|----------------|----------|
| Color contrast | 4.5:1 normal, 3:1 large | WCAG 2.1 AA |
| Keyboard navigation | Tab order matches visual | WCAG 2.1.1 |
| Focus indicators | Visible `:focus-visible` ring | WCAG 2.4.7 |
| Semantic HTML | `<button>`, `<nav>`, `<main>` | WCAG 1.3.1 |
| Alt text | Descriptive for images | WCAG 1.1.1 |
| Motion safety | `prefers-reduced-motion` | WCAG 2.3.3 |
| Touch targets | 44×44px minimum | WCAG 2.5.8 |

### Focus Styles

```css
:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

/* Remove default only if custom exists */
:focus:not(:focus-visible) {
  outline: none;
}
```

### Motion Safety

```css
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
```

---

## Motion & Animation

Use motion to communicate, not decorate.

### Timing Guidelines

| Interaction | Duration | Easing |
|-------------|----------|--------|
| Button hover | 150ms | ease-out |
| Modal open | 250ms | ease-out |
| Modal close | 200ms | ease-in |
| Page transition | 300ms | ease-in-out |
| Stagger delay | 50-80ms per item | — |
| Micro-feedback | 100ms | ease-out |

### Staggered Entrance

```css
.item {
  opacity: 0;
  translate: 0 1rem;
  animation: reveal 0.5s ease-out forwards;
}
.item:nth-child(1) { animation-delay: 0ms; }
.item:nth-child(2) { animation-delay: 60ms; }
.item:nth-child(3) { animation-delay: 120ms; }

@keyframes reveal {
  to { opacity: 1; translate: 0 0; }
}
```

### Motion Mistakes

| Mistake | Problem | Fix |
|---------|---------|-----|
| Animating width/height | Performance hit | Use `transform` only |
| > 500ms duration | Feels sluggish | 150-300ms for most |
| Motion everywhere | Overwhelming | Focus on entrances/exits |
| No reduced-motion | Accessibility fail | Always check preference |

---

## Component States

Every interactive element needs clear states.

| State | Visual Treatment |
|-------|------------------|
| **Default** | Base styling |
| **Hover** | Subtle background/shadow shift |
| **Active/Pressed** | Slight inset, reduced shadow |
| **Focus** | High-visibility ring |
| **Disabled** | 50% opacity, `not-allowed` cursor |
| **Loading** | Spinner or skeleton |

### Button Example

```css
.btn {
  transition: all 150ms ease-out;
}
.btn:hover {
  background: var(--color-primary-600);
}
.btn:active {
  transform: scale(0.98);
}
.btn:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}
.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
```

---

## Design Tokens Architecture

Structure tokens in three layers:

```css
/* Layer 1: Primitives */
--blue-500: oklch(0.55 0.2 250);
--gray-100: oklch(0.95 0.005 250);
--radius-md: 0.5rem;

/* Layer 2: Semantic */
--color-primary: var(--blue-500);
--color-surface: var(--gray-100);
--radius-button: var(--radius-md);

/* Layer 3: Component */
--btn-bg: var(--color-primary);
--btn-radius: var(--radius-button);
--btn-padding: var(--space-2) var(--space-4);
```

This allows theme switching by remapping Layer 2 only.

---

## Pre-Delivery Checklist

### Typography
- [ ] Intentional font pairing (not system defaults)
- [ ] Consistent type scale
- [ ] Line length ≤ 75 characters
- [ ] 16px minimum body text

### Color
- [ ] Cohesive palette (3-5 colors)
- [ ] WCAG contrast met (4.5:1 normal, 3:1 large)
- [ ] Semantic colors defined
- [ ] Dark mode tested (if applicable)

### Spacing
- [ ] Consistent rhythm using scale
- [ ] No arbitrary pixel values
- [ ] Proper mobile padding

### Hierarchy
- [ ] Clear visual flow
- [ ] Primary action obvious
- [ ] Information layered by importance

### Responsive
- [ ] Mobile tested (375px)
- [ ] No horizontal overflow
- [ ] Touch targets ≥ 44px

### Accessibility
- [ ] Keyboard navigable
- [ ] Focus visible
- [ ] Screen reader tested
- [ ] Motion-safe

### States
- [ ] Hover on all interactive elements
- [ ] Focus-visible on all focusable
- [ ] Loading states for async
- [ ] Error states for forms

### Performance
- [ ] Images optimized (WebP, srcset)
- [ ] Fonts subset
- [ ] Animations use `transform`/`opacity`

---

## NEVER Do

1. **NEVER skip contrast checking** — Test every text/background combination
2. **NEVER use color alone** — Always pair with icons/text for meaning
3. **NEVER remove focus outlines** — Unless replacing with visible alternative
4. **NEVER use arbitrary spacing** — Stick to the scale
5. **NEVER animate layout properties** — Only `transform` and `opacity`
6. **NEVER ignore reduced-motion** — Always check the preference
7. **NEVER center everything** — Left-align body text
8. **NEVER use tiny touch targets** — 44px minimum
9. **NEVER use low-contrast text** — `slate-600` minimum on white
10. **NEVER use generic system fonts** — Choose intentional typography

---

## Related Skills

- `ui-ux-pro-max` — Searchable design databases with CLI
- `frontend-design` — Creative aesthetics, avoiding "AI slop"
- `theme-factory` — Applying themes to artifacts
- `design-system-patterns` — Token architecture and theming

Related Skills

design-system-creation

7
from wpank/ai

Complete workflow for creating distinctive design systems from scratch. Orchestrates aesthetic documentation, token architecture, components, and motion. Use when starting a new design system or refactoring an existing one. Triggers on create design system, design tokens, design system setup, visual identity, theming.

tailwind-design-system

7
from wpank/ai

No description provided.

responsive-design

7
from wpank/ai

No description provided.

frontend-design

7
from wpank/ai

Create distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Focuses on creative direction and memorable design choices.

web-design

7
from wpank/ai

CSS implementation patterns for layout, typography, color, spacing, and responsive design. Complements ui-design (fundamentals) with code-focused examples.

distinctive-design-systems

7
from wpank/ai

Patterns for creating design systems with personality and distinctive aesthetics. Covers aesthetic documentation, color token architecture, typography systems, layered surfaces, and motion. Use when building design systems that go beyond generic templates. Triggers on design system, design tokens, aesthetic, color palette, typography, CSS variables, tailwind config.

design-system-patterns

7
from wpank/ai

Foundational design system architecture — token hierarchies, theming infrastructure, token pipelines, and governance. Use when creating design tokens, implementing theme switching, setting up Style Dictionary, or establishing multi-brand theming. Triggers on design tokens, theme provider, Style Dictionary, token pipeline, multi-brand theming, CSS custom properties architecture.

design-system-components

7
from wpank/ai

Patterns for building design system components using Surface primitives, CVA variants, and consistent styling. Use when building reusable UI components that follow design token architecture. Triggers on Surface component, CVA, class-variance-authority, component variants, design tokens.

api-design-principles

7
from wpank/ai

No description provided.

api-design

7
from wpank/ai

REST and GraphQL API design principles — resource modeling, HTTP semantics, pagination, error handling, HATEOAS, schema design, and DataLoader patterns. Use when designing new APIs, reviewing specs, or establishing team API standards.

schema-markup

7
from wpank/ai

Add, fix, or optimize schema markup and structured data. Use when the user mentions schema markup, structured data, JSON-LD, rich snippets, schema.org, FAQ schema, product schema, review schema, or breadcrumb schema.

prompt-engineering

7
from wpank/ai

Master advanced prompt engineering techniques to maximize LLM performance, reliability, and controllability in production. Use when optimizing prompts, improving LLM outputs, designing production prompt templates, or building AI-powered features.