WCAG 2.2 Level AA accessibility patterns for React/HTML/CSS. Use when creating or modifying UI components, forms, navigation, tables, images, or any user-facing elements. Covers keyboard navigation, screen reader semantics, low vision contrast, voice access, inclusive language.
70
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Code must conform to WCAG 2.2 Level AA. Use people-first language ("person using a screen reader," not "blind user"); flag uncertain implementations with reasoning. Composite widget patterns (roving tabindex, aria-activedescendant) in REFERENCE.md.
tabindex on static elements; tabindex="-1" only for elements receiving programmatic focus..sr-only:not(:focus):not(:active) { clip-path: inset(50%); position: absolute; width: 1px; height: 1px; overflow: hidden; }.<nav> + <ul>, NOT menu/menubar roles. Toggle aria-expanded; roving tabindex across top-level items.An interactive element's accessible name must contain its visible label text — including when the name comes from aria-label.
aria-required="true".aria-invalid="true" + aria-describedby pointing at the message.aria-label.<table> for static data; role="grid" with role="gridcell" nested in role="row" for interactive grids (date pickers, calendars).
Unique per page, front-loading the unique info: "[Page] - [Section] - [Site]".
Run axe-core (axe-playwright or pa11y in CI); fix all high/critical findings and re-run until clean. Tab through the page to confirm order and visible focus. Accessibility Insights for manual passes.
fa0c341
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.