mcpField
A
accessibility-engineer

accessibility-engineer

github.com/mae616デザイン・UI11130 回インストール39 週間前に更新
リポジトリ

accessibility-engineer について

ユーザーインターフェースを実装する開発者向けのアクセシビリティスキルです。セマンティックHTML、キーボード操作、適切なアクセシブルネーム、ARIAの最小限の使用を重視し、フォームや動的状態、フォーカス、メディアも扱います。

主な機能

  1. 01セマンティックHTMLとランドマークの指針
  2. 02キーボード操作とフォーカス管理
  3. 03アクセシブルなラベルとフォームエラー
  4. 04根拠に基づく最小限のARIA使用
  5. 05動的状態とメディアの指針

活用シーン

  1. 01インターフェースのアクセシビリティ確認
  2. 02キーボード操作可能なコントロールやダイアログの実装
  3. 03ラベルとエラーが明確なフォームの構築

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mae616/design-skills --skill accessibility-engineer

インストール後、Claude Code で/accessibility-engineerを入力して読み込まれたか確認します。

README(原文)English

プロジェクトの README より

この README の日本語訳はまだありません。以下は英語の原文です。日本語の紹介はページ上部をご覧ください。

Accessibility Engineer Skill

When to Apply

Apply this skill when the request involves:

  • Accessibility, a11y, WAI-ARIA, screen reader support, semantic HTML, keyboard navigation, focus management
  • アクセシビリティ対応、WAI-ARIA、スクリーンリーダー対応、セマンティックHTML、キーボード操作、フォーカス管理
  • Any UI implementation (should be applied alongside other skills)

Core Principles (Most Important)

  • Native elements first. Solve with proper HTML elements (button, a, label, input, etc.) before reaching for ARIA.
  • ARIA is minimal. Don't add role/aria-* to make things "seem" accessible. Only add when there's a real requirement.
  • Operable = Communicable. Not just visually—assistive tech must receive state, name, and purpose. This is the Definition of Done.
  • Keyboard is the baseline. Mouse-only UI is incomplete. Design focus movement and operations first.

Implementation Rules

1) Semantic Structure
  • Maintain heading order (h1 → h2 → ...). Don't skip levels for styling.
  • Create landmarks for main regions (header, nav, main, footer, aside if needed).
  • Use ul/ol/li for lists, dl/dt/dd for definitions—not div substitutes.
2) Accessible Names
  • Buttons, links, inputs need "names" (labels read by screen readers).
    • Priority: Visible text
    • Fallback: aria-label (when visible text isn't possible)
    • Composition: aria-labelledby (referencing existing elements)
  • Icon-only buttons/links MUST have names (e.g., "Search", "Close").
3) Forms (Required)
  • Associate label with input (for/id). Never use placeholder as the only label.
  • Communicate required/optional, errors, hints machine-readably (e.g., aria-describedby for helper text).
  • Errors must explain: what's wrong, why, and how to fix.
4) States and Announcements (Dynamic UI)
  • Use native disabled attribute first (button disabled, etc.).
  • For toggles, use aria-pressed / aria-expanded only when native elements aren't sufficient.
  • Use aria-live for async completion/failure announcements—but don't overuse.
5) Keyboard Operation and Focus
  • Design DOM order so tab sequence is logical. Don't force reorder with tabindex.
  • tabindex="0": minimal use to make something focusable.
  • tabindex="-1": only for programmatic focus movement.
  • Always preserve visible focus (focus-visible). Never hide it.
  • Dialogs/modals: define focus destination on open and return destination on close. Implement focus trap if needed.
6) Images and Media
  • Use alt based on purpose (decorative images get empty alt="").
  • For video/audio: confirm controls (play/stop) and alternatives (captions/transcript). Ask if unclear.

Anti-Patterns (Never Do This)

  • div with onClick acting as button (breaks keyboard/role).
  • Using role="button" as a workaround (use native button).
  • Adding aria-label everywhere (causes duplicate announcements when visible label exists).
  • Removing focus ring (invisible focus = inoperable).

Clarification Questions (Don't Assume)

  • Must this UI be completable with keyboard only? (If yes, enumerate operation steps and agree.)
  • For modal/drawer: what gets focus on open? What gets focus on close?
  • When are errors announced? Immediately? After submit?
  • Does video/audio need captions or text alternatives?

Output Format (For Implementation)

  1. Semantic structure (landmarks, headings, lists)
  2. Keyboard operation (Tab order, Enter, Space, Escape)
  3. ARIA usage (only where needed, with justification)
  4. States (disabled/loading/error) and announcements (aria-live if needed)
  5. Accessibility checklist self-assessment (OK / needs work)

コメント