mcpbeat

Frontend Design

jdrhyne/frontend-design

Expert frontend design guidelines for creating beautiful, modern UIs. Use when building landing pages, dashboards, or any user interface.

2k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
239
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/jdrhyne/agent-skills --skill frontend-design

The instruction itself

11 sections, as written by the author

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

1. Layout Design

Before coding, sketch the layout in ASCII format:

┌─────────────────────────────────────┐
│         HEADER / NAV BAR            │
├─────────────────────────────────────┤
│                                     │
│            HERO SECTION             │
│         (Title + CTA)               │
│                                     │
├─────────────────────────────────────┤
│   FEATURE   │  FEATURE  │  FEATURE  │
│     CARD    │   CARD    │   CARD    │
├─────────────────────────────────────┤
│            FOOTER                   │
└─────────────────────────────────────┘

2. 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

3. 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;
}

4. 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

5. 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/[email protected]/dist/flowbite.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/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

6. 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; }
}

7. 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

8. 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*

How to use it

Copy the folder

Take jdrhyne/frontend-design from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.