--- name: accessibility-audit description: "Load PROACTIVELY when task involves accessibility compliance or inclusive design. Use when user says \"check accessibility\", \"audit for WCAG\", \"fix screen reader issues\", \"add keyboard navigation\", or \"check color contrast\". Covers WCAG 2.1 AA compliance across semantic HTML, ARIA patterns, keyboard navigation, screen reader support, color contrast ratios, form accessibility, media alternatives, and focus management. Produces structured audit reports with severity ratings." metadata: version: "1.0.0" category: quality tags: [accessibility, a11y, wcag, aria, semantic-html, keyboard-navigation, screen-reader] --- ## Resources ``` scripts/ validate-accessibility-audit.sh references/ accessibility-patterns.md ``` # Accessibility Audit This skill guides you through performing comprehensive accessibility audits to ensure WCAG 2.1 AA compliance. Use this when validating applications for inclusive design, preparing for accessibility reviews, or remediating accessibility issues. ## When to Use This Skill - Conducting pre-launch accessibility compliance reviews - Responding to accessibility complaints or legal requirements - Performing periodic accessibility audits on existing applications - Validating accessibility after major UI refactors - Preparing for WCAG 2.1 AA certification - Onboarding teams to accessibility best practices ## Audit Methodology A systematic accessibility audit follows these phases: ### Phase 1: Reconnaissance **Objective:** Map components and identify accessibility-critical areas. **Use discover to map the UI surface:** ```yaml discover: queries: - id: interactive_components type: grep pattern: "(button|input|select|textarea|a href)" glob: "**/*.{tsx,jsx}" - id: form_components type: grep pattern: " h3 without h2) - Multiple h1 elements on a page - Using headings for visual styling instead of structure - Missing heading hierarchy in complex components **Correct heading structure:** ```typescript import { ReactNode } from 'react'; interface PageLayoutProps { title: string; children: ReactNode; } export function PageLayout({ title, children }: PageLayoutProps) { return (
{/* Single h1 per page */}

{title}

{children}
); } interface SectionProps { title: string; children: ReactNode; } export function Section({ title, children }: SectionProps) { return (
{/* h2 for main sections */}

{title}

{children}
); } interface SubsectionProps { title: string; children: ReactNode; } export function Subsection({ title, children }: SubsectionProps) { return (
{/* h3 for subsections */}

{title}

{children}
); } ``` #### Check Landmark Regions **Search for landmark usage:** ```yaml precision_grep: queries: - id: landmarks pattern: "(` or `role="banner"` for site header - `