Design Review Skill
Status: Production Ready ✅
Last Updated: 2025-11-20
Dependencies: Playwright MCP or Chrome DevTools
Methodology: 7-phase systematic review (inspired by Stripe, Airbnb, Linear)
Quick Start
1. Prerequisites Check
Before starting a design review, verify browser automation tools are available:
Option A: Playwright MCP (recommended for interactive testing)
- See the
playwright-testing skill for Playwright setup
- Provides browser automation, screenshots, viewport testing, console monitoring
Option B: Puppeteer CLI (alternative for screenshots and performance)
- Install Puppeteer directly via
npm install -g puppeteer
- Provides screenshot capture, performance analysis, network monitoring
For complete browser tools reference, see references/browser-tools-reference.md.
2. Understand the Review Scope
For PR reviews:
# Analyze git diff to understand scope
git diff --name-only origin/main...HEAD
# Read PR description for context
For general UI reviews:
Simply provide the preview URL and component/page description.
3. Execute 7-Phase Review
Follow the systematic checklist below. Each phase has specific objectives and testing procedures.
The 7-Phase Review Methodology
Phase 0: Preparation
Objective: Understand context and set up testing environment.
Steps:
Read PR description or review request to understand:
- Motivation for changes
- Scope of implementation
- Testing notes from developer
- Expected behavior
Analyze code diff (if PR available):
git diff origin/main...HEAD
Identify modified files (components, styles, tests)
Set up live preview environment:
- Navigate to preview URL using browser tools
- Set initial viewport: 1440x900 (desktop)
- Take baseline screenshot for reference
Review design principles (if project has custom guidelines):
- Check project CLAUDE.md for design standards
- Review component library documentation
- Note design system tokens and patterns
When to skip: For quick component reviews without git context.
Phase 1: Interaction & User Flow
Objective: Verify the interactive experience works as expected.
For complete interaction guide: Load references/interaction-patterns.md when testing interactive states, forms, buttons, navigation flows, micro-interactions, modals, or keyboard navigation.
Quick checklist:
- Test 5 interactive states (default, hover, active, focus, disabled) for all elements
- Execute primary user flow (form submission, navigation, key actions)
- Verify destructive actions have confirmation dialogs
- Assess perceived performance (loading states, optimistic UI)
Triage: [Blocker] Critical flow broken | [High] Poor UX/missing focus states | [Medium] Missing polish | [Nitpick] Minor timing issues
Phase 2: Responsiveness Testing
Objective: Ensure design works across all viewport sizes.
For complete responsive guide: Load references/responsive-testing.md when testing viewports, touch targets, mobile navigation, image responsiveness, or debugging horizontal scrolling.
Test 3 viewports:
- Desktop (1440px): Optimal layout, full feature set
- Tablet (768px): Graceful adaptation, 44×44px touch targets, collapsing nav
- Mobile (375px): No horizontal scroll, 16px min text, mobile-friendly navigation
Quick testing:
mcp__playwright__browser_resize(width: 1440, height: 900) # Desktop
mcp__playwright__browser_resize(width: 768, height: 1024) # Tablet
mcp__playwright__browser_resize(width: 375, height: 667) # Mobile
mcp__playwright__browser_take_screenshot(fullPage: true)
Triage: [Blocker] Layout broken | [High] Horizontal scroll/overlapping | [Medium] Suboptimal spacing | [Nitpick] Minor inconsistencies
Phase 3: Visual Polish
Objective: Assess aesthetic quality and visual consistency.
For design principles guide: Load references/visual-polish.md when evaluating typography hierarchy, spacing/layout, color palette, alignment/grid, visual hierarchy, image quality, or S-Tier design standards.
Quick evaluation (5 criteria):
- Layout & spacing: Grid alignment, 8px scale, design tokens (no magic numbers like 17px)
- Typography: Clear H1>H2>H3 hierarchy, 1.5-1.7 line height, limited font weights
- Color: Design system tokens, semantic usage (red=error, green=success), consistent brand
- Images: High-res (no pixelation), correct aspect ratios, optimized sizes, alt text
- Visual hierarchy: Primary actions stand out, eye flows naturally, strategic whitespace
Triage: [Blocker] Illegible text/broken images | [High] Obvious inconsistencies | [Medium] Spacing/alignment issues | [Nitpick] Aesthetic preferences
Phase 4: Accessibility (WCAG 2.1 AA)
Objective: Ensure inclusive design for all users.
For complete WCAG 2.1 AA checklist: Load references/accessibility-wcag.md when verifying WCAG compliance, testing keyboard navigation, checking color contrast, auditing semantic HTML, or using accessibility testing tools (Lighthouse, axe, WAVE).
Quick WCAG tests (4 principles):
- Perceivable: Alt text on images, color contrast (4.5:1 text, 3:1 UI components), semantic HTML
- Operable: Keyboard navigation (Tab order logical, visible focus on ALL interactive elements, Enter/Space activation, Escape closes modals, no keyboard traps)
- Understandable: Clear labels, helpful error messages, consistent navigation/terminology
- Robust: Valid HTML, proper ARIA attributes (roles, states, properties)
Critical tests:
- Tab through entire page (verify focus states visible, logical order, no traps)
- Test with WebAIM Contrast Checker (all text/UI ≥4.5:1 or 3:1)
- Verify form labels associated with inputs (
<label for="id"> or aria-label)
- Check semantic HTML (h1→h2→h3 no skipping,
<button> not <div onClick>)
Triage: [Blocker] No keyboard access to core features | [High] WCAG AA violations | [Medium] Semantic HTML issues | [Nitpick] Enhanced accessibility
Phase 5: Robustness Testing
Objective: Verify handling of edge cases and error conditions.
Test scenarios:
5.1 Form Validation
- Submit form with empty required fields
- Enter invalid data (wrong email format, out-of-range numbers)
- Test field-level validation (real-time feedback)
- Verify clear error messages with guidance
- Test successful submission flow (confirmation message)
5.2 Content Overflow
- Long text strings: Very long names, emails, titles
- Many items: Large lists, tables with hundreds of rows
- Deeply nested content: Comments with many replies
- Empty states: No data to display (show helpful message)
Common overflow issues:
- Text breaking layout (overflowing containers)
- Truncation without ellipsis or tooltip
- Performance issues with large lists
- Missing empty state designs
5.3 Loading & Error States
- Loading states: Skeleton screens, spinners, progress indicators
- Error messages: Clear, actionable error descriptions
- Retry mechanisms: Allow user to retry failed operations
- Timeout handling: Graceful handling of slow/failed requests
- Optimistic updates: Immediate feedback, rollback on failure
Test procedure:
# Simulate slow network
# Check browser DevTools Network tab → throttling
# Force error states
# Test with invalid API responses or network failures
Common problems:
- No loading indicators (appears frozen)
- Vague error messages ("Error occurred")
- No retry mechanism after failures
- Layout jumps when content loads
Triage priorities:
- [Blocker] Crashes or complete failures under edge cases
- [High] Poor error handling or confusing states
- [Medium] Missing edge case handling or minor issues
- [Nitpick] Loading state aesthetics or minor polish
Phase 6: Code Health
Objective: Ensure maintainable, consistent implementation.
For code patterns guide: Load references/code-health-patterns.md when evaluating component reuse (DRY principle), design token usage (colors, spacing, typography), pattern consistency (naming, file structure, API patterns), or identifying red flags (duplication, magic numbers, broken abstractions).
Quick review (3 criteria):
- Component reuse: No copy-paste, shared components extracted, composition over duplication
- Design tokens: CSS variables for colors/spacing/typography (no magic numbers like
margin: 17px), border radii consistent
- Pattern consistency: Follows codebase patterns, naming conventions match, file structure organized
Triage: [High] Introduces tech debt/breaks patterns | [Medium] Missed reuse opportunities | [Nitpick] Code style preferences
Phase 7: Content & Console
Objective: Verify polished details and technical correctness.
7.1 Content Review
Check for:
- Grammar and spelling: No typos or grammatical errors
- Clarity: Labels and instructions are unambiguous
- Tone consistency: Matches brand voice (formal/casual)
- Placeholder text: Replaced with real content (no "Lorem ipsum")
- Microcopy quality: Helpful error messages, button labels, tooltips
Common content issues:
- Typos in UI text
- Placeholder text left in production
- Vague labels ("Submit" vs "Save Changes")
- Inconsistent terminology
- Unhelpful error messages ("Error" vs "Email format invalid")
7.2 Console Check
Test procedure:
# Using Playwright MCP
mcp__playwright__browser_console_messages()
# Using Chrome DevTools
# Open DevTools → Console tab
Look for:
- JavaScript errors: Uncaught exceptions, null references
- React warnings: Key prop warnings, lifecycle issues
- Network failures: Failed API requests, 404s
- Deprecation warnings: Old API usage warnings
- Performance warnings: Slow renders, memory leaks
Triage priorities:
- [Blocker] Console errors breaking functionality
- [High] Grammar errors or confusing content in user-facing text
- [Medium] Console warnings or minor content issues
- [Nitpick] Content polish, minor console noise
Communication Principles
1. Problems Over Prescriptions
Describe the problem and its impact, not the solution. Let the developer decide implementation.
❌ Prescriptive (avoid):
"Change the margin to 16px"
✅ Problem-focused (preferred):
"The spacing feels inconsistent with adjacent elements, creating visual clutter that distracts from the primary CTA. The current spacing breaks the established rhythm of the design system."
2. Triage Matrix
Categorize every issue with clear priority:
| Priority |
Criteria |
Action Required |
| [Blocker] |
Critical failures, core functionality broken, critical accessibility violations |
Must fix before merge |
| [High-Priority] |
Significant UX issues, obvious design inconsistencies, WCAG violations |
Should fix before merge |
| [Medium-Priority] |
Improvements, minor inconsistencies, edge case handling |
Consider for follow-up PR |
| [Nitpick] |
Aesthetic preferences, minor polish, subjective opinions |
Optional refinements |
Important: Prefix all nitpicks with "Nit:" to signal low priority.
3. Evidence-Based Feedback
Always provide screenshots for visual issues. Screenshots should:
- Show the problem clearly
- Include relevant context (surrounding elements)
- Indicate what to look at (arrows, highlights if needed)
Example:
### [High-Priority] Poor contrast on disabled button
**Problem:** Disabled button text has insufficient contrast (2.1:1), failing WCAG AA
standard (requires 4.5:1). Users with low vision may not recognize the button as disabled.
**Screenshot:** [Attach screenshot showing disabled button]
**Impact:** Accessibility violation, potential confusion for users with visual impairments.
4. Start with Positives
Always acknowledge what works well before listing issues. This:
- Shows you recognize good work
- Provides balanced feedback
- Maintains positive collaboration
Example:
### Design Review Summary
The new checkout flow shows excellent attention to user experience. The step indicator
is clear and well-designed, error messages are helpful and actionable, and the overall
layout feels spacious and uncluttered. The loading states with skeleton screens are
particularly well-executed. Great work on the form validation feedback!
However, there are a few accessibility and responsiveness issues to address before merge...
Report Structure Template
For complete template: Load assets/review-report-template.md for the full markdown template with all sections and examples.
Essential structure:
## Design Review Summary
[2-3 sentences: positive acknowledgment + overall assessment]
**Review scope:** [PR #, pages, components]
**Viewports tested:** Desktop (1440px), Tablet (768px), Mobile (375px)
**Methodology:** 7-phase comprehensive review
---
### Findings
#### 🚨 Blockers
[Critical issues requiring immediate fix before merge]
- **[Blocker] [Title]**: Problem + Screenshot + Phase
#### ⚠️ High-Priority Issues
[Significant issues to fix before merge]
- **[High] [Title]**: Problem + Screenshot + Phase
#### 📋 Medium-Priority / Suggestions
[Improvements for follow-up PR]
- **[Medium] [Title]**: Problem + Phase
#### ✨ Nitpicks
[Minor aesthetic details - optional]
- **Nit:** [Issue] - [Brief description]
---
### Testing Evidence
**Screenshots:** Desktop (1440px) + Tablet (768px) + Mobile (375px)
**Console output:** [Errors/warnings or "Console clean"]
**Accessibility:** Keyboard nav + Focus states + Color contrast
---
### Next Steps
1. Fix Blockers
2. Address High-Priority issues
3. Consider Medium-Priority items
**Overall assessment:** [Ready to merge after blockers fixed / Needs revisions / Ready to merge!]
When to Load References
Load reference files when working on specific aspects of design review:
accessibility-wcag.md
Load when:
- Standards-based: Verifying WCAG 2.1 AA compliance for production deployment
- Issue-based: Encountering accessibility violations (color contrast, keyboard navigation, semantic HTML, focus states, ARIA attributes)
- Testing-based: Conducting comprehensive accessibility audit with systematic checklist
- Tools-based: Using accessibility testing tools (Lighthouse, axe, WAVE, Pa11y) for automated testing
- Triage-based: Determining severity of accessibility issues (Blocker/High/Medium for WCAG violations)
browser-tools-reference.md
Load when:
- Setup-based: Installing or configuring Playwright MCP or Chrome DevTools CLI for testing
- Command-based: Need specific Playwright commands (navigate, resize viewport, screenshot, click, type, hover, get console output)
- Workflow-based: Implementing common testing workflows (responsive review across 3 viewports, form interaction testing, keyboard navigation testing)
- Selector-based: Struggling with CSS selectors, text selectors, or accessibility selectors for element targeting
- Troubleshooting-based: Playwright MCP not finding elements, Chrome dependencies missing, screenshot capture issues
code-health-patterns.md
Load when:
- Pattern-based: Evaluating component reuse patterns, DRY principle compliance, extracting shared components
- Token-based: Checking design token usage (colors, spacing scale, typography scale, border radii consistency)
- Consistency-based: Reviewing pattern consistency (naming conventions, file structure organization, API patterns, state management)
- Example-based: Need code examples comparing good vs bad patterns (inline styles vs tokens, duplication vs composition)
- Red-flag-based: Identifying code health issues (copy-paste duplication, magic numbers like
17px, inconsistent state management, broken abstractions)
design-principles-s-tier.md
Load when:
- Standards-based: Ensuring S-Tier SaaS dashboard quality (Stripe, Airbnb, Linear, Vercel level polish)
- System-based: Evaluating design system foundation (color palette structure, typography scale, spacing scale, core UI components)
- Module-based: Reviewing specific modules (multimedia moderation interfaces, data tables, configuration panels, dashboards)
- Philosophy-based: Applying core design philosophy (users first, meticulous craft over speed, simplicity over complexity, consistency)
- Architecture-based: Evaluating CSS & styling architecture (design tokens, component patterns, responsive strategies)
interaction-patterns.md
Load when:
- States-based: Testing interactive states (default, hover, active, focus, disabled) for buttons, inputs, links
- Form-based: Testing form interactions, validation patterns, error states, success states, loading states
- Button-based: Evaluating button loading states, destructive action confirmation patterns, primary vs secondary actions
- Flow-based: Testing navigation flows, user journeys, multi-step processes, modal interactions
- Animation-based: Reviewing micro-interactions, animation timing (200-300ms), perceived performance (optimistic UI, skeleton screens)
- Modal-based: Testing modal interactions, keyboard traps, focus management, Escape key behavior
responsive-testing.md
Load when:
- Viewport-based: Testing at specific viewports (desktop 1440px, tablet 768px, mobile 375px) with Playwright MCP
- Touch-based: Verifying touch target sizes meet minimum 44×44px requirement for mobile usability
- Overflow-based: Debugging horizontal scrolling issues or layout overflow problems on mobile
- Mobile-based: Ensuring text readability (16px minimum font size), mobile navigation patterns, responsive images
- Breakpoint-based: Implementing or testing breakpoint strategy (common breakpoints: 640px, 768px, 1024px, 1280px)
- Navigation-based: Testing responsive navigation patterns (hamburger menus, collapsing navigation, mobile drawer menus)
visual-polish.md
Load when:
- Typography-based: Evaluating font hierarchy (H1>H2>H3), font scale standards (16/18/24/32/48/64px), line height (1.5-1.7), readability
- Spacing-based: Checking 8-point grid compliance (8/16/24/32/40/48/64px), consistent spacing scale, component padding/margin
- Color-based: Verifying color palette consistency, semantic color usage (red=error, green=success), design token usage (no hardcoded hex values)
- Alignment-based: Checking grid-based layout, precise alignment (0.5px precision), vertical rhythm, visual balance
- Hierarchy-based: Evaluating visual hierarchy techniques (size contrast, weight contrast, color contrast, position, strategic whitespace)
- Quality-based: Assessing image quality (no pixelation), correct aspect ratios, proper image optimization for web
- Component-based: Reviewing design system components (button styles, form input styles, card components, consistent border radii)
Known Issues Prevention
This skill prevents 8 documented design review issues:
| Issue |
Problem |
Impact |
Prevention |
| #1: Missing Accessibility |
Reviews focus only on visual appearance, ignoring keyboard navigation and screen readers |
WCAG violations shipped to production, excluding users with disabilities |
Phase 4 enforces complete WCAG 2.1 AA checklist with keyboard testing |
| #2: Incomplete Responsive Testing |
Reviewing only at desktop viewport, missing mobile breakage |
Broken mobile layouts, frustrated mobile users |
Phase 2 requires testing at 1440px, 768px, and 375px viewports |
| #3: Vague Feedback |
Comments like "looks off" without screenshots or specifics |
Wasted time, unclear action items, frustrated developers |
Evidence-based feedback principle requires screenshots |
| #4: Prescriptive Solutions |
Dictating implementation ("change margin to 16px") instead of describing UX impact |
Design-dev friction, missed better solutions |
"Problems Over Prescriptions" principle enforced |
| #5: No Triage Priority |
All feedback treated equally, blocking merges on nitpicks |
Slowed delivery, unclear priorities |
Triage matrix (Blocker/High/Medium/Nitpick) required |
| #6: Skipped Edge Cases |
Happy path works, but error states and overflow break layout |
Production bugs with edge cases |
Phase 5 mandates robustness testing |
| #7: Console Errors Ignored |
Visual design passes, but JavaScript errors exist in console |
Runtime failures, poor user experience |
Phase 7 requires console check |
| #8: Inconsistent Methodology |
Ad-hoc reviews miss critical areas depending on reviewer mood |
Incomplete reviews, missed issues |
7-phase checklist ensures comprehensive, repeatable reviews |
Dependencies
Required
Browser automation tools (one of the following):
Playwright MCP (recommended)
- See
playwright-testing skill for installation
- Provides: Browser automation, screenshots, viewport testing, console monitoring
- Best for: Interactive testing, keyboard navigation, form testing
Puppeteer CLI
- Install via
npm install -g puppeteer
- Provides: Screenshot capture, performance analysis, network monitoring
- Best for: Visual testing, performance audits
Live preview environment:
- URL accessible for testing
- Represents actual implementation (not mockups)
Optional
- Git/GitHub: For PR context and diff analysis
- Design system docs: For consistency checks against established patterns
- Project CLAUDE.md: For project-specific design guidelines
Installation Guidance
If browser tools are not available, this skill will:
- Detect missing tools
- Link to appropriate skill for installation (
playwright-testing)
- Provide fallback guidance for manual testing
Related Skills
- playwright-testing: E2E testing with Playwright, browser automation setup
- frontend-design: Create new frontend interfaces with design quality (complementary skill)
- tailwind-v4-shadcn: UI framework implementation (designs being reviewed may use this)
Official Documentation
Production Validation
This skill is based on real design review workflows used at:
- Methodology inspiration: Stripe, Airbnb, Linear (7-phase systematic approach)
- Testing approach: Automated browser testing with Playwright/Puppeteer
- Accessibility standards: WCAG 2.1 AA compliance (industry standard)
Estimated token efficiency:
- Without skill: ~25k tokens (trial-and-error, repeated corrections)
- With skill: ~8k tokens (guided methodology, systematic approach)
- Savings: ~68% with 100% checklist coverage
Questions or issues?
- Check references/accessibility-wcag.md for complete WCAG checklist
- See references/browser-tools-reference.md for Playwright/Chrome DevTools commands
- Review references/visual-polish.md for design principles
- Verify browser tools are installed (see
playwright-testing skill)
- Ensure preview URL is live and accessible
1---2name: design-review3description: 7-phase frontend design review with accessibility (WCAG 2.1 AA), responsive testing, visual polish. Use for PR reviews, UI audits, or encountering contrast issues, broken layouts, accessibility violations, inconsistent spacing, missing focus states.4license: MIT5---6# Design Review Skill
7
8**Status**: Production Ready ✅
9**Last Updated**: 2025-11-20
10**Dependencies**: Playwright MCP or Chrome DevTools
11**Methodology**: 7-phase systematic review (inspired by Stripe, Airbnb, Linear)
12
13---
14
15## Quick Start
16
17### 1. Prerequisites Check
18
19Before starting a design review, verify browser automation tools are available:
20
21**Option A: Playwright MCP** (recommended for interactive testing)
22- See the `playwright-testing` skill for Playwright setup
23- Provides browser automation, screenshots, viewport testing, console monitoring
24
25**Option B: Puppeteer CLI** (alternative for screenshots and performance)
26- Install Puppeteer directly via `npm install -g puppeteer`
27- Provides screenshot capture, performance analysis, network monitoring
28
29For complete browser tools reference, see [references/browser-tools-reference.md](references/browser-tools-reference.md).
30
31### 2. Understand the Review Scope
32
33**For PR reviews:**
34```bash
35# Analyze git diff to understand scope
36git diff --name-only origin/main...HEAD
37
38# Read PR description for context
39```
40
41**For general UI reviews:**
42Simply provide the preview URL and component/page description.
43
44### 3. Execute 7-Phase Review
45
46Follow the systematic checklist below. Each phase has specific objectives and testing procedures.
47
48---
49
50## The 7-Phase Review Methodology
51
52### Phase 0: Preparation
53
54**Objective:** Understand context and set up testing environment.
55
56**Steps:**
571. **Read PR description** or review request to understand:
58 - Motivation for changes
59 - Scope of implementation
60 - Testing notes from developer
61 - Expected behavior
62
632. **Analyze code diff** (if PR available):
64 ```bash
65 git diff origin/main...HEAD
66 ```
67 Identify modified files (components, styles, tests)
68
693. **Set up live preview environment:**
70 - Navigate to preview URL using browser tools
71 - Set initial viewport: 1440x900 (desktop)
72 - Take baseline screenshot for reference
73
744. **Review design principles** (if project has custom guidelines):
75 - Check project CLAUDE.md for design standards
76 - Review component library documentation
77 - Note design system tokens and patterns
78
79**When to skip:** For quick component reviews without git context.
80
81---
82
83### Phase 1: Interaction & User Flow
84
85**Objective:** Verify the interactive experience works as expected.
86
87**For complete interaction guide**: Load `references/interaction-patterns.md` when testing interactive states, forms, buttons, navigation flows, micro-interactions, modals, or keyboard navigation.
88
89**Quick checklist:**
90- Test 5 interactive states (default, hover, active, focus, disabled) for all elements
91- Execute primary user flow (form submission, navigation, key actions)
92- Verify destructive actions have confirmation dialogs
93- Assess perceived performance (loading states, optimistic UI)
94
95**Triage:** [Blocker] Critical flow broken | [High] Poor UX/missing focus states | [Medium] Missing polish | [Nitpick] Minor timing issues
96
97---
98
99### Phase 2: Responsiveness Testing
100
101**Objective:** Ensure design works across all viewport sizes.
102
103**For complete responsive guide**: Load `references/responsive-testing.md` when testing viewports, touch targets, mobile navigation, image responsiveness, or debugging horizontal scrolling.
104
105**Test 3 viewports:**
106- **Desktop (1440px)**: Optimal layout, full feature set
107- **Tablet (768px)**: Graceful adaptation, 44×44px touch targets, collapsing nav
108- **Mobile (375px)**: No horizontal scroll, 16px min text, mobile-friendly navigation
109
110**Quick testing:**
111```bash
112mcp__playwright__browser_resize(width: 1440, height: 900) # Desktop
113mcp__playwright__browser_resize(width: 768, height: 1024) # Tablet
114mcp__playwright__browser_resize(width: 375, height: 667) # Mobile
115mcp__playwright__browser_take_screenshot(fullPage: true)
116```
117
118**Triage:** [Blocker] Layout broken | [High] Horizontal scroll/overlapping | [Medium] Suboptimal spacing | [Nitpick] Minor inconsistencies
119
120---
121
122### Phase 3: Visual Polish
123
124**Objective:** Assess aesthetic quality and visual consistency.
125
126**For design principles guide**: Load `references/visual-polish.md` when evaluating typography hierarchy, spacing/layout, color palette, alignment/grid, visual hierarchy, image quality, or S-Tier design standards.
127
128**Quick evaluation (5 criteria):**
1291. **Layout & spacing**: Grid alignment, 8px scale, design tokens (no magic numbers like 17px)
1302. **Typography**: Clear H1>H2>H3 hierarchy, 1.5-1.7 line height, limited font weights
1313. **Color**: Design system tokens, semantic usage (red=error, green=success), consistent brand
1324. **Images**: High-res (no pixelation), correct aspect ratios, optimized sizes, alt text
1335. **Visual hierarchy**: Primary actions stand out, eye flows naturally, strategic whitespace
134
135**Triage:** [Blocker] Illegible text/broken images | [High] Obvious inconsistencies | [Medium] Spacing/alignment issues | [Nitpick] Aesthetic preferences
136
137---
138
139### Phase 4: Accessibility (WCAG 2.1 AA)
140
141**Objective:** Ensure inclusive design for all users.
142
143**For complete WCAG 2.1 AA checklist**: Load `references/accessibility-wcag.md` when verifying WCAG compliance, testing keyboard navigation, checking color contrast, auditing semantic HTML, or using accessibility testing tools (Lighthouse, axe, WAVE).
144
145**Quick WCAG tests (4 principles):**
146
1471. **Perceivable**: Alt text on images, color contrast (4.5:1 text, 3:1 UI components), semantic HTML
1482. **Operable**: Keyboard navigation (Tab order logical, visible focus on ALL interactive elements, Enter/Space activation, Escape closes modals, no keyboard traps)
1493. **Understandable**: Clear labels, helpful error messages, consistent navigation/terminology
1504. **Robust**: Valid HTML, proper ARIA attributes (roles, states, properties)
151
152**Critical tests:**
153- Tab through entire page (verify focus states visible, logical order, no traps)
154- Test with WebAIM Contrast Checker (all text/UI ≥4.5:1 or 3:1)
155- Verify form labels associated with inputs (`<label for="id">` or `aria-label`)
156- Check semantic HTML (h1→h2→h3 no skipping, `<button>` not `<div onClick>`)
157
158**Triage:** [Blocker] No keyboard access to core features | [High] WCAG AA violations | [Medium] Semantic HTML issues | [Nitpick] Enhanced accessibility
159
160---
161
162### Phase 5: Robustness Testing
163
164**Objective:** Verify handling of edge cases and error conditions.
165
166**Test scenarios:**
167
168#### 5.1 Form Validation
169
170- Submit form with empty required fields
171- Enter invalid data (wrong email format, out-of-range numbers)
172- Test field-level validation (real-time feedback)
173- Verify clear error messages with guidance
174- Test successful submission flow (confirmation message)
175
176#### 5.2 Content Overflow
177
178- **Long text strings**: Very long names, emails, titles
179- **Many items**: Large lists, tables with hundreds of rows
180- **Deeply nested content**: Comments with many replies
181- **Empty states**: No data to display (show helpful message)
182
183**Common overflow issues:**
184- Text breaking layout (overflowing containers)
185- Truncation without ellipsis or tooltip
186- Performance issues with large lists
187- Missing empty state designs
188
189#### 5.3 Loading & Error States
190
191- **Loading states**: Skeleton screens, spinners, progress indicators
192- **Error messages**: Clear, actionable error descriptions
193- **Retry mechanisms**: Allow user to retry failed operations
194- **Timeout handling**: Graceful handling of slow/failed requests
195- **Optimistic updates**: Immediate feedback, rollback on failure
196
197**Test procedure:**
198```bash
199# Simulate slow network
200# Check browser DevTools Network tab → throttling
201
202# Force error states
203# Test with invalid API responses or network failures
204```
205
206**Common problems:**
207- No loading indicators (appears frozen)
208- Vague error messages ("Error occurred")
209- No retry mechanism after failures
210- Layout jumps when content loads
211
212**Triage priorities:**
213- **[Blocker]** Crashes or complete failures under edge cases
214- **[High]** Poor error handling or confusing states
215- **[Medium]** Missing edge case handling or minor issues
216- **[Nitpick]** Loading state aesthetics or minor polish
217
218---
219
220### Phase 6: Code Health
221
222**Objective:** Ensure maintainable, consistent implementation.
223
224**For code patterns guide**: Load `references/code-health-patterns.md` when evaluating component reuse (DRY principle), design token usage (colors, spacing, typography), pattern consistency (naming, file structure, API patterns), or identifying red flags (duplication, magic numbers, broken abstractions).
225
226**Quick review (3 criteria):**
2271. **Component reuse**: No copy-paste, shared components extracted, composition over duplication
2282. **Design tokens**: CSS variables for colors/spacing/typography (no magic numbers like `margin: 17px`), border radii consistent
2293. **Pattern consistency**: Follows codebase patterns, naming conventions match, file structure organized
230
231**Triage:** [High] Introduces tech debt/breaks patterns | [Medium] Missed reuse opportunities | [Nitpick] Code style preferences
232
233---
234
235### Phase 7: Content & Console
236
237**Objective:** Verify polished details and technical correctness.
238
239#### 7.1 Content Review
240
241**Check for:**
242- **Grammar and spelling**: No typos or grammatical errors
243- **Clarity**: Labels and instructions are unambiguous
244- **Tone consistency**: Matches brand voice (formal/casual)
245- **Placeholder text**: Replaced with real content (no "Lorem ipsum")
246- **Microcopy quality**: Helpful error messages, button labels, tooltips
247
248**Common content issues:**
249- Typos in UI text
250- Placeholder text left in production
251- Vague labels ("Submit" vs "Save Changes")
252- Inconsistent terminology
253- Unhelpful error messages ("Error" vs "Email format invalid")
254
255#### 7.2 Console Check
256
257**Test procedure:**
258```bash
259# Using Playwright MCP
260mcp__playwright__browser_console_messages()
261
262# Using Chrome DevTools
263# Open DevTools → Console tab
264```
265
266**Look for:**
267- **JavaScript errors**: Uncaught exceptions, null references
268- **React warnings**: Key prop warnings, lifecycle issues
269- **Network failures**: Failed API requests, 404s
270- **Deprecation warnings**: Old API usage warnings
271- **Performance warnings**: Slow renders, memory leaks
272
273**Triage priorities:**
274- **[Blocker]** Console errors breaking functionality
275- **[High]** Grammar errors or confusing content in user-facing text
276- **[Medium]** Console warnings or minor content issues
277- **[Nitpick]** Content polish, minor console noise
278
279---
280
281## Communication Principles
282
283### 1. Problems Over Prescriptions
284
285Describe the **problem and its impact**, not the solution. Let the developer decide implementation.
286
287**❌ Prescriptive (avoid):**
288"Change the margin to 16px"
289
290**✅ Problem-focused (preferred):**
291"The spacing feels inconsistent with adjacent elements, creating visual clutter that distracts from the primary CTA. The current spacing breaks the established rhythm of the design system."
292
293### 2. Triage Matrix
294
295Categorize **every issue** with clear priority:
296
297| Priority | Criteria | Action Required |
298|----------|----------|----------------|
299| **[Blocker]** | Critical failures, core functionality broken, critical accessibility violations | Must fix before merge |
300| **[High-Priority]** | Significant UX issues, obvious design inconsistencies, WCAG violations | Should fix before merge |
301| **[Medium-Priority]** | Improvements, minor inconsistencies, edge case handling | Consider for follow-up PR |
302| **[Nitpick]** | Aesthetic preferences, minor polish, subjective opinions | Optional refinements |
303
304**Important:** Prefix all nitpicks with "Nit:" to signal low priority.
305
306### 3. Evidence-Based Feedback
307
308Always provide **screenshots** for visual issues. Screenshots should:
309- Show the problem clearly
310- Include relevant context (surrounding elements)
311- Indicate what to look at (arrows, highlights if needed)
312
313**Example:**
314```markdown
315### [High-Priority] Poor contrast on disabled button
316
317**Problem:** Disabled button text has insufficient contrast (2.1:1), failing WCAG AA
318standard (requires 4.5:1). Users with low vision may not recognize the button as disabled.
319
320**Screenshot:** [Attach screenshot showing disabled button]
321
322**Impact:** Accessibility violation, potential confusion for users with visual impairments.
323```
324
325### 4. Start with Positives
326
327Always acknowledge what works well before listing issues. This:
328- Shows you recognize good work
329- Provides balanced feedback
330- Maintains positive collaboration
331
332**Example:**
333```markdown
334### Design Review Summary
335
336The new checkout flow shows excellent attention to user experience. The step indicator
337is clear and well-designed, error messages are helpful and actionable, and the overall
338layout feels spacious and uncluttered. The loading states with skeleton screens are
339particularly well-executed. Great work on the form validation feedback!
340
341However, there are a few accessibility and responsiveness issues to address before merge...
342```
343
344---
345
346## Report Structure Template
347
348**For complete template**: Load `assets/review-report-template.md` for the full markdown template with all sections and examples.
349
350**Essential structure:**
351
352```markdown
353## Design Review Summary
354[2-3 sentences: positive acknowledgment + overall assessment]
355**Review scope:** [PR #, pages, components]
356**Viewports tested:** Desktop (1440px), Tablet (768px), Mobile (375px)
357**Methodology:** 7-phase comprehensive review
358
359---
360
361### Findings
362
363#### 🚨 Blockers
364[Critical issues requiring immediate fix before merge]
365- **[Blocker] [Title]**: Problem + Screenshot + Phase
366
367#### ⚠️ High-Priority Issues
368[Significant issues to fix before merge]
369- **[High] [Title]**: Problem + Screenshot + Phase
370
371#### 📋 Medium-Priority / Suggestions
372[Improvements for follow-up PR]
373- **[Medium] [Title]**: Problem + Phase
374
375#### ✨ Nitpicks
376[Minor aesthetic details - optional]
377- **Nit:** [Issue] - [Brief description]
378
379---
380
381### Testing Evidence
382**Screenshots:** Desktop (1440px) + Tablet (768px) + Mobile (375px)
383**Console output:** [Errors/warnings or "Console clean"]
384**Accessibility:** Keyboard nav + Focus states + Color contrast
385
386---
387
388### Next Steps
3891. Fix Blockers
3902. Address High-Priority issues
3913. Consider Medium-Priority items
392
393**Overall assessment:** [Ready to merge after blockers fixed / Needs revisions / Ready to merge!]
394```
395
396---
397
398## When to Load References
399
400Load reference files when working on specific aspects of design review:
401
402### accessibility-wcag.md
403Load when:
404- **Standards-based**: Verifying WCAG 2.1 AA compliance for production deployment
405- **Issue-based**: Encountering accessibility violations (color contrast, keyboard navigation, semantic HTML, focus states, ARIA attributes)
406- **Testing-based**: Conducting comprehensive accessibility audit with systematic checklist
407- **Tools-based**: Using accessibility testing tools (Lighthouse, axe, WAVE, Pa11y) for automated testing
408- **Triage-based**: Determining severity of accessibility issues (Blocker/High/Medium for WCAG violations)
409
410### browser-tools-reference.md
411Load when:
412- **Setup-based**: Installing or configuring Playwright MCP or Chrome DevTools CLI for testing
413- **Command-based**: Need specific Playwright commands (navigate, resize viewport, screenshot, click, type, hover, get console output)
414- **Workflow-based**: Implementing common testing workflows (responsive review across 3 viewports, form interaction testing, keyboard navigation testing)
415- **Selector-based**: Struggling with CSS selectors, text selectors, or accessibility selectors for element targeting
416- **Troubleshooting-based**: Playwright MCP not finding elements, Chrome dependencies missing, screenshot capture issues
417
418### code-health-patterns.md
419Load when:
420- **Pattern-based**: Evaluating component reuse patterns, DRY principle compliance, extracting shared components
421- **Token-based**: Checking design token usage (colors, spacing scale, typography scale, border radii consistency)
422- **Consistency-based**: Reviewing pattern consistency (naming conventions, file structure organization, API patterns, state management)
423- **Example-based**: Need code examples comparing good vs bad patterns (inline styles vs tokens, duplication vs composition)
424- **Red-flag-based**: Identifying code health issues (copy-paste duplication, magic numbers like `17px`, inconsistent state management, broken abstractions)
425
426### design-principles-s-tier.md
427Load when:
428- **Standards-based**: Ensuring S-Tier SaaS dashboard quality (Stripe, Airbnb, Linear, Vercel level polish)
429- **System-based**: Evaluating design system foundation (color palette structure, typography scale, spacing scale, core UI components)
430- **Module-based**: Reviewing specific modules (multimedia moderation interfaces, data tables, configuration panels, dashboards)
431- **Philosophy-based**: Applying core design philosophy (users first, meticulous craft over speed, simplicity over complexity, consistency)
432- **Architecture-based**: Evaluating CSS & styling architecture (design tokens, component patterns, responsive strategies)
433
434### interaction-patterns.md
435Load when:
436- **States-based**: Testing interactive states (default, hover, active, focus, disabled) for buttons, inputs, links
437- **Form-based**: Testing form interactions, validation patterns, error states, success states, loading states
438- **Button-based**: Evaluating button loading states, destructive action confirmation patterns, primary vs secondary actions
439- **Flow-based**: Testing navigation flows, user journeys, multi-step processes, modal interactions
440- **Animation-based**: Reviewing micro-interactions, animation timing (200-300ms), perceived performance (optimistic UI, skeleton screens)
441- **Modal-based**: Testing modal interactions, keyboard traps, focus management, Escape key behavior
442
443### responsive-testing.md
444Load when:
445- **Viewport-based**: Testing at specific viewports (desktop 1440px, tablet 768px, mobile 375px) with Playwright MCP
446- **Touch-based**: Verifying touch target sizes meet minimum 44×44px requirement for mobile usability
447- **Overflow-based**: Debugging horizontal scrolling issues or layout overflow problems on mobile
448- **Mobile-based**: Ensuring text readability (16px minimum font size), mobile navigation patterns, responsive images
449- **Breakpoint-based**: Implementing or testing breakpoint strategy (common breakpoints: 640px, 768px, 1024px, 1280px)
450- **Navigation-based**: Testing responsive navigation patterns (hamburger menus, collapsing navigation, mobile drawer menus)
451
452### visual-polish.md
453Load when:
454- **Typography-based**: Evaluating font hierarchy (H1>H2>H3), font scale standards (16/18/24/32/48/64px), line height (1.5-1.7), readability
455- **Spacing-based**: Checking 8-point grid compliance (8/16/24/32/40/48/64px), consistent spacing scale, component padding/margin
456- **Color-based**: Verifying color palette consistency, semantic color usage (red=error, green=success), design token usage (no hardcoded hex values)
457- **Alignment-based**: Checking grid-based layout, precise alignment (0.5px precision), vertical rhythm, visual balance
458- **Hierarchy-based**: Evaluating visual hierarchy techniques (size contrast, weight contrast, color contrast, position, strategic whitespace)
459- **Quality-based**: Assessing image quality (no pixelation), correct aspect ratios, proper image optimization for web
460- **Component-based**: Reviewing design system components (button styles, form input styles, card components, consistent border radii)
461
462---
463
464## Known Issues Prevention
465
466This skill prevents **8** documented design review issues:
467
468| Issue | Problem | Impact | Prevention |
469|-------|---------|--------|------------|
470| **#1: Missing Accessibility** | Reviews focus only on visual appearance, ignoring keyboard navigation and screen readers | WCAG violations shipped to production, excluding users with disabilities | Phase 4 enforces complete WCAG 2.1 AA checklist with keyboard testing |
471| **#2: Incomplete Responsive Testing** | Reviewing only at desktop viewport, missing mobile breakage | Broken mobile layouts, frustrated mobile users | Phase 2 requires testing at 1440px, 768px, and 375px viewports |
472| **#3: Vague Feedback** | Comments like "looks off" without screenshots or specifics | Wasted time, unclear action items, frustrated developers | Evidence-based feedback principle requires screenshots |
473| **#4: Prescriptive Solutions** | Dictating implementation ("change margin to 16px") instead of describing UX impact | Design-dev friction, missed better solutions | "Problems Over Prescriptions" principle enforced |
474| **#5: No Triage Priority** | All feedback treated equally, blocking merges on nitpicks | Slowed delivery, unclear priorities | Triage matrix (Blocker/High/Medium/Nitpick) required |
475| **#6: Skipped Edge Cases** | Happy path works, but error states and overflow break layout | Production bugs with edge cases | Phase 5 mandates robustness testing |
476| **#7: Console Errors Ignored** | Visual design passes, but JavaScript errors exist in console | Runtime failures, poor user experience | Phase 7 requires console check |
477| **#8: Inconsistent Methodology** | Ad-hoc reviews miss critical areas depending on reviewer mood | Incomplete reviews, missed issues | 7-phase checklist ensures comprehensive, repeatable reviews |
478
479---
480
481## Dependencies
482
483### Required
484
485**Browser automation tools** (one of the following):
486
4871. **Playwright MCP** (recommended)
488 - See `playwright-testing` skill for installation
489 - Provides: Browser automation, screenshots, viewport testing, console monitoring
490 - Best for: Interactive testing, keyboard navigation, form testing
491
4922. **Puppeteer CLI**
493 - Install via `npm install -g puppeteer`
494 - Provides: Screenshot capture, performance analysis, network monitoring
495 - Best for: Visual testing, performance audits
496
497**Live preview environment:**
498- URL accessible for testing
499- Represents actual implementation (not mockups)
500
501### Optional
502
503- **Git/GitHub**: For PR context and diff analysis
504- **Design system docs**: For consistency checks against established patterns
505- **Project CLAUDE.md**: For project-specific design guidelines
506
507### Installation Guidance
508
509If browser tools are not available, this skill will:
5101. Detect missing tools
5112. Link to appropriate skill for installation (`playwright-testing`)
5123. Provide fallback guidance for manual testing
513
514---
515
516## Related Skills
517
518- **playwright-testing**: E2E testing with Playwright, browser automation setup
519- **frontend-design**: Create new frontend interfaces with design quality (complementary skill)
520- **tailwind-v4-shadcn**: UI framework implementation (designs being reviewed may use this)
521
522---
523
524## Official Documentation
525
526- **WCAG 2.1 Guidelines**: https://www.w3.org/WAI/WCAG21/quickref/
527- **WebAIM Contrast Checker**: https://webaim.org/resources/contrastchecker/
528- **Playwright Documentation**: https://playwright.dev/
529- **Inclusive Design Principles**: https://inclusivedesignprinciples.org/
530- **A11y Project Checklist**: https://www.a11yproject.com/checklist/
531
532---
533
534## Production Validation
535
536**This skill is based on real design review workflows** used at:
537- **Methodology inspiration**: Stripe, Airbnb, Linear (7-phase systematic approach)
538- **Testing approach**: Automated browser testing with Playwright/Puppeteer
539- **Accessibility standards**: WCAG 2.1 AA compliance (industry standard)
540
541**Estimated token efficiency:**
542- Without skill: ~25k tokens (trial-and-error, repeated corrections)
543- With skill: ~8k tokens (guided methodology, systematic approach)
544- **Savings: ~68%** with 100% checklist coverage
545
546---
547
548**Questions or issues?**
549
5501. Check [references/accessibility-wcag.md](references/accessibility-wcag.md) for complete WCAG checklist
5512. See [references/browser-tools-reference.md](references/browser-tools-reference.md) for Playwright/Chrome DevTools commands
5523. Review [references/visual-polish.md](references/visual-polish.md) for design principles
5534. Verify browser tools are installed (see `playwright-testing` skill)
5545. Ensure preview URL is live and accessible