Agent skill
ui-creator
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. Combines visual design principles with code implementation (React/Vue) and Playwright-based evaluation to objectively assess UI quality through accessibility audits, performance metrics, and visual regression testing. Use when tasks involve UI design, component creation, accessibility testing, or design system development.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/ui-creator
SKILL.md
UI Creator
Overview
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):
- Design: WCAG 2.2 Level AA accessibility
- Frameworks: React 18+, Vue 3.5+
- Testing: Playwright 1.48+, axe-core
- Styling: Tailwind CSS, CSS Modules, Styled Components
- Performance: Core Web Vitals (LCP < 2.5s, CLS < 0.1, FID < 100ms)
Decision Tree: Choosing Your Workflow
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
Quick Start: Component Creation
Creating a Button Component
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:
- Full TypeScript types
- Accessibility features (ARIA, keyboard support)
- Multiple variants and states
- Test file
- Documentation
Evaluating the Component
After creating the component, evaluate its quality:
npx tsx scripts/evaluate-ui.ts http://localhost:3000/components/button
This provides:
- Accessibility score (WCAG 2.2 compliance)
- Performance metrics (load time, responsiveness)
- Screenshot for visual review
- Detailed recommendations
Workflow 1: Full UI Creation
To create a complete UI from a description, follow this systematic approach.
Step 1: Understand Requirements
To begin UI creation:
- Clarify user needs: What problem does this UI solve?
- Identify user personas: Who will use this interface?
- Define success criteria: What makes this UI effective?
- List required components: Buttons, forms, navigation, etc.
- Determine constraints: Platform, browser support, performance budgets
Example conversation:
- User: "Create a dashboard for tracking fitness goals"
- Claude: "I'll create a fitness dashboard. A few questions:
- What metrics should be displayed? (steps, calories, weight, etc.)
- What's the primary action users should take?
- Mobile-first or desktop-first design?
- Any brand colors or design preferences?"
Step 2: Design the UI
To design the interface:
-
Apply design principles:
- Visual hierarchy (most important elements larger/bolder)
- Consistent spacing (8-point grid: 8px, 16px, 24px, 32px)
- Color psychology (blue for trust, green for success, red for errors)
- Whitespace for breathing room
- Load
references/ui-design-principles.mdfor comprehensive guidance
-
Ensure accessibility:
- Sufficient color contrast (4.5:1 for text, 3:1 for UI elements)
- Semantic HTML structure
- Keyboard navigation support
- Screen reader compatibility
- Load
references/accessibility-guidelines.mdfor WCAG 2.2 requirements
-
Choose design tokens:
- Use
assets/design-tokens.jsonas a starting point - Define colors, spacing, typography, border radius, shadows
- Maintain consistency across components
- Use
-
Create visual mockup (optional):
- Describe layout and visual design
- Use design principles to guide decisions
- Consider responsive breakpoints (mobile: 375px, tablet: 768px, desktop: 1280px)
Step 3: Implement the Code
To implement the UI:
-
Choose framework:
- React (most common, 2025): Component-based, hooks, TypeScript
- Vue 3.5+: Composition API,
<script setup>syntax
-
Structure components:
- Break UI into small, focused components
- Use composition over configuration
- Follow single responsibility principle
- Load
references/component-patterns.mdfor patterns
-
Implement with accessibility:
- Use semantic HTML (
<button>,<nav>,<main>) - Add ARIA attributes where needed
- Ensure keyboard navigation
- Include focus indicators
- Use semantic HTML (
-
Style with consistency:
- Use design tokens from Step 2
- Choose styling approach (Tailwind, CSS Modules, Styled Components)
- Apply consistent spacing and typography
- Support dark mode (2025 expectation)
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>
);
}
Step 4: Evaluate with Playwright
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.
Step 5: Iterate Based on Evaluation
To improve based on evaluation results:
- Fix accessibility violations: Address any WCAG failures
- Optimize performance: Reduce LCP, improve CLS
- Refine visual design: Adjust based on screenshots
- Re-evaluate: Run evaluation script again to verify improvements
Workflow 2: UI Analysis & Evaluation
To analyze an existing UI objectively:
Run Automated Evaluation
npx tsx scripts/evaluate-ui.ts https://example.com/page \
--viewport 1920x1080 \
--a11y \
--performance \
--screenshot \
--output-dir ./analysis
This generates:
- HTML report: Visual report with screenshots and metrics
- JSON data: Structured evaluation data
- Recommendations: Specific improvements needed
Interpret Results
To understand evaluation output:
Accessibility Violations:
- Critical/Serious: Fix immediately (blocks some users)
- Moderate: Fix soon (impacts user experience)
- Minor: Fix when possible (best practice)
Performance Metrics:
- TTFB (Time to First Byte): < 500ms good, < 200ms excellent
- FCP (First Contentful Paint): < 1.8s good, < 1.0s excellent
- LCP (Largest Contentful Paint): < 2.5s good, < 1.8s excellent
- CLS (Cumulative Layout Shift): < 0.1 good, < 0.05 excellent
Overall Score:
- 85-100: Excellent UI quality
- 70-84: Good, room for improvement
- 50-69: Fair, needs optimization
- < 50: Poor, significant issues
Load references/playwright-evaluation.md for advanced evaluation techniques.
Workflow 3: UI Improvement
To improve an existing UI based on analysis:
Step 1: Identify Issues
From evaluation report, categorize issues:
- Accessibility issues: Load
references/accessibility-guidelines.md - Design problems: Load
references/ui-design-principles.md - Common mistakes: Load
references/anti-patterns.md - Performance issues: Review performance metrics
Step 2: Prioritize Improvements
Order by impact:
- Critical accessibility: Blocks users with disabilities
- Major performance: Slow load times (> 3s)
- Usability issues: Confusing navigation, unclear CTAs
- Visual polish: Inconsistent spacing, color contrast
- Nice-to-haves: Animations, micro-interactions
Step 3: Implement Fixes
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;
}
Step 4: Verify Improvements
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).
Workflow 4: A/B Testing Comparison
To compare multiple UI variations objectively:
Create Variations
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>
Run Comparison
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
Analyze Results
Comparison report shows:
- Side-by-side screenshots: Visual comparison
- Accessibility scores: Which variation is most accessible
- Performance metrics: Which loads fastest
- Overall winner: Highest combined score
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
Workflow 5: Component Library Creation
To build a reusable component library:
Step 1: Define Design System
Use assets/design-tokens.json as foundation:
- Colors: Primary, neutral, semantic (success, error, warning)
- Typography: Font families, sizes, weights, line heights
- Spacing: 8-point grid system
- Shadows: Elevation levels for depth
- Border radius: Consistent rounded corners
- Animation: Duration and easing curves
Step 2: Create Base Components
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.
Step 3: Build Composition
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>
);
}
Step 4: Test & Document
For each component:
- Write tests: Unit tests, accessibility tests
- Document props: JSDoc comments, TypeScript types
- Create examples: Storybook stories or example usage
- Evaluate quality: Run Playwright evaluation
Load references/component-patterns.md for advanced patterns.
Playwright Evaluation Integration
Playwright enables objective UI evaluation beyond manual review.
Key Evaluation Capabilities
Accessibility Auditing:
- Automated WCAG 2.2 compliance testing with axe-core
- Detects missing alt text, poor contrast, keyboard issues
- Generates actionable violation reports
Visual Regression Testing:
- Screenshot capture with masking for dynamic content
- Pixel-perfect comparison for detecting unintended changes
- Cross-browser consistency testing
Performance Measurement:
- Core Web Vitals: LCP, CLS, FID
- TTFB, FCP, page weight
- Performance budgets enforcement
Responsive Testing:
- Test across multiple viewport sizes
- Validate mobile, tablet, desktop layouts
- Screenshot comparison per breakpoint
Evaluation Scripts Usage
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
Resources
This skill includes comprehensive reference materials, evaluation scripts, and component templates:
references/ui-design-principles.md
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.
references/accessibility-guidelines.md
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.
references/playwright-evaluation.md
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.
references/component-patterns.md
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.
references/anti-patterns.md
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.
scripts/evaluate-ui.ts
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.
scripts/compare-variations.ts
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.
scripts/init-component.ts
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.
assets/component-templates/
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.
assets/design-tokens.json
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.
Tips for Success
- Start with accessibility: Design inclusively from the beginning (easier than retrofitting)
- Use design tokens: Maintain consistency with centralized design values
- Evaluate objectively: Use Playwright scripts for data-driven decisions
- Mobile-first: Design for smallest screen, progressively enhance
- Test early and often: Run evaluations during development, not just at the end
- Learn from templates: Study
assets/component-templates/for best practices - Avoid anti-patterns: Review
references/anti-patterns.mdbefore implementing - Measure performance: Core Web Vitals matter for user experience and SEO
- Document decisions: Use design tokens and component JSDoc comments
- Iterate based on data: Let evaluation scores guide improvements
When to Load Reference Files
To optimize context usage, load reference files strategically:
-
Load ui-design-principles.md when:
- Creating new UI designs
- Choosing colors, typography, spacing
- Need design system guidance
- Making visual design decisions
-
Load accessibility-guidelines.md when:
- Ensuring WCAG 2.2 compliance
- Fixing accessibility violations
- Implementing accessible components
- Questions about ARIA or keyboard navigation
-
Load playwright-evaluation.md when:
- Setting up UI evaluation
- Understanding Playwright capabilities
- Writing visual regression tests
- Measuring performance metrics
-
Load component-patterns.md when:
- Building component libraries
- Designing component APIs
- Implementing complex components
- Composition or styling questions
-
Load anti-patterns.md when:
- Reviewing existing code
- Debugging UI issues
- Learning what to avoid
- Improving UI quality
Didn't find tool you were looking for?