Aller au contenu principal

Skill: qa-design

Fork

UI/UX design audit and verification of web best practices, including responsive/mobile-first breakpoints. Trigger when the user wants to audit the design, verify the UI/UX, check responsive behaviour, or improve the user interface.

Configuration​

PropertyValue
Contextfork
Pre-approved toolsNone declared: the project's permission settings apply
Triggerkeywords: design, invalid field, image, 1 item(s)

Detailed description​

UI/UX Design Audit

Objective​

Audit a web interface against 100+ rules covering accessibility, forms, animations, typography, images, performance, navigation, dark mode, and internationalization.

Audit categories​

┌──────────────────────────────────────────────────────────────────┐
│ UI/UX AUDIT │
├──────────────────────────────────────────────────────────────────┤
│ │
│ 1. ACCESSIBILITY ARIA, contrast, focus, keyboard │
│ 2. FORMS Validation, feedback, autofill │
│ 3. ANIMATIONS Performance, reduced-motion, timing │
│ 4. TYPOGRAPHY Hierarchy, readability, responsive │
│ 5. IMAGES Alt text, lazy loading, formats │
│ 6. UI PERFORMANCE Layout shift, first paint, bundle │
│ 7. NAVIGATION Breadcrumbs, mobile menu, deep links │
│ 8. DARK MODE CSS variables, images, contrast │
│ 9. TOUCH INTERACTIONS Target size, swipe, gestures │
│ 10. INTERNATIONALIZATION RTL, dates, plurals, translations │
│ 11. RESPONSIVE Breakpoints, mobile-first, viewport │
│ │
└──────────────────────────────────────────────────────────────────┘

1. Accessibility​

Critical rules​

#RuleVerification
A1Minimum contrast 4.5:1 (normal text)Check CSS colors
A2Minimum contrast 3:1 (large text, icons)Check CSS colors
A3Labels on all form fields<label for=""> or aria-label
A4Alt text on all informative images<img alt=""> non-empty
A5Full keyboard navigationTab, Enter, Escape, Arrow keys
A6Visible focus on interactive elements:focus-visible style
A7Correct ARIA rolesrole, aria-* attributes
A8No purely visual contentText alternatives
A9Logical heading structureh1 > h2 > h3, no skipping
A10Skip to content linkFirst focusable element

Patterns to look for​

# Images without alt
<img[^>]*(?<!alt=")[^>]*>

# Buttons without accessible text
<button[^>]*>(\s*<(svg|img|i)[^>]*>\s*)<\/button>

# Inputs without label
<input(?![^>]*aria-label)(?![^>]*id=["'][^"']*["'][^>]*)[^>]*>

# Insufficient contrast (light colors on light background)
color:\s*#[def][def][def]|color:\s*#[cdef]{6}

2. Forms​

#RuleDetail
F1Inline validation (not only on submit)Show error on blur
F2Descriptive error messagesNot just "Invalid field"
F3Autocomplete attributesautocomplete="email", "name", etc.
F4Submit button disabled if invalidOr clear feedback
F5Required field indicator* or explicit text
F6Correct input typetype="email", "tel", "number"
F7Minimum font size 16px on mobileAvoids iOS zoom
F8Loading state on submitSpinner or disabled

3. Animations and transitions​

#RuleDetail
AN1prefers-reduced-motion respectedDisable animations on request
AN2Duration < 400ms for micro-interactionsFast feedback
AN3No flash/blink > 3HzEpilepsy risk
AN4CSS transitions preferred over JSGPU performance
AN5will-change for heavy animationsCompositor optimization
/* prefers-reduced-motion pattern */
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}

4. Typography​

#RuleDetail
T1Clear visual hierarchyDistinct sizes, weights, colors
T2Line length 50-75 charactersmax-width: 65ch
T3Minimum line-height 1.5 for body textReadability
T4No more than 2-3 fontsVisual consistency
T5Minimum size 16px for bodyMobile readability
T6System font fallback definedfont-family: 'Custom', system-ui, sans-serif

5. Images​

#RuleDetail
I1Descriptive alt textNot "image", not empty unless decorative
I2Lazy loadingloading="lazy" except above-the-fold
I3Explicit dimensionswidth and height to avoid CLS
I4Modern format (WebP, AVIF)With fallback
I5Responsive imagessrcset and sizes
I6Optimized compression< 100KB for UI images

6. UI Performance​

#RuleDetail
P1CLS < 0.1No layout shift
P2LCP < 2.5sLargest Contentful Paint
P3INP < 200msInteraction to Next Paint (replaced FID in 2024)
P4Skeleton/loading statesNo blank page
P5Code splitting per routeBundles < 200KB gzip
P6Inline critical CSSFast above-the-fold

7. Navigation​

#RuleDetail
N1Breadcrumbs on deep pagesUser orientation
N2Accessible mobile menuHamburger + overlay
N3Easy back navigationPredictable navigation
N4Active page indicationMenu highlight
N5Useful 404 pageNavigation links
N6Working deep linksShareable URLs

8. Dark Mode​

#RuleDetail
D1CSS custom properties--color-bg, --color-text
D2Adapted imagesNo white images on dark background
D3Sufficient contrast in darkRecheck ratios
D4Smooth transitiontransition: background-color 0.2s
D5Respect prefers-color-schemeAutomatic detection

9. Touch interactions​

#RuleDetail
TC1Touch targets >= 44x44pxApple/Google minimum
TC2Spacing between targets >= 8pxAvoid tap errors
TC3No hover-only interactionsTouch alternatives
TC4Intuitive swipe if usedNatural direction

10. Internationalization​

#RuleDetail
I18N1Externalized textNo hardcoded strings
I18N2RTL supportdirection: rtl compatible
I18N3Local date formatsNo hardcoded US format
I18N4Plurals handledNo "1 item(s)"

11. Responsive & breakpoints​

Mobile-first audit across the 7 breakpoints (320, 375, 425, 768, 1024, 1440, 2560px).

#RuleDetail
R1Viewport meta + mobile-first CSSmin-width media queries, not max-width
R2No fixed-pixel container widthsFluid layouts (flex/grid, %, max-width)
R3Touch targets >= 44px, spacing >= 8pxShared with category 9 (Touch)
R4Body font >= 16px, line-height >= 1.5Mobile readability (shared with Typography)
R5Responsive images (srcset, sizes, lazy)Shared with category 5 (Images)
R6Forms usable on mobileInputs >= 44px, correct type, right keyboard
R7Portrait + landscape both testedNo clipped/overflowing content

Report a per-breakpoint OK/KO table (Mobile 320-425, Tablet 768, Desktop 1024-1440) and list issues by breakpoint with severity. Test on real devices, not only DevTools.

Expected output​

## UI/UX Audit: [Project name]

### Overall score: X/100

### Results by category

| Category | Score | Issues |
|-----------|-------|--------|
| Accessibility | X/10 | [N issues] |
| Forms | X/10 | [N issues] |
| Animations | X/10 | [N issues] |
| Typography | X/10 | [N issues] |
| Images | X/10 | [N issues] |
| UI Performance | X/10 | [N issues] |
| Navigation | X/10 | [N issues] |
| Dark Mode | X/10 | [N issues] |
| Touch | X/10 | [N issues] |
| i18n | X/10 | [N issues] |
| Responsive | X/10 | [N issues] |

### Critical issues
- [CRITICAL] [file:line] - Description

### Recommended improvements
- [IMPORTANT] [file:line] - Description

### Suggestions
- [SUGGESTION] - Description

Rules​

  • Check ALL categories, not just the obvious ones
  • Prioritize issues by user impact
  • Provide concrete solutions, not just findings
  • Test on mobile AND desktop

Automatic triggering​

This skill is automatically activated when:

  • The matching keywords are detected in the conversation
  • The task context matches the skill's domain

Triggering examples​

  • "I want to design..."
  • "I want to invalid field..."
  • "I want to image..."

Context fork​

Fork means the skill runs as a sub-agent (context: fork):

  • Sees none of the conversation, only its own instructions
  • Returns its result to the conversation when done
  • Kept for self-contained jobs, reviewed case by case

Practical examples​

1. Example: UI/UX Audit Checklist​

Example: UI/UX Audit Checklist

Scenario​

Audit a SaaS dashboard application for design consistency, usability, and accessibility.

Audit Summary​

CategoryScoreIssues Found
Visual Consistency5/108 issues
Typography6/104 issues
Spacing & Layout4/106 issues
Color & Contrast7/103 issues
Interaction Design5/105 issues
Accessibility4/107 issues

Visual Consistency Issues​

#IssueLocationSeverityFix
13 different button styles for same actionDashboard, Settings, ProfileHighStandardize to design system Button component
2Inconsistent border-radius (2px, 4px, 8px)Cards, inputs, modalsMediumUse --radius-sm: 4px, --radius-md: 8px tokens
3Two different icon libraries (Lucide + HeroIcons)Sidebar vs content areaMediumConsolidate to Lucide icons
4Shadow depth varies on same-level cardsDashboard gridLowUse --shadow-card token consistently

Typography Issues​

Found: 6 different font sizes used without system
Recommended scale (rem):
--text-xs: 0.75 (12px) - labels, captions
--text-sm: 0.875 (14px) - body small
--text-base: 1 (16px) - body
--text-lg: 1.125 (18px) - subheadings
--text-xl: 1.25 (20px) - headings
--text-2xl: 1.5 (24px) - page titles

Spacing Issues​

Found: Arbitrary margins (7px, 13px, 22px, 33px)
Recommended 4px grid:
--space-1: 4px --space-4: 16px --space-8: 32px
--space-2: 8px --space-6: 24px --space-12: 48px

Accessibility Issues​

#IssueWCAGFix
1Gray text on white: 2.8:1 contrast ratio1.4.3 AA (needs 4.5:1)Darken to #595959
2No focus indicators on interactive elements2.4.7 AAAdd :focus-visible outline
3Form errors communicated only by color1.4.1 AAdd error icon + text message
4Missing aria-label on icon-only buttons4.1.2 AAdd descriptive labels
5Data table not navigable by keyboard2.1.1 AAdd tabindex, arrow key navigation

Immediate (1 week)​

  1. Create CSS custom properties for colors, spacing, typography, shadows
  2. Fix contrast ratio issues (WCAG compliance)
  3. Add focus indicators globally

Short-term (2-4 weeks)​

  1. Build/standardize component library (Button, Card, Input, Modal)
  2. Replace arbitrary values with design tokens
  3. Consolidate icon library

Ongoing​

  1. Add Storybook for component documentation
  2. Lint for design token usage (stylelint plugin)

Key Decisions​

  • Design tokens over hardcoded values: Single source of truth, theme-able
  • 4px spacing grid: Consistent rhythm, easy mental math
  • WCAG AA minimum: Legal compliance and better UX for all users
  • Component audit before redesign: Fix consistency first, then iterate on aesthetics

See also​