Skill: ui-ux-review
Description
Inspect completed UI implementation for visual consistency, layout correctness, interaction quality, UX flow, accessibility, and platform-specific behavior. Produces a severity-classified report. Does not redesign the application and does not make code changes unless explicitly requested.
When to use
- After implementing a feature with UI changes, before reporting done.
- When asked to review the UI, UX, or visual quality of a screen or flow.
- As part of the recommended workflow after
feature-development.
- When a design reference (Figma, screenshot, spec) exists and needs to be compared against the implementation.
When NOT to use
- To review code correctness or architecture — use
code-review.
- To review test coverage — use
test-review.
- To redesign screens or propose new design directions without being asked.
- For backend, API, or non-visual logic changes.
Default behavior
Do not make code changes. Produce a review report. Only apply fixes if the user explicitly requests it.
Do not treat subjective preferences as defects. Distinguish clearly between design mismatches, UX issues, accessibility issues, engineering limitations, and personal preferences.
Required workflow
Step 1 — Establish context
Before reviewing anything:
- What is being reviewed? (specific screen, flow, or set of changes)
- Are there design references available? (Figma links, screenshots, wireframes, design tokens, design system docs)
- If yes: read them and use them as the source of truth for design decisions.
- If no: evaluate against the project's own existing patterns and conventions.
- Is there a CLAUDE.md that documents the UI system, theme, or design conventions?
- What platform(s) are being reviewed? (iOS, Android, both)
Step 2 — Understand the project's UI baseline
Read enough existing screens/components to understand what "correct" looks like for this project:
- How are spacing, typography, and colors applied? (theme tokens, StyleSheet, inline)
- What is the existing pattern for loading, error, and empty states?
- What interaction patterns are standard? (buttons, modals, forms, confirmations)
- Are there accessibility patterns already established?
Do not evaluate the implementation against an invented design standard. Evaluate it against:
- Design references (highest priority, if available).
- Existing established patterns in the project.
- Platform UI guidelines (where clearly relevant and not contradicted by the project's design).
Step 3 — Review the implementation
Work through each dimension below. Skip dimensions that are clearly not applicable.
Review dimensions
Visual consistency
Spacing
- Is spacing consistent with the project's spacing system?
- Are there arbitrary pixel values where spacing tokens should be used?
- Is spacing between elements visually balanced?
Typography
- Are font sizes, weights, and families consistent with the theme?
- Are there hardcoded font values where theme tokens should be used?
- Is text truncation handled correctly for long strings?
Colors
- Are colors sourced from the theme or design tokens?
- Are there hardcoded color values that should come from the theme?
- Is color contrast sufficient for text readability?
- Is dark mode handled if the project supports it?
Iconography and imagery
- Are icons from the project's established icon set?
- Are icon sizes consistent with similar usage elsewhere?
- Are images displayed at appropriate resolution?
Sizing and alignment
- Are component dimensions consistent with similar components?
- Are elements visually aligned (left edge, center, baseline)?
- Are borders, radii, and shadows consistent with the design system?
Component consistency
- Do new UI elements visually match similar existing elements?
- Are custom components needed, or could existing shared components be used?
Layout and responsive behavior
Screen sizes
- Does the layout work on small screens as well as large?
- Are there elements that overflow or get clipped on narrow screens?
Safe areas
- Are safe area insets respected (top notch, bottom home indicator, navigation bar)?
- Is content pushed correctly when the keyboard appears?
Scrolling
- Is scrollable content actually scrollable?
- Does the scroll view extend to the correct boundaries?
- Is pull-to-refresh implemented correctly if the project uses it?
Overflow and dynamic content
- What happens when text is very long?
- What happens when a list is very long?
- What happens when data is absent vs. present?
Orientation
- If the project supports landscape orientation, does the layout hold up?
Interaction quality
Touch targets
- Are tappable elements large enough? (Minimum 44×44pt is a common platform guideline — apply if relevant to the project.)
- Is there sufficient spacing between adjacent touch targets?
State feedback
- Do buttons show pressed/active state?
- Do interactive elements indicate when they are disabled?
- Is there visual feedback when an action is processing?
Loading states
- Is there a loading indicator while data is fetching?
- Does the loading state match the project's established pattern?
- Is the UI stable when the loading state transitions to loaded?
Disabled states
- Are disabled controls visually distinct?
- Are they correctly non-interactive when disabled?
Navigation and back behavior
- Does back navigation work as expected on both platforms?
- Are swipe-to-dismiss or hardware back button behaviors handled?
Destructive actions
- Are destructive actions (delete, clear, logout) confirmed before executing?
- Does the confirmation match the project's established pattern?
UX quality
Empty states
- Is there a meaningful empty state when a list or content area has no data?
- Does the empty state match the project's established pattern?
Error states
- Are errors surfaced to the user with a meaningful message?
- Is there a way to retry after an error?
- Does the error state match the project's established pattern?
Validation and form feedback
- Are validation errors shown inline, clearly linked to the relevant field?
- Is validation timing correct (on submit, on blur, or as-you-type — matching project patterns)?
- Are required fields indicated?
Flow and discoverability
- Can the user accomplish the primary goal without confusion?
- Are there unnecessary steps in the flow?
- Are calls-to-action clear and prominent?
- Is it clear what happens next after each action?
Confirmation and feedback
- Is the user informed when an action completes successfully?
- Does the success feedback match the project's established pattern (toast, banner, navigation)?
Accessibility
Evaluate accessibility against what the project has established. Do not impose accessibility requirements not present in similar existing screens, but do flag clear omissions.
Labels
- Do interactive elements have
accessibilityLabel or equivalent?
- Are labels descriptive enough to be useful for screen reader users?
Roles
- Are
accessibilityRole values set on custom interactive elements (buttons, checkboxes, etc.)?
- Do complex components communicate their role correctly?
State
- Are
accessibilityState values set correctly (checked, disabled, selected, expanded)?
Touch target size
- Are touch targets large enough for users with motor impairments?
Color contrast
- Is text contrast sufficient? (Reference platform accessibility guidelines if no project standard exists.)
Dynamic text
- Does the layout hold up when the user increases system font size?
- Is text truncated correctly rather than overflowing its container?
Focus order
- Is the logical reading/interaction order correct for screen readers?
React Native platform behavior
Android vs. iOS differences
- Are there behaviors that differ between platforms and are handled correctly?
- Does status bar styling work correctly on both?
- Are Android elevation/shadow differences handled?
- Is the back button (hardware back) handled correctly on Android?
- Does iOS swipe-back gesture work correctly?
Keyboard behavior
- Does the keyboard obscure content that the user needs to interact with?
- Is
KeyboardAvoidingView or an equivalent used correctly?
- Does the keyboard dismiss correctly when expected?
Safe area
- Are
SafeAreaView or equivalent insets applied where needed?
- Is the bottom of the screen clear of the home indicator / navigation bar?
Native controls
- Are platform-native controls used where appropriate (pickers, date inputs)?
- Do they follow platform conventions?
Permissions
- If a feature requires permissions, is the permission request handled gracefully?
- Is there an appropriate degraded state when permissions are denied?
Design reference comparison (when references exist)
When Figma links, screenshots, or design specs are provided:
- Compare the implementation against the reference for each visible screen state.
- Document differences by category:
- Design mismatch: The implementation differs from the design reference (spacing, color, component, layout).
- UX issue: The implementation or design creates a usability problem.
- Accessibility issue: A required accessibility attribute is missing or incorrect.
- Engineering limitation: The design cannot be implemented as specified due to platform or library constraints (note, do not automatically fix).
- Subjective preference: The implementation looks different from the design but both are acceptable — flag only if relevant.
Do not mark a deviation from the design as a defect if it is an intentional engineering adaptation. Confirm before classifying.
Findings classification
| Severity |
Meaning |
| Critical |
Broken interaction, invisible content, crash on interaction, complete mismatch with design reference on a key screen. |
| High |
Missing required state (no loading, no error), broken navigation, significant design deviation, missing accessibility label on a primary action. |
| Medium |
Inconsistent spacing/color/typography, minor design deviation, UX friction in a non-critical flow. |
| Low |
Minor visual inconsistency with limited user impact. |
| Suggestion |
Improvement worth considering; no obligation to act on it. |
Review report format
UI/UX REVIEW REPORT
===================
Screen / Flow:
[What was reviewed]
Reference:
[Design reference used, or "project patterns" if none provided]
SUMMARY
-------
[2-3 sentences: overall quality, main concerns]
CRITICAL ISSUES
---------------
[CRITICAL] [Category] — [Screen/Component]
Issue: [Description]
Evidence: [What was observed]
Impact: [Why it matters]
Action: [Recommended fix]
HIGH PRIORITY
-------------
[Same format]
MEDIUM PRIORITY
---------------
[Same format]
LOW PRIORITY / SUGGESTIONS
---------------------------
[Same format]
ACCESSIBILITY
-------------
[Accessibility-specific findings, or "No accessibility issues found"]
PLATFORM-SPECIFIC ISSUES
-------------------------
[iOS / Android specific findings, or "No platform-specific issues found"]
DESIGN REFERENCE DIFFERENCES
------------------------------
[Only if a design reference was provided]
[List of deviations with classification: mismatch / limitation / preference]
RECOMMENDATIONS
---------------
[Summary of must-fix vs. should-fix vs. consider actions]
Common mistakes to avoid
- Flagging design choices as defects when they match the project's established patterns.
- Applying platform UI guidelines that contradict the project's intentional design decisions.
- Inventing design requirements when no reference was provided.
- Making code changes without being asked.
- Reviewing code logic instead of UI/UX behavior.
- Treating every visual difference from a design reference as Critical — assess actual user impact.
- Ignoring the difference between a design mismatch (factual) and a subjective preference.
Interaction with other skills
- feature-analysis: The UI/UX analysis section of
feature-analysis identifies design references and UI requirements up front. ui-ux-review validates whether the implementation matches them.
- feature-development: Run
ui-ux-review after feature implementation to catch visual and UX issues.
- code-review:
ui-ux-review covers presentation layer quality; code-review covers code correctness and architecture. Run both independently — they are complementary.
- test-review: Accessibility findings from this skill may indicate tests (e.g.,
accessibilityLabel presence) that should be added.
1---2name: ui-ux-review3description: Skill: ui-ux-review4---5# Skill: ui-ux-review67## Description8Inspect completed UI implementation for visual consistency, layout correctness, interaction quality, UX flow, accessibility, and platform-specific behavior. Produces a severity-classified report. Does not redesign the application and does not make code changes unless explicitly requested.910## When to use11- After implementing a feature with UI changes, before reporting done.12- When asked to review the UI, UX, or visual quality of a screen or flow.13- As part of the recommended workflow after `feature-development`.14- When a design reference (Figma, screenshot, spec) exists and needs to be compared against the implementation.1516## When NOT to use17- To review code correctness or architecture — use `code-review`.18- To review test coverage — use `test-review`.19- To redesign screens or propose new design directions without being asked.20- For backend, API, or non-visual logic changes.2122---2324## Default behavior2526**Do not make code changes.** Produce a review report. Only apply fixes if the user explicitly requests it.2728**Do not treat subjective preferences as defects.** Distinguish clearly between design mismatches, UX issues, accessibility issues, engineering limitations, and personal preferences.2930---3132## Required workflow3334### Step 1 — Establish context3536Before reviewing anything:371. What is being reviewed? (specific screen, flow, or set of changes)382. Are there design references available? (Figma links, screenshots, wireframes, design tokens, design system docs)39 - If yes: read them and use them as the source of truth for design decisions.40 - If no: evaluate against the project's own existing patterns and conventions.413. Is there a CLAUDE.md that documents the UI system, theme, or design conventions?424. What platform(s) are being reviewed? (iOS, Android, both)4344### Step 2 — Understand the project's UI baseline4546Read enough existing screens/components to understand what "correct" looks like for this project:47- How are spacing, typography, and colors applied? (theme tokens, StyleSheet, inline)48- What is the existing pattern for loading, error, and empty states?49- What interaction patterns are standard? (buttons, modals, forms, confirmations)50- Are there accessibility patterns already established?5152Do not evaluate the implementation against an invented design standard. Evaluate it against:531. Design references (highest priority, if available).542. Existing established patterns in the project.553. Platform UI guidelines (where clearly relevant and not contradicted by the project's design).5657### Step 3 — Review the implementation5859Work through each dimension below. Skip dimensions that are clearly not applicable.6061---6263## Review dimensions6465### Visual consistency6667**Spacing**68- Is spacing consistent with the project's spacing system?69- Are there arbitrary pixel values where spacing tokens should be used?70- Is spacing between elements visually balanced?7172**Typography**73- Are font sizes, weights, and families consistent with the theme?74- Are there hardcoded font values where theme tokens should be used?75- Is text truncation handled correctly for long strings?7677**Colors**78- Are colors sourced from the theme or design tokens?79- Are there hardcoded color values that should come from the theme?80- Is color contrast sufficient for text readability?81- Is dark mode handled if the project supports it?8283**Iconography and imagery**84- Are icons from the project's established icon set?85- Are icon sizes consistent with similar usage elsewhere?86- Are images displayed at appropriate resolution?8788**Sizing and alignment**89- Are component dimensions consistent with similar components?90- Are elements visually aligned (left edge, center, baseline)?91- Are borders, radii, and shadows consistent with the design system?9293**Component consistency**94- Do new UI elements visually match similar existing elements?95- Are custom components needed, or could existing shared components be used?9697---9899### Layout and responsive behavior100101**Screen sizes**102- Does the layout work on small screens as well as large?103- Are there elements that overflow or get clipped on narrow screens?104105**Safe areas**106- Are safe area insets respected (top notch, bottom home indicator, navigation bar)?107- Is content pushed correctly when the keyboard appears?108109**Scrolling**110- Is scrollable content actually scrollable?111- Does the scroll view extend to the correct boundaries?112- Is pull-to-refresh implemented correctly if the project uses it?113114**Overflow and dynamic content**115- What happens when text is very long?116- What happens when a list is very long?117- What happens when data is absent vs. present?118119**Orientation**120- If the project supports landscape orientation, does the layout hold up?121122---123124### Interaction quality125126**Touch targets**127- Are tappable elements large enough? (Minimum 44×44pt is a common platform guideline — apply if relevant to the project.)128- Is there sufficient spacing between adjacent touch targets?129130**State feedback**131- Do buttons show pressed/active state?132- Do interactive elements indicate when they are disabled?133- Is there visual feedback when an action is processing?134135**Loading states**136- Is there a loading indicator while data is fetching?137- Does the loading state match the project's established pattern?138- Is the UI stable when the loading state transitions to loaded?139140**Disabled states**141- Are disabled controls visually distinct?142- Are they correctly non-interactive when disabled?143144**Navigation and back behavior**145- Does back navigation work as expected on both platforms?146- Are swipe-to-dismiss or hardware back button behaviors handled?147148**Destructive actions**149- Are destructive actions (delete, clear, logout) confirmed before executing?150- Does the confirmation match the project's established pattern?151152---153154### UX quality155156**Empty states**157- Is there a meaningful empty state when a list or content area has no data?158- Does the empty state match the project's established pattern?159160**Error states**161- Are errors surfaced to the user with a meaningful message?162- Is there a way to retry after an error?163- Does the error state match the project's established pattern?164165**Validation and form feedback**166- Are validation errors shown inline, clearly linked to the relevant field?167- Is validation timing correct (on submit, on blur, or as-you-type — matching project patterns)?168- Are required fields indicated?169170**Flow and discoverability**171- Can the user accomplish the primary goal without confusion?172- Are there unnecessary steps in the flow?173- Are calls-to-action clear and prominent?174- Is it clear what happens next after each action?175176**Confirmation and feedback**177- Is the user informed when an action completes successfully?178- Does the success feedback match the project's established pattern (toast, banner, navigation)?179180---181182### Accessibility183184Evaluate accessibility against what the project has established. Do not impose accessibility requirements not present in similar existing screens, but do flag clear omissions.185186**Labels**187- Do interactive elements have `accessibilityLabel` or equivalent?188- Are labels descriptive enough to be useful for screen reader users?189190**Roles**191- Are `accessibilityRole` values set on custom interactive elements (buttons, checkboxes, etc.)?192- Do complex components communicate their role correctly?193194**State**195- Are `accessibilityState` values set correctly (checked, disabled, selected, expanded)?196197**Touch target size**198- Are touch targets large enough for users with motor impairments?199200**Color contrast**201- Is text contrast sufficient? (Reference platform accessibility guidelines if no project standard exists.)202203**Dynamic text**204- Does the layout hold up when the user increases system font size?205- Is text truncated correctly rather than overflowing its container?206207**Focus order**208- Is the logical reading/interaction order correct for screen readers?209210---211212### React Native platform behavior213214**Android vs. iOS differences**215- Are there behaviors that differ between platforms and are handled correctly?216- Does status bar styling work correctly on both?217- Are Android elevation/shadow differences handled?218- Is the back button (hardware back) handled correctly on Android?219- Does iOS swipe-back gesture work correctly?220221**Keyboard behavior**222- Does the keyboard obscure content that the user needs to interact with?223- Is `KeyboardAvoidingView` or an equivalent used correctly?224- Does the keyboard dismiss correctly when expected?225226**Safe area**227- Are `SafeAreaView` or equivalent insets applied where needed?228- Is the bottom of the screen clear of the home indicator / navigation bar?229230**Native controls**231- Are platform-native controls used where appropriate (pickers, date inputs)?232- Do they follow platform conventions?233234**Permissions**235- If a feature requires permissions, is the permission request handled gracefully?236- Is there an appropriate degraded state when permissions are denied?237238---239240## Design reference comparison (when references exist)241242When Figma links, screenshots, or design specs are provided:2432441. Compare the implementation against the reference for each visible screen state.2452. Document differences by category:246 - **Design mismatch**: The implementation differs from the design reference (spacing, color, component, layout).247 - **UX issue**: The implementation or design creates a usability problem.248 - **Accessibility issue**: A required accessibility attribute is missing or incorrect.249 - **Engineering limitation**: The design cannot be implemented as specified due to platform or library constraints (note, do not automatically fix).250 - **Subjective preference**: The implementation looks different from the design but both are acceptable — flag only if relevant.251252Do not mark a deviation from the design as a defect if it is an intentional engineering adaptation. Confirm before classifying.253254---255256## Findings classification257258| Severity | Meaning |259|----------|---------|260| **Critical** | Broken interaction, invisible content, crash on interaction, complete mismatch with design reference on a key screen. |261| **High** | Missing required state (no loading, no error), broken navigation, significant design deviation, missing accessibility label on a primary action. |262| **Medium** | Inconsistent spacing/color/typography, minor design deviation, UX friction in a non-critical flow. |263| **Low** | Minor visual inconsistency with limited user impact. |264| **Suggestion** | Improvement worth considering; no obligation to act on it. |265266---267268## Review report format269270```271UI/UX REVIEW REPORT272===================273274Screen / Flow:275[What was reviewed]276277Reference:278[Design reference used, or "project patterns" if none provided]279280SUMMARY281-------282[2-3 sentences: overall quality, main concerns]283284CRITICAL ISSUES285---------------286[CRITICAL] [Category] — [Screen/Component]287Issue: [Description]288Evidence: [What was observed]289Impact: [Why it matters]290Action: [Recommended fix]291292HIGH PRIORITY293-------------294[Same format]295296MEDIUM PRIORITY297---------------298[Same format]299300LOW PRIORITY / SUGGESTIONS301---------------------------302[Same format]303304ACCESSIBILITY305-------------306[Accessibility-specific findings, or "No accessibility issues found"]307308PLATFORM-SPECIFIC ISSUES309-------------------------310[iOS / Android specific findings, or "No platform-specific issues found"]311312DESIGN REFERENCE DIFFERENCES313------------------------------314[Only if a design reference was provided]315[List of deviations with classification: mismatch / limitation / preference]316317RECOMMENDATIONS318---------------319[Summary of must-fix vs. should-fix vs. consider actions]320```321322---323324## Common mistakes to avoid325326- Flagging design choices as defects when they match the project's established patterns.327- Applying platform UI guidelines that contradict the project's intentional design decisions.328- Inventing design requirements when no reference was provided.329- Making code changes without being asked.330- Reviewing code logic instead of UI/UX behavior.331- Treating every visual difference from a design reference as Critical — assess actual user impact.332- Ignoring the difference between a design mismatch (factual) and a subjective preference.333334---335336## Interaction with other skills337338- **feature-analysis**: The UI/UX analysis section of `feature-analysis` identifies design references and UI requirements up front. `ui-ux-review` validates whether the implementation matches them.339- **feature-development**: Run `ui-ux-review` after feature implementation to catch visual and UX issues.340- **code-review**: `ui-ux-review` covers presentation layer quality; `code-review` covers code correctness and architecture. Run both independently — they are complementary.341- **test-review**: Accessibility findings from this skill may indicate tests (e.g., `accessibilityLabel` presence) that should be added.