agentleFS
LucasCooperBeyLucasCooperBey/claude-skills/skills/frontend-design/SKILL.md

frontend-design

Skill1 starsChanged 5 months agoMITView on GitHub

Builds web components, pages, applications, landing pages, and styled web UIs. Creates distinctive, production-grade frontend interfaces that avoid generic AI aesthetics.

We split this skill into the rules it gives an agent

15 rules. 0 are common, 12 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 180 edited versions we read keep these.

  • 12

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Check package.json for framework (next, nuxt, svelte, astro, vite)

    line 24
  2. Distinctive:

    Check for Tailwind config → use Tailwind classes.

    line 25
  3. Distinctive:

    Check for existing component library (shadcn, radix, vuetify) → extend it, don't fight it

    line 26
  4. Very specific:

    How to set up routes: Create 5 page files (e.g., Next.js app/1/page.tsx through app/5/page.tsx, or Vite with react-router).

    line 46
  5. Distinctive:

    NEVER submit variations with same layout, different colors.

    line 69
  6. Distinctive:

    Use these for NEW projects without an existing design system.

    line 86
  7. Distinctive:

    Don't scatter micro-interactions.

    line 196
  8. Distinctive:

    Don't add framer-motion as a new dependency just for entrance animations — CSS handles it fine.

    line 204
  9. Distinctive:

    Before delivering any design, verify:

    line 210
  10. Very specific:

    Ask: "What vibe? Minimal/bold/playful/professional?"

    line 254
  11. Distinctive:

    Wait for feedback on favorites

    line 256
  12. Distinctive:

    Don't converge on safe choices

    line 258
  13. Distinctive:

    design-taste: Use for architecture-level design decisions, design system creation, visual identity.

    line 264
  14. Distinctive:

    redesign: Use when upgrading existing UI.

    line 265
  15. Distinctive:

    pp3p: Run after building to polish the output.

    line 266

“Common” is measured: kept by at least 6 in 10 of the 180 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Frontend Design Skill

This skill steers the model away from generic AI aesthetics toward distinctive, production-grade frontend. Pair with design-taste for architecture-level decisions.

Arguments & Stack Detection

$ARGUMENTS = raw user input after skill name

Parse first:

  • --files path1,path2 — scope to specific files
  • --stack react|vue|svelte|vanilla — override auto-detection
  • --single — skip multi-variation, build one design
  • --iterate — refine existing designs from user feedback
  • Remaining text = the design brief

Auto-detect stack (don't assume React + Tailwind):

  1. Check package.json for framework (next, nuxt, svelte, astro, vite)
  2. Check for Tailwind config → use Tailwind classes. No config → use CSS modules or vanilla CSS
  3. Check for existing component library (shadcn, radix, vuetify) → extend it, don't fight it
  4. No package.json → plain HTML/CSS

Time budget: 25 min for multi-variation. 10 min for single component. If >15 files touched, stop and confirm scope.


Error Handling

  • No frontend project detected: "This directory has no frontend files. Point me at the right directory or describe what to create."
  • Existing design system found: Respect it. Don't override brand colors/fonts with recommendations below. Extend, don't replace.
  • Dev server won't start: Build the files anyway. Note: "Dev server failed — files are written, start manually."
  • User wants something banned below: Bans are defaults, not laws. If the user explicitly wants glassmorphism or blue buttons, do it well.

Multi-Variation Technique

For landing pages or aesthetic-focused UI, generate 5 distinct designs on routes /1-/5 with navigation bar.

How to set up routes: Create 5 page files (e.g., Next.js app/1/page.tsx through app/5/page.tsx, or Vite with react-router). Add a sticky nav with links between them.

Why this works:

  • Within context, the model knows the other 4 designs
  • It actively makes each one unique from the others
  • Roll enough times, steer to what you like

Skip for: bug fixes, existing design systems, --single flag, or explicitly conservative requests.


What "Distinct" Means

Each variation must differ in AT LEAST 3 dimensions:

DimensionOptions
Layout structureAsymmetric, centered, sidebar, split, full-bleed
Typography family/pairingSerif+sans, mono+display, single bold family
Color paletteDark mode, warm earth, cool minimal, high contrast
Visual densityMinimal (lots of white), rich (layered elements)
ThemeLight, dark, colorful, monochrome

NEVER submit variations with same layout, different colors. That's lazy.


Iteration Workflow (The Core Value)

After initial 5 designs:

  1. User identifies favorites — "I like #2 and #4"
  2. User explains what resonated — "The chunky type on #2, the color blocking on #4"
  3. Generate 5 more inspired by those elements
  4. Repeat until you have a solid starting point

Font Recommendations

Use these for NEW projects without an existing design system. If the project already has fonts, keep them.

Display / Headers

FontVibe
FrauncesQuirky serif, character
Playfair DisplayElegant, editorial
DM Serif DisplayClean, modern serif
Bebas NeueTall, condensed, bold
Archivo BlackHeavy, impactful
SyneDistinctive, geometric
Space MonoTechnical, code-y
JetBrains MonoDeveloper aesthetic

Body Text

FontVibe
OutfitModern, clean
Plus Jakarta SansWarm, friendly
Nunito SansRounded, approachable
Source Sans 3Neutral, readable
ManropeGeometric, modern
Work SansClean, professional

Pairings That Work

/* Elegant editorial */
--font-display: 'Fraunces', serif;
--font-body: 'Source Sans 3', sans-serif;

/* Bold modern */
--font-display: 'Bebas Neue', sans-serif;
--font-body: 'Outfit', sans-serif;

/* Technical/dev */
--font-display: 'Space Mono', monospace;
--font-body: 'Manrope', sans-serif;

/* Warm and approachable */
--font-display: 'Syne', sans-serif;
--font-body: 'Plus Jakarta Sans', sans-serif;

Color Palettes

Dark Mode

/* Deep navy + bright accent */
--bg: #0a0f1a; --surface: #141b2d; --text: #e4e8f0; --accent: #00d4aa;

/* True black + gold */
--bg: #000000; --surface: #111111; --text: #ffffff; --accent: #c9a227;

/* Warm dark */
--bg: #1a1612; --surface: #2d2620; --text: #f5f0eb; --accent: #e07a5f;

Light Mode

/* Warm cream */
--bg: #faf6f1; --surface: #ffffff; --text: #1a1612; --accent: #c25b3f;

/* Cool minimal */
--bg: #f8fafc; --surface: #ffffff; --text: #0f172a; --accent: #0ea5e9;

/* High contrast */
--bg: #ffffff; --surface: #f1f5f9; --text: #000000; --accent: #dc2626;

Distinctive Accent Colors

Warm terracotta (#c25b3f), Deep teal (#0d9488), Burnt orange (#ea580c), Gold/ochre (#c9a227), Coral (#f97316), Deep purple (#7c3aed — only if intentional).


Layout Patterns

Adapt these to the detected stack. Examples shown in JSX + Tailwind — translate to Vue templates, Svelte markup, or plain HTML as needed.

Asymmetric Hero

12-col grid: 5-col text left, 7-col visual right, min-h-screen

Split Screen

flex row, each half w-1/2, min-h-screen, contrasting backgrounds

Offset Grid

3-col grid with staggered mt offsets for visual rhythm

Overlap Elements

relative container + absolute decorative element + z-indexed content

Motion

Don't scatter micro-interactions. Do one orchestrated page-load animation with staggered entrance (opacity 0→1, y 20→0, 0.1s delay per item).

Stack-aware implementation:

  • React: framer-motion variants if already installed, CSS keyframes if not
  • Vue: <Transition> / <TransitionGroup> built-ins
  • Svelte: transition:fly / transition:fade built-ins
  • Vanilla: CSS @keyframes + animation-delay with intersection observer

Don't add framer-motion as a new dependency just for entrance animations — CSS handles it fine.


Accessibility Pre-Flight

Before delivering any design, verify:

  1. Color contrast — WCAG AA minimum (4.5:1 body text, 3:1 large text)
  2. Focus indicators — visible focus ring on all interactive elements
  3. Semantic HTML — headings in order, buttons for actions, links for navigation
  4. Reduced motion — wrap animations in prefers-reduced-motion media query

See design-taste for the full a11y checklist.


Execution Principles

  1. Commit to a direction — Restrained precision is as bold as maximalist chaos
  2. Intentionality over intensity — Every choice should feel purposeful
  3. Space is a design element — Use generous whitespace
  4. Hierarchy through size — Big headlines, readable body
  5. One accent, not five — Pick one color, use it sparingly
  6. Responsive by default — Verify mobile unless told otherwise

Defaults to Avoid

These are defaults, not absolutes. If the user explicitly requests one, do it well.

Fonts (avoid for new projects):

  • Inter, Roboto, Arial as display fonts (fine as body text in apps with existing systems)

Colors (avoid):

  • Purple/pink/blue gradients on white (#1 AI slop indicator)

Patterns (avoid):

  • Hero → features grid → pricing → footer (predictable)
  • Card grids with uniform rounded corners
  • Glassmorphism everywhere
  • 3 centered feature cards
  • Blue primary buttons
  • Geometric blob SVGs
  • Shadcn defaults unchanged

When User Says "Make It Look Good"

  1. Ask: "What vibe? Minimal/bold/playful/professional?"
  2. Generate 5 variations on /1-/5 (unless --single)
  3. Wait for feedback on favorites
  4. Iterate with steering
  5. Don't converge on safe choices

Integration

  • design-taste: Use for architecture-level design decisions, design system creation, visual identity. frontend-design is for building; design-taste is for deciding.
  • redesign: Use when upgrading existing UI. frontend-design is for new builds.
  • pp3p: Run after building to polish the output.

Output Format

After generating designs:

SUCCESS: Generated [N] design variations on routes /1-/[N]
METRIC: variations=[count] dimensions_varied=[list]
Navigation: [localhost URL]
Ready for feedback — which designs resonate?

For single components:

SUCCESS: Created [component type] with [key characteristics]
METRIC: files=[paths]

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.