Skip to main content

Software Development

Accessibility Auditor

Scans UI components for WCAG 2.2 AA violations including ARIA gaps, keyboard navigation issues, contrast failures, and screen reader compatibility. Useful for legal compliance and inclusive product development. Frontend engineers shipping UI, product teams preparing for enterprise procurement checklists, startups responding to accessibility-clause contract requirements, engineers working on public-sector software. AI-generated UI components consistently ship without the accessibility scaffolding that experienced frontend engineers apply reflexively: ARIA labels on icon-only buttons, focus management in modals, semantic landmarks, color contrast meeting AA ratios, keyboard handlers on interactive elements. A pre-ship auditor catches the high-signal violations before they reach production, which is when remediation is cheap.

Nexus CertifiedClaude CodeCodexOpenClawGoogle Antigravity
accessibilitywcaga11yfrontendcompliance

One-Time Purchase

$19.99

Sample Output

Accessibility Audit — src/components/ProductFilterSidebar.tsx

Framework: React 19 + Radix UI · Target: WCAG 2.2 AA · Components scanned: 7

Verdict

Do not ship. Two criticals — a custom dual-handle price slider unreachable by keyboard or screen reader, and a global *:focus { outline: none; } rule that leaves keyboard users without a visible focus indicator on most controls. Eleven findings total. Static analysis catches structure and attributes; live-region timing and focus-trap correctness still need a manual NVDA/VoiceOver pass before the conformance claim is defensible.

Findings by severity

Critical — slider unreachable, focus indicator suppressed2
Serious — swatches, collapse toggle, anchor-as-button, missing legend4
Moderate — live region, focus styles, id collisions3
Minor — decorative SVGs, hover contrast2

Findings by WCAG Criterion

WCAGCriterionLocationSeverityStatus
1.4.3Contrast (Minimum)FilterGroup.tsx:42 disabled countCritical2.1:1 (need 4.5:1)
2.1.1 + 4.1.2Keyboard / Name-Role-ValuePriceRangeSlider.tsx:18CriticalUnreachable
2.4.11Focus Appearanceglobals.css:3CriticalOutline suppressed globally
1.4.1 + 4.1.2Use of Color / NRVColorSwatchGroup.tsx:29SeriousSelected/unavailable color-only
4.1.2 + 1.3.1Name-Role-ValueCollapsibleSection.tsx:14SeriousIcon-only button, no aria-expanded
2.1.1KeyboardClearFiltersLink.tsx:8Serious<a> without href
1.3.1Info and RelationshipsFilterGroup.tsx:10SeriousNo <fieldset>/<legend>
4.1.3Status MessagesApplyButton.tsx:22ModerateNo live region for result count
1.3.1Info and RelationshipsFilterGroup.tsx:26Moderateid collision risk
1.1.1Non-text ContentChevronIcon.tsx, FilterIcon.tsxMinorMissing aria-hidden
1.4.3Contrast (hover)ApplyButton.module.css:18Minor3.8:1 on hover (need 4.5:1)

Screen-Reader vs Keyboard

Screen reader (NVDA inferred)

5 blocking gaps

What a JAWS/NVDA user cannot do today

Discover the price slider existsx
Hear "Size: Small" group contextx
Know which swatch is selectedx
Get a count after applying filtersx
blockedcore filter flow

Keyboard-only

4 blocking gaps

What a Tab-key user cannot do today

Reach either price-slider handlex
See focus on swatches / togglesx
Activate "Clear filters"x
Expand a collapsed filter sectionx
blockedcore filter flow

Critical Findings — Detail

F-01 — Disabled filter count contrast Critical

FilterGroup.tsx:42 renders #9CA3AF on #F9FAFB at 13px / non-bold. Measured 2.1:1 against the 4.5:1 minimum.

/* Before — fails 1.4.3 */
.filter-count-disabled { color: #9CA3AF; background: #F9FAFB; }

/* After — passes at 5.3:1 */
.filter-count-disabled { color: #6B7280; background: #F9FAFB; }

F-02 — Price slider unreachable Critical

PriceRangeSlider.tsx:18 implements both handles as unstyled <div> elements with mouse-only drag handlers — no role="slider", no aria-value*, no tabIndex. A keyboard or screen-reader user has no path to use the control.

// Preferred: native inputs styled with CSS — no ARIA required
<div className="price-range-track">
  <input type="range" min={0} max={500} value={minPrice}
    onChange={(e) => setMinPrice(Number(e.target.value))}
    aria-label="Minimum price" />
  <input type="range" min={0} max={500} value={maxPrice}
    onChange={(e) => setMaxPrice(Number(e.target.value))}
    aria-label="Maximum price" />
</div>

First rule of ARIA: prefer native <input type="range"> over role="slider" on a <div>. Custom ARIA pattern only if a native input genuinely cannot meet the visual design after CSS.

F-07 — Focus indicator suppressed globally Critical

globals.css:3 contains *:focus { outline: none; }. Component-level :focus-visible exists on ApplyButton but not on checkboxes, swatches, or the collapse toggle. Result: a keyboard user often has no idea where focus is.

/* DELETE: *:focus { outline: none; } */

:focus-visible {
  outline: 3px solid #2563EB;
  outline-offset: 2px;
  border-radius: 2px;
}

Recommended Fixes


Color Contrast Report

ElementForegroundBackgroundRatioStatus
Filter count (disabled)#9CA3AF#F9FAFB2.1:1Fail
Checkbox label#111827#FFFFFF16.1:1Pass
Apply button (default)#FFFFFF#1D4ED88.6:1Pass
Apply button (hover)#FFFFFF#3B82F63.8:1Fail
Clear filters link#6B7280#FFFFFF4.6:1Pass
Section label#374151#F3F4F67.2:1Pass
Unavailable swatch label#9CA3AF#FFFFFF2.5:1Manual review

Keyboard Traversal (inferred from static source)

ComponentTab StopArrow KeysIssue
CollapsibleSection toggleNot reachablen/aF-04
PriceRangeSlider (min handle)Not reachableUnsupportedF-02
PriceRangeSlider (max handle)Not reachableUnsupportedF-02
Color swatchesReachableNo visible focusF-07
Filter checkboxesReachablen/aF-09 (id collision)
Apply buttonReachablen/aOK
Clear filtersInconsistentn/aF-05

Scope notice

Static analysis confirms structural and attribute-level violations only. Focus-trap correctness on filter apply, live-region announcement timing, and screen-reader virtual-cursor interaction still require manual testing with NVDA / JAWS / VoiceOver. Testing with assistive-technology users is the final gate before any WCAG 2.2 AA conformance claim.

Illustrative component audit. Color values and line numbers reset per scan against the real source file.

This sample illustrates the skill's output format. Names, metrics, and operational details are illustrative unless the artifact explicitly analyzes public information.

View full sample →

All sales final. No refunds on digital products.

Includes support for Claude Code, Codex, OpenClaw, and Google Antigravity in the same license.

Also in Specs & Governance

Bundle price: $55. Compare this skill with the full workflow bundle or Pro access.

Best for

Frontend engineers and design-system maintainers running a WCAG 2.2 AA pass on a component library or a customer-facing app, and startups responding to an enterprise procurement checklist that requires an accessibility statement. Most useful as a pre-merge gate on UI components shipped by AI coding sessions, which routinely skip the accessibility scaffolding experienced frontend engineers apply reflexively.

Not ideal for

Anything that requires assistive-technology user testing — the audit catches the deterministic violations, not how a real screen-reader user experiences a flow. Also a poor fit for highly custom canvas or WebGL interfaces where the WCAG criteria don’t map cleanly and a specialist audit is needed.

Included in this purchase

  • Claude Code, Codex, OpenClaw, and Google Antigravity skill files.
  • Setup guidance for the right adapter in your workspace.
  • One-time license for the purchased skill version.

Setup

Plan for a short setup in the repository or workspace where the skill will run. Some coding familiarity helps for implementation-heavy outputs.

Claude CodeCodexOpenClawGoogle Antigravity

Related Skills

Code Generation & Review
Featured
Code Generation
Generates, reviews, debugs, and executes code in sandboxed workflows. Useful for implementation, refactoring, and technical problem solving.
Claude CodeCodexOpenClawGoogle Antigravity
codingdebuggingcode-review

$19.99

One-time license

View Skill
Product Documentation & Onboarding
API Documentation Generator
Generates structured, developer-ready API documentation from code, OpenAPI specs, route definitions, or descriptions. Produces reference docs, quickstart guides, error references, and code examples.
Claude CodeCodexOpenClawGoogle Antigravity
apidocumentationdeveloper-experience

$19.99

One-time license

View Skill
Code Generation & Review
Intelligent PR Composer
Generates pull request descriptions that capture context, alternatives considered, test plan, risk areas, and reviewer guidance beyond a simple diff summary. Useful for teams that want senior-quality PRs without manual authoring.
Claude CodeCodexOpenClawGoogle Antigravity
pull-requestscode-reviewgit

$19.99

One-time license

View Skill

Future Updates

This purchase includes the current version of the skill. If you want future adapter updates — meaning compatibility and packaging updates as supported platforms evolve — plus new catalog additions included automatically, upgrade to Pro.

Upgrade to Pro