| name | impeccable |
| description | Design auditor and anti-slop detector. Use when cleaning up existing UI, doing a design review pass, refactoring older components, or before any UI tweaking phase. Run this FIRST on any surface that was built fast and needs polish. Catches AI slop, inconsistencies, accessibility issues, and design drift. |
Impeccable — Design Auditor Skill
Based on pbakaus/impeccable. The immune system for your UI.
Run this BEFORE the Taste Skill or Emil animations. Fix first, beautify second.
When to Use
✅ Before any UI tweaking session — audit first
✅ On components older than 2 weeks
✅ After a fast-build sprint (anything shipped in < 1 day)
✅ When something "looks off" but you can't say why
✅ Before merging UI PRs
/audit — Find Problems
Run a full audit on a component or page. Check for ALL of the following:
AI Slop Detectors (24 checks)
Typography:
Colour & Contrast:
Spacing & Layout:
Motion:
Structure:
/normalize — Fix Inconsistencies
After audit, normalise across the component:
-
Spacing — Replace all arbitrary Tailwind values with scale values
Replace: p-[13px] → p-3 (12px)
Replace: mt-[18px] → mt-4 (16px) or mt-5 (20px)
-
Colour — Replace all hardcoded hex with CSS variables or Tailwind tokens
Replace: #7c3aed → violet-600
Replace: #111111 → zinc-950 or bg-surface (custom)
-
Typography — Normalise font sizes to scale
Replace: text-[13px] → text-sm
Replace: text-[22px] → text-2xl (24px) — close enough
-
Border radius — Pick ONE value per element type and apply consistently
Buttons: rounded (4px)
Cards: rounded-lg (8px)
Modals: rounded-xl (12px)
Inputs: rounded (4px)
/polish — Final Pass
After normalize, apply the finishing layer:
- Add subtle hover states to every interactive element
- Ensure all status colours have corresponding text (not colour alone)
- Add
transition-colors duration-150 to all interactive elements
- Verify loading states exist for all async actions
- Add empty states for all lists/tables that could be empty
- Check dark mode variables are applied (no hardcoded light colours)
/distill — Simplify
Remove complexity that isn't earning its place:
Remove: Decorative animations that aren't in Emil's valid list
Remove: Gradient text that doesn't improve readability
Remove: Multiple border radius values (pick one per type)
Remove: Nested ternaries in className strings → extract to variables
Remove: Components with > 200 lines → split them
Remove: Props with > 8 items → use a config object
HyperCode Specific Patterns to Fix
Course Frontend (built fast — needs audit)
Watch for:
- Hardcoded colours not matching Tailwind config
- Missing error states on API calls
- No loading skeletons (just empty space)
- Inconsistent button sizes across pages
- Mobile padding too tight (< 16px horizontal)
Mission Control Dashboard (older components)
Watch for:
- WebSocket data displaying without loading state
- Container names truncating without tooltip
- Stats not using monospace font
- No colour-blind safe alternatives for red/green status
Priority Matrix
| Issue | Priority | Why |
|---|
| Touch target < 44px | 🔴 CRITICAL | Fails WCAG |
| Contrast < 4.5:1 | 🔴 CRITICAL | Fails WCAG |
| Missing focus styles | 🔴 CRITICAL | Keyboard users locked out |
| No error states | 🟠 HIGH | Data loss risk |
| Gradient buttons | 🟡 MED | Design quality |
| Inconsistent spacing | 🟡 MED | Design quality |
| Wrong font | 🟡 MED | Brand consistency |
| Bounce easing | 🟢 LOW | Polish |
Always fix CRITICAL first. Never ship with CRITICAL issues.