Frontend Design Skill
Use this skill when creating UI components, landing pages, dashboards, or any frontend design work.
Design Workflow
Follow this structured approach for UI design:
-
Layout Design — Think through component structure, create ASCII wireframes
-
Theme Design — Define colors, fonts, spacing, shadows
-
Animation Design — Plan micro-interactions and transitions
-
Implementation — Generate the actual code
- Layout Design
Before coding, sketch the layout in ASCII format:
┌─────────────────────────────────────┐ │ HEADER / NAV BAR │ ├─────────────────────────────────────┤ │ │ │ HERO SECTION │ │ (Title + CTA) │ │ │ ├─────────────────────────────────────┤ │ FEATURE │ FEATURE │ FEATURE │ │ CARD │ CARD │ CARD │ ├─────────────────────────────────────┤ │ FOOTER │ └─────────────────────────────────────┘
- Theme Guidelines
Color Rules:
-
NEVER use generic bootstrap-style blue (#007bff) — it looks dated
-
Prefer oklch() for modern color definitions
-
Use semantic color variables (--primary, --secondary, --muted, etc.)
-
Consider both light and dark mode from the start
Font Selection (Google Fonts):
Sans-serif: Inter, Roboto, Poppins, Montserrat, Outfit, Plus Jakarta Sans, DM Sans, Space Grotesk Monospace: JetBrains Mono, Fira Code, Source Code Pro, IBM Plex Mono, Space Mono, Geist Mono Serif: Merriweather, Playfair Display, Lora, Source Serif Pro, Libre Baskerville Display: Architects Daughter, Oxanium
Spacing & Shadows:
-
Use consistent spacing scale (0.25rem base)
-
Shadows should be subtle — avoid heavy drop shadows
-
Consider using oklch() for shadow colors too
- Theme Patterns
Modern Dark Mode (Vercel/Linear style):
:root { --background: oklch(1 0 0); --foreground: oklch(0.145 0 0); --primary: oklch(0.205 0 0); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.970 0 0); --muted: oklch(0.970 0 0); --muted-foreground: oklch(0.556 0 0); --border: oklch(0.922 0 0); --radius: 0.625rem; --font-sans: Inter, system-ui, sans-serif; }
Neo-Brutalism (90s web revival):
:root { --background: oklch(1 0 0); --foreground: oklch(0 0 0); --primary: oklch(0.649 0.237 26.97); --secondary: oklch(0.968 0.211 109.77); --accent: oklch(0.564 0.241 260.82); --border: oklch(0 0 0); --radius: 0px; --shadow: 4px 4px 0px 0px hsl(0 0% 0%); --font-sans: DM Sans, sans-serif; --font-mono: Space Mono, monospace; }
Glassmorphism:
.glass { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 1rem; }
- Animation Guidelines
Micro-syntax for planning:
button: 150ms [S1→0.95→1] press hover: 200ms [Y0→-2, shadow↗] fadeIn: 400ms ease-out [Y+20→0, α0→1] slideIn: 350ms ease-out [X-100→0, α0→1] bounce: 600ms [S0.95→1.05→1]
Common patterns:
-
Entry animations: 300-500ms, ease-out
-
Hover states: 150-200ms
-
Button press: 100-150ms
-
Page transitions: 300-400ms
- Implementation Rules
Tailwind CSS:
<!-- Import via CDN for prototypes --> <script src="https://cdn.tailwindcss.com"></script>
Flowbite (component library):
<link href="https://cdn.jsdelivr.net/npm/flowbite@2.0.0/dist/flowbite.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/flowbite@2.0.0/dist/flowbite.min.js"></script>
Icons (Lucide):
<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script> <script>lucide.createIcons();</script>
Images:
-
Use real placeholder services: Unsplash, placehold.co
-
Never make up image URLs
-
Example: https://images.unsplash.com/photo-xxx?w=800&h=600
- Responsive Design
Always design mobile-first and responsive:
/* Mobile first */ .container { padding: 1rem; }
/* Tablet */ @media (min-width: 768px) { .container { padding: 2rem; } }
/* Desktop */ @media (min-width: 1024px) { .container { max-width: 1200px; margin: 0 auto; } }
- Accessibility
-
Use semantic HTML (header, main, nav, section, article)
-
Include proper heading hierarchy (h1 → h2 → h3)
-
Add aria-labels to interactive elements
-
Ensure sufficient color contrast (4.5:1 minimum)
-
Support keyboard navigation
- Component Design Tips
Cards:
-
Subtle shadows, not heavy drop shadows
-
Consistent padding (p-4 to p-6)
-
Hover state: slight lift + shadow increase
Buttons:
-
Clear visual hierarchy (primary, secondary, ghost)
-
Adequate touch targets (min 44x44px)
-
Loading and disabled states
Forms:
-
Clear labels above inputs
-
Visible focus states
-
Inline validation feedback
-
Adequate spacing between fields
Navigation:
-
Sticky header for long pages
-
Clear active state indication
-
Mobile-friendly hamburger menu
Quick Reference
Element Recommendation
Primary font Inter, Outfit, DM Sans
Code font JetBrains Mono, Fira Code
Border radius 0.5rem - 1rem (modern), 0 (brutalist)
Shadow Subtle, 1-2 layers max
Spacing 4px base unit (0.25rem)
Animation 150-400ms, ease-out
Colors oklch() for modern, avoid generic blue
Based on SuperDesign patterns — https://superdesign.dev