UI

Verify UI components for accessibility and visual correctness, checking contrast, layout, and button visibility.

Install

mkdir -p .claude/skills/ui-testing && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3914" && unzip -o skill.zip -d .claude/skills/ui-testing && rm skill.zip

Installs to .claude/skills/ui-testing

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.

Visual testing - catch invisible buttons, broken layouts, contrast
66 charsno explicit “when” trigger
Beginner

Key capabilities

  • Verify accessibility contrast ratios
  • Check touch target dimensions
  • Validate component states
  • Test responsive layout breakpoints
  • Perform automated accessibility audits

How it works

It uses a checklist for manual verification and automated tools like Axe-core to detect accessibility violations in UI components.

Inputs & outputs

You give it
UI component or page
You get back
Accessibility compliance report

When to use ui-testing

  • Check contrast ratios for new buttons
  • Verify responsive layout on mobile breakpoints
  • Validate accessible button sizes
  • Test component states like hover and focus

About this skill

UI Verification Skill

Load with: ui-web.md or ui-mobile.md

Purpose

Quick verification that generated UI meets accessibility standards. Run these checks after creating any new UI components.


Pre-Flight Checklist

Before Shipping ANY UI:

## Visibility Check
- [ ] All buttons have visible background OR border
- [ ] No text is same color as its background
- [ ] All text meets 4.5:1 contrast ratio
- [ ] Ghost/text buttons have visible borders

## Touch/Click Targets
- [ ] All buttons are minimum 44px height
- [ ] Icon buttons are minimum 44x44px
- [ ] Adequate spacing between clickable elements

## States
- [ ] Hover states visible (web)
- [ ] Pressed states visible (mobile)
- [ ] Focus rings on keyboard navigation
- [ ] Disabled states visually distinct (opacity 0.5)
- [ ] Loading states show indicators

## Dark Mode (if applicable)
- [ ] Text readable on dark backgrounds
- [ ] Borders visible in dark mode
- [ ] No gray-400 text on dark backgrounds

## Responsive (web)
- [ ] No horizontal scroll on mobile (320px)
- [ ] Content readable at all breakpoints
- [ ] Touch targets adequate on mobile

Quick Contrast Check

Use Browser DevTools

1. Right-click element → Inspect
2. In Styles panel, click on color value
3. Look for contrast ratio display
4. Must show ✓ for AA compliance (4.5:1 for text)

Online Tools

Tailwind Safe Combinations

LIGHT MODE (on white bg):
✓ text-gray-900  (#111827) = 16:1
✓ text-gray-800  (#1F2937) = 12:1
✓ text-gray-700  (#374151) = 9:1
✓ text-gray-600  (#4B5563) = 6:1
✗ text-gray-500  (#6B7280) = 4.6:1 (barely)
✗ text-gray-400  (#9CA3AF) = 2.6:1 (FAILS)

DARK MODE (on gray-900 bg):
✓ text-white     (#FFFFFF) = 16:1
✓ text-gray-100  (#F3F4F6) = 13:1
✓ text-gray-200  (#E5E7EB) = 11:1
✓ text-gray-300  (#D1D5DB) = 8:1
✗ text-gray-400  (#9CA3AF) = 5:1 (barely)
✗ text-gray-500  (#6B7280) = 3:1 (FAILS)

Common Fixes

Invisible Button

// PROBLEM: No visible boundary
<button className="text-gray-500">Click</button>

// FIX: Add background OR border
<button className="bg-gray-100 text-gray-900 px-4 py-3 rounded-lg">
  Click
</button>
// OR
<button className="border border-gray-300 text-gray-700 px-4 py-3 rounded-lg">
  Click
</button>

Low Contrast Text

// PROBLEM: Light gray on white
<p className="text-gray-400">Secondary text</p>

// FIX: Use darker gray
<p className="text-gray-600">Secondary text</p>

Missing Focus State

// PROBLEM: Focus removed without replacement
<button className="outline-none">Submit</button>

// FIX: Add visible focus ring
<button className="outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2">
  Submit
</button>

Small Touch Target

// PROBLEM: Too small for fingers
<button className="p-1 text-sm">×</button>

// FIX: Minimum 44px
<button className="w-11 h-11 flex items-center justify-center">×</button>

Dark Mode Broken

// PROBLEM: Same colors in both modes
<p className="text-gray-400">Text</p>

// FIX: Adjust for dark mode
<p className="text-gray-600 dark:text-gray-300">Text</p>

Automated Checks (Optional)

ESLint Plugin

npm install -D eslint-plugin-jsx-a11y
// .eslintrc
{
  "extends": ["plugin:jsx-a11y/recommended"]
}

Playwright Quick Test

// e2e/accessibility.spec.ts
import { test, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';

test('no accessibility violations', async ({ page }) => {
  await page.goto('/');
  const results = await new AxeBuilder({ page }).analyze();
  expect(results.violations).toEqual([]);
});

When to Use Full Testing

Add comprehensive visual testing (Playwright screenshots, Storybook) when:

  • Building a component library
  • Multiple developers on UI
  • Frequent UI changes
  • Design system enforcement needed

For solo projects or MVPs, the checklist above is sufficient.

When not to use it

  • Backend logic testing
  • Non-UI component testing

Prerequisites

Playwrightaxe-core

Limitations

  • Requires manual checklist for full coverage
  • Automated tests are optional

How it compares

It focuses on visual and accessibility standards like contrast and touch targets rather than functional logic testing.

Compared to similar skills

ui-testing side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
ui-testing (this skill)44moReviewBeginner
ui-ux-expert-skill919moReviewAdvanced
verify-bulk-action-bar03moReviewIntermediate
rule-accessibility04moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

ui-ux-expert-skill

fercracix33

Technical workflow for implementing accessible React user interfaces with shadcn/ui, Tailwind CSS, and TanStack Query. Includes 6-phase process with mandatory Style Guide compliance, Context7 best practices consultation, Chrome DevTools validation, and WCAG 2.1 AA accessibility standards. Use after Test Agent, Implementer, and Supabase agents complete their work.

91244

verify-bulk-action-bar

junnv93

BulkActionBar 패턴 SSOT 검증 — count chip aria-live, role=toolbar, Esc clear, indeterminate Radix, focus management, IME guard. 일괄 작업 UI 변경 시 트리거. canonical = components/common/BulkActionBar.tsx (도메인 무관 generic), components/approvals/BulkActionBar.tsx는 approvals 특화 wrapper.

00

rule-accessibility

btabaska

MANDATORY when editing files matching ["frontend/src/**/*.tsx", "frontend/src/**/*.ts"]. Accessibility requirements for all frontend code. WCAG 2.1 AA and Section 508 compliance is legally mandated for this federal project.

00

accessibility-compliance

wshobson

Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.

45132

radix-ui-design-system

sickn33

Build accessible design systems with Radix UI primitives. Headless component customization, theming strategies, and compound component patterns for production-grade UI libraries.

33130

frontend-developer

sickn33

Build React components, implement responsive layouts, and handle client-side state management. Masters React 19, Next.js 15, and modern frontend architecture. Optimizes performance and ensures accessibility. Use PROACTIVELY when creating UI components or fixing frontend issues.

2782

Search skills

Search the agent skills registry