--- name: ui-design description: | End-to-end UI design workflow: requirements gathering → design system synthesis → HTML+CSS mockup generation → visual verification → iterative refinement. Zero external dependencies. Optional MCP enhancements (RenderLens, AccessLint). Two modes: - Full workflow: phases 0-8 for complex design tasks - Quick mode: skip to code generation for simple requests Command entry points: - /design-audit — quality checks on existing mockup - /design-polish — final refinement pass - /design-critique — UX review with feedback - /design-regen — regenerate with different direction Trigger phrases: - "design a UI", "create a mockup", "build a page" - "make a landing page", "design a dashboard" - "mockup", "design system", "UI design" category: create tags: [ui-design, mockup, html, css, tailwind, design-system, accessibility] disable-model-invocation: true --- # UI Design Skill End-to-end UI design workflow producing production-quality HTML+CSS mockups entirely within Cursor, with zero external tool dependencies. ## Core Principles - **Design intent over defaults**: never settle for generic AI output; every visual choice must trace to user requirements - **Verify visually**: AI must see what it generates whenever possible (browser screenshots) - **Tokens over hardcoded values**: use CSS custom properties with semantic naming, not raw hex - **Restraint over decoration**: less is more; every visual element must earn its place - **Ask, don't assume**: when design direction is ambiguous, STOP and ask the user - **One screen at a time**: generate individual screens, not entire applications at once ## Context Resolution Determine the operating mode based on invocation before any other logic runs. **Project mode** (default — `_docs/` structure exists): - MOCKUPS_DIR: `_docs/02_document/ui_mockups/` **Standalone mode** (explicit input file provided, e.g. `/ui-design @some_brief.md`): - INPUT_FILE: the provided file (treated as design brief) - MOCKUPS_DIR: `_standalone/ui_mockups/` Create MOCKUPS_DIR if it does not exist. Announce the detected mode and resolved path to the user. ## Output Directory All generated artifacts go to `MOCKUPS_DIR`: ``` MOCKUPS_DIR/ ├── DESIGN.md # Generated design system (three-layer tokens) ├── index.html # Main mockup (or named per page) └── [page-name].html # Additional pages if multi-page ``` ## Complexity Detection (Phase 0) Before starting the workflow, classify the request: **Quick mode** — skip to Phase 5 (Code Generation): - Request is a single component or screen - User provides enough style context in their message - `MOCKUPS_DIR/DESIGN.md` already exists - Signals: "just make a...", "quick mockup of...", single component name, less than 2 sentences **Full mode** — run phases 1-8: - Multi-page request - Brand-specific requirements - "design system for...", complex layouts, dashboard/admin panel - No existing DESIGN.md Announce the detected mode to the user. ## Phase 1: Context Check 1. Check for existing project documentation: PRD, design specs, README with design notes 2. Check for existing `MOCKUPS_DIR/DESIGN.md` 3. Check for existing mockups in `MOCKUPS_DIR/` 4. If DESIGN.md exists → announce "Using existing design system" → skip to Phase 5 5. If project docs with design info exist → extract requirements from them, skip to Phase 3 ## Phase 2: Requirements Gathering Use the AskQuestion tool for structured input. Adapt based on what Phase 1 found — only ask for what's missing. **Round 1 — Structural:** Ask using AskQuestion with these questions: - **Page type**: landing, dashboard, form, settings, profile, admin panel, e-commerce, blog, documentation, other - **Target audience**: developers, business users, consumers, internal team, general public - **Platform**: web desktop-first, web mobile-first - **Key sections**: header, hero, sidebar, main content, cards grid, data table, form, footer (allow multiple) **Round 2 — Design Intent:** Ask using AskQuestion with these questions: - **Visual atmosphere**: Airy & spacious / Dense & data-rich / Warm & approachable / Sharp & technical / Luxurious & premium - **Color mood**: Cool blues & grays / Warm earth tones / Bold & vibrant / Monochrome / Dark mode / Let AI choose based on atmosphere / Custom (specify brand colors) - **Typography mood**: Geometric (modern, clean) / Humanist (friendly, readable) / Monospace (technical, code-like) / Serif (editorial, premium) Then ask in free-form: - "Name an app or website whose look you admire" (optional, helps anchor style) - "Any specific content, copy, or data to include?" ## Phase 3: Direction Exploration Generate 2-3 text-based direction summaries. Each direction is 3-5 sentences describing: - Visual approach and mood - Color palette direction (specific hues, not just "blue") - Layout strategy (grid type, density, whitespace approach) - Typography choice (specific font suggestions, not just "sans-serif") Present to user: "Here are 2-3 possible directions. Which resonates? Or describe a blend." Wait for user to pick before proceeding. ## Phase 4: Design System Synthesis Generate `MOCKUPS_DIR/DESIGN.md` using the template from `templates/design-system.md`. The generated DESIGN.md must include all 6 sections: 1. Visual Atmosphere — descriptive mood (never "clean and modern") 2. Color System — three-layer CSS custom properties (primitives → semantic → component) 3. Typography — specific font family, weight hierarchy, size scale with rem values 4. Spacing & Layout — base unit, spacing scale, grid, breakpoints 5. Component Styling Defaults — buttons, cards, inputs, navigation with all states 6. Interaction States — loading, error, empty, hover, focus, disabled patterns Read `references/design-vocabulary.md` for atmosphere descriptors and style vocabulary to use when writing the DESIGN.md. ## Phase 5: Code Generation Construct the generation by combining context from multiple sources: 1. Read `MOCKUPS_DIR/DESIGN.md` for the design system 2. Read `references/components.md` for component best practices relevant to the page type 3. Read `references/anti-patterns.md` for explicit avoidance instructions Generate `MOCKUPS_DIR/[page-name].html` as a single file with: - `` for Tailwind - `