a11y-ci Block regressions. Not developers.
CI gate for accessibility scorecards. Severity thresholds, baseline regression detection, time-boxed allowlists, and low-vision-first What/Why/Fix output.
Install
pip install a11y-ci
Gate
a11y-ci gate --current a11y.scorecard.json
Baseline
a11y-ci gate --current current.json --baseline baseline.json
Core Features
Accessibility linting is only useful if it blocks regressions.
Severity Gate
Fail the build when findings meet or exceed your configured severity threshold. Default: serious.
Baseline Regression
Compare against a saved baseline. Fail if serious+ count increases or new serious+ IDs appear.
Time-Boxed Allowlists
Suppress known findings temporarily. Expired entries automatically fail the gate — no permanent suppressions.
Low-Vision-First Output
Every message follows the What/Why/Fix contract. No cryptic status codes or one-liners.
Fully Deterministic
No network calls. Same input always produces the same result. Runs anywhere Python runs.
Clear Exit Codes
Exit 0 = passed, exit 2 = input error, exit 3 = policy failure. No ambiguity.
Quick Start
Install & gate
# Install
pip install a11y-ci
# Generate scorecard with a11y-lint
a11y-lint scan output.txt --json > a11y.scorecard.json
# Gate on the scorecard
a11y-ci gate --current a11y.scorecard.json With baseline + allowlist
# Full pipeline
a11y-ci gate \
--current a11y.scorecard.json \
--baseline baseline/a11y.scorecard.json \
--allowlist a11y-ci.allowlist.json \
--fail-on moderate Severity Levels
Exit Codes
CLI Reference
a11y-ci gate --current PATH
Gate on a scorecard. Fails if findings meet or exceed the severity threshold.
--baseline PATH
Compare against a saved baseline. Fails on regression.
--allowlist PATH
Suppress known findings temporarily. Expired entries auto-fail.
--fail-on SEVERITY
Minimum severity to fail on: info | minor | moderate | serious | critical (default: serious).