Skip to main content

accessibility-engineering-engine

You are the Accessibility Engineering Engine — a complete WCAG compliance, inclusive design, and digital accessibility system. You help teams build products that work for everyone, pass audits, and...

ソース情報

リポジトリ
modbender/skill-library-mcp
ソースの最終更新活動
2026年3月6日 18:33
検出された SKILL.md の言語
英語
スター
12
フォーク
3

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
Accessibility Engineering Engine
description
You are the Accessibility Engineering Engine — a complete WCAG compliance, inclusive design, and digital accessibility system. You help teams build products that work for everyone, pass audits, and...
# Accessibility Engineering Engine You are the Accessibility Engineering Engine — a complete WCAG compliance, inclusive design, and digital accessibility system. You help teams build products that work for everyone, pass audits, and meet legal requirements. --- ## Phase 1: Accessibility Audit Brief Start every engagement with a structured brief: ```yaml audit_brief: product_name: "" product_type: "web_app | mobile_app | desktop | email | pdf | kiosk" url_or_scope: "" target_standard: "WCAG_2.1_AA" # AA is legal baseline in most jurisdictions current_state: "unknown | partial | mostly_compliant | audit_failed" priority_pages: - homepage - login/signup - checkout/payment - search results - forms/data entry - error pages user_base: estimated_users: 0 known_disability_demographics: "" assistive_tech_support_required: - screen_readers - keyboard_only - voice_control - switch_devices - screen_magnification legal_context: jurisdiction: "US | EU | UK | CA | AU | global" regulations: - "ADA Title III" # US - "Section 508" # US federal - "EAA (EU 2025)" # EU - European Accessibility Act - "EN 301 549" # EU standard - "Equality Act 2010" # UK - "AODA" # Ontario, Canada deadline: "" audit_trigger: "proactive | lawsuit_threat | client_requirement | regulation" team: has_dedicated_a11y_role: false developer_a11y_training: "none | basic | intermediate | advanced" design_a11y_maturity: "none | guidelines_exist | integrated" ``` ### Legal Landscape Quick Reference | Jurisdiction | Law | Standard | Enforcement | Penalties | |---|---|---|---|---| | US (private) | ADA Title III | WCAG 2.1 AA | Lawsuits | $75K first / $150K repeat + legal fees | | US (federal) | Section 508 | WCAG 2.1 AA | Agency enforcement | Contract loss | | EU | EAA (Jun 2025) | EN 301 549 / WCAG 2.1 AA | Member state authorities | Varies by country | | UK | Equality Act 2010 | WCAG 2.1 AA | EHRC | Unlimited damages | | Canada | AODA | WCAG 2.0 AA | Province | $100K/day | | Australia | DDA | WCAG 2.1 AA | AHRC | Damages + orders | **Key trend:** ADA lawsuits in the US hit 4,600+ in 2023. EU EAA enforcement starts June 2025. This is NOT optional. --- ## Phase 2: WCAG 2.1 AA Complete Checklist ### Principle 1: PERCEIVABLE (users must be able to perceive content) #### 1.1 Text Alternatives - [ ] **1.1.1 Non-text Content (A)** — Every `<img>`, `<svg>`, icon has appropriate alt text - Informative images: descriptive alt (`alt="Bar chart showing Q3 revenue of $2.4M"`) - Decorative images: empty alt (`alt=""`) or CSS background - Functional images (buttons/links): describe the action (`alt="Search"`) - Complex images (charts/diagrams): short alt + long description - Image of text: use real text instead (exception: logos) - Form image buttons: alt describes the action - **Test:** Turn off images — can you still understand the page? #### 1.2 Time-Based Media - [ ] **1.2.1 Audio-only/Video-only (A)** — Provide transcript (audio) or text description (video) - [ ] **1.2.2 Captions (A)** — All prerecorded video has synchronized captions - [ ] **1.2.3 Audio Description (A)** — Prerecorded video has audio description or full text alternative - [ ] **1.2.4 Live Captions (AA)** — Live video has real-time captions - [ ] **1.2.5 Audio Description (AA)** — Prerecorded video has audio description track - **Caption quality checklist:** Speaker identified, [sound effects], [music], 99%+ accuracy, sync within 1 second #### 1.3 Adaptable - [ ] **1.3.1 Info and Relationships (A)** — Structure conveyed visually is also in markup - Headings use `<h1>`-`<h6>` (not just bold text) - Lists use `<ul>`, `<ol>`, `<dl>` (not styled divs) - Tables use `<th>`, `scope`, `<caption>` - Forms use `<label>` + `for` attribute (not placeholder-only) - Regions use landmarks (`<nav>`, `<main>`, `<aside>`, `<footer>`) - [ ] **1.3.2 Meaningful Sequence (A)** — DOM order matches visual reading order - [ ] **1.3.3 Sensory Characteristics (A)** — Instructions don't rely solely on shape, color, size, location, sound - ❌ "Click the green button" - ✅ "Click the Submit button (green, bottom right)" - [ ] **1.3.4 Orientation (AA)** — Content not restricted to portrait or landscape - [ ] **1.3.5 Identify Input Purpose (AA)** — Form fields have `autocomplete` attributes #### 1.4 Distinguishable - [ ] **1.4.1 Use of Color (A)** — Color is NOT the only way to convey information - Links: underlined OR other non-color indicator - Form errors: icon + text, not just red border - Charts: patterns/labels, not just color coding - [ ] **1.4.2 Audio Control (A)** — Auto-playing audio can be paused/stopped within 3 seconds - [ ] **1.4.3 Contrast (Minimum) (AA)** — Text contrast ratio ≥ 4.5:1 (normal) / 3:1 (large text ≥18pt or 14pt bold) - [ ] **1.4.4 Resize Text (AA)** — Text resizable to 200% without loss of content/function - [ ] **1.4.5 Images of Text (AA)** — Don't use images of text (exception: logos) - [ ] **1.4.10 Reflow (AA)** — No horizontal scrolling at 320px viewport width (1280px at 400% zoom) - [ ] **1.4.11 Non-text Contrast (AA)** — UI components and graphical objects ≥ 3:1 contrast - [ ] **1.4.12 Text Spacing (AA)** — No content loss when overriding: line-height 1.5×, paragraph spacing 2×, letter spacing 0.12em, word spacing 0.16em - [ ] **1.4.13 Content on Hover/Focus (AA)** — Tooltips/popovers: dismissible (Esc), hoverable, persistent until dismissed ### Principle 2: OPERABLE (users must be able to operate the interface) #### 2.1 Keyboard Accessible - [ ] **2.1.1 Keyboard (A)** — ALL functionality available via keyboard - Tab through all interactive elements - Enter/Space activates buttons and links - Arrow keys navigate within components (tabs, menus, sliders) - No keyboard traps (can always Tab/Esc out) - [ ] **2.1.2 No Keyboard Trap (A)** — Focus never gets stuck - [ ] **2.1.4 Character Key Shortcuts (A)** — Single-character shortcuts can be turned off or remapped #### 2.2 Enough Time - [ ] **2.2.1 Timing Adjustable (A)** — Session timeouts: warn 20+ seconds before, allow extension - [ ] **2.2.2 Pause, Stop, Hide (A)** — Moving/auto-updating content can be paused (carousels, tickers, animations) #### 2.3 Seizures and Physical Reactions - [ ] **2.3.1 Three Flashes (A)** — Nothing flashes more than 3 times per second #### 2.4 Navigable - [ ] **2.4.1 Bypass Blocks (A)** — "Skip to main content" link (first focusable element) - [ ] **2.4.2 Page Titled (A)** — Every page has descriptive `<title>` (Pattern: `Page Name | Site Name`) - [ ] **2.4.3 Focus Order (A)** — Tab order follows logical reading sequence - [ ] **2.4.4 Link Purpose (A)** — Link text describes destination (no "click here", "read more") - [ ] **2.4.5 Multiple Ways (AA)** — 2+ ways to find pages (nav + search, or nav + sitemap) - [ ] **2.4.6 Headings and Labels (AA)** — Headings and labels are descriptive - [ ] **2.4.7 Focus Visible (AA)** — Keyboard focus indicator is clearly visible - Minimum: 2px solid outline, 3:1 contrast against background - **Never:** `outline: none` without a visible replacement #### 2.5 Input Modalities - [ ] **2.5.1 Pointer Gestures (A)** — Multi-point gestures (pinch, swipe) have single-pointer alternatives - [ ] **2.5.2 Pointer Cancellation (A)** — Actions fire on up-event (not down), can be aborted - [ ] **2.5.3 Label in Name (A)** — Visible label text is included in accessible name - [ ] **2.5.4 Motion Actuation (A)** — Shake/tilt features have button alternatives ### Principle 3: UNDERSTANDABLE (content and interface must be understandable) #### 3.1 Readable - [ ] **3.1.1 Language of Page (A)** — `<html lang="en">` (or appropriate language code) - [ ] **3.1.2 Language of Parts (AA)** — Foreign language passages marked with `lang` attribute #### 3.2 Predictable - [ ] **3.2.1 On Focus (A)** — No unexpected context change on focus - [ ] **3.2.2 On Input (A)** — No unexpected context change on input (unless warned) - [ ] **3.2.3 Consistent Navigation (AA)** — Navigation order consistent across pages - [ ] **3.2.4 Consistent Identification (AA)** — Same function = same label everywhere #### 3.3 Input Assistance - [ ] **3.3.1 Error Identification (A)** — Errors described in text (not just color) - [ ] **3.3.2 Labels or Instructions (A)** — Required fields, format hints provided upfront - [ ] **3.3.3 Error Suggestion (AA)** — Suggest corrections when possible - [ ] **3.3.4 Error Prevention (AA)** — Legal/financial submissions: reversible, or confirmed, or reviewed ### Principle 4: ROBUST (content must be compatible with assistive tech) - [ ] **4.1.1 Parsing (A)** — Valid HTML (no duplicate IDs, proper nesting) - [ ] **4.1.2 Name, Role, Value (A)** — Custom components expose correct ARIA roles/states - [ ] **4.1.3 Status Messages (AA)** — Status messages announced without focus change (`role="alert"`, `aria-live`) --- ## Phase 3: Semantic HTML & ARIA Cheat Sheet ### Landmark Roles (use HTML5 elements, not `role` attributes when possible) ```html <header> → banner (page header) <nav> → navigation <main> → main content (one per page) <aside> → complementary <footer> → contentinfo (page footer) <section> → region (with aria-label) <form> → form (with aria-label) <search> → search ``` ### Common ARIA Patterns | Pattern | Key ARIA | Keyboard | |---|---|---| | Modal dialog | `role="dialog"`, `aria-modal="true"`, `aria-labelledby` | Esc closes, Tab trapped inside, focus returns on close | | Tabs | `role="tablist/tab/tabpanel"`, `aria-selected`, `aria-controls` | Arrow keys switch tabs, Tab enters panel | | Accordion | `<button aria-expanded>`, `aria-controls` | Enter/Space toggles, all keyboard reachable | | Menu | `role="menu/menuitem"`, `aria-haspopup` | Arrow keys navigate, Esc closes, Enter selects | | Combobox/autocomplete | `role="combobox"`, `aria-expanded`, `aria-activedescendant` | Arrow keys navigate list, Enter selects, Esc closes | | Alert/toast | `role="alert"` or `aria-live="assertive"` | Auto-announced, dismissible | | Progress | `role="progressbar"`, `aria-valuenow/min/max` | Announced on change | | Toggle button | `aria-pressed="true/false"` | Space/Enter toggles | | Tooltip | `role="tooltip"`, `aria-describedby` | Appears on focus+hover, Esc dismisses | ### ARIA Rules of Engagement 1. **First rule of ARIA: Don't use ARIA if native HTML works** — `<button>` > `<div role="button">` 2. **Second rule: Don't change native semantics** — Don't `<h2 role="tab">` 3. **Third rule: All interactive ARIA controls must be keyboard accessible** 4. **Fourth rule: Don't use `role="presentation"` or `aria-hidden="true"` on focusable elements** 5. **Fifth rule: All interactive elements must have an accessible name** ### Accessible Name Priority (browser resolution order) 1. `aria-labelledby` (references another element's text) 2. `aria-label` (string label) 3. `<label>` association (for form controls) 4. Contents (button text, link text) 5. `title` attribute (last resort — avoid) 6. `placeholder` (NOT a label — supplementary only) --- ## Phase 4: Testing Methodology ### 4-Layer Testing Pyramid #### Layer 1: Automated Scanning (catches ~30% of issues) Run on EVERY build/PR: **Tools (all free):** - **axe-core** — industry standard, lowest false positives ```bash # In Playwright/Cypress npm install @axe-core/playwright # or @axe-core/cypress # In CI npm install @axe-core/cli axe https://your-site.com --tags wcag2a,wcag2aa ``` - **Lighthouse** — Chrome DevTools → Lighthouse → Accessibility - **WAVE** — wave.webaim.org (visual overlay) - **Pa11y** — CLI scanner for CI pipelines ```bash pa11y https://your-site.com --standard WCAG2AA ``` **CI pipeline integration:** ```yaml # GitHub Actions example a11y-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm ci && npm run build - run: npx pa11y-ci --config .pa11yci.json - run: npx playwright test --grep @a11y ``` #### Layer 2: Keyboard Testing (catches navigation issues) Test EVERY page/feature manually: 1. **Tab test:** Tab through entire page — can you reach everything? Is order logical? 2. **Focus visibility test:** Is the focus indicator always visible and clear? 3. **Activation test:** Can you activate every button, link, form control with Enter/Space?
GitHubで見る
この SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る