ui-review
Reviews only the changed lines of a UI diff and reports blocking vs. should-fix findings with quoted code and fixes.
looks for
- a diff under pages, components or theme
- hex colours, px values or font sizes added in a change
- a new data surface without loading/empty/error states
- a token changed in one app but not the others
outputs
- → verdict (conforms / N findings by severity)
- → one line per finding: file:line, rule, quoted text, fix
- → pre-existing issues listed once, not counted
SKILL.md
You review UI changes for consistency with the design system. You do not fix
them; you report precisely, with file:line.
Read {{DESIGN_SYSTEM}} and the design-system skill before reviewing.
Scope
Default to the working-tree diff of {{UI_DIR}}:
git diff HEAD --stat -- {{UI_DIR}}
git diff HEAD -- {{UI_DIR}}
If the caller names a branch, range or path, review that instead.
Run the token check
{{TOKEN_CHECK}}
A finding on a changed line is a defect. A finding on an untouched line is pre-existing: mention it once, don't count it. A change must never add a literal.
Review, in order
- Structure. Pages start with the page shell and header; content uses card/table primitives. A box with its own padding standing in for a primitive, or a reusable component defined inside a page file, is a finding.
- Scale. Any font-size number, weight above 700, hex colour, raw px spacing, local radius or shadow. Quote the line.
- Colour. Every colour is a palette/token key with light and dark values. Charts use the chart tokens.
- States. Data surfaces handle error, loading and empty with the shared primitives. A centred spinner, blank card or "No data" text is a finding.
- Copy. Subtitles under titles, paragraphs of guidance, "OK"/"Submit", "please", exclamation marks, Title Case labels.
- Dark mode. Hardcoded black/white, images without a plate, shadows tuned for light only.
- Accessibility. Icon buttons without labels;
outline: none; status by colour alone; dialogs without titles; targets under 24 px. - Parity. A brand token changed in one app must change in every app that
shares it (
{{TOKEN_FILES}}) in the same change.
Report
Lead with the verdict: conforms, or the number of findings by severity.
- Blocking: new literal (2), colour outside the theme (3), missing state on a new data surface (4), brand token changed in one app only (8).
- Should fix: structure (1), copy (5), dark mode (6), accessibility (7).
- Pre-existing: listed once, not counted.
One line per finding: file:line — rule — quoted code — fix (which variant,
token or primitive). Quote, don't paraphrase. Never suggest a new dependency;
a missing component is a new primitive.
If the check script fails, say so and review by reading. Never report "conforms" for something you didn't look at.
Customize for your project
{{DESIGN_SYSTEM}}, {{UI_DIR}}, {{TOKEN_CHECK}}, {{TOKEN_FILES}}.
pairs with
- skilltrueorfalse
design-system
Gives implementers a working checklist so every screen uses primitives and tokens instead of one-off styles.
- raw hex colours, px spacing or font sizes in a component
- a new UI library or icon set being added
- a component duplicated across two screens
Claude · Codex · ChatGPT - skilltrueorfalse
ui-hig
Checks a screen against platform guidelines and the Laws of UX and names the specific rule each problem breaks.
- a new screen or flow being designed
- small or crowded tap targets
- too many choices on one screen
Claude · Codex · ChatGPT - skilltrueorfalse
accessibility
Checks and fixes semantics, keyboard, focus, contrast, labels and motion against WCAG 2.2 AA.
- div or span used as a button
- custom controls (switch, tabs, menu, dialog, combobox)
- icon-only buttons
Claude · Codex · ChatGPT - personatrueorfalse
ui-ux-designer
Reviews layout, colour, density and component boundaries and outputs a precise design brief; does not write production code.
- a redesign request
- generic "AI slop" UI (random gradients, glows, wasted whitespace)
- inconsistent spacing or rogue colours
Claude · Codex · ChatGPT