Skip to content
cccskills
FreePublished on GitHub

a11y-auditor

Act as a Senior Accessibility Engineer to audit a page, component, or design against WCAG 2.2 AA. Produces a triaged finding list (critical/serious/moderate), focus-order map, contrast report, ARIA decision tree, and a screen-reader test plan. Use when shipping new UI, hardening an existing flow, or preparing for VPAT/accessibility conformance.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md7.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Audit the target against WCAG 2.2 Level AA plus pragmatic real-world a11y patterns. Report findings as actionable fixes, not academic citations.

Required Input

At least one of:

  • URL or path to a built page
  • Component source (HTML / JSX / Vue / Svelte)
  • Design (Figma frame / screenshot) — restricts checks to visual-only

Optional context that sharpens the audit: target users (e.g. enterprise B2B, K-12, government — each implies different baselines), assistive tech in scope (VoiceOver, NVDA, JAWS, TalkBack, Switch Control), locale / RTL requirements, existing a11y posture (VPAT, prior audits, known waivers).

Audit Coverage

1. Perceivable

  • Contrast — text ≥ 4.5:1 (body) / 3:1 (large/UI). Compute ratios; flag any below.
  • Non-text content — every <img>, icon, chart, decorative graphic has correct alt or aria-hidden.
  • Color independence — no information conveyed by color alone (errors, status, links).
  • Text resize — usable up to 200% zoom without horizontal scroll at 1280px.
  • Reflow — content reflows at 320 CSS px without loss of function.

2. Operable

  • Keyboard parity — every interactive element reachable and operable via keyboard alone. No traps.
  • Focus visible — visible focus ring on every focusable element, ≥ 3:1 against background.
  • Focus order — DOM order matches visual order; tab through and map it.
  • Target size — 24×24 CSS px minimum (WCAG 2.2 SC 2.5.8), 44×44 strongly preferred for touch.
  • Skip links / landmarks — <header>, <nav>, <main>, <footer> and skip-to-content link.
  • No motion traps — auto-play, parallax, looping animation respect prefers-reduced-motion.

3. Understandable

  • Language — <html lang> set; switches declared with lang attribute.
  • Form labels — every input has a programmatic label (<label for>, aria-label, or aria-labelledby).
  • Error identification — errors named in text, associated via aria-describedby, announced to AT.
  • Predictable interaction — no context change on focus/input without warning.
  • Consistent navigation — same nav patterns across pages.

4. Robust

  • Valid markup — no nested interactive elements, no duplicate IDs.
  • ARIA hygiene — first rule of ARIA: don't use it if native HTML works. Validate role + required properties.
  • Status messages — live regions for async results (role="status" polite; role="alert" assertive).
  • Name / Role / Value — every custom widget exposes all three to the accessibility tree.

5. WCAG 2.2 net-new (often missed)

  • 2.4.11 Focus Not Obscured — focused element not hidden by sticky headers/footers.
  • 2.5.7 Dragging Movements — drag interactions have a single-pointer alternative.
  • 2.5.8 Target Size (Minimum) — covered above.
  • 3.2.6 Consistent Help — help mechanisms appear in the same relative order.
  • 3.3.7 Redundant Entry — don't ask for the same info twice in a flow.
  • 3.3.8 Accessible Authentication — no cognitive function test (e.g. solve a puzzle) required.

ARIA Decision Tree

For any custom widget, apply this order:

  1. Native element exists? Use it. (<button>, <a href>, <input>, <details>, <dialog>)
  2. Native + minor enhancement? Use native + aria-* state (aria-expanded, aria-pressed).
  3. No native equivalent? Use the matching ARIA pattern from APG (Authoring Practices). Required properties:
    • menu / menuitem — role, focus management, arrow keys
    • tablist / tab / tabpanel — aria-selected, aria-controls, arrow keys
    • combobox — aria-expanded, aria-controls, aria-activedescendant
    • dialog — focus trap, aria-modal="true", return focus on close
    • tree / treeitem — aria-expanded, aria-level, arrow keys
  4. Never invent custom roles. If APG doesn't cover it, simplify the UI.

Screen Reader Test Plan

Walk each critical user flow with at least one pairing:

Screen readerBrowserOS
VoiceOverSafarimacOS, iOS
NVDAFirefoxWindows
JAWSChromeWindows
TalkBackChromeAndroid

Test script per flow:

  1. Land on page with SR running — is the page title announced?
  2. Navigate by landmark (D in NVDA, rotor in VO) — are all landmarks named?
  3. Navigate by heading (H) — does the outline make sense without visual context?
  4. Tab through interactive elements — does each announce name + role + state?
  5. Submit an invalid form — is the error announced and focus moved?
  6. Trigger a dialog/modal — does focus move into it, trap correctly, and return on close?
  7. Trigger an async update — is the result announced via live region?

Output Format

Deliver three artifacts:

1. Triaged Finding List

Table sorted by severity. Each row:

#SeverityWCAG SCWhereIssueFixEffort

Severity ladder:

  • Critical — blocks users (keyboard trap, missing label on submit, contrast on primary CTA).
  • Serious — blocks users with specific AT or settings (focus not visible, dialog without trap).
  • Moderate — degrades experience (verbose label, suboptimal heading order).
  • Minor — polish (decorative icon missing aria-hidden).

2. Focus Order Map

Numbered list of every tabstop in DOM order, visual position annotated. Call out any mismatch.

3. Contrast Report

Every text/UI color pair with computed ratio, minimum required, and pass/fail.

Verification Commands

For a running page, run these before delivering findings:

# axe-core CLI scan (most accurate automated baseline)
npx @axe-core/cli "$URL" --tags wcag2a,wcag2aa,wcag22aa

# Lighthouse accessibility audit
npx lighthouse "$URL" --only-categories=accessibility --output=json

# pa11y for CI-friendly output
npx pa11y "$URL" --standard WCAG2AA

Automated tools catch ~30% of issues; the other 70% — focus order, labels that read poorly, motion sickness triggers, cognitive load — requires manual review via the screen reader test plan above.

Anti-Patterns to Flag Immediately

  • <div onClick> — not focusable, not announced. Use <button>.
  • <a href="#"> as a button. Use <button>.
  • Placeholder used as the only label.
  • outline: none without a replacement focus style.
  • Icon-only buttons without aria-label.
  • aria-hidden="true" on a focusable element.
  • Tooltip as the only place an error message appears.
  • tabindex greater than 0.
  • Color-only error indication (red border, no text, no icon).
  • Modal that doesn't trap focus or return focus on close.
  • Carousel that auto-advances without a pause control.

Output Goal

Every finding names the exact element, the exact SC, and the exact change — code-level when source is available, behavior-level when only design is available — so a developer can fix every Critical and Serious finding without a follow-up question.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

When the user wants to plan, design, or implement an A/B test or experiment — "split test," "variant copy," "multivariate test," "hypothesis," "statistical significance," "how long should I run this test," or comparing two versions. For tracking implementation, see analytics-tracking. For page-level conversion optimization, see page-cro.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, full variations — for any paid platform; 'ad copy variations,' 'RSA headlines,' 'bulk ad copy,' 'creative testing,' 'write me some ads.' For campaign strategy and targeting, see paid-ads. For landing page copy, see copywriting.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

ai-seo

Free

When the user wants content cited by LLMs or surfaced in AI-generated answers — 'AI SEO,' 'AEO,' 'GEO,' 'LLMO,' 'answer engine optimization,' 'AI Overviews,' 'optimize for ChatGPT/Perplexity/Claude,' 'AI citations,' 'zero-click search.' For traditional technical/on-page audits, see seo-audit. For structured data, see schema-markup.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

When the user wants to set up, improve, or audit analytics tracking and measurement — "GA4," "conversion tracking," "event tracking," "UTM parameters," "tag manager," "GTM," "tracking plan," "attribution," "Mixpanel," "Segment," "are my events firing," or how to measure marketing results. For A/B test measurement, see ab-test-setup.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

Architectural decision advisor for cloud, data, and SaaS distributed systems. Use when the user asks "should we use X or Y", weighs a tradeoff, or needs a decision matrix, scaling analysis, cost-at-scale review, data-tier design, multi-tenancy model, or API/resilience guidance. For full technical blueprints, use enterprise-design.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

branch

Free

Create a feature branch from the default branch with a descriptive, conventional name.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

See all skills by rajitsaha

Report a problem with this skill