Claude-skill-registry defining-accessibility-requirements
Defines accessibility requirements for UI elements including semantic markup, ARIA attributes, focus management, and screen reader support. Updates the "アクセシビリティ" section in screen spec.md.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/defining-accessibility-requirements" ~/.claude/skills/majiayu000-claude-skill-registry-defining-accessibility-requirements && rm -rf "$T"
manifest:
skills/data/defining-accessibility-requirements/SKILL.mdsource content
Accessibility Requirements Skill
UIのアクセシビリティ要件(セマンティックマークアップ、ARIA属性、フォーカス管理、スクリーンリーダー対応)を定義するスキルです。
目次
概要
このスキルは以下のタスクをサポートします:
- セマンティクス定義: 適切なHTML要素とランドマーク
- ARIA属性: role、aria-label、aria-describedby等
- フォーカス管理: タブ順序、フォーカストラップ、フォーカス移動
- 色・コントラスト: WCAG基準のコントラスト比
- スクリーンリーダー対応: 読み上げテキスト、ライブリージョン
- キーボード操作: キーボードのみでの操作可能性
禁止事項
以下は絶対に行わないこと:
- 実装コードの生成(HTML/ARIA実装)
- 特定のa11yライブラリの提案
- 技術スタック固有の実装詳細
このスキルの目的は「どのようなアクセシビリティ要件があるか」の情報整理のみです。
対象範囲
WCAGレベル
このスキルは主に WCAG 2.1 Level AA 準拠を目標とします。
| レベル | 対象 |
|---|---|
| A | 必須(最低限のアクセシビリティ) |
| AA | 推奨(このスキルの主な対象) |
| AAA | 任意(特別な要件がある場合) |
対象ユーザー
- 視覚障害者(スクリーンリーダー使用者)
- 弱視者(拡大表示、高コントラスト)
- 色覚異常者
- 聴覚障害者
- 運動障害者(キーボードのみ操作)
- 認知障害者
出力先
このスキルは画面仕様書(spec.md)の「アクセシビリティ」セクションを更新します。
.outputs/{screen-id}/ ├── spec.md # ← このスキルが「アクセシビリティ」セクションを更新 ├── index.html # 参照用HTML └── assets/
クイックスタート
基本的な使い方
以下のFigma画面のアクセシビリティ要件を定義してください: https://figma.com/design/XXXXX/Project?node-id=1234-5678
エージェントは自動的に:
- 画面構造を分析
- セマンティクス要件を整理
- ARIA属性要件を定義
- spec.md の「アクセシビリティ」セクションを更新
詳細ガイド
詳細な情報は以下のファイルを参照してください:
- workflow.md: アクセシビリティ要件定義のワークフロー
- a11y-patterns.md: コンポーネント別アクセシビリティパターン
- section-template.md: セクション出力テンプレート
Workflow
アクセシビリティ要件定義時にこのチェックリストをコピー:
Accessibility Requirements Progress: - [ ] Step 0: spec.md の存在確認 - [ ] Step 1: 画面構造を分析 - [ ] Step 2: セマンティクス要件を定義 - [ ] Step 3: ARIA属性要件を定義 - [ ] Step 4: フォーカス管理を定義 - [ ] Step 5: 色・コントラストを確認 - [ ] Step 6: スクリーンリーダー対応を定義 - [ ] Step 7: キーボード操作を定義 - [ ] Step 8: spec.md の「アクセシビリティ」セクションを更新
Step 0: spec.md の存在確認
ls .outputs/{screen-id}/spec.md
Step 1: 画面構造を分析
HTMLまたはFigmaから以下を特定:
- ページの主要セクション(ヘッダー、メイン、フッター)
- ナビゲーション領域
- フォーム要素
- インタラクティブ要素(ボタン、リンク)
- 動的コンテンツ領域
- 画像・アイコン
Step 2: セマンティクス要件を定義
各要素に適切なHTML要素とランドマークを指定:
| 要素 | 推奨タグ | role | 備考 |
|---|---|---|---|
| ヘッダー | | banner | ページ内で1つ |
| ナビゲーション | | navigation | aria-label必須(複数ある場合) |
| メインコンテンツ | | main | ページ内で1つ |
| フッター | | contentinfo | - |
| セクション | | region | aria-labelledby推奨 |
| 記事 | | article | 独立コンテンツ |
Step 3: ARIA属性要件を定義
各インタラクティブ要素のARIA属性:
: 視覚的ラベルがない要素aria-label
: 別要素でラベル付けaria-labelledby
: 追加説明aria-describedby
: 展開状態aria-expanded
: 選択状態aria-selected
: 支援技術から隠すaria-hidden
: 動的更新の通知aria-live
Step 4: フォーカス管理を定義
- タブ順序(tabindex)
- フォーカストラップ(モーダル内)
- フォーカス移動(エラー時、状態変化時)
- フォーカスインジケーター(視覚的表示)
Step 5: 色・コントラストを確認
WCAGコントラスト比基準:
| 要素 | AA基準 | AAA基準 |
|---|---|---|
| 通常テキスト | 4.5:1 | 7:1 |
| 大きいテキスト(18pt+/14pt bold+) | 3:1 | 4.5:1 |
| UI要素・グラフィック | 3:1 | - |
Step 6: スクリーンリーダー対応を定義
- 画像の代替テキスト(alt)
- アイコンボタンのラベル
- 読み上げ順序
- ライブリージョン(動的更新)
Step 7: キーボード操作を定義
- 全機能のキーボードアクセス
- フォーカス可視性
- ショートカットキー(あれば)
- Escキーでモーダル閉じる等
Step 8: spec.md の「アクセシビリティ」セクションを更新
- セクションを特定(
)## アクセシビリティ - ステータスを「完了 ✓」に更新
を内容に置換{{ACCESSIBILITY_CONTENT}}- 完了チェックリストを更新
- 変更履歴に追記
出力形式
spec.md「アクセシビリティ」セクションの内容
## アクセシビリティ > **ステータス**: 完了 ✓ > **生成スキル**: defining-accessibility-requirements > **更新日**: 2024-01-15 > **準拠レベル**: WCAG 2.1 AA ### セマンティクス | 要素 | 推奨タグ | role | aria属性 | 備考 | |------|---------|------|----------|------| | ページヘッダー | `<header>` | banner | - | - | | メインナビ | `<nav>` | navigation | aria-label="メインナビゲーション" | - | | 検索フォーム | `<form>` | search | aria-label="サイト内検索" | - | | メインコンテンツ | `<main>` | main | - | - | | 講座リスト | `<ul>` | list | aria-label="講座一覧" | - | | 講座カード | `<article>` | article | - | 見出し(h3)を含む | ### ARIA属性 | 要素 | 属性 | 値 | 説明 | |------|------|-----|------| | 検索ボタン(アイコン) | aria-label | "検索" | 視覚的ラベルなし | | ハンバーガーメニュー | aria-expanded | "true/false" | メニュー展開状態 | | ハンバーガーメニュー | aria-controls | "nav-menu" | 制御対象 | | タブパネル | aria-selected | "true/false" | 選択状態 | | 進捗バー | aria-valuenow | "75" | 現在値 | | 進捗バー | aria-valuemin | "0" | 最小値 | | 進捗バー | aria-valuemax | "100" | 最大値 | ### フォーカス管理 #### タブ順序
- スキップリンク → 2. ロゴ → 3. ナビゲーション項目 →
- 検索フィールド → 5. 検索ボタン → 6. メインコンテンツ →
- 講座カード(順番に) → 8. フッターリンク
#### フォーカス移動 | イベント | フォーカス移動先 | |----------|----------------| | モーダル表示 | モーダル内の最初のフォーカス可能要素 | | モーダル閉じる | モーダルを開いたトリガー要素 | | フォームエラー | 最初のエラーフィールド | | ページ内リンク | 対象セクションの見出し | #### フォーカストラップ - モーダル/ダイアログ表示中はモーダル内でフォーカスをトラップ - Tabキーで最後の要素 → 最初の要素へループ - Shift+Tabで最初の要素 → 最後の要素へループ ### 色・コントラスト | 要素 | 前景色 | 背景色 | コントラスト比 | 判定 | |------|--------|--------|---------------|------| | 本文テキスト | #24243F | #FFFFFF | 14.5:1 | ✓ AA | | 補足テキスト | #67717A | #FFFFFF | 5.2:1 | ✓ AA | | ボタンテキスト | #FFFFFF | #0070E0 | 4.6:1 | ✓ AA | | リンクテキスト | #0070E0 | #FFFFFF | 4.5:1 | ✓ AA | | エラーテキスト | #D32F2F | #FFFFFF | 5.9:1 | ✓ AA | #### 色に依存しない情報伝達 - エラー状態: 赤色 + アイコン + テキストメッセージ - 必須項目: 色 + アスタリスク(*)マーク - リンク: 色 + 下線 ### スクリーンリーダー対応 #### 代替テキスト | 要素 | alt / aria-label | |------|-----------------| | 企業ロゴ | "〇〇株式会社" | | 講座サムネイル | 講座タイトルを含む説明 | | 装飾アイコン | aria-hidden="true" | | 機能アイコン(検索) | aria-label="検索" | #### 読み上げテキスト | 要素 | 読み上げ内容 | |------|-------------| | 進捗バー (75%) | "進捗 75パーセント" | | 評価 ★★★★☆ | "評価 5段階中4" | | 新着バッジ | "新着" | | 残席わずか | "残席わずか 残り3席" | #### ライブリージョン | 要素 | aria-live | 用途 | |------|-----------|------| | トースト通知 | polite | 成功/エラーメッセージ | | 検索結果件数 | polite | 結果更新時 | | フォームエラー | assertive | 即座に通知が必要 | ### キーボード操作 | 操作 | キー | 動作 | |------|------|------| | フォーカス移動 | Tab | 次の要素へ | | フォーカス移動(逆) | Shift + Tab | 前の要素へ | | ボタン実行 | Enter / Space | クリックと同等 | | モーダル閉じる | Escape | モーダルを閉じる | | ドロップダウン開閉 | Enter / Space | 開閉トグル | | ドロップダウン選択 | ↑ / ↓ | 項目選択 | | タブ切り替え | ← / → | 前後のタブ | ### スキップリンク ページ先頭に以下のスキップリンクを配置: 1. "メインコンテンツへスキップ" → #main-content 2. "ナビゲーションへスキップ" → #main-nav(任意) ### チェックリスト - [ ] 全ての画像に適切な代替テキスト - [ ] 全てのフォーム要素にラベル - [ ] キーボードのみで全機能にアクセス可能 - [ ] フォーカスインジケーターが視認可能 - [ ] 色だけに依存しない情報伝達 - [ ] コントラスト比がWCAG AA基準を満たす - [ ] スクリーンリーダーで論理的な読み上げ順序 - [ ] 動的コンテンツの変更が通知される
完了チェックリスト
生成後、以下を確認:
- [ ] spec.md の「アクセシビリティ」セクションが更新されている - [ ] ステータスが「完了 ✓」になっている - [ ] セマンティクス要件が定義されている - [ ] ARIA属性が明確 - [ ] フォーカス管理が定義されている - [ ] コントラスト比が確認されている - [ ] スクリーンリーダー対応が定義されている - [ ] キーボード操作が定義されている - [ ] 完了チェックリストが更新されている - [ ] 変更履歴に記録が追加されている
注意事項
他のセクションを変更しない
このスキルは「アクセシビリティ」セクションのみを更新します。
デザインからの情報不足
Figmaデザインからアクセシビリティ情報が不足している場合:
- 一般的なパターンを適用(a11y-patterns.md参照)
- 「要確認」として明示
- 設計者への確認事項としてリスト
コントラスト比の計算
デザイントークンまたはFigmaから色情報を取得し、コントラスト比を計算。 基準を満たさない場合は警告として記載。
参照
- workflow.md: 詳細なワークフロー
- a11y-patterns.md: アクセシビリティパターン集
- section-template.md: セクション出力テンプレート
- managing-screen-specs: 仕様書管理スキル