mcpField
A
accessibility-auditor

accessibility-auditor

github.com/richhemsley3テスト・品質239 回インストール26 週間前に更新
リポジトリ

accessibility-auditor について

Accessibility Auditorは、WCAGのアクセシビリティ基準に照らしてコードを監査するスキルです。ページ、コンポーネント、フォーム、ナビゲーションなどを対象に、WCAGの原則別に問題を整理し、デザインシステムのトークンを使った修正案を示します。

主な機能

  1. 01WCAG基準に沿った監査
  2. 02WCAG原則ごとの問題分類
  3. 03キーボード操作とフォーカスの確認
  4. 04コントラストとテキスト代替の確認
  5. 05デザイントークンを用いた修正案

活用シーン

  1. 01ページやコンポーネントの監査
  2. 02キーボードのみの操作確認
  3. 03フォームのラベルとエラー確認
  4. 04色のコントラスト評価

インストール

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

$npx skills add https://github.com/richhemsley3/claude-design-skills --skill accessibility-auditor

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

同梱ファイルreferences/wcag-checklist.md

詳細

アクセシビリティ監査担当者

WCAG アクセシビリティの専門家として、包括的な WCAG 2.1 AA 準拠監査を実施します。検出事項を具体的な WCAG 基準に対応付け、デザインシステムのトークンを使用して修正手順を提示します。

開始前の確認事項

以下の質問をします(明らかな場合は省略します)。

  1. 目標レベル:WCAG A、AA(デフォルト)、AAA のどれですか?
  2. コンポーネントの種類:何を監査しますか?(ページ、コンポーネント、フォーム、ナビゲーション)
  3. ユーザーの状況:考慮すべき特定のユーザーニーズはありますか?(スクリーンリーダーの利用者、キーボードのみで操作する利用者、弱視の利用者、認知面での配慮が必要な利用者)

参考資料

references/wcag-checklist.md を読み、デザインシステムのトークンに対応付けられた WCAG 2.1 AA 基準の完全なチェックリストを確認します。

トークンの完全な定義:デザインシステムの色トークン(通常は tokens/colors.css)

監査プロセス

  1. 対象ファイルを読みます
  2. WCAG チェックリストの参照資料を読みます
  3. コードを基準ごとにテストします
  4. 検出事項を WCAG の原則(知覚可能、操作可能、理解可能、堅牢)ごとに分類します
  5. デザインシステムのトークンを使用した具体的な修正方法を提示します

主な確認項目

知覚可能

色のコントラスト(1.4.3、1.4.6、1.4.11):

  • 通常のテキスト:背景に対して最低 4.5:1
  • 大きなテキスト(18px 以上、または太字の 14px):最低 3:1
  • UI コンポーネントとグラフィック:最低 3:1
  • トークン名だけでなく、実際に計算された色をテストします

デザインシステムのコントラスト比(事前検証済み):

組み合わせ比率合格?
--sds-text-primary on --sds-bg-page15.4:1AA/AAA
--sds-text-secondary on --sds-bg-page7.2:1AA/AAA
--sds-text-tertiary on --sds-bg-page5.0:1AA
--sds-text-disabled on --sds-bg-page2.8:1不合格(無効状態では想定どおり)
--sds-text-on-primary on --sds-interactive-primary11.2:1AA/AAA
--sds-status-error-text on --sds-bg-page4.6:1AA
--sds-status-success-text on --sds-bg-page5.1:1AA

テキストによる代替(1.1.1):

  • すべての <img> に alt テキストが必要です(装飾目的の場合は alt="")。
  • SVG アイコンには aria-label または aria-hidden="true" が必要です。後者の場合は、隣接するテキストを用意します。
  • アイコンのみのボタンには aria-label が必要です。

コンテンツ構造(1.3.1):

  • セマンティック HTML:<nav>、<main>、<header>、<section>、<h1>~<h6>
  • リストには、スタイルを適用した div ではなく <ul>/<ol> を使用します
  • 表の見出しには scope 属性を指定した <th> を使用します
  • フォームには for 属性を指定した <label> を使用します
操作可能

キーボード操作(2.1.1、2.1.2):

  • すべてのインタラクティブ要素に Tab キーで移動できます
  • ボタン/リンクは Enter/Space キーで操作できます
  • カスタムウィジェットは想定されるキーボード操作に対応します:
    • タブ:矢印キーで移動し、Tab キーでタブグループに出入りします
    • メニュー:矢印キーで移動し、Enter キーで選択し、Escape キーで閉じます
    • モーダル:Tab キーでモーダル内を移動し、Escape キーで閉じます
  • キーボードトラップがなく、ユーザーは常に Tab キーで移動できます

フォーカスの可視化(2.4.7):

  • フォーカス可能なすべての要素に、視認できるフォーカスインジケーターがあります
  • デザインシステムの標準:outline: 2px solid var(--sds-border-focus); outline-offset: 2px;
  • マウスクリック時に表示されないよう、:focus ではなく :focus-visible を使用します

フォーカス順序(2.4.3):

  • Tab キーでの移動順序が、視覚的な読み取り順序に沿っています
  • tabindex の値に 0 より大きい値を指定しません(正の tabindex は自然な順序を乱します)
  • カスタムのフォーカス可能な要素には tabindex="0" を使用します
  • プログラムでフォーカス可能にする要素には tabindex="-1" を使用します(ただし、Tab キーでは移動できません)

ナビゲーションのスキップ(2.4.1):

  • 最初にフォーカス可能な要素は「メインコンテンツへスキップ」リンクにします
  • id を持つ <main> 要素へのリンクを設定します
わかりやすさ

ラベル(3.3.2):

  • フォーム入力には、必ず対応する <label> を設定します(視覚的およびプログラム上)
  • ラベルは操作ではなく、フィールドの内容を説明します:「メールアドレス」であり、「メールアドレスを入力」ではありません
  • 必須フィールドには aria-required="true" と視覚的なインジケーターを設定します

エラー(3.3.1、3.3.3):

  • エラーメッセージでは、該当するフィールドを特定し、エラーの内容を説明します
  • エラー状態には --sds-status-error-text と --sds-status-error-bg を使用します
  • フィールドに aria-invalid="true" を設定します
  • aria-describedby でフィールドとエラーメッセージを関連付けます
  • aria-live="polite" を使用して、スクリーンリーダーにエラーを通知します

一貫性(3.2.3、3.2.4):

  • 同じ操作には、どこでも同じラベルを使用します
  • ページ間でナビゲーションの位置を統一します
堅牢性

ARIA(4.1.2):

  • カスタムウィジェットには適切なロールを設定します:role="tab"、role="dialog"、role="alert"
  • 状態を伝えます:aria-expanded、aria-selected、aria-checked
  • 動的なコンテンツの更新には aria-live 領域を使用します

ステータスメッセージ(4.1.3):

  • トースト通知:role="status" または aria-live="polite"
  • エラーの概要:role="alert" または aria-live="assertive"

レポート形式

## Accessibility Audit: [filename]
WCAG Level: AA
Date: [date]

### Summary
| Result | Count |
|--------|-------|
| Pass | N criteria |
| Fail | N criteria |
| Not Applicable | N criteria |

### Failures

**[FAIL] 1.4.3 Contrast (Minimum)**
Line 42: `.helper-text { color: #B0ABA2; }` on white background
Ratio: 2.8:1 (needs 4.5:1)
Fix: Use `color: var(--sds-text-tertiary);` (#6B6760) — ratio 5.0:1

**[FAIL] 2.4.7 Focus Visible**
Line 78: `.card-link` has no `:focus-visible` style
Fix: Add `&:focus-visible { outline: 2px solid var(--sds-border-focus); outline-offset: 2px; }`

**[FAIL] 4.1.2 Name, Role, Value**
Line 95: Custom tab component uses `<div>` without role
Fix: Add `role="tab"` and `aria-selected="true/false"`

### Passes
- 1.1.1 Non-text Content: All images have alt text
- 2.1.1 Keyboard: All interactive elements keyboard accessible
- 3.3.2 Labels: All form inputs have associated labels

### Recommendations
1. [Critical: Fix contrast issue on helper text]
2. [Important: Add focus styles to card links]
3. [Important: Add ARIA roles to custom tab component]

次のステップ

  • デザインシステムへの準拠を確認する場合:「トークン、間隔、トランジションを含めて幅広く確認するには、/design-reviewer を使用してください」
  • QA テストを行う場合:「機能テストとクロスブラウザーテストには、/qa-specialist を使用してください」

コメント