ai/skills/ui-review/SKILL.md
Review UI for visual consistency, layout structure, and design system compliance. Two modes — code review (check view files against patterns) and visual audit (screenshot all routes and analyze). Use when reviewing UI code, checking consistency, auditing views, or when user says "review the UI", "check consistency", "UI audit", "design review".
npx skillsauth add steveclarke/dotfiles ui-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Review application UI for consistency, design system compliance, and structural patterns. This skill acts as the "designer eye" — catching inconsistencies that accumulate when features are built ad-hoc.
/ui-review or "review the UI code")Analyze view files for structural consistency. Run this after building new views or when things feel inconsistent.
What to check:
Layout usage — Every page should use a Kiso dashboard layout component
(dashboard_group, dashboard_navbar, dashboard_sidebar, dashboard_panel).
Flag any page that hand-rolls its own shell.
Page structure — Compare all page templates side-by-side. Look for:
Component usage — Every UI element should use a kui() component.
Flag raw HTML that Kiso already covers: hand-rolled buttons, cards, tables,
badges, alerts, avatars, dialogs, dropdowns.
Spacing values — Check for arbitrary Tailwind spacing (p-7, mt-11, gap-3.5). All spacing should come from the standard scale: 1, 1.5, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24. Flag non-standard values as potential inconsistencies.
Typography — Check for consistent heading hierarchy. Same type of page should use the same heading size. Flag mixed heading sizes for the same structural role.
Color usage — Should use semantic tokens (primary, secondary, muted, destructive) not raw colors (blue-500, zinc-700). Flag raw color classes except in Kiso component overrides.
Pattern drift — If the same UI concept appears in multiple places (e.g., "a list of items with actions"), they should look the same. Flag divergent implementations of the same concept.
Output format:
## UI Code Review
### Consistency Issues
1. **[file:line]** — Description of what's inconsistent and what it should match
### Missing Kiso Components
1. **[file:line]** — Raw HTML that should use `kui(:component)`
### Non-Standard Values
1. **[file:line]** — `p-7` should be `p-6` or `p-8` (standard scale)
### Recommendations
- Concrete suggestions for extracting shared patterns
Systematic visual analysis of every screen in the app.
Step 1: Discover routes
bin/rails routes | grep "GET" | grep -v "rails/" | grep -v "turbo"
Step 2: Capture each page
Use the browser automation tools (Chrome MCP or claude-in-chrome) to:
tmp/ui-audit/screenshots/ with descriptive namestmp/ui-audit/html/.
This is the post-render HTML with all Tailwind classes resolved and Kiso
components expanded. More useful than ERB source because it captures final
output without tracing through layouts, partials, and components.Step 3: Analyze rendered HTML
The HTML reveals things screenshots can't:
data-slot attributes are Kiso
components. Elements without them are hand-rolled HTML. Flag hand-rolled
elements that have a Kiso equivalent (e.g. a raw <button> when
kui(:button) exists).p-,
m-, gap-, space-) and flag values not on the standard scale
(1, 1.5, 2, 3, 4, 6, 8, 12, 16). Values like p-7, mt-11, gap-3.5
are drift.text-gray-500,
bg-blue-600) that should use semantic tokens (text-muted-foreground,
bg-primary).Step 4: Analyze screenshots as a set
Look at ALL screenshots together. Check for:
Step 5: Report
Group findings by severity:
For each finding, reference specific pages and suggest which version should be the canonical one (usually the most common pattern wins).
When recommending fixes, follow these principles:
The most common pattern wins. If 4 pages use p-6 content padding and 1
uses p-8, the fix is changing the 1, not the 4.
Extract, don't duplicate. If the same header pattern appears on 3+ pages, it should be a partial or component, not copy-pasted HTML.
Kiso first. Any UI element that Kiso provides should use the Kiso version. Don't hand-roll what the framework gives you.
Spacing from the scale. No arbitrary values. If something needs to be "between 6 and 8", pick one. Consistency beats precision.
One way to do each thing. A list of items should look the same everywhere. A page header should look the same everywhere. An empty state should look the same everywhere. Pick the best version and replicate it.
content-media
Download content from YouTube including transcripts, captions, subtitles, music, MP3s, and playlists. Use when the user provides a YouTube URL or asks to download, transcribe, or get content from YouTube videos or playlists.
development
Apply VueUse composables where appropriate to build concise, maintainable Vue.js / Nuxt features.
tools
Improves typography by fixing font choices, hierarchy, sizing, weight, and readability so text feels intentional. Use when the user mentions fonts, type, readability, text hierarchy, sizing looks off, or wants more polished, intentional typography.
tools
Interact with Todoist via MCP. Use when adding tasks, listing tasks, marking complete, or managing projects.