Skip to main content

Auditing Accessibility

Plugin: tsh-product-testing
Invoke: /tsh-product-testing:auditing-accessibility (Claude also loads it when the work matches its description)
Used by: no agent preloads it and no skill delegates to it. writing-playwright-e2e-tests and ensuring-accessibility point to it as a related skill.

Audits a page, component or flow against WCAG 2.1 AA and reports findings a developer can fix without further research: the success criterion, the exact element, how to reproduce it, and the concrete correction. WCAG 2.1 AA is the assumed baseline; if the project commits to AAA or a specific regulation, that one applies and the report says which.

Audit or build​

The repository splits accessibility work by outcome. This skill audits what exists. Implementing accessible components, such as a modal, menu, tabs, combobox or form, belongs to ensuring-accessibility in tsh-stack-frontend. The skill itself notes that the same criteria apply when building a component: audit late and every finding is a rework.

Key Areas​

AreaCoverage
ApplicabilityThe repository's own accessibility conventions and any stated conformance target outrank the skill's defaults. Where a component library wraps native elements, the audit reads the rendered HTML, not the JSX
Semantics and structureElement choice (<button> for actions, <a href> for navigation), landmarks with exactly one <main>, one <h1> and no skipped heading levels, lists, a <section> that needs a heading
Keyboard and focusReachability, tab order following DOM order, per-widget key behaviour, focus visibility, programmatic focus on dialog open and close and on route change, focus traps
ARIA correctnessOnly the patterns that need ARIA, the HTML-to-ARIA fallback table, and what never to do, such as aria-hidden="true" on anything focusable
Contrast and colour4.5:1 for normal text, 3:1 for large text, component boundaries and informative non-text content, focus indicators at 3:1, both light and dark themes, never colour alone
Zoom and reflow200% text resize (SC 1.4.4) and 400% zoom at 320px width without horizontal scrolling (SC 1.4.10); data tables are the stated exception
RTLLogical CSS properties, dir="rtl" on the root, flipping directional icons by meaning, testing both directions
Automated scannpx @axe-core/cli <URL>, violations grouped by impact. The skill states that automated scanning catches roughly a third of what matters and a clean run is never a passing grade

Non-negotiable rules​

SeverityRule
MUSTName the WCAG success criterion for every finding
MUSTLocate every finding in the source or reproduce it in a browser
MUSTTreat any keyboard-inoperable interactive element as a blocker
MUSTPrefer native HTML semantics over ARIA in every recommendation
MUSTCheck both light and dark themes where supported, and both LTR and RTL where the app is localized
NEVERReport information conveyed by colour alone as acceptable, whatever the contrast ratio
NEVERPad a clean audit with speculation

How it works​

  1. Identify the scope: a component, a page or a whole flow. Ask if unclear.
  2. Check semantic structure: elements, landmarks, heading order.
  3. Walk through the page with the keyboard.
  4. Check focus management.
  5. Check ARIA for correctness, conflicts and duplicated native semantics.
  6. Check contrast and colour.
  7. Check zoom and reflow.
  8. Run the automated scan (ask for the URL if there is none), group violations by impact and re-run after fixes.
  9. Report, ordered by severity. A repeated violation becomes one finding with a list of affected elements.

The report also states what could not be checked, so silence is not read as a pass. When the audit is written for people outside the team, such as a client report or a conformance statement, the skill applies writing-technical-documents from tsh-core.

References​

The skill loads these on demand:

ReferenceLoaded when
Semantics and structureAuditing markup, or choosing elements for a new component
Keyboard and focusThe target has any interactive control, dialog or custom widget. The skill says to read it before auditing any interactive control
ARIA patternsConsidering an ARIA attribute, or auditing existing ARIA
Contrast, reflow and RTLThe change is visual, or the app is localized

Source​

plugins/tsh-product-testing/skills/auditing-accessibility/SKILL.md