frontend-build

Production-grade frontend development with distinctive design. Activates for "build UI", "create component", "landing page", "dashboard", "form", "responsive", "tailwind", "frontend", "design", "React", "Next.js" requests.

16 stars

Best use case

frontend-build is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Production-grade frontend development with distinctive design. Activates for "build UI", "create component", "landing page", "dashboard", "form", "responsive", "tailwind", "frontend", "design", "React", "Next.js" requests.

Teams using frontend-build should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/frontend-build/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/development/frontend-build/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/frontend-build/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How frontend-build Compares

Feature / Agentfrontend-buildStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Production-grade frontend development with distinctive design. Activates for "build UI", "create component", "landing page", "dashboard", "form", "responsive", "tailwind", "frontend", "design", "React", "Next.js" requests.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Frontend Build Protocol

## When This Skill Activates
- "Build a component", "create UI", "design this"
- "Landing page", "dashboard", "form"
- "Make it responsive", "mobile-friendly"
- "Tailwind", "shadcn", "styling"
- "React", "Next.js", "frontend"

## BEFORE WRITING CODE

Establish a **bold aesthetic direction**. Ask yourself:

1. **Purpose**: What problem does this solve? Who uses it?
2. **Tone**: Minimalist? Maximalist? Retro? Brutalist? Warm? Clinical?
3. **Differentiator**: What ONE thing makes this memorable?
4. **Constraints**: Technical limitations? Brand guidelines?

> "A design with clear intent—whether maximalist or minimal—always beats scattered, unfocused choices."

## Design Philosophy

### The Core Principle
**Distinctive, production-grade interfaces that avoid generic AI aesthetics.**

Every design choice should be intentional:
- If it's minimal, it should feel *deliberately* restrained
- If it's bold, it should feel *confidently* expressive
- Never default to "safe" choices

### Anti-Patterns (AI Slop to Avoid)

| DON'T | DO INSTEAD |
|-------|------------|
| Center everything | Asymmetric, purposeful alignment |
| Purple gradients everywhere | Restrained color with sharp accents |
| Uniform rounded-lg on all | Mix radiuses intentionally |
| Inter font (default) | System fonts or distinctive choices |
| Blue-500 for everything | Custom accent that fits context |
| Generic card grids | Varied, hierarchical layouts |
| Over-animated everything | Strategic motion for key moments |
| Predictable "hero → features → CTA" | Unexpected flow that serves content |

## Typography That Elevates

### Font Pairings (Non-Default)
```css
/* Option 1: Modern Professional */
--font-heading: 'Satoshi', system-ui;
--font-body: 'Inter', system-ui;

/* Option 2: Editorial */
--font-heading: 'Playfair Display', Georgia;
--font-body: 'Source Sans 3', system-ui;

/* Option 3: Technical */
--font-heading: 'Space Grotesk', system-ui;
--font-body: 'IBM Plex Sans', system-ui;

/* Option 4: System (fast, still good) */
--font-heading: system-ui;
--font-body: system-ui;
```

### Type Scale
```tsx
// Limit to 4-5 sizes max
<h1 className="text-4xl md:text-5xl lg:text-6xl font-bold tracking-tight" />
<h2 className="text-2xl md:text-3xl font-semibold" />
<h3 className="text-xl font-medium" />
<p className="text-base text-neutral-600 leading-relaxed" />
<small className="text-sm text-neutral-500" />
```

## Color as Atmosphere

### Curated Palettes (Not Defaults)

**Warm Professional:**
```
Background: #FAF9F7 (warm white)
Surface:    #FFFFFF
Text:       #1A1A19
Accent:     #D97757 (terracotta)
Muted:      #9A9590
Border:     #E8E6E3
```

**Cool Technical:**
```
Background: #F8FAFC
Surface:    #FFFFFF
Text:       #0F172A
Accent:     #3B82F6 (clear blue)
Muted:      #64748B
Border:     #E2E8F0
```

**Dark Mode Done Right:**
```
Background: #0A0A0A
Surface:    #141414
Text:       #FAFAFA
Accent:     #22D3EE (cyan)
Muted:      #71717A
Border:     #27272A
```

### Color Application
```tsx
// Primary actions: accent color
<button className="bg-[#D97757] hover:bg-[#C4684A]">

// Secondary: subtle, don't compete
<button className="bg-neutral-100 text-neutral-900 hover:bg-neutral-200">

// Destructive: red but not alarming
<button className="bg-red-600/90 hover:bg-red-600">
```

## Spatial Composition

### Break the Grid (Intentionally)
```tsx
// Instead of equal columns, use weighted grids
<div className="grid grid-cols-1 lg:grid-cols-[1.4fr,1fr] gap-12">

// Overlap elements for depth
<div className="relative">
  <div className="absolute -top-4 -right-4 w-24 h-24 bg-accent/10 rounded-full" />
  <div className="relative bg-white p-8 rounded-xl">Content</div>
</div>

// Negative space as design element
<section className="py-32 lg:py-48">  {/* Generous vertical space */}
```

### Asymmetric Hero
```tsx
export function Hero() {
  return (
    <section className="relative min-h-[80vh] flex items-center overflow-hidden">
      {/* Background texture */}
      <div className="absolute inset-0 bg-gradient-to-br from-neutral-950 via-neutral-900 to-neutral-950" />

      <div className="relative mx-auto max-w-7xl px-6 py-24">
        <div className="grid lg:grid-cols-[1.3fr,1fr] gap-16 items-center">
          <div className="space-y-8">
            <div className="inline-flex items-center gap-2 px-3 py-1 rounded-full
                          bg-white/10 text-white/80 text-sm">
              <span className="w-1.5 h-1.5 rounded-full bg-emerald-400" />
              Now available
            </div>

            <h1 className="text-5xl lg:text-7xl font-bold text-white tracking-tight">
              Build products
              <br />
              <span className="text-transparent bg-clip-text bg-gradient-to-r
                             from-orange-400 to-amber-400">
                that matter.
              </span>
            </h1>

            <p className="text-lg text-neutral-400 max-w-lg leading-relaxed">
              Ship in days, not months. Focus on what matters while we
              handle the complexity.
            </p>

            <div className="flex flex-wrap gap-4 pt-4">
              <button className="px-6 py-3 bg-white text-neutral-900 rounded-lg
                               font-medium hover:bg-neutral-100 transition-colors">
                Get Started
              </button>
              <button className="px-6 py-3 text-white border border-white/20 rounded-lg
                               font-medium hover:bg-white/10 transition-colors">
                Learn More
              </button>
            </div>
          </div>

          <div className="hidden lg:block relative">
            {/* Visual element - not just an image placeholder */}
            <div className="aspect-square rounded-3xl bg-gradient-to-br
                          from-orange-500/20 to-amber-500/20 backdrop-blur-3xl" />
          </div>
        </div>
      </div>
    </section>
  );
}
```

## Motion with Purpose

### When to Animate
- **Hover states**: Subtle feedback (150-200ms)
- **State changes**: Loading → loaded, collapsed → expanded
- **Entrances**: First-time visibility (staggered, not all at once)
- **High-impact moments**: Success, celebration, key actions

### When NOT to Animate
- Every scroll event
- All elements at once
- Continuous loops (distracting)
- Required interactions (don't delay users)

### Motion Patterns
```tsx
// Micro-interaction: subtle scale
className="transition-transform duration-150 hover:scale-[1.02] active:scale-[0.98]"

// State transition: smooth height
className="transition-all duration-300 ease-out overflow-hidden"

// Entrance: fade up (use sparingly)
const variants = {
  hidden: { opacity: 0, y: 20 },
  visible: { opacity: 1, y: 0, transition: { duration: 0.4 } }
};
```

## Component Library

### Card (Refined)
```tsx
interface CardProps {
  title: string;
  description: string;
  highlight?: boolean;
}

export function Card({ title, description, highlight }: CardProps) {
  return (
    <div className={`
      group relative p-6 rounded-2xl border transition-all duration-200
      ${highlight
        ? 'bg-neutral-900 text-white border-neutral-800 hover:border-neutral-700'
        : 'bg-white border-neutral-200 hover:border-neutral-300 hover:shadow-lg'}
    `}>
      <h3 className={`text-lg font-semibold ${highlight ? 'text-white' : 'text-neutral-900'}`}>
        {title}
      </h3>
      <p className={`mt-2 text-sm leading-relaxed ${highlight ? 'text-neutral-400' : 'text-neutral-600'}`}>
        {description}
      </p>
      <span className={`
        mt-4 inline-flex items-center gap-1 text-sm font-medium
        group-hover:gap-2 transition-all
        ${highlight ? 'text-orange-400' : 'text-orange-600'}
      `}>
        Learn more
        <span aria-hidden>→</span>
      </span>
    </div>
  );
}
```

### Button System
```tsx
const variants = {
  primary: `
    bg-neutral-900 text-white border border-transparent
    hover:bg-neutral-800 active:scale-[0.98]
  `,
  secondary: `
    bg-white text-neutral-900 border border-neutral-200
    hover:bg-neutral-50 hover:border-neutral-300
  `,
  ghost: `
    text-neutral-600 hover:text-neutral-900 hover:bg-neutral-100
  `,
  accent: `
    bg-orange-500 text-white border border-transparent
    hover:bg-orange-600 active:scale-[0.98]
  `,
};

const sizes = {
  sm: 'px-3 py-1.5 text-sm',
  md: 'px-4 py-2 text-sm',
  lg: 'px-6 py-3 text-base',
};

export function Button({
  variant = 'primary',
  size = 'md',
  children,
  ...props
}) {
  return (
    <button
      className={`
        inline-flex items-center justify-center gap-2 rounded-lg font-medium
        transition-all duration-150 disabled:opacity-50 disabled:cursor-not-allowed
        ${variants[variant]} ${sizes[size]}
      `}
      {...props}
    >
      {children}
    </button>
  );
}
```

### Input with Polish
```tsx
export function Input({ label, error, hint, ...props }) {
  return (
    <div className="space-y-1.5">
      {label && (
        <label className="block text-sm font-medium text-neutral-700">
          {label}
        </label>
      )}
      <input
        className={`
          w-full px-3.5 py-2.5 rounded-lg border bg-white text-neutral-900
          placeholder:text-neutral-400 transition-all duration-150
          focus:outline-none focus:ring-2 focus:ring-offset-1
          ${error
            ? 'border-red-500 focus:ring-red-500/20'
            : 'border-neutral-200 hover:border-neutral-300 focus:border-neutral-900 focus:ring-neutral-900/10'}
        `}
        {...props}
      />
      {error && <p className="text-sm text-red-600">{error}</p>}
      {hint && !error && <p className="text-sm text-neutral-500">{hint}</p>}
    </div>
  );
}
```

## Dashboard Layout
```tsx
export function DashboardLayout({ children }) {
  return (
    <div className="min-h-screen bg-neutral-50">
      {/* Sidebar */}
      <aside className="fixed inset-y-0 left-0 w-64 bg-white border-r border-neutral-200">
        <div className="h-16 flex items-center px-6 border-b border-neutral-200">
          <span className="text-lg font-semibold">Dashboard</span>
        </div>
        <nav className="p-4 space-y-1">
          <NavItem icon="home" label="Overview" active />
          <NavItem icon="chart" label="Analytics" />
          <NavItem icon="users" label="Customers" />
          <NavItem icon="settings" label="Settings" />
        </nav>
      </aside>

      {/* Main */}
      <main className="pl-64">
        <header className="sticky top-0 z-10 h-16 bg-white/80 backdrop-blur-sm
                         border-b border-neutral-200 flex items-center px-6">
          <div className="flex-1" />
          <div className="flex items-center gap-4">
            <button className="p-2 hover:bg-neutral-100 rounded-lg transition-colors">
              <BellIcon />
            </button>
            <div className="w-8 h-8 rounded-full bg-neutral-200" />
          </div>
        </header>
        <div className="p-6 lg:p-8">
          {children}
        </div>
      </main>
    </div>
  );
}
```

## Responsive Strategy

**Mobile-first, breakpoint-intentional:**
```tsx
// Not just "add columns at breakpoints"
// Consider what changes at each size

<section className="
  py-12         // Mobile: tighter
  md:py-16      // Tablet: medium
  lg:py-24      // Desktop: generous

  px-4          // Mobile: edge-to-edge
  md:px-8       // Tablet: some breathing room
  lg:px-0       // Desktop: centered container
">
```

## Accessibility Checklist

- [ ] Semantic HTML (button for actions, a for links)
- [ ] Heading hierarchy (h1 → h2 → h3, no skips)
- [ ] Color contrast ≥ 4.5:1 (use WebAIM checker)
- [ ] Focus states visible (focus-visible, not just focus)
- [ ] Alt text for meaningful images
- [ ] Keyboard navigable (Tab, Enter, Escape)
- [ ] aria-labels on icon-only buttons
- [ ] Reduced motion support (@media (prefers-reduced-motion))

## Output Format

```markdown
## Frontend Build: [Component/Page Name]

### Design Direction
- Tone: [Minimal/Bold/Warm/etc.]
- Key differentiator: [One memorable choice]

### Components Created
1. [Component 1] - [Purpose]
2. [Component 2] - [Purpose]

### Styling Approach
- Colors: [Palette used]
- Typography: [Fonts, scale]
- Motion: [Key animations]

### Accessibility
- [ ] Semantic HTML
- [ ] Keyboard nav
- [ ] Contrast checked

### Files
- [path/to/component.tsx]
```

Related Skills

frontend-responsive

16
from diegosouzapw/awesome-omni-skill

Implement responsive designs that work across mobile, tablet, and desktop screen sizes. Use this skill when applying mobile-first development patterns, using responsive breakpoints, creating fluid layouts with percentage-based widths, choosing relative units (rem/em) over pixels, ensuring touch-friendly tap targets, or optimizing images for mobile. Applies when working on any frontend layout code, media queries, responsive utilities, and when testing UI across different screen sizes.

Frontend Responsive Design Standards

16
from diegosouzapw/awesome-omni-skill

Build responsive, mobile-first layouts using fluid containers, flexible units, media queries, and touch-friendly design that works across all screen sizes. Use this skill when creating or modifying UI layouts, responsive grids, breakpoint styles, mobile navigation, or any interface that needs to adapt to different screen sizes. Apply when working with responsive CSS, media queries, viewport settings, flexbox/grid layouts, mobile-first styling, breakpoint definitions (mobile, tablet, desktop), touch target sizing, relative units (rem, em, %), image optimization for different screens, or testing layouts across multiple devices. Use for any task involving multi-device support, responsive design patterns, or adaptive layouts.

frontend-playbook

16
from diegosouzapw/awesome-omni-skill

The complete build-to-production pipeline for Ethereum dApps. Fork mode setup, IPFS deployment, Vercel config, ENS subdomain setup, and the full production checklist. Built around Scaffold-ETH 2 but applicable to any Ethereum frontend project. Use when deploying any dApp to production.

frontend-patterns

16
from diegosouzapw/awesome-omni-skill

Frontend development and API integration patterns for React, TypeScript, and state management

frontend-pages-components

16
from diegosouzapw/awesome-omni-skill

Build responsive frontend pages, reusable components, layouts, and styling using modern best practices.

frontend-nuxt

16
from diegosouzapw/awesome-omni-skill

Nuxt 4 & TailwindCSS expert for modern web applications (SSR, SPA, Hybrid).

frontend

16
from diegosouzapw/awesome-omni-skill

Modern frontend development with React, Vue, and web technologies

frontend-mobile-security-xss-scan

16
from diegosouzapw/awesome-omni-skill

You are a frontend security specialist focusing on Cross-Site Scripting (XSS) vulnerability detection and prevention. Analyze React, Vue, Angular, and vanilla JavaScript code to identify injection poi

frontend-mobile-development-component-scaffold

16
from diegosouzapw/awesome-omni-skill

You are a React component architecture expert specializing in scaffolding production-ready, accessible, and performant components. Generate complete component implementations with TypeScript, tests, s

frontend-master

16
from diegosouzapw/awesome-omni-skill

Frontend Master - 大师级前端页面开发。智能分析项目技术栈,生成独特设计美感的 UI,避免'AI审美'。自动持久化设计规范,保持项目一致性。整合 Frontend-Design 设计哲学 + UI-UX Pro Max 设计数据库。触发词: 前端、页面、组件、UI、登录页、落地页、dashboard、表单、卡片、导航栏。

frontend-guidelines

16
from diegosouzapw/awesome-omni-skill

Core architectural rules, coding conventions, and tech stack guidelines for the Dog-Love Frontend. Reference this for all frontend code changes.

Frontend Functional Validator (Detective)

16
from diegosouzapw/awesome-omni-skill

Clicks through the running UI to identify broken features and missing backend endpoints.