| name | frontend-aesthetics |
| description | Design guidance and aesthetic patterns for building beautiful, distinctive frontends — websites, web apps, landing pages. Provides typography strategies, color application, motion choreography, layout composition, and component design recipes. Use when the user asks to "make this look better", "improve the design", "it looks too generic", "add visual polish", "make it look professional", "design a landing page", "hero section design", "make it beautiful", or any request about visual quality of frontend code. Prevents generic "AI slop" by providing opinionated, intentional design patterns.
|
Frontend Aesthetics
The "taste" skill. Turns generic frontend output into intentional, distinctive design through opinionated patterns and creative direction.
When to Use
- User says the design "looks generic" or "like every other site"
- User asks to "make it look better" or "add polish"
- User is building a landing page, hero section, or marketing site
- User wants component design guidance (cards, CTAs, pricing tables, etc.)
- User wants animation/motion guidance for a frontend project
When NOT to Use
- User wants a complete styleguide from scratch → use styleguide skill first
- User wants WCAG accessibility auditing → use design-system
- User wants to generate images → use media-plugin/image-generation
The Anti-Slop Manifesto
Every design choice must be intentional. Default values are the enemy. If you cannot articulate WHY a color, font, or spacing value was chosen, it is wrong.
The 5 Biggest AI Design Sins
-
System fonts when the design calls for character — Using Inter/Roboto/Arial when the project has personality. Fix: Choose distinctive fonts from the styleguide skill's font pairings.
-
Gray-on-white when the content deserves drama — Timid, washed-out color use. Fix: Commit to a dominant color. Use the 60-30-10 rule. Add depth with gradients and layered backgrounds.
-
Perfectly symmetrical layouts when asymmetry creates energy — Everything centered, evenly spaced, predictable. Fix: Use asymmetric grids, overlapping elements, and intentional size contrast.
-
Uniform spacing when hierarchy needs breathing room — Same padding everywhere, no rhythm. Fix: Use dramatic spacing jumps — tight within groups, generous between sections.
-
Stock-looking components when the brand has personality — Cookie-cutter cards, generic buttons, template-feeling sections. Fix: Add character through border radius choices, shadow styles, accent bars, and micro-details.
Typography in Practice
Beyond choosing fonts (see styleguide skill), here's HOW to use them effectively:
Extreme Weight Contrast
Use weight as a design tool, not just a hierarchy signal:
.hero-title { font-weight: 900; letter-spacing: -0.03em; }
.hero-subtitle { font-weight: 300; letter-spacing: 0.02em; }
Dramatic Size Jumps
Don't increment gradually — jump dramatically:
.h1 { font-size: 28px; }
.h2 { font-size: 24px; }
.body { font-size: 16px; }
.hero-title { font-size: 72px; }
.section-title { font-size: 36px; }
.body { font-size: 16px; }
Letter-Spacing as a Design Tool
.headline { letter-spacing: -0.03em; }
.label { text-transform: uppercase; letter-spacing: 0.15em; font-size: 12px; }
.body { letter-spacing: 0; }
Font Loading Strategy
<link rel="preload" href="/fonts/heading.woff2" as="font" type="font/woff2" crossorigin>
<style>
@font-face {
font-family: 'Heading';
src: url('/fonts/heading.woff2') format('woff2');
font-display: swap;
}
</style>
Color Application
Beyond choosing a palette (see styleguide skill), here's HOW to apply color:
CSS Custom Properties Strategy
:root {
--color-surface: var(--neutral-50);
--color-surface-elevated: var(--neutral-0);
--color-text-primary: var(--neutral-900);
--color-text-secondary: var(--neutral-600);
--color-text-muted: var(--neutral-400);
--color-accent: var(--primary-500);
--color-accent-hover: var(--primary-600);
--color-border: var(--neutral-200);
--primary-500: #3B82F6;
--primary-600: #2563EB;
--neutral-0: #FFFFFF;
--neutral-50: #F8FAFC;
}
[data-theme="dark"] {
--color-surface: var(--neutral-900);
--color-surface-elevated: var(--neutral-800);
--color-text-primary: var(--neutral-50);
}
The 60-30-10 Rule in Practice
60% — Dominant (backgrounds, large surfaces) → neutral/white
30% — Secondary (cards, sections, containers) → primary or secondary color
10% — Accent (CTAs, highlights, active states) → accent color
The accent is SMALL but POWERFUL. Never dilute it across large areas.
Gradient Techniques
.hero {
background:
radial-gradient(ellipse at 20% 50%, rgba(59, 130, 246, 0.15) 0%, transparent 50%),
radial-gradient(ellipse at 80% 20%, rgba(168, 85, 247, 0.1) 0%, transparent 50%),
linear-gradient(180deg, var(--neutral-950) 0%, var(--neutral-900) 100%);
}
.gradient-text {
background: linear-gradient(135deg, var(--primary-400), var(--accent-500));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.mesh-bg {
background-color: #0a0a0a;
background-image:
radial-gradient(at 40% 20%, (, , , ) , transparent ),
(at , (, , , ) , transparent ),
(at , (, , , ) , transparent );
}
Dark Mode as First-Class Design
Dark mode is not just "invert the colors." It's a design choice:
[data-theme="dark"] {
--color-surface: #0F172A;
--color-surface-elevated: #1E293B;
--color-text-primary: #E2E8F0;
--color-accent: #60A5FA;
--color-border: rgba(255, 255, 255, 0.08);
--shadow-card: 0 0 0 1px rgba(255, 255, 255, 0.05);
}
Component Design Recipes
See references/component-recipes.md for detailed patterns including:
- Hero sections with staggered reveal animations
- Feature cards with icon accents and hover states
- Testimonial cards with pull-quote styling
- Pricing tables with recommended plan highlight
- Dashboard stat cards with sparklines
- Scroll-aware navigation
- Newsletter footer CTAs
- Diagonal section dividers
- Bento grid layouts
- Floating action panels
Spatial Composition
See references/layout-composition.md for techniques including:
- Asymmetric grids (8-col/4-col splits)
- Overlapping elements with negative margins
- Diagonal flow with clip-path and skew transforms
- Breaking the grid intentionally
- Z-depth layering and parallax effects
- Viewport-unit techniques for dramatic sizing
- Responsive composition strategies
Motion Design
See references/motion-choreography.md for patterns including:
- Page load orchestration with stagger timing
- Scroll-triggered reveals with IntersectionObserver
- Hover state progressions
- Page transition strategies
- Loading skeletons and micro-interactions
- @keyframes code and cubic-bezier timing functions
Cross-Plugin References
- design-system — WCAG contrast checking, palette generation, type scale calculations
- media-plugin/icon-library — SVG icons from Lucide, Heroicons, Tabler
- media-plugin/image-generation — AI-generated hero images, backgrounds, illustrations
- media-plugin/image-sourcing — Stock photos from Unsplash/Pexels
- styleguide skill — create the foundational design language before applying these patterns
- media-prompt-craft skill — craft prompts for media assets that match the design direction
Tips
- Apply these patterns AFTER establishing a styleguide — aesthetics without strategy is decoration
- Start with one strong design choice and let it inform the rest — a bold font, a striking color, an unusual layout
- Less is more: one well-executed animation beats ten scattered ones
- Test at real viewport sizes — designs that work at 1440px often break at 375px
- Use browser DevTools to test color contrast, font rendering, and animation performance