Stunner — Make It Beautiful
Take a functionally complete project and transform its UI into something visually stunning through a mockup-driven, iterative process.
Philosophy
Show, don't tell. The user sees visual mockups before any code changes. Iterate on the visuals until they're excited. Only then implement.
Mockup Method
All mockups are built as standalone HTML/CSS prototypes — not generated images. Each mockup is a single HTML file with inline CSS, opened in the browser and screenshotted for the user.
Why this approach:
- Fast — generating HTML/CSS is near-instant vs. slow image generation
- Pixel-perfect — real fonts, real spacing, real colors, crisp text
- Iterable — tweak a color or font size and re-screenshot, no full regeneration
- Reusable — the prototype code informs the final implementation directly
Save mockup files to a stunner-mockups/ directory in the project. Name them descriptively (e.g., direction-bold-vibrant.html, page-dashboard.html).
Trigger
The user has a working project and wants to improve the visual design. The app should be functionally sound — stunner focuses on aesthetics, not features.
Workflow
Phase 1: Audit
- Detect the framework — scan for React, Vue, Svelte, Next, Nuxt, Angular, Astro, or plain HTML/CSS. Read config files and dependencies to understand the styling approach (Tailwind, CSS Modules, styled-components, plain CSS, etc.).
- Map the UI surface — identify all pages, layouts, and key components. Build a list:
Pages: Home, Dashboard, Settings, Profile, Login
Shared: Navbar, Sidebar, Footer, Card, Button, Modal, Form
- Screenshot the current state — use browser automation to capture every page as-is. These are the "before" shots.
- Identify the app's personality — what kind of product is this? SaaS dashboard? Consumer app? Developer tool? Portfolio? E-commerce? This informs aesthetic direction.
Present the audit summary and page list to the user. Confirm which pages/components are in scope.
Phase 2: Aesthetic Direction
Present 5-6 visual directions as HTML/CSS prototype mockups of the app's most important screen.
Always include these core directions:
| Direction |
Vibe |
| Bold & Vibrant (default) |
Rich color palette, strong contrast, dynamic layouts, confident typography, energetic feel |
| Modern Minimal |
Generous whitespace, sharp typography, monochromatic with one accent, subtle shadows |
| Dark & Premium |
Dark backgrounds, glowing accents, glassmorphism, sleek and techy |
| Warm & Organic |
Rounded shapes, earthy tones, soft gradients, friendly and approachable |
Plus 2-3 out-of-the-box ideas tailored to the specific product. These should be unexpected, creative directions that push beyond safe choices. Examples:
- Retro terminal — monospace type, green-on-black accents, CRT scan lines, nostalgic hacker aesthetic
- Editorial/magazine — dramatic typography, asymmetric layouts, bold imagery, print-inspired
- Neon brutalist — raw, intentionally rough, oversized type, neon accents, anti-design that still works
- Illustrated/playful — hand-drawn elements, quirky illustrations, bouncy animations, whimsical
- Luxury/fashion — extreme whitespace, thin serif fonts, muted palette, photography-forward
Choose the out-of-the-box options based on what would actually work for the product type. A developer tool might get "retro terminal." A consumer app might get "illustrated/playful." Don't just pick randomly.
For each direction:
- Create a standalone HTML file with inline CSS that renders the app's main screen in that aesthetic
- Use Google Fonts (via CDN link) for typography. Use real CSS for shadows, gradients, border radius, spacing.
- Include realistic content — not lorem ipsum
- Open each in the browser using browser automation and screenshot it
- Save the HTML file to
stunner-mockups/direction-[name].html
Present all directions and ask the user to react:
- Pick one
- Combine elements ("A's colors with C's layout")
- Ask for variations ("like B but warmer")
- Reject all and describe what they want instead
Iterate until the user is satisfied with the direction. No limit on rounds. Modify the HTML/CSS prototype and re-screenshot — this is fast since it's just code changes, not image regeneration.
Phase 3: Brand Vibe
Once the aesthetic direction is locked:
- Suggest a brand personality — 3-5 adjectives that capture the vibe (e.g., "confident, modern, energetic, approachable")
- App name typography — suggest how the app name should be styled (font, weight, treatment)
- Favicon concept — describe a simple favicon that fits the aesthetic, or create one as an SVG
- Color naming — give the palette colors meaningful names that reinforce the brand (not "blue-500" but "electric," "midnight," "ember")
- Voice alignment — suggest whether UI copy should be formal, casual, playful, technical, etc.
Present this as a brand vibe card. The user approves or adjusts.
Phase 4: Design System
Codify the approved direction into a concrete design system:
Colors:
- Primary, secondary, accent palette with hex values
- Semantic colors (success, warning, error, info)
- Neutral scale (backgrounds, borders, text)
- Dark mode variants (not just inverted — properly adjusted)
Typography:
- Font pairing (display/heading font + body font)
- Type scale (hero → h1 → h2 → h3 → body → small → caption) with specific sizes, weights, and line heights
- Letter spacing adjustments per level
Spacing:
- Spacing scale (e.g., 4, 8, 12, 16, 24, 32, 48, 64, 96, 128)
- Component padding conventions
- Section spacing conventions
Shadows:
- Shadow scale (subtle → medium → elevated → floating)
- Shadow color (tinted to match the palette, not plain gray)
Borders:
- Border radius scale (none → sm → md → lg → full)
- Border width and color conventions
Animations:
- Timing curves (ease-out for entrances, ease-in-out for transitions)
- Duration scale (fast: 150ms, normal: 300ms, slow: 500ms)
- Standard animations: fade-in, slide-up, scale-in, hover-lift
Component states:
Define the visual treatment for every interactive state:
- Default → Hover → Active/Pressed → Focus → Disabled → Loading
Save this as a design system file in the project (e.g., DESIGN_SYSTEM.md or framework-appropriate tokens file like theme.ts, tailwind.config extensions, CSS custom properties, etc.).
Present the design system to the user for approval.
Phase 5: Page Mockups
For every page in the scope list from Phase 1:
- Create an HTML/CSS prototype of the page fully redesigned using the approved design system. Save to
stunner-mockups/page-[name].html.
- Open in browser and screenshot — present to the user
- Iterate based on feedback — "make the hero bigger," "I don't like the sidebar here," "can we try a different layout for the cards." Edits are fast — modify the HTML/CSS and re-screenshot.
- No limit on rounds — keep iterating until the user is satisfied with that page
Move to the next page only when the current one is approved.
Prototype quality guidelines:
- Use realistic content, not placeholders
- Include the navigation/chrome so it feels like a real app
- Load the design system's fonts via Google Fonts CDN
- Match the design system's exact color values, spacing scale, and shadow system
- Show the page at desktop resolution (1440px) primarily
- If the user asks, resize the browser viewport and screenshot at mobile/tablet widths too
Shared stylesheet: After the design system is approved in Phase 4, create a stunner-mockups/shared-styles.css with all the design tokens as CSS custom properties. Each page prototype links to this file, ensuring consistency and making iteration even faster (change a token once, all pages update).
After all pages are individually approved, present the full set side by side as a final consistency check. The user should feel like they're looking at a cohesive product, not a collection of unrelated pages.
Phase 6: Implement
Now write the code. For each page:
- Update the design system tokens in code if not already done (first page only)
- Restyle the page to match the approved mockup
- Add component states — hover, focus, active, disabled, loading, empty, error
- Add animations — entrance animations, hover effects, transitions between states
- Open in browser — use browser automation to view the live result
- Screenshot and compare to the approved mockup prototype
- Adjust until the live version matches the mockup
- Present to the user — show the before (from Phase 1) and after side by side
Move to the next page only when the user approves the implementation.
Phase 7: Polish Pass
After all pages are implemented:
- Responsive refinement — test at mobile (375px), tablet (768px), and desktop (1440px). Adjust layouts, font sizes, and spacing per breakpoint. This is not just "stack on mobile" — each breakpoint should feel intentionally designed.
- Micro-interactions — add finishing touches:
- Button press feedback (scale/color shift)
- Form field focus animations
- Success/error state animations
- Scroll-triggered reveals for content sections
- Page transition effects (if applicable)
- Loading skeletons instead of spinners
- Dark mode (if included in design system) — implement with proper palette adjustments, not just color inversion. Test every page in both modes.
- Consistency sweep — walk through every page in the browser to check:
- Same spacing patterns used consistently
- Typography hierarchy is consistent
- Colors match the design system
- All interactive elements have all states
- Animations feel cohesive (same timing, same style)
- Final screenshots — capture every page in the finished state. These are the "after" shots.
- Present before/after — show Phase 1 screenshots alongside Phase 7 screenshots for every page.
Phase 8: Handoff
- Save the design system document to the project
- Create a
UI_CHANGELOG.md summarizing:
- Aesthetic direction chosen
- Design system overview
- Pages restyled
- Key visual decisions and rationale
- Commit with message:
style: transform UI with stunner design system
Interaction Guidelines
- Visuals first, code second. Never restyle code without an approved mockup. The user should always see what they're getting before it's built.
- Iterate without frustration. The user said they don't know what they like until they see it. Be patient with iteration. Each round of feedback gets closer to their vision.
- Be opinionated but flexible. Start with a strong aesthetic recommendation. If the user pushes back, adapt without resistance.
- Details are the difference. The gap between "nice" and "show-stopper" is hover states, shadow quality, animation timing, and spacing rhythm. Don't skip these.
- Real content matters. Mockups with lorem ipsum feel fake. Use realistic text, plausible names, actual-looking data. The design should feel like a product.
- Respect the framework. Implement using whatever styling approach the project already uses. Don't introduce Tailwind into a styled-components project.
- Before and after. Always show the transformation. The contrast is what makes the user feel the improvement.
1---2name: stunner3description: Transform a functionally complete project into a visually stunning application. Creates HTML/CSS prototype mockups for approval before writing any code. Works with any frontend framework. Use when the user wants to improve the UI, make the app look better, redesign the interface, add visual polish, create a design system, or make the UI a show-stopper.4---56# Stunner — Make It Beautiful78Take a functionally complete project and transform its UI into something visually stunning through a mockup-driven, iterative process.910## Philosophy1112Show, don't tell. The user sees visual mockups before any code changes. Iterate on the visuals until they're excited. Only then implement.1314## Mockup Method1516All mockups are built as **standalone HTML/CSS prototypes** — not generated images. Each mockup is a single HTML file with inline CSS, opened in the browser and screenshotted for the user.1718Why this approach:19- **Fast** — generating HTML/CSS is near-instant vs. slow image generation20- **Pixel-perfect** — real fonts, real spacing, real colors, crisp text21- **Iterable** — tweak a color or font size and re-screenshot, no full regeneration22- **Reusable** — the prototype code informs the final implementation directly2324Save mockup files to a `stunner-mockups/` directory in the project. Name them descriptively (e.g., `direction-bold-vibrant.html`, `page-dashboard.html`).2526## Trigger2728The user has a working project and wants to improve the visual design. The app should be functionally sound — stunner focuses on aesthetics, not features.2930## Workflow3132### Phase 1: Audit33341. **Detect the framework** — scan for React, Vue, Svelte, Next, Nuxt, Angular, Astro, or plain HTML/CSS. Read config files and dependencies to understand the styling approach (Tailwind, CSS Modules, styled-components, plain CSS, etc.).352. **Map the UI surface** — identify all pages, layouts, and key components. Build a list:36 ```37 Pages: Home, Dashboard, Settings, Profile, Login38 Shared: Navbar, Sidebar, Footer, Card, Button, Modal, Form39 ```403. **Screenshot the current state** — use browser automation to capture every page as-is. These are the "before" shots.414. **Identify the app's personality** — what kind of product is this? SaaS dashboard? Consumer app? Developer tool? Portfolio? E-commerce? This informs aesthetic direction.4243Present the audit summary and page list to the user. Confirm which pages/components are in scope.4445### Phase 2: Aesthetic Direction4647Present **5-6 visual directions** as HTML/CSS prototype mockups of the app's most important screen.4849Always include these core directions:5051| Direction | Vibe |52|-----------|------|53| **Bold & Vibrant** (default) | Rich color palette, strong contrast, dynamic layouts, confident typography, energetic feel |54| **Modern Minimal** | Generous whitespace, sharp typography, monochromatic with one accent, subtle shadows |55| **Dark & Premium** | Dark backgrounds, glowing accents, glassmorphism, sleek and techy |56| **Warm & Organic** | Rounded shapes, earthy tones, soft gradients, friendly and approachable |5758Plus **2-3 out-of-the-box ideas** tailored to the specific product. These should be unexpected, creative directions that push beyond safe choices. Examples:5960- **Retro terminal** — monospace type, green-on-black accents, CRT scan lines, nostalgic hacker aesthetic61- **Editorial/magazine** — dramatic typography, asymmetric layouts, bold imagery, print-inspired62- **Neon brutalist** — raw, intentionally rough, oversized type, neon accents, anti-design that still works63- **Illustrated/playful** — hand-drawn elements, quirky illustrations, bouncy animations, whimsical64- **Luxury/fashion** — extreme whitespace, thin serif fonts, muted palette, photography-forward6566Choose the out-of-the-box options based on what would actually work for the product type. A developer tool might get "retro terminal." A consumer app might get "illustrated/playful." Don't just pick randomly.6768**For each direction:**691. Create a standalone HTML file with inline CSS that renders the app's main screen in that aesthetic702. Use Google Fonts (via CDN link) for typography. Use real CSS for shadows, gradients, border radius, spacing.713. Include realistic content — not lorem ipsum724. Open each in the browser using browser automation and screenshot it735. Save the HTML file to `stunner-mockups/direction-[name].html`7475**Present all directions and ask the user to react:**76- Pick one77- Combine elements ("A's colors with C's layout")78- Ask for variations ("like B but warmer")79- Reject all and describe what they want instead8081**Iterate until the user is satisfied with the direction.** No limit on rounds. Modify the HTML/CSS prototype and re-screenshot — this is fast since it's just code changes, not image regeneration.8283### Phase 3: Brand Vibe8485Once the aesthetic direction is locked:86871. **Suggest a brand personality** — 3-5 adjectives that capture the vibe (e.g., "confident, modern, energetic, approachable")882. **App name typography** — suggest how the app name should be styled (font, weight, treatment)893. **Favicon concept** — describe a simple favicon that fits the aesthetic, or create one as an SVG904. **Color naming** — give the palette colors meaningful names that reinforce the brand (not "blue-500" but "electric," "midnight," "ember")915. **Voice alignment** — suggest whether UI copy should be formal, casual, playful, technical, etc.9293Present this as a brand vibe card. The user approves or adjusts.9495### Phase 4: Design System9697Codify the approved direction into a concrete design system:9899**Colors:**100- Primary, secondary, accent palette with hex values101- Semantic colors (success, warning, error, info)102- Neutral scale (backgrounds, borders, text)103- Dark mode variants (not just inverted — properly adjusted)104105**Typography:**106- Font pairing (display/heading font + body font)107- Type scale (hero → h1 → h2 → h3 → body → small → caption) with specific sizes, weights, and line heights108- Letter spacing adjustments per level109110**Spacing:**111- Spacing scale (e.g., 4, 8, 12, 16, 24, 32, 48, 64, 96, 128)112- Component padding conventions113- Section spacing conventions114115**Shadows:**116- Shadow scale (subtle → medium → elevated → floating)117- Shadow color (tinted to match the palette, not plain gray)118119**Borders:**120- Border radius scale (none → sm → md → lg → full)121- Border width and color conventions122123**Animations:**124- Timing curves (ease-out for entrances, ease-in-out for transitions)125- Duration scale (fast: 150ms, normal: 300ms, slow: 500ms)126- Standard animations: fade-in, slide-up, scale-in, hover-lift127128**Component states:**129Define the visual treatment for every interactive state:130- Default → Hover → Active/Pressed → Focus → Disabled → Loading131132Save this as a design system file in the project (e.g., `DESIGN_SYSTEM.md` or framework-appropriate tokens file like `theme.ts`, `tailwind.config` extensions, CSS custom properties, etc.).133134Present the design system to the user for approval.135136### Phase 5: Page Mockups137138For **every page** in the scope list from Phase 1:1391401. **Create an HTML/CSS prototype** of the page fully redesigned using the approved design system. Save to `stunner-mockups/page-[name].html`.1412. **Open in browser and screenshot** — present to the user1423. **Iterate** based on feedback — "make the hero bigger," "I don't like the sidebar here," "can we try a different layout for the cards." Edits are fast — modify the HTML/CSS and re-screenshot.1434. **No limit on rounds** — keep iterating until the user is satisfied with that page144145Move to the next page only when the current one is approved.146147**Prototype quality guidelines:**148- Use realistic content, not placeholders149- Include the navigation/chrome so it feels like a real app150- Load the design system's fonts via Google Fonts CDN151- Match the design system's exact color values, spacing scale, and shadow system152- Show the page at desktop resolution (1440px) primarily153- If the user asks, resize the browser viewport and screenshot at mobile/tablet widths too154155**Shared stylesheet:** After the design system is approved in Phase 4, create a `stunner-mockups/shared-styles.css` with all the design tokens as CSS custom properties. Each page prototype links to this file, ensuring consistency and making iteration even faster (change a token once, all pages update).156157After all pages are individually approved, present the **full set side by side** as a final consistency check. The user should feel like they're looking at a cohesive product, not a collection of unrelated pages.158159### Phase 6: Implement160161Now write the code. For each page:1621631. **Update the design system tokens** in code if not already done (first page only)1642. **Restyle the page** to match the approved mockup1653. **Add component states** — hover, focus, active, disabled, loading, empty, error1664. **Add animations** — entrance animations, hover effects, transitions between states1675. **Open in browser** — use browser automation to view the live result1686. **Screenshot and compare** to the approved mockup prototype1697. **Adjust** until the live version matches the mockup1708. **Present to the user** — show the before (from Phase 1) and after side by side171172Move to the next page only when the user approves the implementation.173174### Phase 7: Polish Pass175176After all pages are implemented:1771781. **Responsive refinement** — test at mobile (375px), tablet (768px), and desktop (1440px). Adjust layouts, font sizes, and spacing per breakpoint. This is not just "stack on mobile" — each breakpoint should feel intentionally designed.1792. **Micro-interactions** — add finishing touches:180 - Button press feedback (scale/color shift)181 - Form field focus animations182 - Success/error state animations183 - Scroll-triggered reveals for content sections184 - Page transition effects (if applicable)185 - Loading skeletons instead of spinners1863. **Dark mode** (if included in design system) — implement with proper palette adjustments, not just color inversion. Test every page in both modes.1874. **Consistency sweep** — walk through every page in the browser to check:188 - Same spacing patterns used consistently189 - Typography hierarchy is consistent190 - Colors match the design system191 - All interactive elements have all states192 - Animations feel cohesive (same timing, same style)1935. **Final screenshots** — capture every page in the finished state. These are the "after" shots.1946. **Present before/after** — show Phase 1 screenshots alongside Phase 7 screenshots for every page.195196### Phase 8: Handoff1971981. **Save the design system document** to the project1992. **Create a `UI_CHANGELOG.md`** summarizing:200 - Aesthetic direction chosen201 - Design system overview202 - Pages restyled203 - Key visual decisions and rationale2043. **Commit** with message: `style: transform UI with stunner design system`205206## Interaction Guidelines207208- **Visuals first, code second.** Never restyle code without an approved mockup. The user should always see what they're getting before it's built.209- **Iterate without frustration.** The user said they don't know what they like until they see it. Be patient with iteration. Each round of feedback gets closer to their vision.210- **Be opinionated but flexible.** Start with a strong aesthetic recommendation. If the user pushes back, adapt without resistance.211- **Details are the difference.** The gap between "nice" and "show-stopper" is hover states, shadow quality, animation timing, and spacing rhythm. Don't skip these.212- **Real content matters.** Mockups with lorem ipsum feel fake. Use realistic text, plausible names, actual-looking data. The design should feel like a product.213- **Respect the framework.** Implement using whatever styling approach the project already uses. Don't introduce Tailwind into a styled-components project.214- **Before and after.** Always show the transformation. The contrast is what makes the user feel the improvement.