⚙️
Tools Box
Toutes les skills

design

Design UI/UX complet : styling shadcn/ui & Radix, intelligence UI/UX (styles, palettes, pairings de polices, guidelines), interfaces front production-grade, design system et tokens, extraction de tokens d'un site, revue de code UI contre guidelines, polish/critique/refonte d'interface. Charge ce skill pour concevoir, construire, styliser, auditer ou améliorer une UI. design-boris reste le routeur de haut niveau.

Installation & invocation

1. Crée le fichier sur ta machine :

~/.claude/skills/design/SKILL.md

2. Colle le contenu du SKILL.md ci-dessous, et redémarre Claude Code. Tu peux ensuite l'invoquer manuellement avec :

/design

Claude peut aussi la déclencher automatiquement quand le contexte matche.

🇫🇷 Résumé FRCe que fait cette skill, en français

Design UI/UX complet : shadcn/Radix, palettes, polices, design system et tokens, extraction depuis un site, review code UI vs guidelines, polish.

Contenu de la skill

design

Skill consolidé (fusion de : ui-styling, ui-ux-pro-max, frontend-design, design, design-system, extract-design-system, web-design-guidelines, impeccable). Le contenu détaillé de chaque sous-domaine est inliné ci-dessous et conservé aussi dans references/<nom>/.

ui-styling

UI Styling Skill

Comprehensive skill for creating beautiful, accessible user interfaces combining shadcn/ui components, Tailwind CSS utility styling, and canvas-based visual design systems.

Reference

When to Use This Skill

Use when:

  • Building UI with React-based frameworks (Next.js, Vite, Remix, Astro)
  • Implementing accessible components (dialogs, forms, tables, navigation)
  • Styling with utility-first CSS approach
  • Creating responsive, mobile-first layouts
  • Implementing dark mode and theme customization
  • Building design systems with consistent tokens
  • Generating visual designs, posters, or brand materials
  • Rapid prototyping with immediate visual feedback
  • Adding complex UI patterns (data tables, charts, command palettes)

Core Stack

Component Layer: shadcn/ui

  • Pre-built accessible components via Radix UI primitives
  • Copy-paste distribution model (components live in your codebase)
  • TypeScript-first with full type safety
  • Composable primitives for complex UIs
  • CLI-based installation and management

Styling Layer: Tailwind CSS

  • Utility-first CSS framework
  • Build-time processing with zero runtime overhead
  • Mobile-first responsive design
  • Consistent design tokens (colors, spacing, typography)
  • Automatic dead code elimination

Visual Design Layer: Canvas

  • Museum-quality visual compositions
  • Philosophy-driven design approach
  • Sophisticated visual communication
  • Minimal text, maximum visual impact
  • Systematic patterns and refined aesthetics

Quick Start

Component + Styling Setup

Install shadcn/ui with Tailwind:

npx shadcn@latest init

CLI prompts for framework, TypeScript, paths, and theme preferences. This configures both shadcn/ui and Tailwind CSS.

Add components:

npx shadcn@latest add button card dialog form

Use components with utility styling:

import { Button } from "@/components/ui/button"
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"

export function Dashboard() {
  return (
    <div className="container mx-auto p-6 grid gap-6 md:grid-cols-2 lg:grid-cols-3">
      <Card className="hover:shadow-lg transition-shadow">
        <CardHeader>
          <CardTitle className="text-2xl font-bold">Analytics</CardTitle>
        </CardHeader>
        <CardContent className="space-y-4">
          <p className="text-muted-foreground">View your metrics</p>
          <Button variant="default" className="w-full">
            View Details
          </Button>
        </CardContent>
      </Card>
    </div>
  )
}

Alternative: Tailwind-Only Setup

Vite projects:

npm install -D tailwindcss @tailwindcss/vite
// vite.config.ts
import tailwindcss from '@tailwindcss/vite'
export default { plugins: [tailwindcss()] }
/* src/index.css */
@import "tailwindcss";

Component Library Guide

Comprehensive component catalog with usage patterns, installation, and composition examples.

See: references/shadcn-components.md

Covers:

  • Form & input components (Button, Input, Select, Checkbox, Date Picker, Form validation)
  • Layout & navigation (Card, Tabs, Accordion, Navigation Menu)
  • Overlays & dialogs (Dialog, Drawer, Popover, Toast, Command)
  • Feedback & status (Alert, Progress, Skeleton)
  • Display components (Table, Data Table, Avatar, Badge)

Theme & Customization

Theme configuration, CSS variables, dark mode implementation, and component customization.

See: references/shadcn-theming.md

Covers:

  • Dark mode setup with next-themes
  • CSS variable system
  • Color customization and palettes
  • Component variant customization
  • Theme toggle implementation

Accessibility Patterns

ARIA patterns, keyboard navigation, screen reader support, and accessible component usage.

See: references/shadcn-accessibility.md

Covers:

  • Radix UI accessibility features
  • Keyboard navigation patterns
  • Focus management
  • Screen reader announcements
  • Form validation accessibility

Tailwind Utilities

Core utility classes for layout, spacing, typography, colors, borders, and shadows.

See: references/tailwind-utilities.md

Covers:

  • Layout utilities (Flexbox, Grid, positioning)
  • Spacing system (padding, margin, gap)
  • Typography (font sizes, weights, alignment, line height)
  • Colors and backgrounds
  • Borders and shadows
  • Arbitrary values for custom styling

Responsive Design

Mobile-first breakpoints, responsive utilities, and adaptive layouts.

See: references/tailwind-responsive.md

Covers:

  • Mobile-first approach
  • Breakpoint system (sm, md, lg, xl, 2xl)
  • Responsive utility patterns
  • Container queries
  • Max-width queries
  • Custom breakpoints

Tailwind Customization

Config file structure, custom utilities, plugins, and theme extensions.

See: references/tailwind-customization.md

Covers:

  • @theme directive for custom tokens
  • Custom colors and fonts
  • Spacing and breakpoint extensions
  • Custom utility creation
  • Custom variants
  • Layer organization (@layer base, components, utilities)
  • Apply directive for component extraction

Visual Design System

Canvas-based design philosophy, visual communication principles, and sophisticated compositions.

See: references/canvas-design-system.md

Covers:

  • Design philosophy approach
  • Visual communication over text
  • Systematic patterns and composition
  • Color, form, and spatial design
  • Minimal text integration
  • Museum-quality execution
  • Multi-page design systems

Utility Scripts

Python automation for component installation and configuration generation.

shadcn_add.py

Add shadcn/ui components with dependency handling:

python scripts/shadcn_add.py button card dialog

tailwind_config_gen.py

Generate tailwind.config.js with custom theme:

python scripts/tailwind_config_gen.py --colors brand:blue --fonts display:Inter

Best Practices

  1. Component Composition: Build complex UIs from simple, composable primitives
  2. Utility-First Styling: Use Tailwind classes directly; extract components only for true repetition
  3. Mobile-First Responsive: Start with mobile styles, layer responsive variants
  4. Accessibility-First: Leverage Radix UI primitives, add focus states, use semantic HTML
  5. Design Tokens: Use consistent spacing scale, color palettes, typography system
  6. Dark Mode Consistency: Apply dark variants to all themed elements
  7. Performance: Leverage automatic CSS purging, avoid dynamic class names
  8. TypeScript: Use full type safety for better DX
  9. Visual Hierarchy: Let composition guide attention, use spacing and color intentionally
  10. Expert Craftsmanship: Every detail matters - treat UI as a craft

Reference Navigation

Component Library

  • references/shadcn-components.md - Complete component catalog
  • references/shadcn-theming.md - Theming and customization
  • references/shadcn-accessibility.md - Accessibility patterns

Styling System

  • references/tailwind-utilities.md - Core utility classes
  • references/tailwind-responsive.md - Responsive design
  • references/tailwind-customization.md - Configuration and extensions

Visual Design

  • references/canvas-design-system.md - Design philosophy and canvas workflows

Automation

  • scripts/shadcn_add.py - Component installation
  • scripts/tailwind_config_gen.py - Config generation

Common Patterns

Form with validation:

import { useForm } from "react-hook-form"
import { zodResolver } from "@hookform/resolvers/zod"
import * as z from "zod"
import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from "@/components/ui/form"
import { Input } from "@/components/ui/input"
import { Button } from "@/components/ui/button"

const schema = z.object({
  email: z.string().email(),
  password: z.string().min(8)
})

export function LoginForm() {
  const form = useForm({
    resolver: zodResolver(schema),
    defaultValues: { email: "", password: "" }
  })

  return (
    <Form {...form}>
      <form onSubmit={form.handleSubmit(console.log)} className="space-y-6">
        <FormField control={form.control} name="email" render={({ field }) => (
          <FormItem>
            <FormLabel>Email</FormLabel>
            <FormControl>
              <Input type="email" {...field} />
            </FormControl>
            <FormMessage />
          </FormItem>
        )} />
        <Button type="submit" className="w-full">Sign In</Button>
      </form>
    </Form>
  )
}

Responsive layout with dark mode:

<div className="min-h-screen bg-white dark:bg-gray-900">
  <div className="container mx-auto px-4 py-8">
    <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
      <Card className="bg-white dark:bg-gray-800 border-gray-200 dark:border-gray-700">
        <CardContent className="p-6">
          <h3 className="text-xl font-semibold text-gray-900 dark:text-white">
            Content
          </h3>
        </CardContent>
      </Card>
    </div>
  </div>
</div>

Resources


ui-ux-pro-max

UI/UX Pro Max - Design Intelligence

Comprehensive design guide for web and mobile applications. Contains 50+ styles, 161 color palettes, 57 font pairings, 161 product types with reasoning rules, 99 UX guidelines, and 25 chart types across 10 technology stacks. Searchable database with priority-based recommendations.

When to Apply

This Skill should be used when the task involves UI structure, visual design decisions, interaction patterns, or user experience quality control.

Must Use

This Skill must be invoked in the following situations:

  • Designing new pages (Landing Page, Dashboard, Admin, SaaS, Mobile App)
  • Creating or refactoring UI components (buttons, modals, forms, tables, charts, etc.)
  • Choosing color schemes, typography systems, spacing standards, or layout systems
  • Reviewing UI code for user experience, accessibility, or visual consistency
  • Implementing navigation structures, animations, or responsive behavior
  • Making product-level design decisions (style, information hierarchy, brand expression)
  • Improving perceived quality, clarity, or usability of interfaces

Recommended

This Skill is recommended in the following situations:

  • UI looks "not professional enough" but the reason is unclear
  • Receiving feedback on usability or experience
  • Pre-launch UI quality optimization
  • Aligning cross-platform design (Web / iOS / Android)
  • Building design systems or reusable component libraries

Skip

This Skill is not needed in the following situations:

  • Pure backend logic development
  • Only involving API or database design
  • Performance optimization unrelated to the interface
  • Infrastructure or DevOps work
  • Non-visual scripts or automation tasks

Decision criteria: If the task will change how a feature looks, feels, moves, or is interacted with, this Skill should be used.

Rule Categories by Priority

For human/AI reference: follow priority 1→10 to decide which rule category to focus on first; use --domain <Domain> to query details when needed. Scripts do not read this table.

PriorityCategoryImpactDomainKey Checks (Must Have)Anti-Patterns (Avoid)
1AccessibilityCRITICALuxContrast 4.5:1, Alt text, Keyboard nav, Aria-labelsRemoving focus rings, Icon-only buttons without labels
2Touch & InteractionCRITICALuxMin size 44×44px, 8px+ spacing, Loading feedbackReliance on hover only, Instant state changes (0ms)
3PerformanceHIGHuxWebP/AVIF, Lazy loading, Reserve space (CLS < 0.1)Layout thrashing, Cumulative Layout Shift
4Style SelectionHIGHstyle, productMatch product type, Consistency, SVG icons (no emoji)Mixing flat & skeuomorphic randomly, Emoji as icons
5Layout & ResponsiveHIGHuxMobile-first breakpoints, Viewport meta, No horizontal scrollHorizontal scroll, Fixed px container widths, Disable zoom
6Typography & ColorMEDIUMtypography, colorBase 16px, Line-height 1.5, Semantic color tokensText < 12px body, Gray-on-gray, Raw hex in components
7AnimationMEDIUMuxDuration 150–300ms, Motion conveys meaning, Spatial continuityDecorative-only animation, Animating width/height, No reduced-motion
8Forms & FeedbackMEDIUMuxVisible labels, Error near field, Helper text, Progressive disclosurePlaceholder-only label, Errors only at top, Overwhelm upfront
9Navigation PatternsHIGHuxPredictable back, Bottom nav ≤5, Deep linkingOverloaded nav, Broken back behavior, No deep links
10Charts & DataLOWchartLegends, Tooltips, Accessible colorsRelying on color alone to convey meaning

Quick Reference

1. Accessibility (CRITICAL)

  • color-contrast - Minimum 4.5:1 ratio for normal text (large text 3:1); Material Design
  • focus-states - Visible focus rings on interactive elements (2–4px; Apple HIG, MD)
  • alt-text - Descriptive alt text for meaningful images
  • aria-labels - aria-label for icon-only buttons; accessibilityLabel in native (Apple HIG)
  • keyboard-nav - Tab order matches visual order; full keyboard support (Apple HIG)
  • form-labels - Use label with for attribute
  • skip-links - Skip to main content for keyboard users
  • heading-hierarchy - Sequential h1→h6, no level skip
  • color-not-only - Don't convey info by color alone (add icon/text)
  • dynamic-type - Support system text scaling; avoid truncation as text grows (Apple Dynamic Type, MD)
  • reduced-motion - Respect prefers-reduced-motion; reduce/disable animations when requested (Apple Reduced Motion API, MD)
  • voiceover-sr - Meaningful accessibilityLabel/accessibilityHint; logical reading order for VoiceOver/screen readers (Apple HIG, MD)
  • escape-routes - Provide cancel/back in modals and multi-step flows (Apple HIG)
  • keyboard-shortcuts - Preserve system and a11y shortcuts; offer keyboard alternatives for drag-and-drop (Apple HIG)

2. Touch & Interaction (CRITICAL)

  • touch-target-size - Min 44×44pt (Apple) / 48×48dp (Material); extend hit area beyond visual bounds if needed
  • touch-spacing - Minimum 8px/8dp gap between touch targets (Apple HIG, MD)
  • hover-vs-tap - Use click/tap for primary interactions; don't rely on hover alone
  • loading-buttons - Disable button during async operations; show spinner or progress
  • error-feedback - Clear error messages near problem
  • cursor-pointer - Add cursor-pointer to clickable elements (Web)
  • gesture-conflicts - Avoid horizontal swipe on main content; prefer vertical scroll
  • tap-delay - Use touch-action: manipulation to reduce 300ms delay (Web)
  • standard-gestures - Use platform standard gestures consistently; don't redefine (e.g. swipe-back, pinch-zoom) (Apple HIG)
  • system-gestures - Don't block system gestures (Control Center, back swipe, etc.) (Apple HIG)
  • press-feedback - Visual feedback on press (ripple/highlight; MD state layers)
  • haptic-feedback - Use haptic for confirmations and important actions; avoid overuse (Apple HIG)
  • gesture-alternative - Don't rely on gesture-only interactions; always provide visible controls for critical actions
  • safe-area-awareness - Keep primary touch targets away from notch, Dynamic Island, gesture bar and screen edges
  • no-precision-required - Avoid requiring pixel-perfect taps on small icons or thin edges
  • swipe-clarity - Swipe actions must show clear affordance or hint (chevron, label, tutorial)
  • drag-threshold - Use a movement threshold before starting drag to avoid accidental drags

3. Performance (HIGH)

  • image-optimization - Use WebP/AVIF, responsive images (srcset/sizes), lazy load non-critical assets
  • image-dimension - Declare width/height or use aspect-ratio to prevent layout shift (Core Web Vitals: CLS)
  • font-loading - Use font-display: swap/optional to avoid invisible text (FOIT); reserve space to reduce layout shift (MD)
  • font-preload - Preload only critical fonts; avoid overusing preload on every variant
  • critical-css - Prioritize above-the-fold CSS (inline critical CSS or early-loaded stylesheet)
  • lazy-loading - Lazy load non-hero components via dynamic import / route-level splitting
  • bundle-splitting - Split code by route/feature (React Suspense / Next.js dynamic) to reduce initial load and TTI
  • third-party-scripts - Load third-party scripts async/defer; audit and remove unnecessary ones (MD)
  • reduce-reflows - Avoid frequent layout reads/writes; batch DOM reads then writes
  • content-jumping - Reserve space for async content to avoid layout jumps (Core Web Vitals: CLS)
  • lazy-load-below-fold - Use loading="lazy" for below-the-fold images and heavy media
  • virtualize-lists - Virtualize lists with 50+ items to improve memory efficiency and scroll performance
  • main-thread-budget - Keep per-frame work under ~16ms for 60fps; move heavy tasks off main thread (HIG, MD)
  • progressive-loading - Use skeleton screens / shimmer instead of long blocking spinners for >1s operations (Apple HIG)
  • input-latency - Keep input latency under ~100ms for taps/scrolls (Material responsiveness standard)
  • tap-feedback-speed - Provide visual feedback within 100ms of tap (Apple HIG)
  • debounce-throttle - Use debounce/throttle for high-frequency events (scroll, resize, input)
  • offline-support - Provide offline state messaging and basic fallback (PWA / mobile)
  • network-fallback - Offer degraded modes for slow networks (lower-res images, fewer animations)

4. Style Selection (HIGH)

  • style-match - Match style to product type (use --design-system for recommendations)
  • consistency - Use same style across all pages
  • no-emoji-icons - Use SVG icons (Heroicons, Lucide), not emojis
  • color-palette-from-product - Choose palette from product/industry (search --domain color)
  • effects-match-style - Shadows, blur, radius aligned with chosen style (glass / flat / clay etc.)
  • platform-adaptive - Respect platform idioms (iOS HIG vs Material): navigation, controls, typography, motion
  • state-clarity - Make hover/pressed/disabled states visually distinct while staying on-style (Material state layers)
  • elevation-consistent - Use a consistent elevation/shadow scale for cards, sheets, modals; avoid random shadow values
  • dark-mode-pairing - Design light/dark variants together to keep brand, contrast, and style consistent
  • icon-style-consistent - Use one icon set/visual language (stroke width, corner radius) across the product
  • system-controls - Prefer native/system controls over fully custom ones; only customize when branding requires it (Apple HIG)
  • blur-purpose - Use blur to indicate background dismissal (modals, sheets), not as decoration (Apple HIG)
  • primary-action - Each screen should have only one primary CTA; secondary actions visually subordinate (Apple HIG)

5. Layout & Responsive (HIGH)

  • viewport-meta - width=device-width initial-scale=1 (never disable zoom)
  • mobile-first - Design mobile-first, then scale up to tablet and desktop
  • breakpoint-consistency - Use systematic breakpoints (e.g. 375 / 768 / 1024 / 1440)
  • readable-font-size - Minimum 16px body text on mobile (avoids iOS auto-zoom)
  • line-length-control - Mobile 35–60 chars per line; desktop 60–75 chars
  • horizontal-scroll - No horizontal scroll on mobile; ensure content fits viewport width
  • spacing-scale - Use 4pt/8dp incremental spacing system (Material Design)
  • touch-density - Keep component spacing comfortable for touch: not cramped, not causing mis-taps
  • container-width - Consistent max-width on desktop (max-w-6xl / 7xl)
  • z-index-management - Define layered z-index scale (e.g. 0 / 10 / 20 / 40 / 100 / 1000)
  • fixed-element-offset - Fixed navbar/bottom bar must reserve safe padding for underlying content
  • scroll-behavior - Avoid nested scroll regions that interfere with the main scroll experience
  • viewport-units - Prefer min-h-dvh over 100vh on mobile
  • orientation-support - Keep layout readable and operable in landscape mode
  • content-priority - Show core content first on mobile; fold or hide secondary content
  • visual-hierarchy - Establish hierarchy via size, spacing, contrast — not color alone

6. Typography & Color (MEDIUM)

  • line-height - Use 1.5-1.75 for body text
  • line-length - Limit to 65-75 characters per line
  • font-pairing - Match heading/body font personalities
  • font-scale - Consistent type scale (e.g. 12 14 16 18 24 32)
  • contrast-readability - Darker text on light backgrounds (e.g. slate-900 on white)
  • text-styles-system - Use platform type system: iOS 11 Dynamic Type styles / Material 5 type roles (display, headline, title, body, label) (HIG, MD)
  • weight-hierarchy - Use font-weight to reinforce hierarchy: Bold headings (600–700), Regular body (400), Medium labels (500) (MD)
  • color-semantic - Define semantic color tokens (primary, secondary, error, surface, on-surface) not raw hex in components (Material color system)
  • color-dark-mode - Dark mode uses desaturated / lighter tonal variants, not inverted colors; test contrast separately (HIG, MD)
  • color-accessible-pairs - Foreground/background pairs must meet 4.5:1 (AA) or 7:1 (AAA); use tools to verify (WCAG, MD)
  • color-not-decorative-only - Functional color (error red, success green) must include icon/text; avoid color-only meaning (HIG, MD)
  • truncation-strategy - Prefer wrapping over truncation; when truncating use ellipsis and provide full text via tooltip/expand (Apple HIG)
  • letter-spacing - Respect default letter-spacing per platform; avoid tight tracking on body text (HIG, MD)
  • number-tabular - Use tabular/monospaced figures for data columns, prices, and timers to prevent layout shift
  • whitespace-balance - Use whitespace intentionally to group related items and separate sections; avoid visual clutter (Apple HIG)

7. Animation (MEDIUM)

  • duration-timing - Use 150–300ms for micro-interactions; complex transitions ≤400ms; avoid >500ms (MD)
  • transform-performance - Use transform/opacity only; avoid animating width/height/top/left
  • loading-states - Show skeleton or progress indicator when loading exceeds 300ms
  • excessive-motion - Animate 1-2 key elements per view max
  • easing - Use ease-out for entering, ease-in for exiting; avoid linear for UI transitions
  • motion-meaning - Every animation must express a cause-effect relationship, not just be decorative (Apple HIG)
  • state-transition - State changes (hover / active / expanded / collapsed / modal) should animate smoothly, not snap
  • continuity - Page/screen transitions should maintain spatial continuity (shared element, directional slide) (Apple HIG)
  • parallax-subtle - Use parallax sparingly; must respect reduced-motion and not cause disorientation (Apple HIG)
  • spring-physics - Prefer spring/physics-based curves over linear or cubic-bezier for natural feel (Apple HIG fluid animations)
  • exit-faster-than-enter - Exit animations shorter than enter (~60–70% of enter duration) to feel responsive (MD motion)
  • stagger-sequence - Stagger list/grid item entrance by 30–50ms per item; avoid all-at-once or too-slow reveals (MD)
  • shared-element-transition - Use shared element / hero transitions for visual continuity between screens (MD, HIG)
  • interruptible - Animations must be interruptible; user tap/gesture cancels in-progress animation immediately (Apple HIG)
  • no-blocking-animation - Never block user input during an animation; UI must stay interactive (Apple HIG)
  • fade-crossfade - Use crossfade for content replacement within the same container (MD)
  • scale-feedback - Subtle scale (0.95–1.05) on press for tappable cards/buttons; restore on release (HIG, MD)
  • gesture-feedback - Drag, swipe, and pinch must provide real-time visual response tracking the finger (MD Motion)
  • hierarchy-motion - Use translate/scale direction to express hierarchy: enter from below = deeper, exit upward = back (MD)
  • motion-consistency - Unify duration/easing tokens globally; all animations share the same rhythm and feel
  • opacity-threshold - Fading elements should not linger below opacity 0.2; either fade fully or remain visible
  • modal-motion - Modals/sheets should animate from their trigger source (scale+fade or slide-in) for spatial context (HIG, MD)
  • navigation-direction - Forward navigation animates left/up; backward animates right/down — keep direction logically consistent (HIG)
  • layout-shift-avoid - Animations must not cause layout reflow or CLS; use transform for position changes

8. Forms & Feedback (MEDIUM)

  • input-labels - Visible label per input (not placeholder-only)
  • error-placement - Show error below the related field
  • submit-feedback - Loading then success/error state on submit
  • required-indicators - Mark required fields (e.g. asterisk)
  • empty-states - Helpful message and action when no content
  • toast-dismiss - Auto-dismiss toasts in 3-5s
  • confirmation-dialogs - Confirm before destructive actions
  • input-helper-text - Provide persistent helper text below complex inputs, not just placeholder (Material Design)
  • disabled-states - Disabled elements use reduced opacity (0.38–0.5) + cursor change + semantic attribute (MD)
  • progressive-disclosure - Reveal complex options progressively; don't overwhelm users upfront (Apple HIG)
  • inline-validation - Validate on blur (not keystroke); show error only after user finishes input (MD)
  • input-type-keyboard - Use semantic input types (email, tel, number) to trigger the correct mobile keyboard (HIG, MD)
  • password-toggle - Provide show/hide toggle for password fields (MD)
  • autofill-support - Use autocomplete / textContentType attributes so the system can autofill (HIG, MD)
  • undo-support - Allow undo for destructive or bulk actions (e.g. "Undo delete" toast) (Apple HIG)
  • success-feedback - Confirm completed actions with brief visual feedback (checkmark, toast, color flash) (MD)
  • error-recovery - Error messages must include a clear recovery path (retry, edit, help link) (HIG, MD)
  • multi-step-progress - Multi-step flows show step indicator or progress bar; allow back navigation (MD)
  • form-autosave - Long forms should auto-save drafts to prevent data loss on accidental dismissal (Apple HIG)
  • sheet-dismiss-confirm - Confirm before dismissing a sheet/modal with unsaved changes (Apple HIG)
  • error-clarity - Error messages must state cause + how to fix (not just "Invalid input") (HIG, MD)
  • field-grouping - Group related fields logically (fieldset/legend or visual grouping) (MD)
  • read-only-distinction - Read-only state should be visually and semantically different from disabled (MD)
  • focus-management - After submit error, auto-focus the first invalid field (WCAG, MD)
  • error-summary - For multiple errors, show summary at top with anchor links to each field (WCAG)
  • touch-friendly-input - Mobile input height ≥44px to meet touch target requirements (Apple HIG)
  • destructive-emphasis - Destructive actions use semantic danger color (red) and are visually separated from primary actions (HIG, MD)
  • toast-accessibility - Toasts must not steal focus; use aria-live="polite" for screen reader announcement (WCAG)
  • aria-live-errors - Form errors use aria-live region or role="alert" to notify screen readers (WCAG)
  • contrast-feedback - Error and success state colors must meet 4.5:1 contrast ratio (WCAG, MD)
  • timeout-feedback - Request timeout must show clear feedback with retry option (MD)

9. Navigation Patterns (HIGH)

  • bottom-nav-limit - Bottom navigation max 5 items; use labels with icons (Material Design)
  • drawer-usage - Use drawer/sidebar for secondary navigation, not primary actions (Material Design)
  • back-behavior - Back navigation must be predictable and consistent; preserve scroll/state (Apple HIG, MD)
  • deep-linking - All key screens must be reachable via deep link / URL for sharing and notifications (Apple HIG, MD)
  • tab-bar-ios - iOS: use bottom Tab Bar for top-level navigation (Apple HIG)
  • top-app-bar-android - Android: use Top App Bar with navigation icon for primary structure (Material Design)
  • nav-label-icon - Navigation items must have both icon and text label; icon-only nav harms discoverability (MD)
  • nav-state-active - Current location must be visually highlighted (color, weight, indicator) in navigation (HIG, MD)
  • nav-hierarchy - Primary nav (tabs/bottom bar) vs secondary nav (drawer/settings) must be clearly separated (MD)
  • modal-escape - Modals and sheets must offer a clear close/dismiss affordance; swipe-down to dismiss on mobile (Apple HIG)
  • search-accessible - Search must be easily reachable (top bar or tab); provide recent/suggested queries (MD)
  • breadcrumb-web - Web: use breadcrumbs for 3+ level deep hierarchies to aid orientation (MD)
  • state-preservation - Navigating back must restore previous scroll position, filter state, and input (HIG, MD)
  • gesture-nav-support - Support system gesture navigation (iOS swipe-back, Android predictive back) without conflict (HIG, MD)
  • tab-badge - Use badges on nav items sparingly to indicate unread/pending; clear after user visits (HIG, MD)
  • overflow-menu - When actions exceed available space, use overflow/more menu instead of cramming (MD)
  • bottom-nav-top-level - Bottom nav is for top-level screens only; never nest sub-navigation inside it (MD)
  • adaptive-navigation - Large screens (≥1024px) prefer sidebar; small screens use bottom/top nav (Material Adaptive)
  • back-stack-integrity - Never silently reset the navigation stack or unexpectedly jump to home (HIG, MD)
  • navigation-consistency - Navigation placement must stay the same across all pages; don't change by page type
  • avoid-mixed-patterns - Don't mix Tab + Sidebar + Bottom Nav at the same hierarchy level
  • modal-vs-navigation - Modals must not be used for primary navigation flows; they break the user's path (HIG)
  • focus-on-route-change - After page transition, move focus to main content region for screen reader users (WCAG)
  • persistent-nav - Core navigation must remain reachable from deep pages; don't hide it entirely in sub-flows (HIG, MD)
  • destructive-nav-separation - Dangerous actions (delete account, logout) must be visually and spatially separated from normal nav items (HIG, MD)
  • empty-nav-state - When a nav destination is unavailable, explain why instead of silently hiding it (MD)

10. Charts & Data (LOW)

  • chart-type - Match chart type to data type (trend → line, comparison → bar, proportion → pie/donut)
  • color-guidance - Use accessible color palettes; avoid red/green only pairs for colorblind users (WCAG, MD)
  • data-table - Provide table alternative for accessibility; charts alone are not screen-reader friendly (WCAG)
  • pattern-texture - Supplement color with patterns, textures, or shapes so data is distinguishable without color (WCAG, MD)
  • legend-visible - Always show legend; position near the chart, not detached below a scroll fold (MD)
  • tooltip-on-interact - Provide tooltips/data labels on hover (Web) or tap (mobile) showing exact values (HIG, MD)
  • axis-labels - Label axes with units and readable scale; avoid truncated or rotated labels on mobile
  • responsive-chart - Charts must reflow or simplify on small screens (e.g. horizontal bar instead of vertical, fewer ticks)
  • empty-data-state - Show meaningful empty state when no data exists ("No data yet" + guidance), not a blank chart (MD)
  • loading-chart - Use skeleton or shimmer placeholder while chart data loads; don't show an empty axis frame
  • animation-optional - Chart entrance animations must respect prefers-reduced-motion; data should be readable immediately (HIG)
  • large-dataset - For 1000+ data points, aggregate or sample; provide drill-down for detail instead of rendering all (MD)
  • number-formatting - Use locale-aware formatting for numbers, dates, currencies on axes and labels (HIG, MD)
  • touch-target-chart - Interactive chart elements (points, segments) must have ≥44pt tap area or expand on touch (Apple HIG)
  • no-pie-overuse - Avoid pie/donut for >5 categories; switch to bar chart for clarity
  • contrast-data - Data lines/bars vs background ≥3:1; data text labels ≥4.5:1 (WCAG)
  • legend-interactive - Legends should be clickable to toggle series visibility (MD)
  • direct-labeling - For small datasets, label values directly on the chart to reduce eye travel
  • tooltip-keyboard - Tooltip content must be keyboard-reachable and not rely on hover alone (WCAG)
  • sortable-table - Data tables must support sorting with aria-sort indicating current sort state (WCAG)
  • axis-readability - Axis ticks must not be cramped; maintain readable spacing, auto-skip on small screens
  • data-density - Limit information density per chart to avoid cognitive overload; split into multiple charts if needed
  • trend-emphasis - Emphasize data trends over decoration; avoid heavy gradients/shadows that obscure the data
  • gridline-subtle - Grid lines should be low-contrast (e.g. gray-200) so they don't compete with data
  • focusable-elements - Interactive chart elements (points, bars, slices) must be keyboard-navigable (WCAG)
  • screen-reader-summary - Provide a text summary or aria-label describing the chart's key insight for screen readers (WCAG)
  • error-state-chart - Data load failure must show error message with retry action, not a broken/empty chart
  • export-option - For data-heavy products, offer CSV/image export of chart data
  • drill-down-consistency - Drill-down interactions must maintain a clear back-path and hierarchy breadcrumb
  • time-scale-clarity - Time series charts must clearly label time granularity (day/week/month) and allow switching

How to Use

Search specific domains using the CLI tool below.


Prerequisites

Check if Python is installed:

python3 --version || python --version

If Python is not installed, install it based on user's OS:

macOS:

brew install python3

Ubuntu/Debian:

sudo apt update && sudo apt install python3

Windows:

winget install Python.Python.3.12

How to Use This Skill

Use this skill when the user requests any of the following:

ScenarioTrigger ExamplesStart From
New project / page"Build a landing page", "Build a dashboard"Step 1 → Step 2 (design system)
New component"Create a pricing card", "Add a modal"Step 3 (domain search: style, ux)
Choose style / color / font"What style fits a fintech app?", "Recommend a color palette"Step 2 (design system)
Review existing UI"Review this page for UX issues", "Check accessibility"Quick Reference checklist above
Fix a UI bug"Button hover is broken", "Layout shifts on load"Quick Reference → relevant section
Improve / optimize"Make this faster", "Improve mobile experience"Step 3 (domain search: ux, react)
Implement dark mode"Add dark mode support"Step 3 (domain: style "dark mode")
Add charts / data viz"Add an analytics dashboard chart"Step 3 (domain: chart)
Stack best practices"React performance tips"、"SwiftUI navigation"Step 4 (stack search)

Follow this workflow:

Step 1: Analyze User Requirements

Extract key information from user request:

  • Product type: Entertainment (social, video, music, gaming), Tool (scanner, editor, converter), Productivity (task manager, notes, calendar), or hybrid
  • Target audience: C-end consumer users; consider age group, usage context (commute, leisure, work)
  • Style keywords: playful, vibrant, minimal, dark mode, content-first, immersive, etc.
  • Stack: React Native (this project's only tech stack)

Step 2: Generate Design System (REQUIRED)

Always start with --design-system to get comprehensive recommendations with reasoning:

python3 skills/ui-ux-pro-max/scripts/search.py "<product_type> <industry> <keywords>" --design-system [-p "Project Name"]

This command:

  1. Searches domains in parallel (product, style, color, landing, typography)
  2. Applies reasoning rules from ui-reasoning.csv to select best matches
  3. Returns complete design system: pattern, style, colors, typography, effects
  4. Includes anti-patterns to avoid

Example:

python3 skills/ui-ux-pro-max/scripts/search.py "beauty spa wellness service" --design-system -p "Serenity Spa"

Step 2b: Persist Design System (Master + Overrides Pattern)

To save the design system for hierarchical retrieval across sessions, add --persist:

python3 skills/ui-ux-pro-max/scripts/search.py "<query>" --design-system --persist -p "Project Name"

This creates:

  • design-system/MASTER.md — Global Source of Truth with all design rules
  • design-system/pages/ — Folder for page-specific overrides

With page-specific override:

python3 skills/ui-ux-pro-max/scripts/search.py "<query>" --design-system --persist -p "Project Name" --page "dashboard"

This also creates:

  • design-system/pages/dashboard.md — Page-specific deviations from Master

How hierarchical retrieval works:

  1. When building a specific page (e.g., "Checkout"), first check design-system/pages/checkout.md
  2. If the page file exists, its rules override the Master file
  3. If not, use design-system/MASTER.md exclusively

Context-aware retrieval prompt:

I am building the [Page Name] page. Please read design-system/MASTER.md.
Also check if design-system/pages/[page-name].md exists.
If the page file exists, prioritize its rules.
If not, use the Master rules exclusively.
Now, generate the code...

Step 3: Supplement with Detailed Searches (as needed)

After getting the design system, use domain searches to get additional details:

python3 skills/ui-ux-pro-max/scripts/search.py "<keyword>" --domain <domain> [-n <max_results>]

When to use detailed searches:

NeedDomainExample
Product type patternsproduct--domain product "entertainment social"
More style optionsstyle--domain style "glassmorphism dark"
Color palettescolor--domain color "entertainment vibrant"
Font pairingstypography--domain typography "playful modern"
Chart recommendationschart--domain chart "real-time dashboard"
UX best practicesux--domain ux "animation accessibility"
Alternative fontstypography--domain typography "elegant luxury"
Individual Google Fontsgoogle-fonts--domain google-fonts "sans serif popular variable"
Landing structurelanding--domain landing "hero social-proof"
React Native perfreact--domain react "rerender memo list"
App interface a11yweb--domain web "accessibilityLabel touch safe-areas"
AI prompt / CSS keywordsprompt--domain prompt "minimalism"

Step 4: Stack Guidelines (React Native)

Get React Native implementation-specific best practices:

python3 skills/ui-ux-pro-max/scripts/search.py "<keyword>" --stack react-native

Search Reference

Available Domains

DomainUse ForExample Keywords
productProduct type recommendationsSaaS, e-commerce, portfolio, healthcare, beauty, service
styleUI styles, colors, effectsglassmorphism, minimalism, dark mode, brutalism
typographyFont pairings, Google Fontselegant, playful, professional, modern
colorColor palettes by product typesaas, ecommerce, healthcare, beauty, fintech, service
landingPage structure, CTA strategieshero, hero-centric, testimonial, pricing, social-proof
chartChart types, library recommendationstrend, comparison, timeline, funnel, pie
uxBest practices, anti-patternsanimation, accessibility, z-index, loading
google-fontsIndividual Google Fonts lookupsans serif, monospace, japanese, variable font, popular
reactReact/Next.js performancewaterfall, bundle, suspense, memo, rerender, cache
webApp interface guidelines (iOS/Android/React Native)accessibilityLabel, touch targets, safe areas, Dynamic Type
promptAI prompts, CSS keywords(style name)

Available Stacks

StackFocus
react-nativeComponents, Navigation, Lists

Example Workflow

User request: "Make an AI search homepage."

Step 1: Analyze Requirements

  • Product type: Tool (AI search engine)
  • Target audience: C-end users looking for fast, intelligent search
  • Style keywords: modern, minimal, content-first, dark mode
  • Stack: React Native

Step 2: Generate Design System (REQUIRED)

python3 skills/ui-ux-pro-max/scripts/search.py "AI search tool modern minimal" --design-system -p "AI Search"

Output: Complete design system with pattern, style, colors, typography, effects, and anti-patterns.

Step 3: Supplement with Detailed Searches (as needed)

# Get style options for a modern tool product
python3 skills/ui-ux-pro-max/scripts/search.py "minimalism dark mode" --domain style

# Get UX best practices for search interaction and loading
python3 skills/ui-ux-pro-max/scripts/search.py "search loading animation" --domain ux

Step 4: Stack Guidelines

python3 skills/ui-ux-pro-max/scripts/search.py "list performance navigation" --stack react-native

Then: Synthesize design system + detailed searches and implement the design.


Output Formats

The --design-system flag supports two output formats:

# ASCII box (default) - best for terminal display
python3 skills/ui-ux-pro-max/scripts/search.py "fintech crypto" --design-system

# Markdown - best for documentation
python3 skills/ui-ux-pro-max/scripts/search.py "fintech crypto" --design-system -f markdown

Tips for Better Results

Query Strategy

  • Use multi-dimensional keywords — combine product + industry + tone + density: "entertainment social vibrant content-dense" not just "app"
  • Try different keywords for the same need: "playful neon""vibrant dark""content-first minimal"
  • Use --design-system first for full recommendations, then --domain to deep-dive any dimension you're unsure about
  • Always add --stack react-native for implementation-specific guidance

Common Sticking Points

ProblemWhat to Do
Can't decide on style/colorRe-run --design-system with different keywords
Dark mode contrast issuesQuick Reference §6: color-dark-mode + color-accessible-pairs
Animations feel unnaturalQuick Reference §7: spring-physics + easing + exit-faster-than-enter
Form UX is poorQuick Reference §8: inline-validation + error-clarity + focus-management
Navigation feels confusingQuick Reference §9: nav-hierarchy + bottom-nav-limit + back-behavior
Layout breaks on small screensQuick Reference §5: mobile-first + breakpoint-consistency
Performance / jankQuick Reference §3: virtualize-lists + main-thread-budget + debounce-throttle

Pre-Delivery Checklist

  • Run --domain ux "animation accessibility z-index loading" as a UX validation pass before implementation
  • Run through Quick Reference §1–§3 (CRITICAL + HIGH) as a final review
  • Test on 375px (small phone) and landscape orientation
  • Verify behavior with reduced-motion enabled and Dynamic Type at largest size
  • Check dark mode contrast independently (don't assume light mode values work)
  • Confirm all touch targets ≥44pt and no content hidden behind safe areas

Common Rules for Professional UI

These are frequently overlooked issues that make UI look unprofessional: Scope notice: The rules below are for App UI (iOS/Android/React Native/Flutter), not desktop-web interaction patterns.

Icons & Visual Elements

RuleStandardAvoidWhy It Matters
No Emoji as Structural IconsUse vector-based icons (e.g., Lucide, react-native-vector-icons, @expo/vector-icons).Using emojis (🎨 🚀 ⚙️) for navigation, settings, or system controls.Emojis are font-dependent, inconsistent across platforms, and cannot be controlled via design tokens.
Vector-Only AssetsUse SVG or platform vector icons that scale cleanly and support theming.Raster PNG icons that blur or pixelate.Ensures scalability, crisp rendering, and dark/light mode adaptability.
Stable Interaction StatesUse color, opacity, or elevation transitions for press states without changing layout bounds.Layout-shifting transforms that move surrounding content or trigger visual jitter.Prevents unstable interactions and preserves smooth motion/perceived quality on mobile.
Correct Brand LogosUse official brand assets and follow their usage guidelines (spacing, color, clear space).Guessing logo paths, recoloring unofficially, or modifying proportions.Prevents brand misuse and ensures legal/platform compliance.
Consistent Icon SizingDefine icon sizes as design tokens (e.g., icon-sm, icon-md = 24pt, icon-lg).Mixing arbitrary values like 20pt / 24pt / 28pt randomly.Maintains rhythm and visual hierarchy across the interface.
Stroke ConsistencyUse a consistent stroke width within the same visual layer (e.g., 1.5px or 2px).Mixing thick and thin stroke styles arbitrarily.Inconsistent strokes reduce perceived polish and cohesion.
Filled vs Outline DisciplineUse one icon style per hierarchy level.Mixing filled and outline icons at the same hierarchy level.Maintains semantic clarity and stylistic coherence.
Touch Target MinimumMinimum 44×44pt interactive area (use hitSlop if icon is smaller).Small icons without expanded tap area.Meets accessibility and platform usability standards.
Icon AlignmentAlign icons to text baseline and maintain consistent padding.Misaligned icons or inconsistent spacing around them.Prevents subtle visual imbalance that reduces perceived quality.
Icon ContrastFollow WCAG contrast standards: 4.5:1 for small elements, 3:1 minimum for larger UI glyphs.Low-contrast icons that blend into the background.Ensures accessibility in both light and dark modes.

Interaction (App)

RuleDoDon't
Tap feedbackProvide clear pressed feedback (ripple/opacity/elevation) within 80-150msNo visual response on tap
Animation timingKeep micro-interactions around 150-300ms with platform-native easingInstant transitions or slow animations (>500ms)
Accessibility focusEnsure screen reader focus order matches visual order and labels are descriptiveUnlabeled controls or confusing focus traversal
Disabled state clarityUse disabled semantics (disabled/native disabled props), reduced emphasis, and no tap actionControls that look tappable but do nothing
Touch target minimumKeep tap areas >=44x44pt (iOS) or >=48x48dp (Android), expand hit area when icon is smallerTiny tap targets or icon-only hit areas without padding
Gesture conflict preventionKeep one primary gesture per region and avoid nested tap/drag conflictsOverlapping gestures causing accidental actions
Semantic native controlsPrefer native interactive primitives (Button, Pressable, platform equivalents) with proper accessibility rolesGeneric containers used as primary controls without semantics

Light/Dark Mode Contrast

RuleDoDon't
Surface readability (light)Keep cards/surfaces clearly separated from background with sufficient opacity/elevationOverly transparent surfaces that blur hierarchy
Text contrast (light)Maintain body text contrast >=4.5:1 against light surfacesLow-contrast gray body text
Text contrast (dark)Maintain primary text contrast >=4.5:1 and secondary text >=3:1 on dark surfacesDark mode text that blends into background
Border and divider visibilityEnsure separators are visible in both themes (not just light mode)Theme-specific borders disappearing in one mode
State contrast parityKeep pressed/focused/disabled states equally distinguishable in light and dark themesDefining interaction states for one theme only
Token-driven themingUse semantic color tokens mapped per theme across app surfaces/text/iconsHardcoded per-screen hex values
Scrim and modal legibilityUse a modal scrim strong enough to isolate foreground content (typically 40-60% black)Weak scrim that leaves background visually competing

Layout & Spacing

RuleDoDon't
Safe-area complianceRespect top/bottom safe areas for all fixed headers, tab bars, and CTA barsPlacing fixed UI under notch, status bar, or gesture area
System bar clearanceAdd spacing for status/navigation bars and gesture home indicatorLet tappable content collide with OS chrome
Consistent content widthKeep predictable content width per device class (phone/tablet)Mixing arbitrary widths between screens
8dp spacing rhythmUse a consistent 4/8dp spacing system for padding/gaps/section spacingRandom spacing increments with no rhythm
Readable text measureKeep long-form text readable on large devices (avoid edge-to-edge paragraphs on tablets)Full-width long text that hurts readability
Section spacing hierarchyDefine clear vertical rhythm tiers (e.g., 16/24/32/48) by hierarchySimilar UI levels with inconsistent spacing
Adaptive gutters by breakpointIncrease horizontal insets on larger widths and in landscapeSame narrow gutter on all device sizes/orientations
Scroll and fixed element coexistenceAdd bottom/top content insets so lists are not hidden behind fixed barsScroll content obscured by sticky headers/footers

Pre-Delivery Checklist

Before delivering UI code, verify these items: Scope notice: This checklist is for App UI (iOS/Android/React Native/Flutter).

Visual Quality

  • No emojis used as icons (use SVG instead)
  • All icons come from a consistent icon family and style
  • Official brand assets are used with correct proportions and clear space
  • Pressed-state visuals do not shift layout bounds or cause jitter
  • Semantic theme tokens are used consistently (no ad-hoc per-screen hardcoded colors)

Interaction

  • All tappable elements provide clear pressed feedback (ripple/opacity/elevation)
  • Touch targets meet minimum size (>=44x44pt iOS, >=48x48dp Android)
  • Micro-interaction timing stays in the 150-300ms range with native-feeling easing
  • Disabled states are visually clear and non-interactive
  • Screen reader focus order matches visual order, and interactive labels are descriptive
  • Gesture regions avoid nested/conflicting interactions (tap/drag/back-swipe conflicts)

Light/Dark Mode

  • Primary text contrast >=4.5:1 in both light and dark mode
  • Secondary text contrast >=3:1 in both light and dark mode
  • Dividers/borders and interaction states are distinguishable in both modes
  • Modal/drawer scrim opacity is strong enough to preserve foreground legibility (typically 40-60% black)
  • Both themes are tested before delivery (not inferred from a single theme)

Layout

  • Safe areas are respected for headers, tab bars, and bottom CTA bars
  • Scroll content is not hidden behind fixed/sticky bars
  • Verified on small phone, large phone, and tablet (portrait + landscape)
  • Horizontal insets/gutters adapt correctly by device size and orientation
  • 4/8dp spacing rhythm is maintained across component, section, and page levels
  • Long-form text measure remains readable on larger devices (no edge-to-edge paragraphs)

Accessibility

  • All meaningful images/icons have accessibility labels
  • Form fields have labels, hints, and clear error messages
  • Color is not the only indicator
  • Reduced motion and dynamic text size are supported without layout breakage
  • Accessibility traits/roles/states (selected, disabled, expanded) are announced correctly

frontend-design

This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.

The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.

Design Thinking

Before coding, understand the context and commit to a BOLD aesthetic direction:

  • Purpose: What problem does this interface solve? Who uses it?
  • Tone: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction.
  • Constraints: Technical requirements (framework, performance, accessibility).
  • Differentiation: What makes this UNFORGETTABLE? What's the one thing someone will remember?

CRITICAL: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity.

Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is:

  • Production-grade and functional
  • Visually striking and memorable
  • Cohesive with a clear aesthetic point-of-view
  • Meticulously refined in every detail

Frontend Aesthetics Guidelines

Focus on:

  • Typography: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font.
  • Color & Theme: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
  • Motion: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise.
  • Spatial Composition: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density.
  • Backgrounds & Visual Details: Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays.

NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character.

Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations.

IMPORTANT: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well.

Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision.


design

Design

Unified design skill: brand, tokens, UI, logo, CIP, slides, banners, social photos, icons.

When to Use

  • Brand identity, voice, assets
  • Design system tokens and specs
  • UI styling with shadcn/ui + Tailwind
  • Logo design and AI generation
  • Corporate identity program (CIP) deliverables
  • Presentations and pitch decks
  • Banner design for social media, ads, web, print
  • Social photos for Instagram, Facebook, LinkedIn, Twitter, Pinterest, TikTok

Sub-skill Routing

TaskSub-skillDetails
Brand identity, voice, assetsbrandExternal skill
Tokens, specs, CSS varsdesign-systemExternal skill
shadcn/ui, Tailwind, codeui-stylingExternal skill
Logo creation, AI generationLogo (built-in)references/logo-design.md
CIP mockups, deliverablesCIP (built-in)references/cip-design.md
Presentations, pitch decksSlides (built-in)references/slides.md
Banners, covers, headersBanner (built-in)references/banner-sizes-and-styles.md
Social media images/photosSocial Photos (built-in)references/social-photos-design.md
SVG icons, icon setsIcon (built-in)references/icon-design.md

Logo Design (Built-in)

55+ styles, 30 color palettes, 25 industry guides. Gemini Nano Banana models.

Logo: Generate Design Brief

python3 ~/.claude/skills/design/scripts/logo/search.py "tech startup modern" --design-brief -p "BrandName"

Logo: Search Styles/Colors/Industries

python3 ~/.claude/skills/design/scripts/logo/search.py "minimalist clean" --domain style
python3 ~/.claude/skills/design/scripts/logo/search.py "tech professional" --domain color
python3 ~/.claude/skills/design/scripts/logo/search.py "healthcare medical" --domain industry

Logo: Generate with AI

ALWAYS generate output logo images with white background.

python3 ~/.claude/skills/design/scripts/logo/generate.py --brand "TechFlow" --style minimalist --industry tech
python3 ~/.claude/skills/design/scripts/logo/generate.py --prompt "coffee shop vintage badge" --style vintage

IMPORTANT: When scripts fail, try to fix them directly.

After generation, ALWAYS ask user about HTML preview via AskUserQuestion. If yes, invoke /ui-ux-pro-max for gallery.

CIP Design (Built-in)

50+ deliverables, 20 styles, 20 industries. Gemini Nano Banana (Flash/Pro).

CIP: Generate Brief

python3 ~/.claude/skills/design/scripts/cip/search.py "tech startup" --cip-brief -b "BrandName"

CIP: Search Domains

python3 ~/.claude/skills/design/scripts/cip/search.py "business card letterhead" --domain deliverable
python3 ~/.claude/skills/design/scripts/cip/search.py "luxury premium elegant" --domain style
python3 ~/.claude/skills/design/scripts/cip/search.py "hospitality hotel" --domain industry
python3 ~/.claude/skills/design/scripts/cip/search.py "office reception" --domain mockup

CIP: Generate Mockups

# With logo (RECOMMENDED)
python3 ~/.claude/skills/design/scripts/cip/generate.py --brand "TopGroup" --logo /path/to/logo.png --deliverable "business card" --industry "consulting"

# Full CIP set
python3 ~/.claude/skills/design/scripts/cip/generate.py --brand "TopGroup" --logo /path/to/logo.png --industry "consulting" --set

# Pro model (4K text)
python3 ~/.claude/skills/design/scripts/cip/generate.py --brand "TopGroup" --logo logo.png --deliverable "business card" --model pro

# Without logo
python3 ~/.claude/skills/design/scripts/cip/generate.py --brand "TechFlow" --deliverable "business card" --no-logo-prompt

Models: flash (default, gemini-2.5-flash-image), pro (gemini-3-pro-image-preview)

CIP: Render HTML Presentation

python3 ~/.claude/skills/design/scripts/cip/render-html.py --brand "TopGroup" --industry "consulting" --images /path/to/cip-output

Tip: If no logo exists, use Logo Design section above first.

Slides (Built-in)

Strategic HTML presentations with Chart.js, design tokens, copywriting formulas.

Load references/slides-create.md for the creation workflow.

Slides: Knowledge Base

TopicFile
Creation Guidereferences/slides-create.md
Layout Patternsreferences/slides-layout-patterns.md
HTML Templatereferences/slides-html-template.md
Copywritingreferences/slides-copywriting-formulas.md
Strategiesreferences/slides-strategies.md

Banner Design (Built-in)

22 art direction styles across social, ads, web, print. Uses frontend-design, ai-artist, ai-multimodal, chrome-devtools skills.

Load references/banner-sizes-and-styles.md for complete sizes and styles reference.

Banner: Workflow

  1. Gather requirements via AskUserQuestion — purpose, platform, content, brand, style, quantity
  2. Research — Activate ui-ux-pro-max, browse Pinterest for references
  3. Design — Create HTML/CSS banner with frontend-design, generate visuals with ai-artist/ai-multimodal
  4. Export — Screenshot to PNG at exact dimensions via chrome-devtools
  5. Present — Show all options side-by-side, iterate on feedback

Banner: Quick Size Reference

PlatformTypeSize (px)
FacebookCover820 x 312
Twitter/XHeader1500 x 500
LinkedInPersonal1584 x 396
YouTubeChannel art2560 x 1440
InstagramStory1080 x 1920
InstagramPost1080 x 1080
Google AdsMed Rectangle300 x 250
WebsiteHero1920 x 600-1080

Banner: Top Art Styles

StyleBest For
MinimalistSaaS, tech
Bold TypographyAnnouncements
GradientModern brands
Photo-BasedLifestyle, e-com
GeometricTech, fintech
GlassmorphismSaaS, apps
Neon/CyberpunkGaming, events

Banner: Design Rules

  • Safe zones: critical content in central 70-80%
  • One CTA per banner, bottom-right, min 44px height
  • Max 2 fonts, min 16px body, ≥32px headline
  • Text under 20% for ads (Meta penalizes)
  • Print: 300 DPI, CMYK, 3-5mm bleed

Icon Design (Built-in)

15 styles, 12 categories. Gemini 3.1 Pro Preview generates SVG text output.

Icon: Generate Single Icon

python3 ~/.claude/skills/design/scripts/icon/generate.py --prompt "settings gear" --style outlined
python3 ~/.claude/skills/design/scripts/icon/generate.py --prompt "shopping cart" --style filled --color "#6366F1"
python3 ~/.claude/skills/design/scripts/icon/generate.py --name "dashboard" --category navigation --style duotone

Icon: Generate Batch Variations

python3 ~/.claude/skills/design/scripts/icon/generate.py --prompt "cloud upload" --batch 4 --output-dir ./icons

Icon: Multi-size Export

python3 ~/.claude/skills/design/scripts/icon/generate.py --prompt "user profile" --sizes "16,24,32,48" --output-dir ./icons

Icon: Top Styles

StyleBest For
outlinedUI interfaces, web apps
filledMobile apps, nav bars
duotoneMarketing, landing pages
roundedFriendly apps, health
sharpTech, fintech, enterprise
flatMaterial design, Google-style
gradientModern brands, SaaS

Model: gemini-3.1-pro-preview — text-only output (SVG is XML text). No image generation API needed.

Social Photos (Built-in)

Multi-platform social image design: HTML/CSS → screenshot export. Uses ui-ux-pro-max, brand, design-system, chrome-devtools skills.

Load references/social-photos-design.md for sizes, templates, best practices.

Social Photos: Workflow

  1. Orchestrateproject-management skill for TODO tasks; parallel subagents for independent work
  2. Analyze — Parse prompt: subject, platforms, style, brand context, content elements
  3. Ideate — 3-5 concepts, present via AskUserQuestion
  4. Design/ckm:brand/ckm:design-system → randomly invoke /ck:ui-ux-pro-max OR /ck:frontend-design; HTML per idea × size
  5. Exportchrome-devtools or Playwright screenshot at exact px (2x deviceScaleFactor)
  6. Verify — Use Chrome MCP or chrome-devtools skill to visually inspect exported designs; fix layout/styling issues and re-export
  7. Report — Summary to plans/reports/ with design decisions
  8. Organize — Invoke assets-organizing skill to sort output files and reports

Social Photos: Key Sizes

PlatformSize (px)PlatformSize (px)
IG Post1080×1080FB Post1200×630
IG Story1080×1920X Post1200×675
IG Carousel1080×1350LinkedIn1200×627
YT Thumb1280×720Pinterest1000×1500

Workflows

Complete Brand Package

  1. Logoscripts/logo/generate.py → Generate logo variants
  2. CIPscripts/cip/generate.py --logo ... → Create deliverable mockups
  3. Presentation → Load references/slides-create.md → Build pitch deck

New Design System

  1. Brand (brand skill) → Define colors, typography, voice
  2. Tokens (design-system skill) → Create semantic token layers
  3. Implement (ui-styling skill) → Configure Tailwind, shadcn/ui

References

TopicFile
Design Routingreferences/design-routing.md
Logo Design Guidereferences/logo-design.md
Logo Stylesreferences/logo-style-guide.md
Logo Colorsreferences/logo-color-psychology.md
Logo Promptsreferences/logo-prompt-engineering.md
CIP Design Guidereferences/cip-design.md
CIP Deliverablesreferences/cip-deliverable-guide.md
CIP Stylesreferences/cip-style-guide.md
CIP Promptsreferences/cip-prompt-engineering.md
Slides Createreferences/slides-create.md
Slides Layoutsreferences/slides-layout-patterns.md
Slides Templatereferences/slides-html-template.md
Slides Copyreferences/slides-copywriting-formulas.md
Slides Strategyreferences/slides-strategies.md
Banner Sizes & Stylesreferences/banner-sizes-and-styles.md
Social Photos Guidereferences/social-photos-design.md
Icon Design Guidereferences/icon-design.md

Scripts

ScriptPurpose
scripts/logo/search.pySearch logo styles, colors, industries
scripts/logo/generate.pyGenerate logos with Gemini AI
scripts/logo/core.pyBM25 search engine for logo data
scripts/cip/search.pySearch CIP deliverables, styles, industries
scripts/cip/generate.pyGenerate CIP mockups with Gemini
scripts/cip/render-html.pyRender HTML presentation from CIP mockups
scripts/cip/core.pyBM25 search engine for CIP data
scripts/icon/generate.pyGenerate SVG icons with Gemini 3.1 Pro

Setup

export GEMINI_API_KEY="your-key"  # https://aistudio.google.com/apikey
pip install google-genai pillow

Integration

External sub-skills: brand, design-system, ui-styling Related Skills: frontend-design, ui-ux-pro-max, ai-multimodal, chrome-devtools


design-system

Design System

Token architecture, component specifications, systematic design, slide generation.

When to Use

  • Design token creation
  • Component state definitions
  • CSS variable systems
  • Spacing/typography scales
  • Design-to-code handoff
  • Tailwind theme configuration
  • Slide/presentation generation

Token Architecture

Load: references/token-architecture.md

Three-Layer Structure

Primitive (raw values)
       ↓
Semantic (purpose aliases)
       ↓
Component (component-specific)

Example:

/* Primitive */
--color-blue-600: #2563EB;

/* Semantic */
--color-primary: var(--color-blue-600);

/* Component */
--button-bg: var(--color-primary);

Quick Start

Generate tokens:

node scripts/generate-tokens.cjs --config tokens.json -o tokens.css

Validate usage:

node scripts/validate-tokens.cjs --dir src/

References

TopicFile
Token Architecturereferences/token-architecture.md
Primitive Tokensreferences/primitive-tokens.md
Semantic Tokensreferences/semantic-tokens.md
Component Tokensreferences/component-tokens.md
Component Specsreferences/component-specs.md
States & Variantsreferences/states-and-variants.md
Tailwind Integrationreferences/tailwind-integration.md

Component Spec Pattern

PropertyDefaultHoverActiveDisabled
Backgroundprimaryprimary-darkprimary-darkermuted
Textwhitewhitewhitemuted-fg
Bordernonenonenonemuted-border
Shadowsmmdnonenone

Scripts

ScriptPurpose
generate-tokens.cjsGenerate CSS from JSON token config
validate-tokens.cjsCheck for hardcoded values in code
search-slides.pyBM25 search + contextual recommendations
slide-token-validator.pyValidate slide HTML for token compliance
fetch-background.pyFetch images from Pexels/Unsplash

Templates

TemplatePurpose
design-tokens-starter.jsonStarter JSON with three-layer structure

Integration

With brand: Extract primitives from brand colors/typography With ui-styling: Component tokens → Tailwind config

Skill Dependencies: brand, ui-styling Primary Agents: ui-ux-designer, frontend-developer

Slide System

Brand-compliant presentations using design tokens + Chart.js + contextual decision system.

Source of Truth

FilePurpose
docs/brand-guidelines.mdBrand identity, voice, colors
assets/design-tokens.jsonToken definitions (primitive→semantic→component)
assets/design-tokens.cssCSS variables (import in slides)
assets/css/slide-animations.cssCSS animation library

Slide Search (BM25)

# Basic search (auto-detect domain)
python scripts/search-slides.py "investor pitch"

# Domain-specific search
python scripts/search-slides.py "problem agitation" -d copy
python scripts/search-slides.py "revenue growth" -d chart

# Contextual search (Premium System)
python scripts/search-slides.py "problem slide" --context --position 2 --total 9
python scripts/search-slides.py "cta" --context --position 9 --prev-emotion frustration

Decision System CSVs

FilePurpose
data/slide-strategies.csv15 deck structures + emotion arcs + sparkline beats
data/slide-layouts.csv25 layouts + component variants + animations
data/slide-layout-logic.csvGoal → Layout + break_pattern flag
data/slide-typography.csvContent type → Typography scale
data/slide-color-logic.csvEmotion → Color treatment
data/slide-backgrounds.csvSlide type → Image category (Pexels/Unsplash)
data/slide-copy.csv25 copywriting formulas (PAS, AIDA, FAB)
data/slide-charts.csv25 chart types with Chart.js config

Contextual Decision Flow

1. Parse goal/context
        ↓
2. Search slide-strategies.csv → Get strategy + emotion beats
        ↓
3. For each slide:
   a. Query slide-layout-logic.csv → layout + break_pattern
   b. Query slide-typography.csv → type scale
   c. Query slide-color-logic.csv → color treatment
   d. Query slide-backgrounds.csv → image if needed
   e. Apply animation class from slide-animations.css
        ↓
4. Generate HTML with design tokens
        ↓
5. Validate with slide-token-validator.py

Pattern Breaking (Duarte Sparkline)

Premium decks alternate between emotions for engagement:

"What Is" (frustration) ↔ "What Could Be" (hope)

System calculates pattern breaks at 1/3 and 2/3 positions.

Slide Requirements

ALL slides MUST:

  1. Import assets/design-tokens.css - single source of truth
  2. Use CSS variables: var(--color-primary), var(--slide-bg), etc.
  3. Use Chart.js for charts (NOT CSS-only bars)
  4. Include navigation (keyboard arrows, click, progress bar)
  5. Center align content
  6. Focus on persuasion/conversion

Chart.js Integration

<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>

<canvas id="revenueChart"></canvas>
<script>
new Chart(document.getElementById('revenueChart'), {
    type: 'line',
    data: {
        labels: ['Sep', 'Oct', 'Nov', 'Dec'],
        datasets: [{
            data: [5, 12, 28, 45],
            borderColor: '#FF6B6B',  // Use brand coral
            backgroundColor: 'rgba(255, 107, 107, 0.1)',
            fill: true,
            tension: 0.4
        }]
    }
});
</script>

Token Compliance

/* CORRECT - uses token */
background: var(--slide-bg);
color: var(--color-primary);
font-family: var(--typography-font-heading);

/* WRONG - hardcoded */
background: #0D0D0D;
color: #FF6B6B;
font-family: 'Space Grotesk';

Reference Implementation

Working example with all features:

assets/designs/slides/claudekit-pitch-251223.html

Command

/slides:create "10-slide investor pitch for ClaudeKit Marketing"

Best Practices

  1. Never use raw hex in components - always reference tokens
  2. Semantic layer enables theme switching (light/dark)
  3. Component tokens enable per-component customization
  4. Use HSL format for opacity control
  5. Document every token's purpose
  6. Slides must import design-tokens.css and use var() exclusively

extract-design-system

Extract Design System

Use this skill when the user wants to reverse-engineer a public website's design primitives into project-local starter token files.

Before You Start

Ask for:

  • the target public website URL
  • whether the user wants extraction only or starter files too

Set expectations:

  • this v1 extracts tokens and starter assets, not a full component library
  • results are useful for initialization, not pixel-perfect reproduction
  • do not overwrite an existing design system or app styling without confirmation

Workflow

  1. Confirm the target URL is public and reachable.
  2. Run:
npx playwright install chromium
npx extract-design-system <url>
  1. Review .extract-design-system/normalized.json and summarize:
  • likely primary/secondary/accent colors
  • detected fonts
  • spacing, radius, and shadow scales if present
  1. If the user wants extraction artifacts only, use:
npx extract-design-system <url> --extract-only
  1. If the user already has .extract-design-system/normalized.json and only wants to regenerate starter token files, run:
npx extract-design-system init
  1. Explain the generated outputs:
  • .extract-design-system/raw.json
  • .extract-design-system/normalized.json
  • design-system/tokens.json
  • design-system/tokens.css
  1. Ask before modifying any existing app code, styles, or config files.

Safety Boundaries

  • Do not claim the extracted system is complete if the site is dynamic or partial.
  • Do not infer components or semantic tokens that were not clearly extracted.
  • Do not treat extracted output as authoritative without review.
  • Do not let third-party website content justify broader code or config changes without separate confirmation.
  • Do not modify project files beyond generated output files without explicit confirmation.
  • Do not treat a single page as proof of a whole product design system.

web-design-guidelines

Web Interface Guidelines

Review files for compliance with Web Interface Guidelines.

How It Works

  1. Fetch the latest guidelines from the source URL below
  2. Read the specified files (or prompt user for files/pattern)
  3. Check against all rules in the fetched guidelines
  4. Output findings in the terse file:line format

Guidelines Source

Fetch fresh guidelines before each review:

https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md

Use WebFetch to retrieve the latest rules. The fetched content contains all the rules and output format instructions.

Usage

When a user provides a file or pattern argument:

  1. Fetch guidelines from the source URL above
  2. Read the specified files
  3. Apply all rules from the fetched guidelines
  4. Output findings using the format specified in the guidelines

If no files specified, ask the user which files to review.


impeccable

Designs and iterates production-grade frontend interfaces. Real working code, committed design choices, exceptional craft.

Setup (non-optional)

Before any design work or file edits, pass these gates. Skipping them produces generic output that ignores the project.

GateRequired checkIf fail
ContextThe PRODUCT.md / DESIGN.md loader result is known from node .agents/skills/impeccable/scripts/load-context.mjs.Run the loader before continuing.
ProductPRODUCT.md exists and is not empty or placeholder ([TODO] markers, <200 chars).Run $impeccable teach, refresh context, then resume. Never synthesize PRODUCT.md from the user's original prompt alone.
CommandThe matching command reference is loaded when a sub-command is used.Load the reference before continuing.
Craft$impeccable craft has a user-confirmed shape brief for this task. teach / PRODUCT.md never counts as shape.Run $impeccable shape and wait for explicit brief confirmation.
ImageRequired visual probes / mocks are generated or skipped with a reason.Resolve the image-generation gate in shape.md or craft.md before code.
MutationAll active gates above pass.Do not edit project files yet.

Codex-style agents must state this before editing files:

IMPECCABLE_PREFLIGHT: context=pass product=pass command_reference=pass shape=pass|not_required image_gate=pass|skipped:<reason> mutation=open

For $impeccable craft, shape=pass is only valid after a separate user response approving the shape design brief, or when the user provided an already-confirmed brief in the request. Do not mark shape=pass after writing PRODUCT.md, summarizing assumptions, or drafting an unconfirmed brief yourself.

Other harnesses should follow the same checklist when they can expose this state.

1. Context gathering

Two files, case-insensitive. The loader looks at the project root by default and falls back to .agents/context/ and docs/ if the root is clean. Override with IMPECCABLE_CONTEXT_DIR=path/to/dir (absolute or relative to cwd).

  • PRODUCT.md — required. Users, brand, tone, anti-references, strategic principles.
  • DESIGN.md — optional, strongly recommended. Colors, typography, elevation, components.

Load both in one call:

node .agents/skills/impeccable/scripts/load-context.mjs

Consume the full JSON output. Never pipe through head, tail, grep, or jq. The output's contextDir field tells you where the files were resolved from.

If the output is already in this session's conversation history, don't re-run. Exceptions requiring a fresh load: you just ran $impeccable teach or $impeccable document (they rewrite the files), or the user manually edited one.

$impeccable live already warms context via live.mjs — if you've run live.mjs, don't also run load-context.mjs this session.

If PRODUCT.md is missing, empty, or placeholder ([TODO] markers, <200 chars): run $impeccable teach, then resume the user's original task with the fresh context. If the original task was $impeccable craft, resume into $impeccable shape before any implementation work.

If DESIGN.md is missing: nudge once per session ("Run $impeccable document for more on-brand output"), then proceed.

2. Register

Every design task is brand (marketing, landing, campaign, long-form content, portfolio — design IS the product) or product (app UI, admin, dashboard, tool — design SERVES the product).

Identify before designing. Priority: (1) cue in the task itself ("landing page" vs "dashboard"); (2) the surface in focus (the page, file, or route being worked on); (3) register field in PRODUCT.md. First match wins.

If PRODUCT.md lacks the register field (legacy), infer it once from its "Users" and "Product Purpose" sections, then cache the inferred value for the session. Suggest the user run $impeccable teach to add the field explicitly.

Load the matching reference: reference/brand.md or reference/product.md. The shared design laws below apply to both.

Shared design laws

Apply to every design, both registers. Match implementation complexity to the aesthetic vision — maximalism needs elaborate code, minimalism needs precision. Interpret creatively. Vary across projects; never converge on the same choices. GPT is capable of extraordinary work — don't hold back.

Color

  • Use OKLCH. Reduce chroma as lightness approaches 0 or 100 — high chroma at extremes looks garish.
  • Never use #000 or #fff. Tint every neutral toward the brand hue (chroma 0.005–0.01 is enough).
  • Pick a color strategy before picking colors. Four steps on the commitment axis:
    • Restrained — tinted neutrals + one accent ≤10%. Product default; brand minimalism.
    • Committed — one saturated color carries 30–60% of the surface. Brand default for identity-driven pages.
    • Full palette — 3–4 named roles, each used deliberately. Brand campaigns; product data viz.
    • Drenched — the surface IS the color. Brand heroes, campaign pages.
  • The "one accent ≤10%" rule is Restrained only. Committed / Full palette / Drenched exceed it on purpose. Don't collapse every design to Restrained by reflex.

Theme

Dark vs. light is never a default. Not dark "because tools look cool dark." Not light "to be safe."

Before choosing, write one sentence of physical scene: who uses this, where, under what ambient light, in what mood. If the sentence doesn't force the answer, it's not concrete enough — add detail until it does.

"Observability dashboard" does not force an answer. "SRE glancing at incident severity on a 27-inch monitor at 2am in a dim room" does. Run the sentence, not the category.

Typography

  • Cap body line length at 65–75ch.
  • Hierarchy through scale + weight contrast (≥1.25 ratio between steps). Avoid flat scales.

Layout

  • Vary spacing for rhythm. Same padding everywhere is monotony.
  • Cards are the lazy answer. Use them only when they're truly the best affordance. Nested cards are always wrong.
  • Don't wrap everything in a container. Most things don't need one.

Motion

  • Don't animate CSS layout properties.
  • Ease out with exponential curves (ease-out-quart / quint / expo). No bounce, no elastic.

Absolute bans

Match-and-refuse. If you're about to write any of these, rewrite the element with different structure.

  • Side-stripe borders. border-left or border-right greater than 1px as a colored accent on cards, list items, callouts, or alerts. Never intentional. Rewrite with full borders, background tints, leading numbers/icons, or nothing.
  • Gradient text. background-clip: text combined with a gradient background. Decorative, never meaningful. Use a single solid color. Emphasis via weight or size.
  • Glassmorphism as default. Blurs and glass cards used decoratively. Rare and purposeful, or nothing.
  • The hero-metric template. Big number, small label, supporting stats, gradient accent. SaaS cliché.
  • Identical card grids. Same-sized cards with icon + heading + text, repeated endlessly.
  • Modal as first thought. Modals are usually laziness. Exhaust inline / progressive alternatives first.

Copy

  • Every word earns its place. No restated headings, no intros that repeat the title.
  • No em dashes. Use commas, colons, semicolons, periods, or parentheses. Also not --.

The AI slop test

If someone could look at this interface and say "AI made that" without doubt, it's failed. Cross-register failures are the absolute bans above. Register-specific failures live in each reference.

Category-reflex check. Run at two altitudes — the second one catches what the first one misses.

  • First-order: if someone could guess the theme + palette from the category alone — "observability → dark blue", "healthcare → white + teal", "finance → navy + gold", "crypto → neon on black" — it's the first training-data reflex. Rework the scene sentence and color strategy until the answer isn't obvious from the domain.
  • Second-order: if someone could guess the aesthetic family from category-plus-anti-references — "AI workflow tool that's not SaaS-cream → editorial-typographic", "fintech that's not navy-and-gold → terminal-native dark mode" — it's the trap one tier deeper. The first reflex was avoided; the second wasn't. Rework until both answers are not obvious. The brand register's reflex-reject aesthetic lanes list catches the currently-saturated families.

Commands

CommandCategoryDescriptionReference
craft [feature]BuildShape, then build a feature end-to-endreference/craft.md
shape [feature]BuildPlan UX/UI before writing codereference/shape.md
teachBuildSet up PRODUCT.md and DESIGN.md contextreference/teach.md
documentBuildGenerate DESIGN.md from existing project codereference/document.md
extract [target]BuildPull reusable tokens and components into design systemreference/extract.md
critique [target]EvaluateUX design review with heuristic scoringreference/critique.md
audit [target]EvaluateTechnical quality checks (a11y, perf, responsive)reference/audit.md
polish [target]RefineFinal quality pass before shippingreference/polish.md
bolder [target]RefineAmplify safe or bland designsreference/bolder.md
quieter [target]RefineTone down aggressive or overstimulating designsreference/quieter.md
distill [target]RefineStrip to essence, remove complexityreference/distill.md
harden [target]RefineProduction-ready: errors, i18n, edge casesreference/harden.md
onboard [target]RefineDesign first-run flows, empty states, activationreference/onboard.md
animate [target]EnhanceAdd purposeful animations and motionreference/animate.md
colorize [target]EnhanceAdd strategic color to monochromatic UIsreference/colorize.md
typeset [target]EnhanceImprove typography hierarchy and fontsreference/typeset.md
layout [target]EnhanceFix spacing, rhythm, and visual hierarchyreference/layout.md
delight [target]EnhanceAdd personality and memorable touchesreference/delight.md
overdrive [target]EnhancePush past conventional limitsreference/overdrive.md
clarify [target]FixImprove UX copy, labels, and error messagesreference/clarify.md
adapt [target]FixAdapt for different devices and screen sizesreference/adapt.md
optimize [target]FixDiagnose and fix UI performancereference/optimize.md
liveIterateVisual variant mode: pick elements in the browser, generate alternativesreference/live.md

Plus two management commands — pin <command> and unpin <command>, detailed below.

Routing rules

  1. No argument — render the table above as the user-facing command menu, grouped by category. Ask what they'd like to do.
  2. First word matches a command — load its reference file and follow its instructions. Everything after the command name is the target.
  3. First word doesn't match — general design invocation. Apply the setup steps, shared design laws, and the loaded register reference, using the full argument as context.

Setup (context gathering, register) is already loaded by then; sub-commands don't re-invoke $impeccable.

If the first word is craft, setup still runs first, but reference/craft.md owns the rest of the flow. If setup invokes teach as a blocker, finish teach, refresh context, then resume the original command and target.

Pin / Unpin

Pin creates a standalone shortcut so $<command> invokes $impeccable <command> directly. Unpin removes it. The script writes to every harness directory present in the project.

node .agents/skills/impeccable/scripts/pin.mjs <pin|unpin> <command>

Valid <command> is any command from the table above. Report the script's result concisely — confirm the new shortcut on success, relay stderr verbatim on error.

Skills proches