К основному содержанию
скилл CX Codex

ui-testing — скилл для Claude Code: что делает и как установить

Чек-лист и правила для проверки доступности интерфейсов: выявляет невидимые кнопки, плохой контраст и мелкие области клика при генерации UI.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add alinaqi/maggy --skill ui-testing -a claude-code
Открыть на GitHub

Что делает ui-testing

Скилл добавляет набор правил доступности для компонентов. Внутри зашит чек-лист с требованиями к видимости границ кнопок, минимальному размеру кликабельных зон от 44px, состояниям фокуса и адаптиву без горизонтальной прокрутки на 320px. Также в правилах расписаны безопасные связки цветов для Tailwind CSS под контрастность 4.5:1.

В конфиге скилла задан параметр user-invocable: false, поэтому агент подхватывает его автоматически при работе с файлами по маскам **/*.test.tsx, **/*.spec.tsx и **/*.stories.*. Если вы не трогаете тесты или сторибук, правила сами по себе в диалог не подгрузятся.

Для автоматизации в скилле предложены шаблоны интеграции eslint-plugin-jsx-a11y и сквозных тестов через @axe-core/playwright. Готовые фрагменты кода показывают, как чинить частые огрехи вроде снятого аутлайна без замены на focus-visible.

Какие задачи решает

  • проверить контрастность текста и фона по стандарту 4.5:1
  • найти интерактивные элементы меньше 44px
  • добавить видимые кольца фокуса для навигации с клавиатуры
  • настроить отображение кнопок и текста для тёмной темы

Примеры запросов агенту

  • Проверь компонент Button.stories.tsx на соответствие требованиям доступности
  • Напиши тест Button.spec.tsx с проверкой accessibility через axe-core
  • Поправь стили Tailwind в Navigation.test.tsx, чтобы кнопки не сливались с фоном

Как установить ui-testing

1Через Skills CLI (Vercel)

npx skills add alinaqi/maggy --skill ui-testing -a claude-code

2Вручную: положить файлы

~/.claude/skills/ui-testing/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/ui-testing/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о ui-testing

Как установить ui-testing в Claude Code?

Выполните команду npx skills add alinaqi/maggy --skill ui-testing -a claude-code. Файл скилла запишется в ~/.claude/skills/ui-testing/SKILL.md.

Что делает скилл ui-testing?

Он даёт ассистенту правила проверки интерфейса: следит за минимальным размером тач-таргетов 44px, контрастом текста, фокус-рингами и поведением в тёмной теме.

Можно ли вызвать скилл напрямую через команду?

Нет, скилл помечен как user-invocable: false. Он активируется агентом автоматически при редактировании тестов и историй компонентов с расширениями .test.tsx, .spec.tsx или .stories.*.

Исходный текст

SKILL.md · MIT
---
name: ui-testing
description: Visual testing - catch invisible buttons, broken layouts, contrast
when-to-use: When writing visual or accessibility tests for UI components
user-invocable: false
paths: ["**/*.test.tsx", "**/*.spec.tsx", "**/*.stories.*"]
effort: medium
---

# 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:

```markdown
## 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
- https://webaim.org/resources/contrastchecker/
- https://coolors.co/contrast-checker

### 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
```tsx
// 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
```tsx
// 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
```tsx
// 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
```tsx
// 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
```tsx
// 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
```bash
npm install -D eslint-plugin-jsx-a11y
```

```json
// .eslintrc
{
  "extends": ["plugin:jsx-a11y/recommended"]
}
```

### Playwright Quick Test
```typescript
// 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.

© alinaqi · MIT · alinaqi/maggy

Похожие скиллы

Всё по теме «Фронтенд и UI» →
accessibility-testing kindlmann Скилл для проверки доступности: гоняет axe-core через Playwright, аудит клавиатуры и экранных дикторов, разбор ARIA. CX Codex +1 1 100установок web-testing mrgoonie Скилл для веб-тестирования: юнит, интеграция, E2E, нагрузка, безопасность, визуальные регрессии и доступность. Пригодится, когда нужно навести порядок в тестах проекта. CX Codex +1 442установок setup-visual-testing davila7 Слэш-команда разворачивает визуальное регрессионное тестирование: снимки компонентов и страниц, адаптивные брейкпоинты, проверка доступности. 300установок frontend-testing-best-practices sergiodxa Набор из 6 правил тестирования фронтенда: заставляет писать сквозные E2E-тесты в Playwright вместо изолированных юнит-тестов компонентов. CX Codex +1 2 200установок react-testing affaan-m Скилл для написания тестов React-компонентов, хуков и страниц: React Testing Library, Vitest или Jest, MSW для моков сети и проверки доступности через axe. CX Codex +1 4 800установок design-component plugin87 Создаёт спецификацию UI-компонента с анатомией, 8 состояниями, токенами и доступностью. Пригодится при проектировании контролов в дизайн-системе до написания кода. CX Codex +1 522установок

Из того же набора32

security Внедряет правила безопасности, изолирует секреты от клиентского бандла и настраивает проверки коммитов. Пригодится при работе с авторизацией, пользовательским вводом и API-ключами. CX Codex +1 426установок agentic-development Скилл для сборки автономных ИИ-агентов на Pydantic AI (Python) и Claude Agent SDK (Node.js). Пригодится, когда агент должен выполнять многошаговые задачи с инструментами. CX Codex +1 406установок ui-web Скилл со строгими правилами вёрстки: внедряет WCAG 2.1 AA, сетку Tailwind на 8 px, тёмную тему и эффекты глассморфизма. CX Codex +1 393установок woocommerce Скилл для работы с WooCommerce через REST API: товары, заказы, покупатели, вебхуки. Пригодится, когда агент пишет интеграцию с магазином на WordPress. CX Codex +1 390установок react-web Скилл настраивает разработку веб-компонентов на React с обязательным подходом «сначала тесты». Срабатывает при создании и правке файлов в src/components, src/pages или с расширением .tsx. CX Codex +1 339установок site-architecture Настраивает техническое SEO сайта: файлы robots.txt, XML-карты, метатеги и индексацию страниц поисковиками и поисковыми ИИ-ботами. CX Codex +1 336установок commit-hygiene Следит за размером правок, вовремя предлагает зафиксировать изменения в git и помогает дробить код на атомарные коммиты. CX Codex +1 335установок codex-review Скилл запускает аудит кода через утилиту Codex CLI и модель GPT-5.2-Codex. Пригодится для поиска уязвимостей и багов перед коммитом или в CI/CD. CX Codex +1 328установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой