Design Review
Comprehensive UX/UI/design quality analysis across 8 audit dimensions, each mapped to
authoritative standards. This skill performs analysis only - it identifies design
issues, explains findings against a cited criterion, and suggests fix approaches without
making code changes.
It supports two input modes:
- Live mode: audits a running URL via the
agent-browser CLI (screenshots + DOM/accessibility snapshot).
- Static mode: audits a codebase (CSS/components/design tokens) via Grep.
When both a URL and a codebase target are supplied, it runs both and emits two separate reports.
Audit Taxonomy (8 Dimensions)
| # |
Dimension |
Key Standards |
| 1 |
Visual Hierarchy & Layout |
NN/g, Refactoring UI, Laws of UX, MD3 8pt grid |
| 2 |
Typography |
Butterick, Refactoring UI, MD3, Apple HIG |
| 3 |
Color & Theming (incl. Dark Mode) |
MD3 color roles, 60-30-10, WCAG 1.4.1/1.4.3 |
| 4 |
Depth & Elevation (Shadows) |
MD3 elevation, Refactoring UI, Josh Comeau |
| 5 |
Components & Affordance (Buttons/Icons) |
MD3 buttons/icons, Apple HIG, NN/g |
| 6 |
Feedback & States |
NN/g visibility-of-status, MD3 state layers |
| 7 |
Motion & Microinteractions |
NN/g animation, Laws of UX (Doherty), MD3 motion |
| 8 |
Accessibility (cross-cutting) |
WCAG 2.2 AA |
Measurable criteria for dimensions 1–4 are in references/criteria-foundations.md;
dimensions 5–8 are in references/criteria-interaction.md.
Anti-Hallucination Guidelines
CRITICAL: Design reviews must be based on ACTUAL evidence, never assumptions:
- Observe before claiming - Never report an issue without reading the code (static) or viewing the screenshot/snapshot (live)
- Evidence-based findings - Every finding cites a file path + line number (static) OR a screenshot region + DOM ref (live)
- Cite a criterion - Every finding maps to a criterion ID and an authoritative citation (WCAG SC, MD3 spec, etc.)
- Measure, don't estimate - Report actual values (contrast ratio, px size, ms duration), not guesses. In static mode there is no rendered page to sample from: compute the WCAG relative-luminance contrast ratio directly from the two hex/rgb values found in the CSS/tokens (formula in references/agent-prompts.md); never eyeball a ratio
- Applicable-only scoring - Only score dimensions that apply to the target; never penalize what cannot be observed
- State what was NOT checked - Every report ends with an explicit coverage gap section
- No invented standards - Only reference real WCAG SCs, MD3 specs, and HIG guidance
Review Workflow
Phase 0: Parse Arguments & Resolve Mode
Parse arguments to determine target and mode:
Arguments:
- <url>: A live URL to audit (http/https) → live mode
- <pr_number>: Files changed in a PR (e.g., "123", "#123") → static mode
- <commit_sha>: Files changed in a commit (e.g., "abc123") → static mode
- "--all" or a path or no args: Entire codebase → static mode
- "--mode [live|static|both]": Force a mode
- "--scope [dimension]": Focus on one dimension (e.g., typography, color, accessibility)
Mode resolution:
- A URL argument (or
--mode live) → live audit.
- A PR / commit /
--all / path (or --mode static) → static audit.
- Both a URL and a codebase target present (or
--mode both) → run both, emit two reports.
For static PR/commit scope, get changed files:
# For PR
gh pr view <pr_number> --json files --jq '.files[].path'
# For commit
git diff-tree --no-commit-id --name-only -r <commit_sha>
Phase 1: Discovery
Use an Explore agent (model: haiku) to detect the design system and tooling:
Use Task tool with Explore agent (model: haiku):
- prompt: "Discover the project's design system and front-end stack:
1. Detect CSS approach: Tailwind, CSS Modules, styled-components, vanilla CSS, Sass
2. Detect component/design system: Material UI, Chakra, Radix, shadcn/ui, Ant Design, custom
3. Find design tokens: tailwind.config.*, theme files, CSS custom properties (:root { --* }), tokens.json
4. Find existing a11y tooling: eslint-plugin-jsx-a11y, axe, pa11y, Storybook a11y addon
5. Detect dark-mode support: prefers-color-scheme, .dark class, data-theme
6. List the key UI directories (components/, styles/, app/, pages/)
Return: a stack + design-system summary with the token source of truth."
- subagent_type: "Explore"
Without a Task tool, run this discovery yourself inline using the same 6 steps before proceeding.
For live mode, confirm the URL is reachable and agent-browser is installed:
agent-browser --version || echo "agent-browser not installed (npm install -g agent-browser)"
If agent-browser is missing, tell the user how to install it (npm install -g agent-browser && agent-browser install) and offer to fall back to static mode.
Phase 2: Initialize Progress Tracking
Use TodoWrite to track progress across the 8 dimensions plus capture, consolidation, and report generation. One todo per dimension. Without TodoWrite, narrate phase/dimension transitions in your responses instead.
Phase 3: Capture, then Spawn Parallel Audit Agents
Live mode, capture first (the agents analyze these artifacts):
mkdir -p /tmp/review-design
agent-browser open <url>
agent-browser snapshot -i > /tmp/review-design/snapshot.txt # interactive elements + a11y tree
agent-browser screenshot /tmp/review-design/page.png --full # full-page screenshot
# Optional, for inspected elements:
# agent-browser get styles @<ref> # computed CSS
# agent-browser get box @<ref> # bounding box (for touch-target size)
Capture additional viewports/pages if the user names them. Always agent-browser close when done.
Then spawn 6 parallel Explore agents (model: sonnet) covering the 8 dimensions. For the full per-agent prompts (live screenshot/snapshot analysis AND static grep patterns), see references/agent-prompts.md. Without a Task tool, run the 6 dimension analyses sequentially inline yourself, one after another, using the same per-agent prompts and criteria references.
Agent assignments:
- Agent 1: Visual Hierarchy + Layout & Spacing (Dimension 1)
- Agent 2: Typography (Dimension 2)
- Agent 3: Color + Dark Mode (Dimension 3)
- Agent 4: Depth/Shadows + Components/Affordance (Dimensions 4, 5)
- Agent 5: Feedback & States + Motion/Microinteractions (Dimensions 6, 7)
- Agent 6: Accessibility, WCAG 2.2 AA (Dimension 8, cross-cutting)
Each agent must:
- Read the relevant criteria reference for its dimensions (criteria-foundations.md or criteria-interaction.md)
- Live: visually analyze the screenshot and cross-reference the DOM/a11y snapshot
Static: Grep CSS/components/tokens for measurable failures, then Read each match to verify
- Record the measured value (contrast ratio, px, ms, dp) as evidence
- Map each finding to a criterion ID + citation (WCAG SC / MD3 / HIG / NN/g)
- Classify severity (Critical/High/Medium/Low)
- Provide a concrete fix (2-3 approaches with the target value)
Phase 4: Consolidate & Analyze Findings
After all agents complete:
- Collect findings from the 6 agents
- Deduplicate across agents (same element/criterion = one finding)
- Prioritize by severity:
- Critical: WCAG AA failure blocking use (contrast < 3:1 on text, no keyboard focus, missing form labels), unusable touch targets
- High: WCAG AA contrast failures (< 4.5:1 body text), missing focus-visible, no reduced-motion support, broken hierarchy
- Medium: Off-grid spacing, un-tinted shadows, weak typographic scale, missing hover/active states
- Low: Polish: minor inconsistency, sub-optimal line length, icon-label spacing
- Map to dimension: Group findings under the 8 dimensions
- Applicable-only score: For each dimension that applies, score = passed criteria / applicable criteria. Skip dimensions that cannot be observed and say so.
- Statistics: total findings, by severity, by dimension; elements/files reviewed vs. those with issues
Phase 5: Generate Report(s)
Generate a markdown report per the template in references/report-template.md.
- Live audit →
design-report-live.md
- Static audit →
design-report-static.md
- Both modes → produce both files.
Phase 6: Verification & Quality Gate
Before presenting, verify every finding has:
- Evidence:
file:line (static) or screenshot region + DOM ref (live)
- A measured value where one applies (ratio / px / ms / dp)
- A criterion ID + authoritative citation
- A concrete fix with the target value
- A justified severity
- No duplicates, no placeholder text ("TODO", "[example]", "lorem")
- An explicit "What Was NOT Checked" section
- Applicable-only scoring (no penalty for unobservable dimensions)
Usage
# Live audit of a running site
review-design --url https://example.com
review-design https://example.com
# Static audit of the codebase
review-design --all --mode static
review-design 123 # PR #123 changed files
review-design abc123def # a commit
# Both: live + static (two reports)
review-design https://staging.example.com --all --mode both
# Focus a single dimension
review-design --url https://example.com --scope accessibility
review-design --all --scope typography
Scope Options
--scope focuses the audit on one dimension: hierarchy, layout, typography,
color, dark-mode, depth, components, feedback, motion, accessibility.
If omitted, all 8 dimensions are audited.
Additional Resources
- references/criteria-foundations.md: measurable criteria for dimensions 1-4 (hierarchy, layout, typography, color, depth)
- references/criteria-interaction.md: measurable criteria for dimensions 5-8 (components, feedback, motion, accessibility)
- references/agent-prompts.md: per-agent prompts (live + static) and grep patterns
- references/report-template.md: live and static report templates
What This Skill Does
- Audits UX/UI/design quality across 8 standards-mapped dimensions
- Works against a live URL (agent-browser) or a static codebase (grep)
- Measures real values (contrast, sizes, durations) as evidence
- Maps every finding to a criterion ID + authoritative citation
- Produces severity-ranked, fix-oriented report(s)
What This Skill Does NOT Do
- Does not modify any code or design files
- Does not auto-fix issues or commit changes
- Does not run a full automated a11y scanner (axe/pa11y), it reasons from evidence
- Does not evaluate native mobile (SwiftUI/Compose/Flutter) static patterns (web-first; future extension)
- Does not guarantee 100% issue detection
Limitations
- Heuristic + measured: combines tool measurements with expert heuristics; some judgment calls remain
- Live mode needs a reachable URL and the
agent-browser CLI installed
- Static mode is pattern-based: dynamic/runtime states may be missed
- Screenshot analysis depends on render fidelity at the captured viewport
- Expert review recommended for high-stakes or regulated interfaces
Standards References
1---2name: review-design3description: Performs a comprehensive UX/UI/design quality audit of a live URL or a static codebase, mapped to authoritative standards (WCAG 2.2 AA, Material Design 3, Apple HIG, Nielsen Norman Group, Refactoring UI, Laws of UX). Use when a user wants to review design quality, audit UX/UI, or check visual hierarchy, typography, color, dark mode, shadows/elevation, buttons/icons, feedback states, motion, or accessibility contrast. Triggers on "design review", "UX audit", "accessibility audit", "check contrast", "review this against WCAG". Analysis only, cites evidence and a criterion for every finding, never modifies code. Not for correctness, security, dependency, or performance review (use review-code, review-security, review-deps, or review-perf), nor the full multi-agent PR review team (use team-review). Not for pixel-diff visual regression testing against a baseline (use vrt-check).4---56# Design Review78Comprehensive UX/UI/design quality analysis across **8 audit dimensions**, each mapped to9authoritative standards. This skill performs **analysis only** - it identifies design10issues, explains findings against a cited criterion, and suggests fix approaches without11making code changes.1213It supports two input modes:1415- **Live mode**: audits a running URL via the `agent-browser` CLI (screenshots + DOM/accessibility snapshot).16- **Static mode**: audits a codebase (CSS/components/design tokens) via Grep.1718When both a URL and a codebase target are supplied, it runs both and emits **two separate reports**.1920## Audit Taxonomy (8 Dimensions)2122| # | Dimension | Key Standards |23|---|-----------|---------------|24| 1 | Visual Hierarchy & Layout | NN/g, Refactoring UI, Laws of UX, MD3 8pt grid |25| 2 | Typography | Butterick, Refactoring UI, MD3, Apple HIG |26| 3 | Color & Theming (incl. Dark Mode) | MD3 color roles, 60-30-10, WCAG 1.4.1/1.4.3 |27| 4 | Depth & Elevation (Shadows) | MD3 elevation, Refactoring UI, Josh Comeau |28| 5 | Components & Affordance (Buttons/Icons) | MD3 buttons/icons, Apple HIG, NN/g |29| 6 | Feedback & States | NN/g visibility-of-status, MD3 state layers |30| 7 | Motion & Microinteractions | NN/g animation, Laws of UX (Doherty), MD3 motion |31| 8 | Accessibility (cross-cutting) | WCAG 2.2 AA |3233Measurable criteria for dimensions 1–4 are in [references/criteria-foundations.md](references/criteria-foundations.md);34dimensions 5–8 are in [references/criteria-interaction.md](references/criteria-interaction.md).3536## Anti-Hallucination Guidelines3738**CRITICAL**: Design reviews must be based on ACTUAL evidence, never assumptions:39401. **Observe before claiming** - Never report an issue without reading the code (static) or viewing the screenshot/snapshot (live)412. **Evidence-based findings** - Every finding cites a file path + line number (static) OR a screenshot region + DOM ref (live)423. **Cite a criterion** - Every finding maps to a criterion ID and an authoritative citation (WCAG SC, MD3 spec, etc.)434. **Measure, don't estimate** - Report actual values (contrast ratio, px size, ms duration), not guesses. In static mode there is no rendered page to sample from: compute the WCAG relative-luminance contrast ratio directly from the two hex/rgb values found in the CSS/tokens (formula in [references/agent-prompts.md](references/agent-prompts.md#computing-contrast-ratio-from-hexrgb-no-browser-needed)); never eyeball a ratio445. **Applicable-only scoring** - Only score dimensions that apply to the target; never penalize what cannot be observed456. **State what was NOT checked** - Every report ends with an explicit coverage gap section467. **No invented standards** - Only reference real WCAG SCs, MD3 specs, and HIG guidance4748## Review Workflow4950### Phase 0: Parse Arguments & Resolve Mode5152Parse arguments to determine target and mode:5354```55Arguments:56- <url>: A live URL to audit (http/https) → live mode57- <pr_number>: Files changed in a PR (e.g., "123", "#123") → static mode58- <commit_sha>: Files changed in a commit (e.g., "abc123") → static mode59- "--all" or a path or no args: Entire codebase → static mode60- "--mode [live|static|both]": Force a mode61- "--scope [dimension]": Focus on one dimension (e.g., typography, color, accessibility)62```6364**Mode resolution:**65- A URL argument (or `--mode live`) → **live** audit.66- A PR / commit / `--all` / path (or `--mode static`) → **static** audit.67- Both a URL and a codebase target present (or `--mode both`) → run **both**, emit two reports.6869For static PR/commit scope, get changed files:70```bash71# For PR72gh pr view <pr_number> --json files --jq '.files[].path'73# For commit74git diff-tree --no-commit-id --name-only -r <commit_sha>75```7677### Phase 1: Discovery7879Use an Explore agent (model: `haiku`) to detect the design system and tooling:8081```82Use Task tool with Explore agent (model: haiku):83- prompt: "Discover the project's design system and front-end stack:84 1. Detect CSS approach: Tailwind, CSS Modules, styled-components, vanilla CSS, Sass85 2. Detect component/design system: Material UI, Chakra, Radix, shadcn/ui, Ant Design, custom86 3. Find design tokens: tailwind.config.*, theme files, CSS custom properties (:root { --* }), tokens.json87 4. Find existing a11y tooling: eslint-plugin-jsx-a11y, axe, pa11y, Storybook a11y addon88 5. Detect dark-mode support: prefers-color-scheme, .dark class, data-theme89 6. List the key UI directories (components/, styles/, app/, pages/)90 Return: a stack + design-system summary with the token source of truth."91- subagent_type: "Explore"92```9394Without a Task tool, run this discovery yourself inline using the same 6 steps before proceeding.9596**For live mode**, confirm the URL is reachable and `agent-browser` is installed:97```bash98agent-browser --version || echo "agent-browser not installed (npm install -g agent-browser)"99```100If `agent-browser` is missing, tell the user how to install it (`npm install -g agent-browser && agent-browser install`) and offer to fall back to static mode.101102### Phase 2: Initialize Progress Tracking103104Use TodoWrite to track progress across the 8 dimensions plus capture, consolidation, and report generation. One todo per dimension. Without TodoWrite, narrate phase/dimension transitions in your responses instead.105106### Phase 3: Capture, then Spawn Parallel Audit Agents107108**Live mode, capture first** (the agents analyze these artifacts):109```bash110mkdir -p /tmp/review-design111agent-browser open <url>112agent-browser snapshot -i > /tmp/review-design/snapshot.txt # interactive elements + a11y tree113agent-browser screenshot /tmp/review-design/page.png --full # full-page screenshot114# Optional, for inspected elements:115# agent-browser get styles @<ref> # computed CSS116# agent-browser get box @<ref> # bounding box (for touch-target size)117```118Capture additional viewports/pages if the user names them. Always `agent-browser close` when done.119120**Then spawn 6 parallel Explore agents** (model: `sonnet`) covering the 8 dimensions. For the full per-agent prompts (live screenshot/snapshot analysis AND static grep patterns), see [references/agent-prompts.md](references/agent-prompts.md). Without a Task tool, run the 6 dimension analyses sequentially inline yourself, one after another, using the same per-agent prompts and criteria references.121122**Agent assignments:**123- **Agent 1**: Visual Hierarchy + Layout & Spacing (Dimension 1)124- **Agent 2**: Typography (Dimension 2)125- **Agent 3**: Color + Dark Mode (Dimension 3)126- **Agent 4**: Depth/Shadows + Components/Affordance (Dimensions 4, 5)127- **Agent 5**: Feedback & States + Motion/Microinteractions (Dimensions 6, 7)128- **Agent 6**: Accessibility, WCAG 2.2 AA (Dimension 8, cross-cutting)129130Each agent must:1311. Read the relevant criteria reference for its dimensions (criteria-foundations.md or criteria-interaction.md)1322. **Live**: visually analyze the screenshot and cross-reference the DOM/a11y snapshot133 **Static**: Grep CSS/components/tokens for measurable failures, then Read each match to verify1343. Record the **measured value** (contrast ratio, px, ms, dp) as evidence1354. Map each finding to a **criterion ID + citation** (WCAG SC / MD3 / HIG / NN/g)1365. Classify severity (Critical/High/Medium/Low)1376. Provide a concrete fix (2-3 approaches with the target value)138139### Phase 4: Consolidate & Analyze Findings140141After all agents complete:1421431. **Collect** findings from the 6 agents1442. **Deduplicate** across agents (same element/criterion = one finding)1453. **Prioritize by severity**:146 - **Critical**: WCAG AA failure blocking use (contrast < 3:1 on text, no keyboard focus, missing form labels), unusable touch targets147 - **High**: WCAG AA contrast failures (< 4.5:1 body text), missing focus-visible, no reduced-motion support, broken hierarchy148 - **Medium**: Off-grid spacing, un-tinted shadows, weak typographic scale, missing hover/active states149 - **Low**: Polish: minor inconsistency, sub-optimal line length, icon-label spacing1504. **Map to dimension**: Group findings under the 8 dimensions1515. **Applicable-only score**: For each dimension that applies, score = passed criteria / applicable criteria. Skip dimensions that cannot be observed and say so.1526. **Statistics**: total findings, by severity, by dimension; elements/files reviewed vs. those with issues153154### Phase 5: Generate Report(s)155156Generate a markdown report per the template in [references/report-template.md](references/report-template.md).157158- Live audit → `design-report-live.md`159- Static audit → `design-report-static.md`160- Both modes → produce **both** files.161162### Phase 6: Verification & Quality Gate163164Before presenting, verify every finding has:1651. Evidence: `file:line` (static) or screenshot region + DOM ref (live)1662. A measured value where one applies (ratio / px / ms / dp)1673. A criterion ID + authoritative citation1684. A concrete fix with the target value1695. A justified severity1706. No duplicates, no placeholder text ("TODO", "[example]", "lorem")1717. An explicit "What Was NOT Checked" section1728. Applicable-only scoring (no penalty for unobservable dimensions)173174## Usage175176```bash177# Live audit of a running site178review-design --url https://example.com179review-design https://example.com180181# Static audit of the codebase182review-design --all --mode static183review-design 123 # PR #123 changed files184review-design abc123def # a commit185186# Both: live + static (two reports)187review-design https://staging.example.com --all --mode both188189# Focus a single dimension190review-design --url https://example.com --scope accessibility191review-design --all --scope typography192```193194## Scope Options195196`--scope` focuses the audit on one dimension: `hierarchy`, `layout`, `typography`,197`color`, `dark-mode`, `depth`, `components`, `feedback`, `motion`, `accessibility`.198If omitted, all 8 dimensions are audited.199200## Additional Resources201202- [references/criteria-foundations.md](references/criteria-foundations.md): measurable criteria for dimensions 1-4 (hierarchy, layout, typography, color, depth)203- [references/criteria-interaction.md](references/criteria-interaction.md): measurable criteria for dimensions 5-8 (components, feedback, motion, accessibility)204- [references/agent-prompts.md](references/agent-prompts.md): per-agent prompts (live + static) and grep patterns205- [references/report-template.md](references/report-template.md): live and static report templates206207## What This Skill Does208209- Audits UX/UI/design quality across 8 standards-mapped dimensions210- Works against a live URL (agent-browser) or a static codebase (grep)211- Measures real values (contrast, sizes, durations) as evidence212- Maps every finding to a criterion ID + authoritative citation213- Produces severity-ranked, fix-oriented report(s)214215## What This Skill Does NOT Do216217- Does not modify any code or design files218- Does not auto-fix issues or commit changes219- Does not run a full automated a11y scanner (axe/pa11y), it reasons from evidence220- Does not evaluate native mobile (SwiftUI/Compose/Flutter) static patterns (web-first; future extension)221- Does not guarantee 100% issue detection222223## Limitations224225- **Heuristic + measured**: combines tool measurements with expert heuristics; some judgment calls remain226- **Live mode needs a reachable URL** and the `agent-browser` CLI installed227- **Static mode is pattern-based**: dynamic/runtime states may be missed228- **Screenshot analysis** depends on render fidelity at the captured viewport229- **Expert review recommended** for high-stakes or regulated interfaces230231## Standards References232233- [WCAG 2.2](https://www.w3.org/TR/WCAG22/)234- [Material Design 3](https://m3.material.io/)235- [Apple Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines)236- [Nielsen Norman Group](https://www.nngroup.com/articles/)237- [Refactoring UI](https://www.refactoringui.com/)238- [Laws of UX](https://lawsofux.com/)