WE

web-accessibility-auditor

Inclusive web development guide focused on semantic HTML, screen readers, and keyboard navigation.

Install

mkdir -p .claude/skills/web-accessibility-auditor && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/9771" && unzip -o skill.zip -d .claude/skills/web-accessibility-auditor && rm skill.zip

Installs to .claude/skills/web-accessibility-auditor

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Web Accessibility (a11y) mastery. WCAG 2.2 AA standards, semantic HTML, ARIA attributes, keyboard navigation, focus management, screen reader compatibility, color contrast, and dynamic content announcements. Use when building UI components or auditing frontend code for accessibility compliance.
295 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • →Audit frontend code for WCAG 2.2 compliance
  • →Implement semantic HTML structures
  • →Manage keyboard focus in interactive components
  • →Configure ARIA attributes for custom widgets
  • →Set up live regions for dynamic content

How it works

It evaluates UI components against WCAG standards, prioritizing native HTML elements and proper ARIA usage to ensure screen reader and keyboard compatibility.

Inputs & outputs

You give it
UI component code
You get back
Accessibility audit and remediation steps

When to use web-accessibility-auditor

  • →Auditing frontend accessibility
  • →Building accessible form components
  • →Ensuring WCAG compliance

About this skill

Web Accessibility (a11y) — Inclusive UI Mastery

Mandatory Pre-Flight Context Inspection

Before reading, generating, or refactoring code in the web-accessibility-auditor domain, inspect these 5 critical parameters:

  1. System Boundaries & Dependencies: Verify that all required dependencies exist in target package manifests and environment paths.
  2. Runtime Context & Platform Invariants: Confirm target platform constraints (Node.js, Browser, Mobile OS, Edge runtime) before applying APIs.
  3. Execution Guardrails: Identify potential side-effects, state mutations, and unhandled asynchronous exceptions.
  4. Validation & Type Contracts: Validate input data schemas and strict type constraints across all module interfaces.
  5. Observability & Proof of Execution: Ensure execution produces tangible verification signals (terminal output, tests, metrics).

Activation Boundaries

  • Activate when: Use when auditing, pen-testing, hardening, and verifying code against web accessibility auditor vulnerabilities, injection vectors, and auth flaws.
  • DO NOT activate when: The task falls outside the web-accessibility-auditor domain or is managed by a different dedicated specialist agent.

🔁 Multi-Pass Execution Protocol

PassPhaseCore ActionAdaptive Depth
Pass 1UnderstandDeconstruct the user's explicit objective, implicit requirements, and platform constraints.Fast / Standard / Deep
Pass 2PlanDecompose task into smallest logical steps; map dependencies, affected files, and tool calls.Standard / Deep
Pass 3ExecuteImplement solution with production-grade craft, zero placeholders, and strict typing.All Modes
Pass 4VerifyRun linters, unit tests, or compiler checks to validate structural correctness.All Modes
Pass 5Attack & FalsifyPerform adversarial search for edge-case failures, counterexamples, race conditions, and traps.Standard / Deep
Pass 6HardenEliminate discovered friction, optimize performance, and harden error boundaries.Standard / Deep
Pass 7Quality GateEnforce Verification-Before-Completion (VBC) with concrete terminal proof before finalizing.All Modes

🛠️ Technical Architecture & Reference Recipes

Hallucination Traps (Read First)

  • ❌ Adding role='button' to a <div> instead of using <button> -> ✅ Native HTML elements have built-in keyboard and screen reader support
  • ❌ Using aria-label on elements that already have visible text -> ✅ Redundant ARIA overrides visible text for screen readers; use only when needed
  • ❌ Color as the only indicator of state -> ✅ Always pair color with icon, text, or pattern for colorblind users (1 in 12 males)
  • ❌ Assuming accessibility is a checklist to run at the end -> ✅ Build accessible from the start; retrofitting is 10x more expensive

1. Semantic HTML over <div> Soup

The first rule of ARIA: Use native HTML elements whenever possible.

<!-- ❌ BAD: Meaningless markup, screen readers see nothing, no keyboard focus -->
<div class="submit-button" onclick="submit()">Submit</div>

<!-- ✅ GOOD: Native semantic element (inherits focus, Enter/Space key behavior) -->
<button type="submit" class="button">Submit</button>

<!-- ❌ BAD: Div as a link -->
<div onclick="goToPath('/about')">About Us</div>

<!-- ✅ GOOD: Native anchor -->
<a href="/about">About Us</a>

Layout Semantics

Replace <div class="x"> with meaning:

  • <header> / <footer>
  • <nav> (Main navigations)
  • <main> (The primary content)
  • <article> (Self-contained content blocks)
  • <aside> (Sidebars, callouts)

2. Keyboard Navigation & Focus Management

Every interactive element MUST be keyboard accessible.

/* ❌ BAD: Removing focus outlines ruins keyboard navigation */
*:focus {
  outline: none;
}

/* ✅ GOOD: Using :focus-visible for keyboard users only */
*:focus {
  outline: none;
} /* Hide for click */
*:focus-visible {
  outline: 2px solid var(--accent-color);
  outline-offset: 2px;
}

Managing Focus in Modals (Dialogs)

When a modal opens:

  1. Focus must move into the modal (first focusable element).
  2. Focus must be trapped inside the modal (Tabbing loops inside it).
  3. Background must be hidden from screen readers (aria-hidden="true").
  4. Escape key must close it.
  5. When closed, focus returns to the button that opened it.
<!-- ✅ BEST: Use the native <dialog> element. It handles focus trapping automatically! -->
<dialog id="myModal">
  <h2>Settings</h2>
  <button formmethod="dialog">Close</button>
</dialog>
<script>
  document.getElementById('myModal').showModal();
</script>

3. ARIA Roles & Attributes

When you build complex custom widgets (like tabs or accordions), you must apply ARIA attributes to tell screen readers what it is and what state it's in.

<!-- Example: Custom Accordion/Disclosure -->
<!-- ❌ BAD: Screen reader sees plain text, doesn't know it's expandable -->
<div class="accordion">
  <div class="header">Advanced Settings</div>
  <div class="content" style="display: none;">...</div>
</div>

<!-- ✅ GOOD: ARIA provides context -->
<div class="accordion">
  <button aria-expanded="false" aria-controls="panel-id" id="header-id">Advanced Settings</button>
  <div id="panel-id" role="region" aria-labelledby="header-id" hidden>...</div>
</div>

Crucial ARIA states:

  • aria-expanded="true/false": For accordions, dropdowns, menus.
  • aria-hidden="true": Removes decorative icons/containers from the screen reader tree.
  • aria-pressed="true/false": For toggle buttons.
  • aria-invalid="true": For invalid form fields.

4. Forms & Labels

Every input must have an associated label. placeholder is NOT a label (it disappears when typing, causing cognitive loss).

<!-- ❌ BAD -->
<input type="text" placeholder="Email Address">

<!-- ✅ GOOD: Explicit linking via id/for -->
<label for="email">Email Address</label>
<input type="email" id="email" name="email">

<!-- ✅ GOOD: Implicit wrapping -->
<label>
  Email Address
  <input type="email" name="email">
</label>

<!-- Accessible Error Messages -->
<label for="username">Username</label>
<input
  type="text"
  id="username"
  aria-invalid="true"
  aria-describedby="username-error"

<span id="username-error" role="alert" class="error-msg">Username is already taken</span>

5. Live Regions (Dynamic Updates)

When content changes dynamically without a page reload (e.g., Toast notifications, AI responding, search results updating), the screen reader needs to be notified.

<!-- 
  role="alert": Interrupts the user immediately (e.g., error).
  role="status" (or aria-live="polite"): Waits until the user pauses, then announces.
-->
<div aria-live="polite" class="sr-only">
  <!-- JavaScript injects: "3 items found" here, screen reader reads it aloud -->
</div>

🚨 Edge-Case & Failure Mode Matrix

ScenarioRiskProduction Mitigation
Empty or Null InputsUnhandled exception or unexpected rendering collapseEnforce fallback guards, optional chaining, and explicit empty state handlers
Network Timeout / LatencyHanging operations or duplicate side-effectsImplement bounded abort controllers, exponential backoff, and idempotency keys
Concurrency / Race ConditionsStale state overwrite or inconsistent data mutationsUse atomic transactions, mutex locking, or cancel-on-resubmit controls
Invalid Schema / Malformed PayloadDownstream runtime errors or security injectionValidate boundary payloads with Zod/Pydantic schemas prior to execution
Resource / Memory SaturationOOM errors, frame drops, or memory leaksClean up listeners, cancel active timers, and enforce pagination/virtualization

🏛️ Tribunal Verification & Guardrails

Active Reviewers: security-auditor · penetration-tester · backend-security-expert Slash Command: /review or /tribunal-full

🔬 Evidence Standard (Tri-State Verification)

Every finding, audit statement, or completion claim must classify its factual certainty:

  • [OBSERVED]: Directly confirmed in the codebase or verified via executed terminal command.
  • [INFERRED]: Logically deduced from code patterns, architectural data flow, or schema relations.
  • [UNVERIFIED]: Speculative hypothesis or runtime possibility requiring active testing or measurement.

✅ Pre-Flight Self-Audit Checklist

✅ Are user inputs sanitized and treated as untrusted data at system boundaries?
✅ Are secrets loaded strictly via environment variables with zero hardcoding?
✅ Is least-privilege enforcement active on APIs, tokens, and storage buckets?
✅ Are prompt-injection delimiters and sanitizers wrapped around LLM inputs?
✅ Did I verify encryption in transit and at rest for sensitive data?

🛑 Verification-Before-Completion (VBC) Protocol

CRITICAL: You must follow a strict "evidence-based closeout" state machine.

  • ❌ Forbidden: Declaring a task complete because the output "looks correct."
  • ✅ Required: You are explicitly forbidden from finalizing any task without providing concrete evidence (terminal output, passing test suites, compiler success, or equivalent operational proof) that your output works as intended.

When not to use it

  • →Backend-only development

Limitations

  • →Cannot automatically fix all visual contrast issues
  • →Requires manual verification of dynamic state changes

How it compares

It mandates a verification-before-completion protocol to prevent common AI hallucinations regarding accessibility attributes.

Compared to similar skills

web-accessibility-auditor side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
web-accessibility-auditor (this skill)03moNo flagsIntermediate
accessibility-compliance454moNo flagsIntermediate
reka-ui34moReviewIntermediate
web-coder04moNo flagsBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

More by Harmitx7

View all by Harmitx7 →

i18n-localization

Harmitx7

Internationalization (i18n) and localization mastery. Abstracting hardcoded strings, managing JSON/YAML translation dictionaries, bidirectional routing (RTL support for Arabic/Hebrew), Pluralization algorithms, date/currency formatting, and SSR locale detection in Next.js/React. Use when preparing a

00

code-review-checklist

Harmitx7

Code review guidelines covering code quality, security, and best practices.

00

performance-profiling

Harmitx7

Performance profiling mastery. Core Web Vitals (LCP, CLS, INP), Lighthouse auditing, JavaScript profiling, React rendering optimization, bundle analysis, memory leak detection, database query profiling (EXPLAIN ANALYZE), load testing, and performance budgets. Use when optimizing performance, debuggi

00

data-validation-schemas

Harmitx7

Data validation and schema design mastery. Zod, Yup, Joi, Valibot, and Pydantic schema design, runtime type checking, API boundary validation, form validation patterns, DTO design, schema composition, error message formatting, schema evolution strategies, and coercion rules. Use when validating user

00

plan-writing

Harmitx7

Technical design and implementation planning mastery. Writing structured execution checklists, dependency mapping, establishing rollback protocols, segmenting monolithic tasks, writing ADRs (Architecture Decision Records), and defining verification criteria. Use when transitioning from ideation to c

00

database-design

Harmitx7

Database design principles and decision-making. Schema design, indexing strategy, ORM selection, serverless databases.

00

You might also like

accessibility-compliance

wshobson

Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.

45132

reka-ui

onmax

Use when building with Reka UI (headless Vue components) - provides component API, accessibility patterns, composition (asChild), controlled/uncontrolled state, virtualization, and styling integration. Formerly Radix Vue.

38

web-coder

mochan-tk

Use when: implementing frontend web apps with HTML, CSS, TypeScript, React, accessibility, responsive layout, or performance concerns.

00

web-coder

Bonzokoles

Expert 10x engineer with comprehensive knowledge of web development, internet protocols, and web standards. Use when working with HTML, CSS, JavaScript, web APIs, HTTP/HTTPS, web security, performance optimization, accessibility, or any web/internet concepts. Specializes in translating web terminolo

00

keyboard-shortcuts

mae616

UIキーボードショートカットを「公式基準(W3C APG / WCAG)+プラットフォーム規約(Apple HIG / Fluent UI)+デファクトスタンダード(GitHub・Gmail・Slack等)」に沿って設計し、衝突なく・発見しやすく・無効化可能な形で実装するための判断軸。

00

frontend-ui-engineering

charlieviettq

Build and refine web UI—component structure, responsive layout, design tokens, state, and accessibility. Use for feature UI work beyond WCAG checks alone.

00

Search skills

Search the agent skills registry