frontend-ui-ux-engineer

Frontend UI/UX Engineer

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "frontend-ui-ux-engineer" with this command: npx skills add neversight/skills_feed/neversight-skills-feed-frontend-ui-ux-engineer

Frontend UI/UX Engineer

Purpose

Provides frontend design and development expertise specializing in creating visually stunning, user-centric interfaces without requiring design mockups. Crafts beautiful UI/UX with creative design thinking, advanced styling, animations, and accessibility best practices for modern web applications.

When to Use

  • Need to transform functional UI into visually stunning interfaces

  • Design mockups don't exist but beautiful UI is required

  • Visual polish and micro-interactions are priority

  • Component styling requires creative design thinking

  • User experience improvements needed without dedicated designer

Quick Start

Invoke this skill when:

  • Need to transform functional UI into visually stunning interfaces

  • Design mockups don't exist, but beautiful UI is required

  • Visual polish and micro-interactions are priority over code elegance

  • Component styling requires creative design thinking

  • User experience improvements needed without dedicated designer

Do NOT invoke when:

  • Backend logic or API development needed

  • Pure code refactoring without visual changes

  • Performance optimization is sole priority

  • Security-focused development required

  • Database or infrastructure work

Core Workflows

Workflow 1: Transform Functional Component to Stunning UI

Use case: Given a plain React component, make it visually exceptional

Input Example:

// Before: Functional but plain function ProductCard({ product }: { product: Product }) { return ( <div> <img src={product.image} alt={product.name} /> <h3>{product.name}</h3> <p>${product.price}</p> <button>Add to Cart</button> </div> ); }

Steps:

  1. Visual Analysis (2 minutes)

Questions to answer:

  • What emotion should this evoke? (Premium? Playful? Trustworthy?)
  • What's the visual hierarchy? (Image > Name > Price > CTA)
  • What interactions delight users? (Hover effects, smooth transitions)
  • Where's the whitespace needed? (Breathing room around elements)
  1. Color & Typography Enhancement

// After: Visual foundation established import { motion } from 'framer-motion';

function ProductCard({ product }: { product: Product }) { return ( <motion.div className="group relative overflow-hidden rounded-2xl bg-white shadow-lg transition-shadow hover:shadow-2xl" whileHover={{ y: -4 }} transition={{ duration: 0.2, ease: 'easeOut' }} > {/* Image container with aspect ratio /} <div className="relative aspect-square overflow-hidden"> <img src={product.image} alt={product.name} className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110" /> {/ Gradient overlay for readability */} <div className="absolute inset-0 bg-gradient-to-t from-black/50 to-transparent opacity-0 transition-opacity group-hover:opacity-100" /> </div>

  {/* Content with proper spacing */}
  &#x3C;div className="p-6 space-y-3">
    &#x3C;h3 className="text-xl font-semibold text-gray-900 line-clamp-2">
      {product.name}
    &#x3C;/h3>
    
    &#x3C;div className="flex items-baseline gap-2">
      &#x3C;span className="text-2xl font-bold text-blue-600">
        ${product.price}
      &#x3C;/span>
      {product.compareAtPrice &#x26;&#x26; (
        &#x3C;span className="text-sm text-gray-500 line-through">
          ${product.compareAtPrice}
        &#x3C;/span>
      )}
    &#x3C;/div>

    {/* Enhanced CTA button */}
    &#x3C;button className="w-full rounded-lg bg-blue-600 px-6 py-3 font-medium text-white transition-colors hover:bg-blue-700 active:bg-blue-800 disabled:bg-gray-300 disabled:cursor-not-allowed">
      Add to Cart
    &#x3C;/button>
  &#x3C;/div>
&#x3C;/motion.div>

); }

  1. Micro-interactions & Polish

// Final: Delightful interactions added function ProductCard({ product, onAddToCart }: ProductCardProps) { const [isAdded, setIsAdded] = useState(false);

const handleAddToCart = () => { onAddToCart(product); setIsAdded(true); setTimeout(() => setIsAdded(false), 2000); };

return ( <motion.div layout className="group relative overflow-hidden rounded-2xl bg-white shadow-lg transition-shadow hover:shadow-2xl" whileHover={{ y: -4 }} > <div className="relative aspect-square overflow-hidden"> <img src={product.image} alt={product.name} className="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110" />

    {/* Sale badge with animation */}
    {product.onSale &#x26;&#x26; (
      &#x3C;motion.div
        initial={{ scale: 0, rotate: -180 }}
        animate={{ scale: 1, rotate: 0 }}
        className="absolute top-4 right-4 rounded-full bg-red-500 px-3 py-1 text-sm font-bold text-white shadow-lg"
      >
        SALE
      &#x3C;/motion.div>
    )}
  &#x3C;/div>

  &#x3C;div className="p-6 space-y-3">
    &#x3C;h3 className="text-xl font-semibold text-gray-900 line-clamp-2 transition-colors group-hover:text-blue-600">
      {product.name}
    &#x3C;/h3>
    
    &#x3C;div className="flex items-baseline gap-2">
      &#x3C;motion.span
        className="text-2xl font-bold text-blue-600"
        key={product.price} // Re-animate on price change
        initial={{ scale: 1.2, color: '#ef4444' }}
        animate={{ scale: 1, color: '#2563eb' }}
      >
        ${product.price}
      &#x3C;/motion.span>
      {product.compareAtPrice &#x26;&#x26; (
        &#x3C;span className="text-sm text-gray-500 line-through">
          ${product.compareAtPrice}
        &#x3C;/span>
      )}
    &#x3C;/div>

    {/* Button with success state */}
    &#x3C;button
      onClick={handleAddToCart}
      className={`
        w-full rounded-lg px-6 py-3 font-medium text-white transition-all
        ${isAdded 
          ? 'bg-green-500 scale-105' 
          : 'bg-blue-600 hover:bg-blue-700 active:scale-95'
        }
      `}
    >
      {isAdded ? (
        &#x3C;span className="flex items-center justify-center gap-2">
          &#x3C;CheckIcon className="h-5 w-5" />
          Added!
        &#x3C;/span>
      ) : (
        'Add to Cart'
      )}
    &#x3C;/button>
  &#x3C;/div>
&#x3C;/motion.div>

); }

Expected Outcome:

  • Visual appeal increased 5x

  • Engagement metrics improve 20-40% (typical)

  • User delight through micro-interactions

  • Maintains accessibility (ARIA labels, keyboard navigation)

Patterns & Templates

Pattern 1: Glassmorphism Card

When to use: Modern, premium aesthetic (works well with colorful backgrounds)

function GlassCard({ children, className = '' }: GlassCardProps) { return ( <div className={ relative overflow-hidden rounded-2xl backdrop-blur-xl backdrop-saturate-150 bg-white/10 border border-white/20 shadow-xl shadow-black/5 ${className} }> {/* Optional gradient overlay */} <div className="absolute inset-0 bg-gradient-to-br from-white/20 to-transparent opacity-50" />

  &#x3C;div className="relative z-10 p-6">
    {children}
  &#x3C;/div>
&#x3C;/div>

); }

Pattern 3: Skeleton Loading with Shimmer

When to use: Loading states for cards, lists (better UX than spinners)

function SkeletonCard() { return ( <div className="relative overflow-hidden rounded-xl bg-gray-200 p-6"> {/* Shimmer effect */} <div className="absolute inset-0 -translate-x-full animate-shimmer bg-gradient-to-r from-transparent via-white/50 to-transparent" />

  {/* Skeleton content */}
  &#x3C;div className="space-y-4">
    &#x3C;div className="h-4 w-3/4 rounded bg-gray-300" />
    &#x3C;div className="h-4 w-1/2 rounded bg-gray-300" />
    &#x3C;div className="h-32 w-full rounded bg-gray-300" />
  &#x3C;/div>
&#x3C;/div>

); }

// Tailwind config (add to tailwind.config.js) { theme: { extend: { animation: { shimmer: 'shimmer 2s infinite', }, keyframes: { shimmer: { '100%': { transform: 'translateX(100%)' }, }, }, }, }, }

❌ Anti-Pattern 2: Ignoring Color Contrast

What it looks like:

/* ❌ Gray text on light gray background = unreadable / .subtle-text { color: #999999; background: #f0f0f0; / Contrast ratio: 2.1:1 (FAILS WCAG AA 4.5:1 requirement) */ }

Why it fails:

  • Fails WCAG AA accessibility (4.5:1 contrast for text)

  • Users with visual impairments cannot read content

  • Poor UX in bright sunlight (mobile devices)

Correct approach:

/* ✅ Sufficient contrast / .readable-text { color: #333333; background: #ffffff; / Contrast ratio: 12.6:1 (PASSES WCAG AAA) */ }

/* Or use design system tokens / .text { color: var(--color-text-primary); / Guaranteed 4.5:1 / background: var(--color-bg-surface); / Against text color */ }

Quality Checklist

Visual Polish

  • Color palette uses max 3 primary colors + neutrals

  • Typography hierarchy clear (3-5 font sizes)

  • Spacing follows consistent scale (4px, 8px, 16px, 24px, 32px...)

  • Hover states on all interactive elements

  • Loading states for async actions

  • Empty states with helpful messaging

Accessibility

  • Color contrast ≥4.5:1 for text (WCAG AA)

  • Focus indicators visible on all interactive elements

  • Animations respect prefers-reduced-motion

  • Alt text on all images

  • Keyboard navigation works (Tab, Enter, Esc)

Responsive Design

  • Mobile-first approach (320px base)

  • Breakpoints: sm (640px), md (768px), lg (1024px), xl (1280px)

  • Touch targets ≥44x44px (mobile)

  • No horizontal scroll on mobile

  • Images responsive (max-width: 100% , height: auto )

Performance

  • Animations use transform and opacity (GPU-accelerated)

  • Images optimized (WebP, lazy loading)

  • CSS bundle <50KB (after minification)

  • No layout shift (CLS <0.1)

  • Fonts preloaded (<link rel="preload"> )

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

ui-designer

No summary provided by upstream source.

Repository SourceNeeds Review
General

react-best-practices

No summary provided by upstream source.

Repository SourceNeeds Review
General

ai-image-generation

No summary provided by upstream source.

Repository SourceNeeds Review
General

front-end-skill

No summary provided by upstream source.

Repository SourceNeeds Review