Accessibility Skill Bundle
Planner, critic, tester, and perspective auditor — with 83 graded fixtures, 11 benchmarked models, and a team of 6 agents.
a11y-critic
11-phase investigation protocol. Reviews ARIA patterns, focus management, state communication. Read-only.
a11y-planner
9-phase planning protocol. Maps to WAI-ARIA APG patterns, designs keyboard models, focus management.
a11y-test
Five modes: Playwright keyboard tests, axe-core scans, agent-browser recon, keyboard-a11y-tester journey audits, virtual-screen-reader component SR assertions. Real browser events, not synthetic.
perspective-audit
7 access perspectives: screen reader, keyboard, low vision, cognitive, vestibular, auditory, environmental.
The critic serves at two checkpoints. Perspective-audit is escalated only when the planner or critic flags MEDIUM/HIGH alarm on specific access perspectives.
Critic: All Models Compared (33 fixtures)
| Platform | Model | Fixtures | Pass | Must-find | Status |
|---|---|---|---|---|---|
| Claude | Haiku 4.5 | 33 | 28/33 | 100% | 85% PASS |
| Claude | Sonnet 4.6 | 5 (esc) | 4/5 | n/a | 80% PASS |
| Claude | Sonnet 4.6 + think | 1 (esc) | 1/1 | n/a | 100% PASS |
| Ollama | qwen3:32b (BLIND 2026-07-13) | 33 | 33/33 | 97% | 100% PASS |
| Ollama | qwen3:32b (non-blind) | 33 | 33/33 | 96% | 100% PASS |
| Ollama | qwen3.5:27b | 17 | 16/17 | 100% | 94% PASS |
| Ollama | llama3.3:70b (BLIND 2026-07-13) | 33 | 33/33 | 92.6% | 100% PASS |
| Ollama | qwen3.5:latest (BLIND 2026-07-13) | 33 | 33/33 | 98.5% | 100% PASS |
| Ollama | llama3.3:70b (non-blind) | 7 | 7/7 | 86% | 100% PASS |
| Ollama | qwen3.5:latest (non-blind) | 7 | 7/7 | 86% | 100% PASS |
| OpenAI | GPT-5.2 | 33 | 30/33 | 100% | 91% PASS |
| OpenAI | GPT-5.2 low | 3 (esc) | 1/3 | n/a | 33% PASS |
| OpenAI | GPT-5.5 | 2 (esc) | 1/2 | n/a | 50% PASS |
| OpenAI | GPT-5.5 low | 1 (esc) | 1/1 | n/a | 100% PASS |
| Gemini | 2.5 Flash | 33 | 31/33 | 98% | 94% PASS — 1 CLEAN FP, 1 ADVERSARIAL miss; pro escalation quota-pending |
Perspective-Audit: qwen3:32b (25 fixtures, blind re-run 2026-07-13)
| Tier | Fixtures | Pass | Warn | Fail | Must-find |
|---|---|---|---|---|---|
| HAS-BUGS | 16 | 16 | 0 | 0 | 36/37 |
| ADVERSARIAL | 4 | 4 | 0 | 0 | 100% |
| CLEAN (blind) | 5 | 0 | 1 | 4 | n/a |
Blind CLEAN collapse: 4/5 clean fixtures draw false REVISE/BLOCK verdicts without the answer key (historical non-blind CLEAN was 4 WARN / 1 FAIL — answer-key-assisted). Detection tiers are blind-confirmed; receipts in evals/results/ollama-blind/README.md. Hint caveat (2026-07-16): blind lanes still saw inline // BUG: fixture hint comments — detection numbers are hint-assisted upper bounds (BENCHMARK.md hint-comment disclosure).
Bottom-up: Cheapest tier that passes all 33 fixtures
Key finding: Haiku catches every real bug (21/21 HAS-BUGS, 5/5 FLAWED). Failures are judgment calls — false positives on CLEAN code, wrong verdicts on ADVERSARIAL ambiguity. Detection is not the issue; calibration is.
Ollama (Local)
qwen3:32b recommended
Blind-confirmed: critic 33/33 PASS, 97% must-find, 0 FP. Caveat: perspective CLEAN verdicts inflate blind (4/5 false REVISE/BLOCK); detection numbers are hint-assisted upper bounds until a de-hinted re-run (fixtures carried inline BUG hint comments before 2026-07-16). 18.8 GB, ~2.6 min/fixture uncontended.
Claude API
Haiku + Sonnet escalation
100% pass via escalation. ~$0.65 for full suite. 67s avg per fixture.
Codex / OpenAI
GPT-5.2 → 5.5-low
GPT-5.2 passed 30/33. Escalation cleared the remaining CLEAN fixtures at GPT-5.5-low.
Gemini
2.5 Flash via gemini CLI
31/33 (94%) via gemini CLI; raw artifacts committed; pro escalation pending quota.
bench-runner
Executes benchmarks across Claude API, Codex/OpenAI, local Ollama, and other hosted adapters when present; runs scoring scripts and reports raw results.
bench-reporter
Updates BENCHMARK.md, README.md, and EVAL-GAPS-PLAN.md with results and analysis.
bench-reviewer
Read-only quality auditor. Checks fixture/rubric consistency, scoring accuracy, result validity.
fixture-builder
Creates and enriches fixture triplets (.md, .metadata.yaml, .rubric.yaml) across all 3 suites.