Integrations
Five ways in. For the four that scan pages, the choice comes down to one question: can the page be reached from the internet without signing in?
If it can, the hosted API scans it and there is nothing to install in your app. If it cannot —
a checkout behind a login, a review app, anything on localhost — then no hosted
scanner can see it, ours included, and the check has to run inside your own test suite.
GitHub Action
One step in a workflow. Fails the build on new violations, annotates the offending lines and keeps a single pull-request comment up to date instead of adding one per run.
CLI
npx @skiplink/cli scan <url>. Needs Node 20 and nothing else. Distinct
exit codes for "this page has a new violation" and "we could not find out", so a pipeline
can retry one and block on the other.
Playwright
await expectNoNewViolations(page) at any point in a test — signed in, form
filled, three steps into a flow.
Cypress
cy.checkA11y(), with the baseline handled in Node where the filesystem is.
MCP server
Explain any axe-core rule, read a project's baseline, scan a URL — from Claude Code, Cursor or anything that speaks MCP. Four of the five tools need no API key.
One baseline, whichever route
Every route computes violation identity from the same shared code, and they all read and
write the same .skiplink/baseline.json. A violation accepted by the Action stays
accepted in a Cypress run. Entries are keyed on URL path, so the same file works
across localhost, a per-branch preview deployment and production.
This is load-bearing enough that there is a test in our repository which scans one page through two different routes and fails if the fingerprints disagree.
Nothing here yet for your setup?
The API is a plain HTTP endpoint that returns JSON — the docs are short, and the baseline format is a documented file you can write yourself. If you want an adapter for something else, say which and it will get built.
What a green check means
No automatically detectable violations were found. Automated testing covers a subset of WCAG, so a green check is a floor, not a conformance claim. The long version.