--- name: ui-polish-review description: Use when reviewing any web or app interface for visual quality — walks through Refactoring UI principles covering hierarchy, spacing, typography, color, depth, images, and finishing touches to elevate design from amateur to professional. --- # UI Polish Review ## Overview A structured visual design audit methodology based on *Refactoring UI* by Adam Wathan and Steve Schoger. Guides you through 7 sequential phases to systematically evaluate and improve the visual quality of any web or application interface, transforming rough or inconsistent designs into polished, professional ones. ## When to Use - Before launching a product or feature to production - When a design "looks off" but you cannot pinpoint why - During design reviews or code reviews that include UI changes - When elevating a functional prototype into a polished product - After implementing a design and wanting to verify visual quality against best practices - When onboarding a new team and establishing design standards ## When NOT to Use - As a substitute for usability testing (use the ux-usability-review skill for that) - For branding or marketing strategy decisions - When the interface is still in wireframe stage and visual design has not started yet - For accessibility-only audits (though contrast is covered here, a full a11y audit requires more) ## Process Work through each phase **sequentially**. At each phase: 1. **Ask** targeted questions about the specific interface being reviewed 2. **Read** the relevant chapter summary from `front-end-design/refactoring-ui/` for detailed guidance 3. **Suggest and execute** concrete tests (grep patterns in source code, visual inspection checklists, automated checks) 4. **Flag findings** with severity: `CRITICAL` / `HIGH` / `MEDIUM` / `LOW` / `INFO` 5. **Summarize** findings before moving to the next phase If the application does not have a relevant surface for a phase (e.g., no user-uploaded images), acknowledge and skip with rationale. ```dot digraph audit_phases { rankdir=TB; node [shape=box, style=rounded]; p1 [label="Phase 1\nVisual Hierarchy"]; p2 [label="Phase 2\nLayout & Spacing"]; p3 [label="Phase 3\nTypography"]; p4 [label="Phase 4\nColor"]; p5 [label="Phase 5\nDepth & Shadows"]; p6 [label="Phase 6\nImages & Icons"]; p7 [label="Phase 7\nFinishing Touches"]; report [label="UI Polish\nReport", shape=note]; p1 -> p2 -> p3 -> p4 -> p5 -> p6 -> p7 -> report; } ``` --- ## Phase 1: Visual Hierarchy **Reference:** `front-end-design/refactoring-ui/ch02-hierarchy-is-everything.md` **Goal:** Verify that the interface communicates a clear, intentional visual hierarchy so users instantly know what is most important, secondary, and tertiary. **Questions to ask:** - Is hierarchy communicated through a combination of font weight, color, and size -- not size alone? - Are labels used only when the data format is not self-explanatory? (Email addresses, phone numbers, dates, and currencies rarely need labels.) - Are secondary and tertiary actions properly de-emphasized? (Outlined or text-only buttons, muted colors, smaller size.) - Is document hierarchy (h1, h2, h3) independent from visual hierarchy? (An h2 can be visually smaller than a paragraph if that serves the design.) - Are destructive actions de-emphasized rather than given prominent red buttons? - Is the "emphasize by de-emphasizing" technique used -- making surrounding elements quieter rather than making the primary element louder? **Tests to run:** ``` # Find font-size declarations without corresponding weight/color differentiation # Red flag: many different font-sizes but uniform font-weight and color grep -rn "font-size" --include="*.css" --include="*.scss" --include="*.tsx" --include="*.jsx" # Find multiple primary-styled buttons on the same screen (hierarchy violation) grep -rn "btn-primary\|variant=\"primary\"\|variant='primary'\|type=\"primary\"\|isPrimary\|button.*primary" --include="*.tsx" --include="*.jsx" --include="*.html" --include="*.vue" # Check for destructive actions given excessive visual prominence grep -rn "btn-danger\|variant=\"destructive\"\|variant=\"danger\"\|bg-red-\|bg-destructive" --include="*.tsx" --include="*.jsx" --include="*.html" --include="*.vue" # Find label-heavy patterns that might be unnecessary grep -rn "label.*:\|