| name | a11y-default-review |
| description | Quick accessibility pass after UI changes — keyboard nav, focus visibility, semantic HTML, aria-live for async, reduced motion. The bar is WCAG 2.1 AA, the same bar I hold mateonunez.co to. Use when reviewing UI changes, when adding interactive components, or when user mentions "accessibility", "a11y", "WCAG", "screen reader", or "keyboard". |
A11y default review
The site works for everyone or it doesn't work.
Accessibility regressions ship by default unless someone is looking. After a UI change, run this checklist before declaring it done. The bar is WCAG 2.1 AA — the same bar mateonunez.co is built to.
This is a review skill, not a teaching skill. It assumes you know what aria-live does; it tells you when to look for it.
When this skill is active
You just edited:
- A React/Vue/Svelte component that renders interactive elements
- A page route or layout
- Anything with
onClick, onKeyDown, or focus management
- A form, modal, drawer, menu, tooltip, or toast
- Any element using
tabindex or aria-*
The checklist
Keyboard
Focus visibility
Semantics
ARIA (only if semantics aren't enough)
Motion + colour
Async + dynamic
Anti-patterns
<div onClick> — not focusable, not keyboard-activatable, not announced as a button. Use <button>.
<a> with href="#" for buttons — use <button>. Reserve <a> for navigation.
tabindex > 0 — breaks source-order focus. Almost always wrong.
aria-hidden="true" on a focusable element — invisible to AT but reachable by keyboard. Use inert instead, or remove from tab order.
- Auto-playing video/audio with sound — WCAG 1.4.2 violation.
- Placeholder-as-label. Placeholders disappear on focus and have low contrast. Use a real
<label>.
alt="image of a cat" — screen readers already announce "image". Just alt="a cat sleeping".
When you find issues
Don't bundle the fixes into an unrelated PR. Note them, prioritise (keyboard > semantics > ARIA polish), and either fix in a separate commit or surface to me as a follow-up. A11y debt is real debt — track it.
If it doesn't hold up for a keyboard-only or screen-reader user, it doesn't make the cut.