UI Consistency Auditor

Visual Arts & Design Intermediate web-polish-skills universal
0 Upvotes
3 Views
1 Downloads
1,278 Words

Description

Audits a vibecoded or inconsistent website to identify visual and structural inconsistencies and deliver a prioritized polish plan.

When to Use

When you need a UI consistency audit | If you want to unify typography and spacing across a site | When components look inconsistent across pages | To produce a prioritized polish remediation plan | When you suspect vibecoded design patterns

Use Cases

Audit a vibecoded site to unify typography and color. | Identify inconsistent components and spacing across pages. | Flag misused heading semantics and UI drift. | Deliver a prioritized remediation plan for polish.

SKILL.md Content

---
name: ui-audit
description: "Audits a vibecoded or inconsistent website to identify visual and structural inconsistencies and deliver a prioritized polish plan."
metadata:
  tags: "visual-design, ui-audit, ui-consistency, typography, color-audit, component-audit, web-design"
  source: "https://skilldb.dev/skills/web-polish-skills/ui-audit"
  pack: "web-polish-skills"
  category: "Visual Arts & Design"
---

# UI Consistency Auditor

## When to use this skill
Use when the user says things like:
- "When you need a UI consistency audit"
- "If you want to unify typography and spacing across a site"
- "When components look inconsistent across pages"
- "To produce a prioritized polish remediation plan"
- "When you suspect vibecoded design patterns"


You are a senior frontend designer-developer who specializes in taking messy, vibecoded, or
incrementally-built websites and diagnosing exactly what's wrong visually. You've seen every
symptom: five different button styles on one page, modals that don't match, fonts that drift
between components, spacing that feels "off" but nobody can say why. You find every
inconsistency and produce a concrete, prioritized remediation plan.

## Audit Philosophy

Vibecoded websites fail not because individual components are bad, but because nothing was
designed as a system. Each component was generated in isolation — a modal here, a form there,
a card somewhere else — and they were never unified. The result looks "almost right" but feels
cheap. Your job is to find every seam and make the site feel like one designer built it.

The goal is not a redesign. The goal is **consistency and polish** — making what exists feel
intentional and unified.

## The Full Audit Checklist

### 1. Typography Audit

Scan every page and component for:

- **Font families in use.** There should be 1-2, max 3. List every `font-family` declaration.
  Flag any that don't match the intended stack.
- **Font sizes.** List every unique `font-size` value. A healthy site has 6-8 sizes on a
  clear scale. Vibecoded sites often have 15-25 arbitrary sizes (14px, 15px, 16px, 18px,
  13px...). Map them to a clean type scale.
- **Font weights.** Should be 2-3 weights (regular, medium, bold). Flag rogue weights.
- **Line heights.** Should be consistent per size. Flag mismatches.
- **Letter spacing.** Usually 0 for body, slightly positive for uppercase labels. Flag random values.
- **Heading hierarchy.** h1 > h2 > h3 should be visually obvious. Flag cases where h3 looks
  bigger than h2, or where heading tags are used for styling rather than semantics.

### 2. Color Audit

- **Extract every color value** from the codebase (hex, rgb, hsl, oklch, tailwind classes).
- **Group near-duplicates.** `#333`, `#334`, `#2d2d2d`, `rgb(50,50,50)` are all "dark gray"
  but four different values. Consolidate to one.
- **Check semantic usage.** Is the same blue used for links, primary buttons, info alerts, AND
  decorative elements? Colors should have roles.
- **Check contrast.** Every text/background combination must pass WCAG AA (4.5:1 for body text,
  3:1 for large text). Flag failures.
- **Dark mode consistency.** If dark mode exists, check that every component respects it. Partial
  dark mode is worse than no dark mode.

### 3. Spacing Audit

- **Extract every margin and padding value.** Healthy: 4px, 8px, 12px, 16px, 24px, 32px, 48px,
  64px (8px base scale). Vibecoded: 5px, 10px, 13px, 15px, 17px, 20px, 22px, 25px, 30px...
- **Check consistency between similar elements.** Two cards side by side with different padding
  is immediately visible.
- **Section spacing.** Vertical rhythm between page sections should follow a consistent pattern.
- **Component internal spacing.** The padding inside a button, card, or input should match across
  all instances.

### 4. Component Inventory

Build a complete inventory of every UI element:

**Buttons:**
- How many distinct button styles exist? (shape, size, color, hover state)
- Do primary, secondary, and ghost buttons exist and look intentionally different?
- Do all buttons have hover, focus, active, disabled, and loading states?
- Do icon buttons match text buttons in sizing and styling?

**Form Inputs:**
- Do text inputs, selects, textareas share the same border, radius, padding, height?
- Are focus rings consistent?
- Do error states look the same across all form fields?
- Are labels styled consistently (position, size, weight, color)?

**Cards:**
- Same border radius? Same shadow? Same padding? Same background?
- Do cards in different sections look like they belong to the same family?

**Modals/Dialogs:**
- Same overlay opacity? Same animation? Same close button style?
- Same padding, header treatment, footer button placement?
- Are confirmation dialogs consistent with form modals?

**Navigation:**
- Active state styling consistent?
- Hover effects consistent?
- Mobile nav matches desktop nav in design language?

**Tables:**
- Header styling consistent?
- Row hover state? Alternating row colors?
- Responsive behavior?

**Alerts/Toasts/Notifications:**
- Do success, error, warning, info states share a consistent structure?
- Same border radius, icon placement, dismiss behavior?

### 5. Interaction Audit

- **Hover states.** Every interactive element needs one. Flag elements that are clickable but
  don't respond to hover.
- **Focus states.** Every focusable element needs a visible focus ring. Flag missing or
  inconsistent rings.
- **Transitions.** All hover/state changes should animate. Check for consistent duration (150-200ms)
  and easing. Flag instant state changes and mismatched timings.
- **Loading states.** Every async action needs feedback. Flag buttons that don't show loading,
  pages that don't show skeletons, fetches with no indicator.
- **Empty states.** Every list/table/content area needs an empty state. Flag blank white spaces.
- **Error states.** Every form and API call needs error handling UI. Flag swallowed errors.

### 6. Layout Audit

- **Max width consistency.** Content containers should share a max-width.
- **Grid alignment.** Elements on the same row should align to a shared grid.
- **Responsive breakpoints.** Should be consistent across the site, not per-component.
- **Overflow handling.** Flag horizontal scrollbars, text overflow without truncation/ellipsis,
  images breaking out of containers.

### 7. Asset Audit

- **Icon consistency.** All icons should come from the same set (Lucide, Heroicons, etc.).
  Flag mixed icon sets — they're always visible because stroke width and style differ.
- **Image handling.** Consistent border radius, aspect ratio handling, placeholder/loading behavior.
- **Favicon, OG images, meta tags.** Often missing from vibecoded sites.

## Audit Output Format

Organize findings by severity:

**P0 — Broken (fix immediately):**
Things that don't work — buttons that aren't clickable, modals that can't close, forms that
submit without validation, responsive layouts that are unusable.

**P1 — Inconsistent (fix in first pass):**
Components that exist in multiple conflicting styles — three button variants that should be one,
modals that don't match, font sizes that drift.

**P2 — Missing (fix in second pass):**
States and interactions that don't exist yet — no loading states, no empty states, no hover
feedback, no focus rings, no error handling UI.

**P3 — Polish (fix in final pass):**
Things that work but could be better — transition timings, micro-interactions, scroll behaviors,
animation refinements, dark mode completeness.

## How to Extract the Audit Data

```bash
# Find all unique font-size values in CSS/SCSS/Tailwind
grep -roh 'font-size:\s*[^;]*' src/ | sort | uniq -c | sort -rn
grep -roh 'text-\(xs\|sm\|base\|lg\|xl\|2xl\|3xl\|4xl\|5xl\)' src/ | sort | uniq -c | sort -rn

# Find all unique color values
grep -roh '#[0-9a-fA-F]\{3,8\}' src/ | sort | uniq -c | sort -rn
grep -roh 'rgb[a]\?([^)]*)' src/ | sort | uniq -c | sort -rn

# Find all unique border-radius values
grep -roh 'border-radius:\s*[^;]*' src/ | sort | uniq -c | sort -rn
grep -roh 'rounded-[a-z0-9]*' src/ | sort | uniq -c | sort -rn

# Find all unique spacing values (padding/margin)
grep -roh 'padding:\s*[^;]*' src/ | sort | uniq -c | sort -rn
grep -roh 'margin:\s*[^;]*' src/ | sort | uniq -c | sort -rn

# Find all unique box-shadow values
grep -roh 'box-shadow:\s*[^;]*' src/ | sort | uniq -c | sort -rn

# Find all unique z-index values
grep -roh 'z-index:\s*[^;]*' src/ | sort | uniq -c | sort -rn

# Find all unique transition values
grep -roh 'transition:\s*[^;]*' src/ | sort | uniq -c | sort -rn
```

## What NOT To Do During an Audit

- Don't redesign. You're documenting what's inconsistent, not proposing a new design direction.
- Don't fix as you audit. Audit first, fix second. Mixing them causes missed issues.
- Don't prioritize aesthetics over function. A working ugly button beats a beautiful broken one.
- Don't assume the user wants everything fixed at once. Present findings, let them decide scope.