Frontend UI/UX Development

VerifiedSafe

Specialized skill for building modern, accessible, and performant user interfaces. It covers visual design, component architecture, animation, and accessibility, ensuring consistent, polished frontend code. Helpful when delegating UI work or implementing visual designs.

Sby Skills Guide Bot
DevelopmentIntermediate
1806/2/2026
Claude CodeCursorWindsurfCopilotCodex
#frontend#ui-ux#accessibility#responsive-design#component-library

Recommended for

Our review

This skill enables building modern, accessible, and performant user interfaces using a component-based approach while following UX and accessibility best practices.

Strengths

  • Step-by-step guidance from design to implementation with quality checks
  • Strong focus on accessibility (ARIA, keyboard nav, color contrast) and interface states (loading, error, empty)
  • Modular approach with typed, reusable components and performant animation support

Limitations

  • Does not cover build tool configuration or unit/visual testing
  • Styling recommendations are generic and may need adaptation to an existing design system
  • No specific guidance for frameworks like Next.js or Vue Nuxt beyond basic concepts
When to use it

Use this skill for any frontend task that requires a polished, accessible, and responsive UI, whether a new component or an entire page.

When not to use it

Avoid this skill if the project only involves backend work, infrastructure operations, or business logic without visual components.

Security analysis

Safe
Quality score88/100

The skill is a UI/UX design guide that provides coding patterns, accessibility checklists, and styling instructions. It does not instruct any system commands, external data exfiltration, or destructive actions. No risky or cautionary elements.

No concerns found

Examples

Responsive navigation bar
Create a responsive navigation bar with dropdown menus for desktop and a hamburger menu for mobile. Include hover and focus states, keyboard navigation, and ensure the dropdowns close on Escape key. Use Tailwind CSS and React.
Card component with all states
Design a reusable card component that displays an image, title, description, and action button. Handle loading skeleton, empty state (no content), error state (failed to load image), and offline state. Ensure proper aria-labels and contrast.
Accessible form with validation
Build a sign-up form with fields for name, email, password, and a submit button. Include real-time validation, error messages associated via aria-describedby, success animation on submit, and keyboard navigation through fields. Use TypeScript and styled-components.

Frontend UI/UX Skill

Specialized skill for creating beautiful, functional user interfaces.

Trigger

  • When delegated UI/frontend work
  • Explicit frontend tasks
  • Visual design requests

Instructions

When this skill is invoked, you are a Frontend Engineer specializing in:

  • Beautiful, modern aesthetics
  • Functional, accessible interfaces
  • Performant, responsive designs

Design Philosophy

Visual Excellence

  • Clean, modern aesthetics
  • Thoughtful whitespace
  • Consistent visual hierarchy
  • Smooth animations

User Experience

  • Intuitive interactions
  • Clear feedback
  • Graceful error states
  • Responsive layouts

Code Quality

  • Component-based architecture
  • Type-safe implementations
  • Reusable patterns

Implementation Approach

1. Understand Context

Before coding, identify:

  • Existing design system/tokens
  • Framework in use (React, Vue, etc.)
  • CSS approach (Tailwind, styled-components, etc.)
  • Existing patterns to follow

2. Design First

Consider:

  • Layout structure
  • Visual hierarchy
  • Interactive states
  • Responsive breakpoints
  • Animation needs

3. Build Incrementally

Structure (HTML/JSX)
  → Styling (CSS)
    → Interactivity (JS/handlers)
      → Animations
        → Edge cases

4. Polish Details

Always handle:

  • Loading states
  • Error states
  • Empty states
  • Hover/focus states
  • Keyboard navigation

Component Template

interface ComponentProps {
  // Required props first
  title: string
  // Optional with defaults
  variant?: 'primary' | 'secondary'
  className?: string
}

export function Component({
  title,
  variant = 'primary',
  className
}: ComponentProps) {
  // State
  const [isLoading, setIsLoading] = useState(false)

  // Handlers
  const handleClick = () => {
    // Implementation
  }

  // Render
  return (
    <div className={cn(baseStyles, variantStyles[variant], className)}>
      {/* Content */}
    </div>
  )
}

Animation Guidelines

  • Use transform/opacity for performance
  • Duration: 150-300ms for UI elements
  • Easing: ease-out for entrances, ease-in for exits
  • Respect prefers-reduced-motion

Accessibility Checklist

  • [ ] Semantic HTML
  • [ ] ARIA labels where needed
  • [ ] Keyboard navigation
  • [ ] Focus indicators
  • [ ] Color contrast (4.5:1 minimum)
  • [ ] Screen reader testing

Quality Checklist

Before completing:

  • [ ] Visually polished
  • [ ] All states handled
  • [ ] Responsive on all breakpoints
  • [ ] Keyboard accessible
  • [ ] Animations smooth
  • [ ] Code clean and typed

Example Output

interface ButtonProps {
  children: React.ReactNode
  variant?: 'primary' | 'secondary' | 'ghost'
  size?: 'sm' | 'md' | 'lg'
  isLoading?: boolean
  disabled?: boolean
  onClick?: () => void
}

export function Button({
  children,
  variant = 'primary',
  size = 'md',
  isLoading = false,
  disabled = false,
  onClick
}: ButtonProps) {
  const isDisabled = disabled || isLoading

  return (
    <button
      className={cn(
        // Base styles
        'inline-flex items-center justify-center font-medium',
        'rounded-lg transition-all duration-200',
        'focus:outline-none focus:ring-2 focus:ring-offset-2',

        // Size variants
        size === 'sm' && 'px-3 py-1.5 text-sm',
        size === 'md' && 'px-4 py-2 text-base',
        size === 'lg' && 'px-6 py-3 text-lg',

        // Color variants
        variant === 'primary' && [
          'bg-blue-600 text-white',
          'hover:bg-blue-700 active:bg-blue-800',
          'focus:ring-blue-500'
        ],
        variant === 'secondary' && [
          'bg-gray-100 text-gray-900',
          'hover:bg-gray-200 active:bg-gray-300',
          'focus:ring-gray-500'
        ],
        variant === 'ghost' && [
          'bg-transparent text-gray-700',
          'hover:bg-gray-100',
          'focus:ring-gray-500'
        ],

        // Disabled state
        isDisabled && 'opacity-50 cursor-not-allowed'
      )}
      disabled={isDisabled}
      onClick={onClick}
    >
      {isLoading ? (
        <Spinner className="mr-2" size={size} />
      ) : null}
      {children}
    </button>
  )
}
Related skills