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

frontend-accessibility-best-practices — скилл для Claude Code: a11y

Скилл с 7 правилами доступности для React: семантическая вёрстка, скринридеры, клавиатура, настройки пользователя. Пригодится при сборке форм и интерактивных элементов.

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

Что делает frontend-accessibility-best-practices

Скилл разбит на 4 категории и 7 правил. Семантические ориентиры и клавиатурная навигация помечены как HIGH, работа со скринридерами и пользовательские предпочтения — MEDIUM. Каждое правило лежит отдельным файлом в @rules/, и агент подтягивает их, когда вы просите создать компонент, форму или проверить код на доступность.

Внутри есть готовые примеры на TSX: как заменить div с классом на <header> и <nav aria-label>, как подписать кнопку-иконку через sr-only, как объявить ошибку через role="alert", а статус — через role="status" aria-live="polite". Отдельно разобраны видимая обводка фокуса, ловушка фокуса в модалках, prefers-reduced-motion и минимальный размер тач-цели 44x44px.

Примеры опираются на react-aria-components и хук usePrefersReducedMotion, а также на файлы app/components/heading.tsx, app/components/field/field.tsx и app/hooks/use-prefers-reduced-motion.ts. Если в вашем проекте нет react-aria, часть сниппетов придётся переписать под свои компоненты — это повод проверить, чем вы уже закрываете фокус и модалки.

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

  • разметить страницу семантическими элементами вместо div с классами
  • подписать кнопку-иконку так, чтобы скринридер её прочитал
  • объявить ошибку формы сразу, а счётчик результатов — вежливо
  • поймать фокус внутри модального окна и вернуть его обратно
  • отключить анимацию для тех, кто просил уменьшить движение

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

  • Собери форму логина на React — проверь доступность по правилам скилла
  • Отревьюй этот компонент на a11y: фокус, клавиатура, скринридер
  • Сделай модалку с ловушкой фокуса и подписями для иконок

Как установить frontend-accessibility-best-practices

1Через Skills CLI (Vercel)

npx skills add sergiodxa/agent-skills --skill frontend-accessibility-best-practices -a claude-code

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

~/.claude/skills/frontend-accessibility-best-practices/SKILL.md

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

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

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

Похожие

accessibility-compliance aj-geddes Скилл помогает внедрять требования WCAG 2.1/2.2, клавиатурную навигацию и поддержку программ чтения с экрана. CX Codex +1 482установок accessibility-test-plan Owl-Listener Помогает спланировать тестирование доступности интерфейса с ассистивными технологиями и реальными пользователями. Пригодится перед релизом для покрытия критериев WCAG. CX Codex +1 2 100установок frontend-ui-engineering addyosmani Скилл задаёт правила для доступных адаптивных интерфейсов и компонентов. Пригодится при создании страниц, исправлении UI и работе с состоянием. CX Codex +1 67 400установок accessibility web-quality-skills Скилл проводит аудит доступности веб-страницы и подсказывает, что исправить в исходниках. Пригодится, когда сайт нужно довести до WCAG 2.2 или проверить работу с клавиатурой и скринридером. CX Codex +1 64 100установок accessibility-audit AccessLint Скилл проводит глубокую проверку доступности сайта по стандарту WCAG 2.2 и методологии WCAG-EM. Он собирает выборку страниц, запускает тесты и формирует итоговый отчёт о соответствии. CX Codex +1 1 100установок accessibility-testing kindlmann Скилл для проверки доступности: гоняет axe-core через Playwright, аудит клавиатуры и экранных дикторов, разбор ARIA. CX Codex +1 1 100установок

Рядом в теме «Фронтенд и UI»

Всё по теме «Фронтенд и UI» →

Вопросы о frontend-accessibility-best-practices

Как установить frontend-accessibility-best-practices в Claude?

Выполните npx skills add sergiodxa/agent-skills --skill frontend-accessibility-best-practices -a claude-code. После этого файл скилла окажется по пути ~/.claude/skills/frontend-accessibility-best-practices/SKILL.md.

Что делает этот скилл?

Даёт агенту набор правил доступности для React: семантическая структура, поддержка скринридеров, клавиатурная навигация и учёт пользовательских предпочтений. Агент применяет их при создании компонентов и при ревью кода.

Нужен ли react-aria для работы скилла?

Нет, но примеры ловушки фокуса и кнопок в скилле построены на react-aria-components. Без этой библиотеки сниппеты придётся адаптировать под свои компоненты.

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

SKILL.md · MIT
---
name: frontend-accessibility-best-practices
description: Accessibility (a11y) best practices for React components. Use when creating UI components, forms, interactive elements, or reviewing code for accessibility compliance.
---

# Accessibility Best Practices

Accessibility patterns for building inclusive React applications following WCAG standards. Contains 7 rules across 4 categories focused on semantic HTML, screen reader support, keyboard navigation, and user preferences.

## When to Apply

Reference these guidelines when:

- Creating new UI components
- Building forms and interactive elements
- Adding dynamic content or notifications
- Implementing navigation patterns
- Reviewing code for accessibility

## Rules Summary

### Semantic HTML & Structure (HIGH)

#### semantic-html-landmarks - @rules/semantic-html-landmarks.md

Use semantic HTML elements for page structure.

```tsx
// Bad: divs with class names
<div className="header">...</div>
<div className="nav">...</div>
<div className="content">...</div>

// Good: semantic elements
<header>...</header>
<nav aria-label={t("Primary")}>...</nav>
<main>...</main>
<footer>...</footer>
```

### Screen Readers (MEDIUM)

#### screen-reader-sr-only - @rules/screen-reader-sr-only.md

Use sr-only class for visually hidden text.

```tsx
// Icon-only buttons need accessible labels
<Button variant="icon" onPress={onClose}>
  <XMarkIcon aria-hidden="true" />
  <span className="sr-only">{t("Close")}</span>
</Button>

// Visually hidden section headings
<section>
  <h2 className="sr-only">{t("Search results")}</h2>
  <SearchResultsList />
</section>
```

#### aria-live-regions - @rules/aria-live-regions.md

Announce dynamic content changes to screen readers.

```tsx
// Error messages - announced immediately
{
  error && (
    <p role="alert" className="text-failure-600">
      {error}
    </p>
  );
}

// Status updates - announced politely
<div role="status" aria-live="polite">
  {t("{{count}} results found", { count })}
</div>;
```

### Keyboard & Focus (HIGH)

#### keyboard-navigation - @rules/keyboard-navigation.md

Use semantic elements for built-in keyboard support.

```tsx
// Bad: div with onClick not keyboard accessible
<div onClick={handleClick}>Click me</div>

// Good: button has Enter/Space support
<button onClick={handleClick}>Click me</button>

// Good: react-aria Button handles everything
import { Button } from "react-aria-components";
<Button onPress={handlePress}>Click me</Button>
```

#### focus-management - @rules/focus-management.md

Show visible focus indicators and trap focus in modals.

```tsx
// Always use focus-visible for focus styles
<button className="focus-visible:ring-2 focus-visible:ring-teal-600">
  Click me
</button>;

// react-aria Modal handles focus trapping automatically
import { Modal, Dialog } from "react-aria-components";
<Modal isOpen={isOpen}>
  <Dialog>{/* Focus automatically trapped here */}</Dialog>
</Modal>;
```

### User Preferences (MEDIUM)

#### reduced-motion - @rules/reduced-motion.md

Respect prefers-reduced-motion setting.

```tsx
import { usePrefersReducedMotion } from "~/hooks/use-prefers-reduced-motion";

// CSS approach
<div className="animate-bounce motion-reduce:animate-none">
  Bouncing content
</div>;

// JS approach
function AnimatedCounter({ value }) {
  let prefersReducedMotion = usePrefersReducedMotion();
  if (prefersReducedMotion) return <span>{value}</span>;
  return <CountUp target={value} />;
}
```

#### touch-targets - @rules/touch-targets.md

Ensure 44x44px minimum touch targets.

```tsx
// Icon buttons need explicit sizing
<Button variant="icon" className="h-11 w-11">
  <XMarkIcon className="h-5 w-5" />
  <span className="sr-only">{t("Close")}</span>
</Button>

// Links need padding for tappable area
<Link to={href} className="block py-3 px-4">
  {label}
</Link>
```

## Key Files

- `app/components/heading.tsx` - Region, Heading, Main components
- `app/hooks/use-prefers-reduced-motion.ts` - Reduced motion hook
- `app/components/field/field.tsx` - Accessible form field component

© sergiodxa · MIT · sergiodxa/agent-skills

Смотрите также

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

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