review-design

Use when reviewing frontend implementation against design specs - design system compliance, responsive behavior, accessibility audit

Frontend Design Quality Review

Announce: "I'm using enggenie:review-design to review the frontend implementation."

Overview

Review frontend code for design quality - not just "does it work" but "does it look and feel professional." Catches the gap between functional code and production-quality UI.

Jira Ticket Entry

When the user references a Jira ticket for design review (e.g., "Check design for PROJ-1234", "Review UI on PROJ-1234"):

  1. Read the Jira ticket using MCP tools
  2. Find the spec link — extract Figma references, design tokens, layout requirements, and responsive breakpoints documented by PM
  3. Find the "Dev Handoff" comment — extract the PR link and what was built
  4. Use the spec's design requirements as the review baseline — compare implementation against what was specified, not against generic best practices alone

If Jira MCP is not available, ask: "I can't read PROJ-1234 directly. Can you share the design specs or Figma link?"


What to Check

1. Design System Compliance

  • Are design system components used where they exist? (Not custom CSS for things the system handles)
  • Are spacing values from the design system tokens? (Not arbitrary px values)
  • Are colors from the design system palette? (Not hardcoded hex)
  • Are typography styles from the design system? (Not custom font-size/weight)

Design Comparison Method

Since AI agents cannot directly view Figma files:

  1. Check if the spec (from pm-refine) includes Figma dimensions, tokens, and layout details
  2. If Figma MCP is available, use it to extract design specifications
  3. If neither is available, ask the user: "Can you share the key design specs (colors, spacing, breakpoints) so I can compare?"
  4. Compare extracted/provided specs against the implementation using grep for hardcoded values that should be tokens

2. State Coverage

Every interactive component needs ALL of these states. Missing states are the #1 sign of AI-generated UI:

StateWhat to check
LoadingSkeleton or spinner while data loads
EmptyMeaningful message when no data exists
ErrorClear error message with recovery action
HoverVisual feedback on interactive elements
FocusVisible focus ring for keyboard navigation
DisabledVisually distinct, non-interactive
Active/SelectedClear indication of current selection

3. Responsive Behavior

  • Mobile (320-767px): Single column, touch targets 44px+, no horizontal scroll
  • Tablet (768-1023px): Adapted layout, readable text
  • Desktop (1024px+): Full layout, efficient use of space

Test: Resize browser from 320px to 1440px. Nothing should break, overflow, or become unreadable.

4. Accessibility

CheckHow
ARIA labelsAll interactive elements have accessible names
Keyboard navigationTab through every interactive element. Logical order?
Color contrastText meets WCAG 2.1 AA (4.5:1 normal, 3:1 large)
Screen readerContent makes sense when read linearly
Focus managementFocus moves logically after interactions (modals, navigation)
Alt textAll images have meaningful alt text (or empty alt for decorative)

5. AI Code Smell Detection

Common signs of AI-generated frontend code that looks "off":

  • Generic layouts (everything centered, no visual hierarchy)
  • Bootstrap/Tailwind defaults without customization
  • Inconsistent spacing (some elements tight, others floating)
  • Missing micro-interactions (no transitions, no hover feedback)
  • Placeholder content still present
  • Stock colors instead of design system palette
  • No loading states (content pops in abruptly)
  • No error handling in the UI

6. Animation and Transitions

  • Transitions are smooth (150-300ms for UI, 300-500ms for page transitions)
  • Animations are purposeful (guide attention, show state change)
  • No janky animations (check for layout thrashing)
  • Reduced motion preference respected: prefers-reduced-motion: reduce

Issue Severity

SeverityDefinitionAction
CriticalBroken functionality, inaccessible content, crashesFix before proceeding
ImportantMissing states, wrong design system tokens, poor responsive behaviorFix before PR
MinorSpacing inconsistencies, animation timing, micro-interaction polishNote for follow-up

Review Report Format

## Design Review: [Component/Feature]

### Design System Compliance
- [PASS/FAIL] Component usage
- [PASS/FAIL] Spacing tokens
- [PASS/FAIL] Color palette
- [PASS/FAIL] Typography

### State Coverage
- [PASS/FAIL] Loading state
- [PASS/FAIL] Empty state
- [PASS/FAIL] Error state
- [PASS/FAIL] Hover/Focus/Active states

### Responsive
- [PASS/FAIL] Mobile (320px)
- [PASS/FAIL] Tablet (768px)
- [PASS/FAIL] Desktop (1024px+)

### Accessibility
- [PASS/FAIL] ARIA labels
- [PASS/FAIL] Keyboard navigation
- [PASS/FAIL] Color contrast
- [PASS/FAIL] Screen reader

### Issues Found
1. [Severity] Description - How to fix

Subagents

  • Design Reviewer subagent (sonnet) - Reads Figma context from spec, reviews component code, checks design system usage, identifies quality gaps

Subagent prompt template: agents/design-reviewer-agent.md

Subagent Context Preservation

When the Design Reviewer subagent completes, explicitly capture its findings back to the main conversation:

  • Design system compliance results (pass/fail per category)
  • State coverage gaps found
  • Responsive behavior issues
  • Accessibility audit results
  • Specific file paths and components reviewed

Do not assume the orchestrating agent retains subagent context automatically. Extract the full review before presenting results.


Recommended Model

Primary: sonnet Why: Design review requires understanding visual patterns, accessibility standards, and responsive behavior. Sonnet provides sufficient visual reasoning capability.

This is a recommendation. Ask the user: "Confirm model selection or override?" Do not proceed until the user responds.


Entry Condition

After frontend code is written (from enggenie:dev-implement FE phase).

Exit Action

Design review passed → proceed to enggenie:qa-verify or enggenie:qa-test.