// Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics. (project)
| name | frontend-design |
| description | Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics. (project) |
This skill guides creation of distinctive, production-grade Next.js 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.
components/ui/ (DO NOT modify these)motion/react) for React animationsdir="rtl")Before coding, understand the context and commit to a BOLD aesthetic direction:
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 that is:
// Server Component (default) - no directive needed
export default function ServerComponent() {
return <div>Server-rendered content</div>;
}
// Client Component - add directive for hooks/events/browser APIs
"use client";
import { useState } from "react";
export default function ClientComponent() {
const [state, setState] = useState(false);
return <button onClick={() => setState(!state)}>Toggle</button>;
}
Always use path aliases, never relative imports:
import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
import { useAuth } from "@/contexts/AuthContext";
Use cn() utility for conditional Tailwind classes:
import { cn } from "@/lib/utils";
<div className={cn(
"base-classes",
isActive && "active-classes",
variant === "primary" ? "primary-classes" : "secondary-classes"
)} />
Use Motion library for React animations:
"use client";
import { motion } from "motion/react";
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, ease: "easeOut" }}
>
Animated content
</motion.div>
// Staggered children
<motion.ul
initial="hidden"
animate="visible"
variants={{
visible: { transition: { staggerChildren: 0.1 } }
}}
>
{items.map(item => (
<motion.li
key={item.id}
variants={{
hidden: { opacity: 0, x: -20 },
visible: { opacity: 1, x: 0 }
}}
/>
))}
</motion.ul>
// Always consider RTL for Arabic content
<div dir="rtl" className="text-right">
<h1 className="font-arabic">عنوان بالعربية</h1>
</div>
// Use logical properties for RTL-safe spacing
<div className="ps-4 pe-2 ms-auto me-0">
{/* ps = padding-inline-start, pe = padding-inline-end */}
{/* ms = margin-inline-start, me = margin-inline-end */}
</div>
Use semantic color variables from globals.css:
// Use semantic colors, not arbitrary values
<div className="bg-background text-foreground">
<button className="bg-primary text-primary-foreground hover:bg-primary/90">
Action
</button>
<p className="text-muted-foreground">Secondary text</p>
</div>
Focus on:
next/font for optimization.globals.css. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.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.
// app/layout.tsx or component file
import { IBM_Plex_Sans_Arabic, IBM_Plex_Sans } from "next/font/google";
const plexArabic = IBM_Plex_Sans_Arabic({
subsets: ["arabic"],
weight: ["400", "500", "600", "700"],
variable: "--font-arabic",
});
const plexSans = IBM_Plex_Sans({
subsets: ["latin"],
weight: ["400", "500", "600", "700"],
variable: "--font-sans",
});
// Apply in layout
<html className={`${plexArabic.variable} ${plexSans.variable}`}>
app/
├── layout.tsx # Root layout with fonts, providers
├── page.tsx # Homepage (Server Component)
├── globals.css # OKLCH theme variables, global styles
└── (pages)/ # Route groups for pages
components/
├── ui/ # shadcn components (IMMUTABLE)
└── [feature]/ # Custom components by feature
"use client" when neededcomponents/ui/ - don't recreate them@/components, @/lib, @/hooksglobals.css variables for custom colorsmotion/reactRemember: 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.