# Frontend UI Validation Checklist

**Purpose:** Use this checklist when frontend-design skill is invoked to validate UI changes.

**Last Updated:** 2026-01-17

---

## When to Use This Checklist

**MANDATORY:** After ANY code change that affects UI elements:
- Creating new UI components
- Modifying existing styles or markup
- Adding features to frontend code
- Refactoring frontend components
- Fixing UI bugs

---

## Validation Categories

### 1. Visual Appearance

**Layout & Structure:**
- [ ] Elements render in correct positions
- [ ] Grid/flexbox layouts work as expected
- [ ] Z-index stacking is correct
- [ ] No unexpected overlaps or gaps
- [ ] Aspect ratios are maintained
- [ ] Images load and display correctly

**Typography:**
- [ ] Fonts load and display correctly
- [ ] Font sizes are appropriate (readability)
- [ ] Line height provides good readability
- [ ] Text alignment is intentional
- [ ] No text overflow or truncation issues
- [ ] Headings have proper hierarchy

**Colors & Contrast:**
- [ ] Colors match design specifications
- [ ] Sufficient contrast for readability (WCAG AA minimum)
- [ ] Color themes (light/dark) work correctly
- [ ] CSS variables applied consistently
- [ ] Gradients render smoothly
- [ ] Transparency/opacity levels correct

**Spacing & Rhythm:**
- [ ] Padding is consistent and intentional
- [ ] Margins create proper visual separation
- [ ] Whitespace enhances readability
- [ ] Vertical rhythm is maintained
- [ ] No cramped or overly sparse areas
- [ ] Spacing scales appropriately

**Visual Effects:**
- [ ] Shadows render correctly (no performance issues)
- [ ] Border-radius values are consistent
- [ ] Background images/patterns display properly
- [ ] Filters (blur, grayscale, etc.) work as expected
- [ ] Decorative elements enhance, don't distract
- [ ] No visual glitches or rendering artifacts

---

### 2. Interactive Behavior

**Click/Tap Interactions:**
- [ ] Buttons respond to clicks
- [ ] Links navigate correctly
- [ ] Forms submit properly
- [ ] Checkboxes/radios toggle
- [ ] Dropdowns open/close
- [ ] Click targets are appropriately sized (minimum 44x44px)

**Hover States:**
- [ ] Hover effects trigger on desktop
- [ ] Cursor changes appropriately (pointer, text, etc.)
- [ ] Visual feedback is clear
- [ ] Transitions are smooth
- [ ] No flickering or jank
- [ ] Tooltips appear when expected

**Focus States:**
- [ ] Focus indicators visible (keyboard navigation)
- [ ] Focus order is logical
- [ ] Focus trap works in modals/dialogs
- [ ] Skip links function correctly
- [ ] Focus doesn't get lost
- [ ] Custom focus styles meet contrast requirements

**Active States:**
- [ ] Pressed/active states provide feedback
- [ ] Buttons show active state during click
- [ ] Form inputs show active state when selected
- [ ] Loading states appear during async operations

**Disabled States:**
- [ ] Disabled elements are visually distinct
- [ ] Disabled elements don't respond to interaction
- [ ] Cursor indicates disabled state
- [ ] Tooltips explain why disabled (if applicable)

---

### 3. Responsive Behavior

**Breakpoints:**
- [ ] Desktop (1920px+) layout works
- [ ] Laptop (1366px-1919px) layout works
- [ ] Tablet landscape (1024px-1365px) layout works
- [ ] Tablet portrait (768px-1023px) layout works
- [ ] Mobile landscape (568px-767px) layout works
- [ ] Mobile portrait (320px-567px) layout works

**Adaptive Layout:**
- [ ] Content reflows appropriately
- [ ] No horizontal scrolling (unless intentional)
- [ ] Touch targets are finger-sized on mobile (44x44px min)
- [ ] Navigation adapts (hamburger menu, etc.)
- [ ] Images scale/crop appropriately
- [ ] Text remains readable at all sizes

**Responsive Typography:**
- [ ] Font sizes scale appropriately
- [ ] Line length stays readable (45-75 characters)
- [ ] Headings scale proportionally
- [ ] No text overflow at any breakpoint

**Mobile-Specific:**
- [ ] Touch gestures work (swipe, pinch, etc.)
- [ ] No hover-dependent interactions
- [ ] Virtual keyboard doesn't obscure inputs
- [ ] Mobile browser chrome accounted for
- [ ] Fixed elements don't interfere with scrolling

---

### 4. Animations & Transitions

**Animation Quality:**
- [ ] Animations run smoothly (60fps)
- [ ] No janky or stuttering motion
- [ ] Timing feels natural (not too slow/fast)
- [ ] Easing curves are appropriate
- [ ] Animation-delay creates stagger effect (if intended)

**Performance:**
- [ ] Animations use transform/opacity (GPU-accelerated)
- [ ] No layout thrashing
- [ ] Will-change used appropriately (if needed)
- [ ] Animations don't block interactions
- [ ] Reduce motion preference respected

**Transition States:**
- [ ] Enter animations work
- [ ] Exit animations work
- [ ] State transitions are smooth
- [ ] Loading spinners/skeletons appear
- [ ] No flash of unstyled content (FOUC)

**Scroll Animations:**
- [ ] Scroll-triggered animations fire correctly
- [ ] Parallax effects are subtle, not nauseating
- [ ] Sticky elements stick at right position
- [ ] Scroll progress indicators update
- [ ] Smooth scroll behavior works

---

### 5. Accessibility

**Keyboard Navigation:**
- [ ] All interactive elements are keyboard accessible
- [ ] Tab order is logical
- [ ] Enter/Space activate buttons/links
- [ ] Escape closes modals/dropdowns
- [ ] Arrow keys navigate menus/lists (if applicable)
- [ ] No keyboard traps

**Screen Reader Support:**
- [ ] Semantic HTML used (header, nav, main, article, etc.)
- [ ] ARIA labels on icons/buttons without text
- [ ] ARIA live regions for dynamic content
- [ ] Form inputs have associated labels
- [ ] Error messages are announced
- [ ] Skip links present

**Visual Accessibility:**
- [ ] Color contrast meets WCAG AA (4.5:1 text, 3:1 UI)
- [ ] Color isn't the only indicator (use icons/text too)
- [ ] Focus indicators are highly visible
- [ ] Text can be resized to 200% without breaking layout
- [ ] No content hidden by fixed elements

**Alternative Content:**
- [ ] Images have descriptive alt text
- [ ] Decorative images have empty alt=""
- [ ] Icons have labels or tooltips
- [ ] Videos have captions/transcripts
- [ ] Complex graphics have text alternatives

---

### 6. Performance

**Load Performance:**
- [ ] Critical CSS inlined (if applicable)
- [ ] Fonts load efficiently (font-display: swap)
- [ ] Images lazy-loaded (below fold)
- [ ] No render-blocking resources
- [ ] First contentful paint is fast (<2s)

**Runtime Performance:**
- [ ] No layout shifts (CLS near 0)
- [ ] Smooth scrolling (no jank)
- [ ] Animations run at 60fps
- [ ] No memory leaks
- [ ] Event handlers don't block main thread

**Resource Optimization:**
- [ ] Images optimized (WebP, compression)
- [ ] CSS is minified (in production)
- [ ] JavaScript is minified (in production)
- [ ] Unused CSS removed
- [ ] Critical resources preloaded

---

### 7. Cross-Browser Compatibility

**Modern Browsers:**
- [ ] Chrome/Edge (latest)
- [ ] Firefox (latest)
- [ ] Safari (latest)
- [ ] Mobile Safari (iOS)
- [ ] Chrome Mobile (Android)

**Fallbacks:**
- [ ] Graceful degradation for older browsers
- [ ] Feature detection (not browser sniffing)
- [ ] Polyfills loaded if needed
- [ ] CSS fallbacks for modern features (grid, flexbox)
- [ ] No JavaScript errors in console

---

### 8. Content & Copy

**Text Quality:**
- [ ] No typos or grammatical errors
- [ ] Placeholder text replaced with real content
- [ ] Proper capitalization (title case, sentence case)
- [ ] Consistent voice and tone
- [ ] Microcopy is helpful and clear

**Internationalization:**
- [ ] Text doesn't break layout in longer languages
- [ ] RTL support if needed
- [ ] Date/number formatting appropriate
- [ ] No hardcoded strings (use i18n keys)

---

## Validation Workflow

### Quick Validation (Simple Changes)

For minor changes like color updates or spacing tweaks:

1. Visual check at 1-2 breakpoints
2. Verify hover/focus states
3. Quick accessibility scan
4. Report: [OK] or [WARNING]

**Time:** 1-2 minutes

### Standard Validation (Component Changes)

For component modifications or feature additions:

1. Visual check at all breakpoints
2. Test all interactive states
3. Keyboard navigation test
4. Basic performance check
5. Report: [OK], [WARNING], or [ERROR]

**Time:** 3-5 minutes

### Comprehensive Validation (New Features)

For new components or major refactors:

1. Complete visual review (all categories above)
2. Full interaction testing
3. Cross-browser testing
4. Accessibility audit
5. Performance profiling
6. Report: Detailed findings with fixes

**Time:** 10-15 minutes

---

## Validation Report Format

### Success Report

```markdown
## UI Validation: PASSED

**Component:** [Component name]
**Changes:** [Brief description]

**Validation Results:**
- [OK] Visual appearance correct
- [OK] Interactive behavior working
- [OK] Responsive at all breakpoints
- [OK] Accessibility requirements met

**Notes:** [Any observations or recommendations]
```

### Warning Report

```markdown
## UI Validation: WARNINGS

**Component:** [Component name]
**Changes:** [Brief description]

**Validation Results:**
- [OK] Visual appearance correct
- [WARNING] Minor hover state issue detected
- [OK] Responsive at all breakpoints
- [OK] Accessibility requirements met

**Issues Found:**
1. **Minor: Hover state transition**
   - **Problem:** Transition is too slow (500ms)
   - **Fix:** Reduce to 200ms for better UX
   - **Fixed:** Yes

**Status:** Issues resolved, ready to proceed
```

### Error Report

```markdown
## UI Validation: ERRORS

**Component:** [Component name]
**Changes:** [Brief description]

**Validation Results:**
- [OK] Visual appearance correct
- [ERROR] Interactive behavior broken
- [WARNING] Responsive issues on mobile
- [ERROR] Accessibility violations

**Critical Issues:**
1. **CRITICAL: Button click handler not working**
   - **Problem:** Event listener not attached
   - **Impact:** Form cannot be submitted
   - **Fix Required:** Add onClick handler

2. **CRITICAL: Missing keyboard accessibility**
   - **Problem:** Modal cannot be closed with Escape
   - **Impact:** Keyboard users trapped
   - **Fix Required:** Add keydown listener

**Status:** BLOCKED - fixes required before proceeding
```

---

## Common Issues to Watch For

### Layout Issues
- Flexbox/grid container missing
- Z-index conflicts
- Overflow hidden cutting off content
- Fixed positioning causing mobile issues

### Typography Issues
- Font not loading (fallback showing)
- Line-height too tight/loose
- Text overflow not handled
- Inconsistent font weights

### Color Issues
- Insufficient contrast
- Theme not applied consistently
- CSS variable not defined
- Color only indicator (accessibility)

### Interaction Issues
- Event handler not attached
- Hover state persisting on mobile
- Focus outline removed without replacement
- Click target too small

### Responsive Issues
- Breakpoint gaps (768.5px edge cases)
- Images not scaling
- Text wrapping awkwardly
- Mobile menu not working

### Animation Issues
- Animating width/height (use transform)
- No will-change on expensive animations
- Animations running on page load (jarring)
- Reduce motion not respected

### Accessibility Issues
- Missing alt text
- No keyboard focus indicators
- Color contrast too low
- ARIA labels missing

---

## Decision Matrix: Pass, Warn, or Block

### PASS - Approve Changes
- All critical validations passed
- No major issues detected
- Minor observations noted but don't block
- Ready for code review/testing

### WARN - Approve with Notes
- Minor issues detected
- Issues fixed during validation
- Recommendations for improvement
- Can proceed but note improvements

### BLOCK - Require Fixes
- Critical functionality broken
- Accessibility violations (WCAG A/AA)
- Visual appearance significantly wrong
- Responsive layout broken
- Performance severely degraded

---

## Integration with Other Tools

**Works alongside:**
- Code Review Agent (checks code quality)
- Testing Agent (runs automated tests)
- Browser DevTools (performance profiling)
- Lighthouse (accessibility/performance audits)
- Screen readers (NVDA, JAWS, VoiceOver)

**Reports to:**
- Main Claude (coordination)
- Code Review Agent (combined approval)
- User (final validation)

---

**Remember:** This skill is invoked AUTOMATICALLY for ANY UI change. Quick validations keep velocity high while ensuring quality.
