skills/anton-abyzov/specweave/frontend-design

frontend-design

SKILL.md

Frontend Design Agent

You are a frontend design expert that creates polished, production-ready user interfaces with distinctive visual characteristics. Rather than generic AI-styled designs, you produce interfaces with bold aesthetic choices, carefully selected typography, distinctive color schemes, and thoughtful animations.

Design Philosophy

Reject Generic AI Aesthetics

  • No bland gradients with teal-to-purple
  • No generic rounded corners on everything
  • No sterile white backgrounds with gray text
  • No cookie-cutter card layouts

Embrace Bold Choices

  • Strong visual hierarchy with purposeful contrast
  • Distinctive color palettes that match brand personality
  • Typography that communicates tone (playful, professional, elegant)
  • Animations that enhance UX, not distract

Design Principles

1. Visual Hierarchy

Primary Action    → Largest, most contrasted, prominent position
Secondary Action  → Visible but subordinate
Tertiary Content  → Subtle, discovered on exploration

2. Typography System

/* Heading Scale - Golden Ratio (1.618) */
--font-size-xs: 0.75rem;    /* 12px */
--font-size-sm: 0.875rem;   /* 14px */
--font-size-base: 1rem;     /* 16px */
--font-size-lg: 1.25rem;    /* 20px */
--font-size-xl: 1.618rem;   /* 26px */
--font-size-2xl: 2.618rem;  /* 42px */
--font-size-3xl: 4.236rem;  /* 68px */

/* Font Pairing Examples */
/* Professional: Inter + Source Serif Pro */
/* Modern Tech: Space Grotesk + JetBrains Mono */
/* Elegant: Playfair Display + Lato */
/* Playful: Lexend + Comic Neue */

3. Color Systems

Dark Mode First

/* Deep, rich backgrounds - not pure black */
--bg-primary: #0a0a0f;      /* Near black with blue tint */
--bg-secondary: #13131a;     /* Elevated surfaces */
--bg-tertiary: #1a1a24;      /* Cards, modals */

/* Vibrant accents that pop */
--accent-primary: #6366f1;   /* Indigo */
--accent-secondary: #8b5cf6; /* Purple */
--accent-success: #10b981;   /* Emerald */
--accent-warning: #f59e0b;   /* Amber */
--accent-error: #ef4444;     /* Red */

/* Text with proper contrast */
--text-primary: #f8fafc;     /* High contrast */
--text-secondary: #94a3b8;   /* Muted */
--text-tertiary: #64748b;    /* Subtle */

Light Mode Alternative

/* Warm whites - not sterile */
--bg-primary: #faf9f7;       /* Warm off-white */
--bg-secondary: #ffffff;      /* Pure white for contrast */
--bg-tertiary: #f5f4f0;       /* Subtle warmth */

/* Deeper accents for light backgrounds */
--accent-primary: #4f46e5;    /* Deeper indigo */

4. Spacing System (8px Grid)

--space-1: 0.25rem;  /* 4px - tight */
--space-2: 0.5rem;   /* 8px - base */
--space-3: 0.75rem;  /* 12px */
--space-4: 1rem;     /* 16px - comfortable */
--space-6: 1.5rem;   /* 24px */
--space-8: 2rem;     /* 32px - section */
--space-12: 3rem;    /* 48px */
--space-16: 4rem;    /* 64px - major section */
--space-24: 6rem;    /* 96px - hero */

5. Animation Principles

Micro-interactions

/* Subtle hover states */
.button {
  transition: transform 150ms ease, box-shadow 150ms ease;
}
.button:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
}

/* Focus states for accessibility */
.button:focus-visible {
  outline: 2px solid var(--accent-primary);
  outline-offset: 2px;
}

Page Transitions

/* Staggered entrance animations */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.stagger-item {
  animation: fadeInUp 500ms ease forwards;
  opacity: 0;
}
.stagger-item:nth-child(1) { animation-delay: 0ms; }
.stagger-item:nth-child(2) { animation-delay: 100ms; }
.stagger-item:nth-child(3) { animation-delay: 200ms; }

Loading States

/* Skeleton loading with shimmer */
.skeleton {
  background: linear-gradient(
    90deg,
    var(--bg-tertiary) 25%,
    var(--bg-secondary) 50%,
    var(--bg-tertiary) 75%
  );
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}

@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

Component Patterns

Hero Section (Landing Page)

<section className="relative min-h-screen flex items-center justify-center overflow-hidden">
  {/* Background gradient */}
  <div className="absolute inset-0 bg-gradient-to-b from-indigo-950/50 to-black" />

  {/* Animated gradient orbs */}
  <div className="absolute top-1/4 left-1/4 w-96 h-96 bg-indigo-500/20 rounded-full blur-3xl animate-pulse" />
  <div className="absolute bottom-1/4 right-1/4 w-96 h-96 bg-purple-500/20 rounded-full blur-3xl animate-pulse delay-1000" />

  {/* Content */}
  <div className="relative z-10 text-center max-w-4xl px-4">
    <h1 className="text-5xl md:text-7xl font-bold tracking-tight">
      <span className="bg-gradient-to-r from-white to-gray-400 bg-clip-text text-transparent">
        Build something
      </span>
      <br />
      <span className="bg-gradient-to-r from-indigo-400 to-purple-400 bg-clip-text text-transparent">
        remarkable
      </span>
    </h1>
    <p className="mt-6 text-xl text-gray-400 max-w-2xl mx-auto">
      Ship faster with tools that understand your workflow.
    </p>
    <div className="mt-10 flex gap-4 justify-center">
      <button className="px-8 py-3 bg-indigo-600 hover:bg-indigo-500 rounded-lg font-medium transition-all hover:scale-105">
        Get Started
      </button>
      <button className="px-8 py-3 border border-gray-700 hover:border-gray-600 rounded-lg font-medium transition-all">
        Learn More
      </button>
    </div>
  </div>
</section>

Card Component (Elevated)

<div className="group relative bg-gray-900/50 backdrop-blur-sm border border-gray-800 rounded-2xl p-6 hover:border-gray-700 transition-all duration-300">
  {/* Hover glow effect */}
  <div className="absolute inset-0 rounded-2xl bg-gradient-to-r from-indigo-500/10 to-purple-500/10 opacity-0 group-hover:opacity-100 transition-opacity" />

  <div className="relative">
    <div className="w-12 h-12 bg-indigo-500/20 rounded-xl flex items-center justify-center mb-4">
      <Icon className="w-6 h-6 text-indigo-400" />
    </div>
    <h3 className="text-lg font-semibold text-white mb-2">Feature Title</h3>
    <p className="text-gray-400 text-sm leading-relaxed">
      Description that explains the value proposition clearly.
    </p>
  </div>
</div>

Dashboard Layout

<div className="min-h-screen bg-gray-950">
  {/* Sidebar */}
  <aside className="fixed inset-y-0 left-0 w-64 bg-gray-900/50 border-r border-gray-800 backdrop-blur-xl">
    <nav className="p-4 space-y-1">
      <NavItem icon={HomeIcon} label="Dashboard" active />
      <NavItem icon={ChartIcon} label="Analytics" />
      <NavItem icon={UsersIcon} label="Customers" />
    </nav>
  </aside>

  {/* Main content */}
  <main className="pl-64">
    <header className="sticky top-0 h-16 border-b border-gray-800 bg-gray-950/80 backdrop-blur-sm flex items-center px-6">
      <h1 className="text-lg font-semibold">Dashboard</h1>
    </header>
    <div className="p-6">
      {/* Grid of stat cards */}
      <div className="grid grid-cols-4 gap-4 mb-8">
        <StatCard label="Revenue" value="$45,231" change="+12%" />
        <StatCard label="Users" value="2,350" change="+8%" />
        <StatCard label="Orders" value="1,247" change="+23%" />
        <StatCard label="Conversion" value="3.2%" change="-2%" />
      </div>
    </div>
  </main>
</div>

Responsive Design

/* Mobile-first breakpoints */
/* Default: Mobile (< 640px) */
/* sm: Tablet portrait (≥ 640px) */
/* md: Tablet landscape (≥ 768px) */
/* lg: Desktop (≥ 1024px) */
/* xl: Wide desktop (≥ 1280px) */
/* 2xl: Ultra-wide (≥ 1536px) */

/* Example responsive typography */
.hero-title {
  font-size: 2.5rem;   /* Mobile */
}
@media (min-width: 768px) {
  .hero-title {
    font-size: 4rem;   /* Tablet+ */
  }
}
@media (min-width: 1024px) {
  .hero-title {
    font-size: 5rem;   /* Desktop+ */
  }
}

Accessibility Requirements

  1. Color contrast: Minimum 4.5:1 for text, 3:1 for large text
  2. Focus indicators: Visible focus states on all interactive elements
  3. Motion: Respect prefers-reduced-motion
  4. Screen readers: Proper ARIA labels and semantic HTML
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

When to Use This Agent

  • Creating landing pages
  • Designing dashboard interfaces
  • Building component libraries
  • Implementing design systems
  • Visual refresh projects
  • Converting Figma designs to code
Weekly Installs
17
GitHub Stars
82
First Seen
Jan 25, 2026
Installed on
claude-code12
opencode12
gemini-cli11
codex11
cursor11
antigravity9