UI/UX auditing tool that analyzes code structure, design consistency, and accessibility for frontend projects.
Install
mkdir -p .claude/skills/ui-review-hoyvoh && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13226" && unzip -o skill.zip -d .claude/skills/ui-review-hoyvoh && rm skill.zipInstalls to .claude/skills/ui-review-hoyvoh
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
UI/UX audit skill for reviewing existing interfaces. Invoke when user asks to review UI, audit the frontend, check design quality, or review UX. Analyzes code structure, accessibility, visual consistency, responsiveness, and UX patterns. Outputs structured findings with severity and fix suggestions. Supports optional persona (e.g., 'as a senior designer').Key capabilities
- →Analyze UI component structure for code smells
- →Audit accessibility (a11y) issues
- →Check responsiveness and layout problems
- →Evaluate visual consistency across UI elements
- →Verify UX pattern coverage for states like loading and error
- →Identify performance red flags and security vulnerabilities in UI code
How it works
This skill scans UI files to identify code smells, accessibility issues, responsiveness problems, visual inconsistencies, UX pattern gaps, and performance/security red flags. It uses grep and find commands to analyze the codebase.
Inputs & outputs
When to use ui-review
- →Frontend code audit
- →Reviewing UI component structure
- →Checking accessibility compliance
About this skill
/ui-review — UI/UX Audit
Usage
/ui-review [--target <path|url>] [--as <persona>] [--mode quick|standard|deep]
--target— directory, file, or URL to review (default: current working directory)--as <persona>— load reviewer persona from.claude/personas/<persona>.mdquick— layout + accessibility + obvious issues onlystandard— full audit across all 7 categories (default)deep— standard + component-level analysis + refactor suggestions
Step 0 — Preflight
Identify the UI stack:
# Check package.json for frameworks
grep -l "react\|vue\|svelte\|angular\|next\|nuxt" "${TARGET:-.}/package.json" 2>/dev/null | head -5
# Count UI files
find "${TARGET:-.}" -type f \( -name "*.tsx" -o -name "*.jsx" -o -name "*.vue" -o -name "*.svelte" -o -name "*.html" \) 2>/dev/null | wc -l
Load persona if --as specified:
- Read
.claude/personas/<persona>.md - Apply that reviewer's lens to all findings below
Step 1 — Component Structure Analysis
find "${TARGET:-.}" -type f \( -name "*.tsx" -o -name "*.jsx" -o -name "*.vue" \) 2>/dev/null | head -30
Check for:
- Component files > 200 lines (split concern smell)
- Missing prop validation / TypeScript types on UI components
- Inline styles (> 3 occurrences is a smell)
- God components (single file doing layout + state + data fetch)
grep -rn "style={{" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | wc -l
grep -rn "useState\|useEffect\|fetch\|axios" "${TARGET:-.}/src" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
Step 2 — Accessibility Audit (a11y)
grep -rn "<img " "${TARGET:-.}" --include="*.tsx" --include="*.jsx" --include="*.vue" --include="*.html" 2>/dev/null | grep -v 'alt=' | head -20
grep -rn "<button\|<a " "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | grep -v "aria-label\|aria-describedby\|title=" | head -20
grep -rn "onClick.*div\|onClick.*span" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
grep -rn "tabIndex\|role=" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
Flags:
<img>withoutalt→ HIGH (WCAG 1.1.1)- Click handlers on
div/span→ MEDIUM (keyboard inaccessible) - Missing
aria-labelon icon buttons → MEDIUM tabIndex="-1"on focusable elements → check intent
Step 3 — Responsiveness & Layout
grep -rn "px-\|width:\|height:" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" --include="*.css" 2>/dev/null | grep -v "min-\|max-\|%" | head -20
grep -rn "overflow:\s*hidden\|overflow-hidden\|truncate" "${TARGET:-.}" 2>/dev/null | head -10
grep -rn "@media\|sm:\|md:\|lg:\|xl:" "${TARGET:-.}" 2>/dev/null | wc -l
Flags:
- Fixed pixel widths on containers (not max-width) → MEDIUM
- No responsive breakpoints in layout components → MEDIUM
- Content overflow hidden without visible affordance → LOW
Step 4 — Visual Consistency
# Check for color/spacing values hardcoded outside design tokens
grep -rn "#[0-9a-fA-F]\{3,6\}\|rgb(\|rgba(" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" --include="*.css" 2>/dev/null | grep -v "theme\|token\|var(--\|tailwind" | head -20
# Check for magic spacing numbers
grep -rn "margin:\s*[0-9]\|padding:\s*[0-9]\|gap:\s*[0-9]" "${TARGET:-.}" --include="*.css" 2>/dev/null | head -20
Flags:
- Hardcoded color values outside design tokens → MEDIUM (consistency drift risk)
- Magic spacing numbers outside scale → LOW
- Multiple font sizes not from a defined scale → MEDIUM
Step 5 — UX Pattern Check
grep -rn "loading\|isLoading\|skeleton\|spinner" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
grep -rn "error\|catch\|onError\|fallback" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
grep -rn "empty\|isEmpty\|noData\|no.*result" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
grep -rn "toast\|notification\|alert\|feedback" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
Check coverage of UI states:
- Loading state
- Error state
- Empty state
- Success feedback
Missing states → MEDIUM (user confusion in edge cases).
Step 6 — Performance Red Flags
# Re-renders: anonymous functions in JSX
grep -rn "onClick={() =>" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | wc -l
# Missing keys in lists
grep -rn "\.map(" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | grep -v "key=" | head -20
# Large image without lazy loading
grep -rn "<img " "${TARGET:-.}" --include="*.tsx" --include="*.jsx" --include="*.html" 2>/dev/null | grep -v "loading=\|lazy" | head -10
Flags:
.map()withoutkeyprop → HIGH (React reconciliation issues)- Anonymous arrow functions in render at scale (> 20 occurrences) → LOW
- Images without
loading="lazy"in long lists → LOW
Step 7 — Security in UI
grep -rn "dangerouslySetInnerHTML\|innerHTML\|document\.write\|v-html" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" --include="*.vue" 2>/dev/null | head -10
grep -rn "localStorage\.\|sessionStorage\." "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | grep -v "test\|spec" | head -10
dangerouslySetInnerHTMLwithout sanitization → CRITICAL (XSS)- Sensitive data (tokens, keys) in localStorage → HIGH
Report Format
UI REVIEW REPORT
================
Target : <path>
Stack : <detected framework>
Files : <N scanned>
Persona : <name if --as used>
## Findings (severity-ordered)
[FINDING] <CATEGORY>/<ID>: <issue name>
Location : <file>:<line or component>
Severity : CRITICAL | HIGH | MEDIUM | LOW
Issue : <what's wrong>
Impact : <user or dev impact>
Fix : <concrete suggestion>
## State Coverage
Loading : ✓ / ✗
Error : ✓ / ✗
Empty : ✓ / ✗
Success : ✓ / ✗
## Verdict
PASS | PASS_WITH_WARNINGS | NEEDS_WORK | CRITICAL_ISSUES
## Fix Plan (top 3 priority fixes)
1. [CRITICAL/HIGH finding] — specific change needed
2. ...
3. ...
When not to use it
- →When the user asks for a general code review not specific to UI/UX
- →When the target is not a directory, file, or URL containing UI code
- →When only interested in backend logic or database interactions
Limitations
- →The skill relies on static code analysis
- →The skill's analysis is limited to the provided UI code
- →The skill does not perform dynamic runtime UI testing
How it compares
This skill provides a structured, automated audit of UI/UX aspects directly from the codebase, offering specific findings and fixes, unlike a manual visual inspection or general code review.
Compared to similar skills
ui-review side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| ui-review (this skill) | 0 | 4mo | Review | Intermediate |
| uncodixfy | 0 | 3mo | No flags | Intermediate |
| ui | 0 | 3mo | No flags | Beginner |
| ui-ux-pro-max | 0 | 2mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
uncodixfy
BrammekeTV
Prevents generic AI/Codex UI patterns when generating frontend code. Use this skill whenever generating HTML, CSS, React, Vue, Svelte, or any frontend UI code to enforce clean, human-designed aesthetics inspired by Linear, Raycast, Stripe, and GitHub instead of typical AI-generated UI.
ui
tim-hub
Builds UI components, landing page sections, hero sections, and contact forms. Use when creating front-end visual elements.
ui-ux-pro-max
darkmatter
UI/UX design intelligence for web and mobile. Includes 50+ styles, 161 color palettes, 57 font pairings, 161 product types, 99 UX guidelines, and 25 chart types across 10 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui, and HTML/CSS). Actions: plan, build, cr
ui-ux-pro-max
majiayu000
Frontend UI/UX design intelligence - activate FIRST when user requests beautiful, stunning, gorgeous, or aesthetic interfaces. The primary skill for design decisions before implementation. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Nati
web-design-guidelines
AsyrafHussin
UI/UX best practices and accessibility audit. Use when reviewing UI code, checking accessibility, running accessibility audits, auditing forms, or ensuring web interface best practices. Triggers on "audit accessibility", "check WCAG", "review UI", "check accessibility", "audit design", "review UX",
frontend-developer
bonnguyenitc
Use when building web UI, designing component architecture, or reviewing frontend code — regardless of framework (React, Vue, Svelte, etc.)