A11y Audit Until Clean
Run automated accessibility checks on changed routes, fix violations, and repeat until the audit is clean.
4 copies · 13 views
by loops!
Use loop copies the kickoff. Share copies the loop link. Open in Cursor / Claude Code only pre-fill that prompt — they do not install hook files. Download loop saves a README and kickoff into .cursor/loops/a11y-audit-until-clean/ — no hooks required. Full install guide
- Do not modify the check command or exit criteria to force success
- Do not skip, disable, or bypass checks to pass the exit condition
- If stuck after several iterations, stop and report blockers instead of gaming metrics
Two separate pieces
- Kickoff prompt — tells the agent the goal, check command, exit condition, and how to self-pace between passes.
- 1
Copy or open the kickoff prompt
Click Use loop to copy the kickoff into your clipboard. Open in Cursor and Open in Claude Code only open the agent with that prompt — they do not configure automation for you.
- 2
Paste into your coding agent
Start a chat in Cursor, Claude Code, Codex, or any agent. Paste the kickoff. The prompt includes the goal, iteration limit, shell check, and first step.
- 3
Agent self-paces until done
The agent runs the loop: act → run check command → read output → repeat until the exit condition is met or max iterations is reached. No install step is required for prompt-only loops.
Full guide with Cursor /loop notes: How to install loops
1. Run a11y audit
Run axe, pa11y, or eslint-plugin-jsx-a11y on changed pages. List violations with selectors.
npm run test:a11y
2. Fix violations
Fix labels, contrast, focus order, and ARIA roles. Prefer semantic HTML over aria hacks.
Start the "A11y Audit Until Clean" loop. Goal: zero serious accessibility violations on changed UI Max iterations: 8 Between iterations run: npm run test:a11y Exit when: a11y audit exits 0 Step 1: Run the a11y audit on changed routes. Fix each violation, prioritizing keyboard and screen reader issues. Self-pace this loop. After each iteration, run the check command, read the output, and only continue if the exit condition is not met. Stop when the exit condition passes or max iterations is reached. Give a short status update each pass.
Related loops
Start the "De-Sloppify Pass" loop. Goal: recent changes are clean, minimal, and convention-aligned Max iterations: 4 Between iterations run: npm run lint && npm test Exit when: review finds no slop and checks pass Step 1: Review the diff for debug code, dead branches, and naming issues. Fix them with minimal diffs. Self-pace this loop. After each iteration, run the check command, read the output, and only continue if the exit condition is not met. Stop when the exit condition passes or max iterations is reached. Give a short status update each pass.
Start the "Coverage Until Threshold" loop. Goal: coverage meets the target threshold (default 80%) with all tests passing Max iterations: 12 Between iterations run: npm test -- --coverage Exit when: coverage threshold is met and tests exit 0 Step 1: Run coverage. Add focused tests for the biggest uncovered gaps, then repeat. Self-pace this loop. After each iteration, run the check command, read the output, and only continue if the exit condition is not met. Stop when the exit condition passes or max iterations is reached. Give a short status update each pass.
Start the "Format Until Clean" loop. Goal: formatter runs cleanly with no remaining diff Max iterations: 5 Between iterations run: npm run format Exit when: format command succeeds and git diff is empty Step 1: Run the formatter. Fix any issues it cannot auto-fix, then repeat. Self-pace this loop. After each iteration, run the check command, read the output, and only continue if the exit condition is not met. Stop when the exit condition passes or max iterations is reached. Give a short status update each pass.