This skill should be used when users want to create new UIs, improve existing UIs, compare UI variations (A/B testing), or build component libraries...
To create high-quality user interfaces, combine visual design principles with practical implementation and objective evaluation. This skill provides comprehensive guidance for creating new UIs from descriptions, analyzing and improving existing interfaces, A/B testing variations, and building accessible component libraries. Uniquely integrates Playwright automation to objectively evaluate UI quality through accessibility audits, performance metrics, and visual regression testing.
Current Standards (2025):
User Request → What is the goal?
|
├─ Creating new UI from description?
│ ├─ Simple component? → Quick Start: Component Creation
│ └─ Full page/app? → Workflow 1: Full UI Creation
│
├─ Analyzing existing UI?
│ └─ Use Workflow 2: UI Analysis & Evaluation
│ └─ Run scripts/evaluate-ui.ts for objective metrics
│
├─ Improving existing UI?
│ └─ Use Workflow 3: UI Improvement
│ ├─ Load references/anti-patterns.md (common mistakes)
│ ├─ Load references/accessibility-guidelines.md (a11y issues)
│ └─ Load references/ui-design-principles.md (design improvements)
│
├─ Comparing UI variations (A/B testing)?
│ └─ Use Workflow 4: A/B Testing Comparison
│ └─ Run scripts/compare-variations.ts for side-by-side analysis
│
├─ Building component library?
│ └─ Use Workflow 5: Component Library Creation
│ ├─ Use assets/component-templates/ as starting point
│ ├─ Use assets/design-tokens.json for consistency
│ └─ Run scripts/init-component.ts to scaffold components
│
├─ Need design system guidance?
│ └─ Load references/ui-design-principles.md
│
├─ Need accessibility help?
│ └─ Load references/accessibility-guidelines.md
│
└─ Need component patterns?
└─ Load references/component-patterns.md
To create an accessible button component quickly:
import React from 'react';
interface ButtonProps {
variant?: 'primary' | 'secondary';
size?: 'sm' | 'md' | 'lg';
children: React.ReactNode;
onClick?: () => void;
}
export function Button({
variant = 'primary',
size = 'md',
children,
...rest
}: ButtonProps) {
return (
<button
className={`button button-${variant} button-${size}`}
{...rest}
>
{children}
</button>
);
}
Use the component scaffolding script for complex components:
npx tsx scripts/init-component.ts button --type button --framework react
This generates a production-ready component with:
After creating the component, evaluate its quality:
npx tsx scripts/evaluate-ui.ts http://localhost:3000/components/button
This provides:
To create a complete UI from a description, follow this systematic approach.
To begin UI creation:
Example conversation:
To design the interface:
Apply design principles:
references/ui-design-principles.md for comprehensive guidanceEnsure accessibility:
references/accessibility-guidelines.md for WCAG 2.2 requirementsChoose design tokens:
assets/design-tokens.json as a starting pointCreate visual mockup (optional):
To implement the UI:
Choose framework:
<script setup> syntaxStructure components:
references/component-patterns.md for patternsImplement with accessibility:
<button>, <nav>, <main>)Style with consistency:
Example implementation:
// Dashboard.tsx
import { Card, CardHeader, CardBody } from '@/components/Card';
import { MetricCard } from '@/components/MetricCard';
export function FitnessDashboard() {
return (
<main className="max-w-7xl mx-auto p-6">
<h1 className="text-3xl font-bold mb-6">Fitness Dashboard</h1>
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
<MetricCard
title="Steps Today"
value="8,432"
goal="10,000"
icon={<StepsIcon />}
/>
<MetricCard
title="Calories Burned"
value="420"
goal="500"
icon={<CaloriesIcon />}
/>
<MetricCard
title="Active Minutes"
value="45"
goal="60"
icon={<TimeIcon />}
/>
</div>
</main>
);
}
To objectively assess UI quality:
# Evaluate accessibility and performance
npx tsx scripts/evaluate-ui.ts http://localhost:3000/dashboard --a11y --performance --screenshot
# Results:
# - Accessibility: 0 violations (100% WCAG 2.2 AA compliant)
# - Performance: LCP 1.2s, CLS 0.02
# - Score: 95/100
# - Screenshots saved to ./ui-evaluation/
Load references/playwright-evaluation.md for detailed evaluation patterns.
To improve based on evaluation results:
To analyze an existing UI objectively:
npx tsx scripts/evaluate-ui.ts https://example.com/page \
--viewport 1920x1080 \
--a11y \
--performance \
--screenshot \
--output-dir ./analysis
This generates:
To understand evaluation output:
Accessibility Violations:
Performance Metrics:
Overall Score:
Load references/playwright-evaluation.md for advanced evaluation techniques.
To improve an existing UI based on analysis:
From evaluation report, categorize issues:
references/accessibility-guidelines.mdreferences/ui-design-principles.mdreferences/anti-patterns.mdOrder by impact:
Apply improvements systematically:
Accessibility fixes:
// Before: Missing alt text
<img src="chart.png" />
// After: Descriptive alt text
<img src="chart.png" alt="Sales chart showing 25% increase in Q4" />
Performance optimizations:
// Before: Eager loading all images
<img src="large-image.jpg" />
// After: Lazy loading with responsive images
<img
src="large-image.jpg"
srcSet="small.jpg 400w, medium.jpg 800w, large.jpg 1200w"
sizes="(max-width: 600px) 400px, (max-width: 1200px) 800px, 1200px"
loading="lazy"
alt="Description"
/>
Design improvements:
/* Before: Poor contrast */
.text {
color: #999999; /* Contrast ratio: 2.3:1 (fails WCAG) */
background: #ffffff;
}
/* After: Sufficient contrast */
.text {
color: #333333; /* Contrast ratio: 7.0:1 (passes AAA) */
background: #ffffff;
}
Re-run evaluation to confirm fixes:
npx tsx scripts/evaluate-ui.ts https://example.com/page --threshold 85
Exit code 0 if score >= 85, exit code 1 otherwise (useful for CI/CD).
To compare multiple UI variations objectively:
Implement design variations:
// Variation A: Traditional button
<button className="bg-blue-600 text-white px-6 py-3 rounded">
Sign Up
</button>
// Variation B: Outline button
<button className="border-2 border-blue-600 text-blue-600 px-6 py-3 rounded">
Sign Up
</button>
// Variation C: Gradient button
<button className="bg-gradient-to-r from-blue-600 to-purple-600 text-white px-6 py-3 rounded-lg">
Sign Up
</button>
npx tsx scripts/compare-variations.ts \
https://example.com/signup?variant=a \
https://example.com/signup?variant=b \
https://example.com/signup?variant=c \
--labels "Traditional,Outline,Gradient" \
--viewport 1920x1080
Comparison report shows:
Example output:
Variant A (Traditional): 90/100
Variant B (Outline): 88/100
Variant C (Gradient): 85/100 (slower FCP due to gradient rendering)
Winner: Variant A
To build a reusable component library:
Use assets/design-tokens.json as foundation:
Start with foundational components:
# Generate button component
npx tsx scripts/init-component.ts button --type button --tests --stories
# Generate input component
npx tsx scripts/init-component.ts input --type input --tests --stories
# Generate card component
npx tsx scripts/init-component.ts card --type card --tests --stories
# Generate modal component
npx tsx scripts/init-component.ts modal --type modal --tests --stories
Or copy from assets/component-templates/ for reference.
Create complex components from base components:
// Form built from Input, Button components
export function SignupForm() {
return (
<form>
<Input
label="Email"
type="email"
required
helperText="We'll never share your email"
/>
<Input
label="Password"
type="password"
required
helperText="Minimum 8 characters"
/>
<Button variant="primary" type="submit">
Create Account
</Button>
</form>
);
}
For each component:
Load references/component-patterns.md for advanced patterns.
Playwright enables objective UI evaluation beyond manual review.
Accessibility Auditing:
Visual Regression Testing:
Performance Measurement:
Responsive Testing:
evaluate-ui.ts - Comprehensive UI evaluation:
npx tsx scripts/evaluate-ui.ts <url> [options]
Options:
--viewport 1920x1080 # Desktop viewport
--mobile # Use mobile viewport (375x667)
--a11y # Run accessibility checks
--performance # Measure performance
--screenshot # Capture screenshots
--threshold 85 # Minimum score (CI/CD)
compare-variations.ts - A/B testing comparison:
npx tsx scripts/compare-variations.ts <url-a> <url-b> [options]
Options:
--labels "A,B,C" # Custom labels
--mobile # Mobile comparison
--viewport 1920x1080 # Custom viewport
init-component.ts - Component scaffolding:
npx tsx scripts/init-component.ts <name> [options]
Options:
--type button|input|card|modal|dropdown|custom
--framework react|vue
--typescript true|false
--tests true|false
--stories true|false
This skill includes comprehensive reference materials, evaluation scripts, and component templates:
Modern UI design principles including color theory, typography, layout, spacing, visual hierarchy, and 2025 design trends (glassmorphism, minimalism, bold typography). Covers design tokens and component libraries.
Load when: Creating new UIs, making design decisions, choosing colors/fonts, implementing design systems, need visual design guidance.
Complete WCAG 2.2 accessibility guide covering semantic HTML, ARIA patterns, keyboard navigation, screen reader support, color contrast, and common component accessibility patterns. Includes testing strategies.
Load when: Ensuring accessibility compliance, fixing a11y violations, implementing accessible components, keyboard navigation issues, screen reader testing.
Comprehensive guide to using Playwright for UI evaluation including visual regression testing, accessibility auditing with axe-core, performance measurement, responsive testing, and automated quality scoring.
Load when: Setting up evaluation workflows, understanding Playwright capabilities, writing visual tests, measuring performance, A/B testing comparisons.
Reusable component design patterns covering props design, composition patterns, styling approaches (Tailwind, CSS Modules, CSS-in-JS), common components (Button, Input, Modal, Card), and advanced patterns (compound components, render props).
Load when: Building component libraries, designing component APIs, implementing complex components, composition strategies, styling decisions.
Common UI/UX mistakes to avoid including accessibility anti-patterns, design mistakes, form errors, performance issues, and mobile problems. Provides bad vs. good examples for 30+ anti-patterns.
Load when: Reviewing existing UIs, debugging issues, learning what to avoid, code review feedback, improving UI quality.
Playwright script for comprehensive UI evaluation with accessibility audits (axe-core), performance metrics (LCP, CLS, FCP, TTFB), screenshot capture, and HTML/JSON report generation. Includes quality scoring system.
Use when: Evaluating UI quality objectively, measuring accessibility compliance, checking performance, generating evaluation reports, CI/CD quality gates.
A/B testing comparison script for evaluating multiple UI variations side-by-side. Compares screenshots, accessibility scores, performance metrics. Generates visual comparison report with winner determination.
Use when: A/B testing designs, comparing UI iterations, choosing between design options, presenting options to stakeholders.
Component scaffolding tool that generates production-ready React/Vue components with TypeScript, accessibility features, tests, and documentation. Supports multiple component types (button, input, card, modal, dropdown).
Use when: Creating new components quickly, scaffolding component boilerplate, ensuring accessibility from the start, maintaining consistency.
Production-ready component templates (Button, Input) with full TypeScript types, accessibility features (ARIA, keyboard support), multiple variants, and comprehensive documentation.
Use when: Need reference implementations, building component libraries, learning component patterns, starting new components.
Comprehensive design token system with colors (primary, neutral, semantic), spacing (8-point grid), typography (fonts, sizes, weights), shadows, border radius, animations, and breakpoints. JSON format compatible with design tools.
Use when: Setting up design system, maintaining consistency, defining brand tokens, integrating with design tools, theme creation.
assets/component-templates/ for best practicesreferences/anti-patterns.md before implementingTo optimize context usage, load reference files strategically:
Load ui-design-principles.md when:
Load accessibility-guidelines.md when:
Load playwright-evaluation.md when:
Load component-patterns.md when:
Load anti-patterns.md when: