For shipping UI that everyone can use. Each pass scans only the routes you touched, fixes real barriers (labels, contrast, keyboard), and repeats until the checker reports zero violations.
Typical run: 15–40 min typical \u00b7 Copy any prompt box and hand it to your agent as-is.
Loops / A11y Audit Until Clean
List the changed routes (URLs or story paths) and the checker plus ruleset to use. Example: "Audit /signup and /checkout with axe-core, WCAG 2.2 AA. Report the violation count per route with no fixes yet, then stop."
Run the automated checker on ONLY the listed routes. Save the raw report to a11y-baseline.json. Report each violation with route, rule id, and affected element. Do not fix yet — stop after reporting.
Fix all violations of ONE rule across the scoped routes. Common order: names/labels, keyboard/focus, contrast, structure/landmarks. Re-state the rule, list files changed, then stop without re-scanning.
Re-run the identical audit command on the same routes. Save to a11y-02.json (then -03, etc.). Report fixed count, remaining count, and any NEW violations. Stop after reporting.
Tab through each scoped route using keyboard only: reach every interactive element, open and close any modal or menu, submit the form. Report any trap, invisible focus, or dead-end found, with the key sequence that triggers it. Then stop.
Save the final zero-violation report as a11y-final.json. Write a 5-line note: routes audited, ruleset, rounds taken, manual keyboard result, and files changed. Keep it under 120 words, then stop.
Symptom: rules get disabled to reach zero. Guardrail: any disabled rule needs a written reason plus a follow-up issue — never silent skips.
Symptom: clean report, broken checkout. Guardrail: freeze the route list in step 1; adding a route restarts the count.
Symptom: light mode is fine, dark mode fails. Guardrail: scan each shipped theme (light/dark, high-contrast if offered) before declaring clean.