kensaurus/cursor-kenji/audit-uiux-design-system

Claude Code and agent skill by kensaurus/cursor-kenji

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Audit visual-system coherence: tokens, component variants, color, type, spacing, dark mode. Use for "design drift", inconsistent UI, or duplicate primitives. Per-page usability → audit-ux. Plan-only unification → plan-uiux-unification.

Install

npx vskill@latest install kensaurus/cursor-kenji/audit-uiux-design-system

SKILL.md

UI Design System Audit Skill

Degree of freedom: MIXED — Steps 0–3, 5–6 [HIGH freedom]; Step 4 playwright captures [LOW freedom — run exactly]. Read protocol-browser-anti-stall before any browser step. Breakpoints-only → audit-responsive.

This skill vs neighbors

SkillOwns
audit-uiux-design-system (this)Visual-system coherence: tokens, variants, color, type, spacing, dark mode
audit-uxPer-page UX audit with NN/g heuristics, microcopy, Google HEART
plan-uiux-unificationPlan-only UI/UX and design-system audit emitting a unification burndown

How to reason

  1. Observe — quote the token file, raw hex, or screenshot
  2. Interpret — is this the system token, a one-off, or an AI-tell?
  3. Classify — token leak / duplicate component / missing state / template / correct
  4. Severity — raw color on a core primitive = P0; missing hover = P1; radius nit = P2

Worked example

Observe: Button.tsx uses bg-[#3B82F6]; --primary exists in globals.css.
Interpret: the primitive bypasses the token SSOT; dark mode cannot switch it.
Classify: token leak on a core primitive.
Severity: P0 — every button is a hardcoded hex.
Finding: Button.tsx | color token | P0 | replace with bg-primary.

Self-critique before reporting [LOW freedom — do not skip]

  1. Tokens first — do not invent a second scale
  2. Evidenced — screenshot under .playwright-mcp/ or quoted class
  3. Severity justified — P0 = core primitive off-token or unusable contrast
  4. Right owner — linearized desktop → audit-responsive; WCAG keyboard → audit-accessibility
  5. Hand-crafted — no recommendation that increases template sameness

Anti-template

Recommendations must name what to avoid, not ask for taste. Research award-winning sites in the domain; vary rhythm (not identical py-16); give each control a distinct hover/focus/active/disabled; define personality tokens (radius, type voice). Defaults to call out — extend this list from whatever the first draft reached for: identical section padding, generic or purple gradients, three equal cards / 3-col icon-title-desc as the default, cream or off-white page backgrounds, italic accent words in headlines, "01/02/03" numbered section labels, monospace labels, pill-shaped buttons everywhere, Inter/Roboto as the only type voice, lorem empty states, uniform radius, unadapted stock art.


Step 0: Auto-Detect Design System

0a. Detect CSS Framework
SignalTechnology
tailwindcss v3 + tailwind.config.*Tailwind CSS v3
tailwindcss v4 + @theme in CSSTailwind CSS v4
*.module.css filesCSS Modules
styled-components or @emotion/styledCSS-in-JS
@chakra-ui/reactChakra UI
@mui/materialMaterial UI
@mantine/coreMantine
0b. Detect Component Library
Glob: **/components/ui/*.tsx → shadcn/ui
Glob: **/components/ui/*.vue → Vue component lib
Glob: **/components/ui/*.svelte → Svelte component lib
Grep: "from '@radix-ui" glob "*.{ts,tsx}" output_mode "count"
Grep: "from 'lucide-react" glob "*.{ts,tsx}" output_mode "count"
Grep: "from '@heroicons" glob "*.{ts,tsx}" output_mode "count"
Grep: "from 'react-icons" glob "*.{ts,tsx}" output_mode "count"
0c. Find Design Tokens
Glob: **/tailwind.config.*
Glob: **/app/globals.css
Glob: **/styles/tokens.*
Glob: **/theme.*
Grep: "--primary|--secondary|--accent|--muted" glob "*.css"

Read token source to extract: colors, spacing, typography, radii, shadows.

0d. Discover Forbidden Patterns
Grep: "NEVER|FORBIDDEN|DO NOT" glob "**/*README*" -i
0e. Record Discovery
DESIGN SYSTEM DISCOVERY:
- CSS framework: [Tailwind v3/v4 / CSS Modules / Styled Components / etc.]
- Component library: [shadcn/ui / Radix / MUI / Chakra / custom]
- Icon library: [Lucide / Heroicons / react-icons / mixed]
- Token source: [file path]
- Colors defined: [count]
- Typography scale: [list]
- Spacing base: [4px / 8px / etc.]
- Border radius: [list]
- Shadow levels: [list]
- Dark mode: [YES — class/media / NO]
- Forbidden patterns: [list from README]

Step 1: Research Design System Best Practices

1a. Context7 — Component Library Docs
json
context7:resolve-library-id
{
"libraryName": "<DETECTED_COMPONENT_LIBRARY>",
"query": "component variants accessibility patterns"
}

Then fetch docs with the resolved ID. Also fetch CSS framework docs.

1b. Firecrawl — Design System Standards
json
firecrawl:firecrawl_search
{
"query": "<COMPONENT_LIBRARY> design system audit token compliance best practices [current year]",
"limit": 5,
"sources": [{ "type": "web" }]
}

Additional queries:

TopicQuery
Token compliancedesign token audit <CSS_FRAMEWORK> consistency
Component patterns<FRAMEWORK> component modularity composition patterns
Dark mode<CSS_FRAMEWORK> dark mode implementation best practices
1c. Firecrawl — Award-Winning Reference Sites
json
firecrawl:firecrawl_search
{
"query": "<PRODUCT_TYPE> website design award Awwwards Muzli [current year]",
"limit": 5,
"sources": [{ "type": "web" }]
}
json
firecrawl:firecrawl_search
{
"query": "<PRODUCT_TYPE> SaaS UI design inspiration unique not generic [current year]",
"limit": 5,
"sources": [{ "type": "web" }]
}

Scrape 2–3 standout sites for grid breaks, signature motion, type voice, and accent logic.


Step 2: Token Compliance Audit

2a. Color Tokens
RuleStandardHow to Check
Semantic namingprimary, secondary, destructive, muted, accentNo raw hex/rgb in components
CSS variableshsl(var(--primary)) or oklch()All colors reference variables
Foreground pairsEvery bg color has *-foregroundText contrast maintained
Dark modeAll tokens have dark variant.dark class or @media
Status colorssuccess, warning, error, info definedConsistent across alerts, badges, toasts

Find violations:

Grep: "(#[0-9a-fA-F]{3,8}|rgb\(|rgba\(|hsl\([^v])" glob "*.tsx"
Grep: "\[(#|rgb|hsl)" glob "*.tsx"
2b. Typography Tokens
RuleStandard
Font familiesMax 2-3 families in theme
Size scaleConsistent (text-sm, text-base, text-lg)
Weight scaleLimited set (font-normal, font-medium, font-semibold, font-bold)
Heading hierarchyh1 > h2 > h3 in visual weight AND DOM order
No arbitrary sizesNo text-[14px] when text-sm exists
Grep: "text-\[" glob "*.tsx"
Grep: "font-(thin|extralight|light|normal|medium|semibold|bold|extrabold|black)" glob "*.tsx" output_mode "count"
2c. Spacing Tokens
RuleStandard
Base unit4px grid (Tailwind default)
Consistent gapsSame spacing for same contexts
No arbitrary valuesNo p-[13px] when p-3 exists
Grep: "(p|m|gap|space)-\[" glob "*.tsx"
2d. Borders, Radii, Shadows
Grep: "rounded-\[" glob "*.tsx"
Grep: "shadow-" glob "*.tsx" output_mode "count"

Step 3: Component Modularity Audit

3a. Component Health
RuleStandard
Single responsibilityOne component = one purpose
ComposableSmall pieces compose into larger ones
ReusableSame UI = same component everywhere
Consistent propsvariant, size, disabled, className across all
Variants patterncva() or similar for style variants
3b. Find Duplicate Components
Grep: "<button " glob "*.tsx" — raw buttons outside ui/ (should use Button)
Grep: "<input " glob "*.tsx" — raw inputs (should use Input)
Grep: "<select " glob "*.tsx" — raw selects
Grep: "<a " glob "*.tsx" — raw anchors (should use Link)

Exclude components/ui/* — those are legitimate primitives.

3c. Check Component Consistency
Grep: "function (Button|Input|Modal|Dialog|Card)" glob "*.tsx" output_mode "files_with_matches"
3d. Mixed Icon Libraries
Grep: "from .lucide-react" glob "*.tsx" output_mode "count"
Grep: "from .@heroicons" glob "*.tsx" output_mode "count"
Grep: "from .react-icons" glob "*.tsx" output_mode "count"

Step 4: Live Visual Verification (playwright-cli)

4a. Navigate and Capture
bash
PW="npx --yes @playwright/cli@latest"
$PW -s=ds-audit open --headed "http://localhost:<PORT>/<ROUTE>"
sleep 2
$PW -s=ds-audit snapshot # verify content rendered
$PW -s=ds-audit screenshot --filename ".playwright-mcp/ds-<route>.png" # visual evidence
$PW -s=ds-audit console # check for errors
4b. Per-Page Checks
CheckHow
Token complianceScreenshot — inconsistent colors, spacing
Component reuseSnapshot — shared primitives used?
Console errorsconsole — hydration, missing CSS vars
Layout shiftSnapshot before/after interaction
Dark modeToggle dark mode, re-screenshot, compare
4c. Responsive Check

Test at three viewports:

  • Desktop (1440px)
  • Tablet (768px)
  • Mobile (375px)
4d. Visual Accessibility
CheckHow
Color contrast4.5:1 text, 3:1 large text/UI — compute from the token pair values (one-line script or the DevTools accessibility pane); the screenshot confirms which pair is in use, it does not measure the ratio
Focus ringsTab through elements, verify visible focus indicator
Semantic HTML`Grep: "<nav><main><section><article><aside>" glob "*.tsx"`
Alt text`Grep: "<(imgImage)" glob "*.tsx" then check for alt=`

Step 5: Microinteractions and User Feedback

5a. Microinteraction Coverage Audit

Check each interactive:

ElementExpected FeedbackAI-Tell if Missing
ButtonsHover: color shift + subtle shadow change. Active: scale(0.98) press. Loading: spinner replaces label or inline indicatorFlat, no state change — feels dead
LinksHover: underline animation or color transition, not instant swapInstant color jump with no transition
Cards (clickable)Hover: lift (translateY + shadow increase). Not just color changeColor change only, or no hover at all
InputsFocus: ring animation or border color transition. Not just outline swapBrowser default outline, no custom focus
Toggles/switchesState transition animated, not instant. Haptic feel via easingInstant snap between states
Dropdowns/menusOpen/close with slide or fade, not instant appear/disappearInstant pop, no transition
Toasts/notificationsEnter with slide + fade, exit with fade. Auto-dismiss with progressInstant appear/disappear
Modals/dialogsBackdrop fade + content scale/slide. Exit reverses. Not instantInstant appear, jarring
TabsActive indicator slides to new tab, not instant jumpInstant color swap
TooltipsSlight delay (200-300ms), fade in. Don't flicker on mouse movementInstant, flickers, no delay

Find in code:

Grep: "transition-all|transition-colors|transition-opacity|transition-transform" glob "*.tsx" output_mode "count"
Grep: "hover:|group-hover:|focus-visible:" glob "*.tsx" output_mode "count"
Grep: "animate-|animation-|@keyframes|framer-motion|motion\." glob "*.tsx" output_mode "count"
Grep: "scale-|translate-|rotate-" glob "*.tsx" output_mode "count"
5b. Interaction State Completeness

Verify ALL states exist per interactive:

States checklist per component:
□ Default (resting)
□ Hover (mouse over)
□ Focus-visible (keyboard navigation)
□ Active/pressed (during click)
□ Disabled (grayed, not clickable, cursor-not-allowed)
□ Loading (async action in progress)
□ Error (validation failed, destructive context)
□ Success (completed action)

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
9
7-day trend score
12

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/kensaurus/cursor-kenji/audit-uiux-design-system/badge)](https://verified-skill.com/skills/kensaurus/cursor-kenji/audit-uiux-design-system)

Something wrong with this skill or its page? Tell us.