Skip to main content

Accessibility Diff (AccessLint)

Fleet adaptation (read first)​

Imported from AccessLint (owner directive 2026-10-07) as the markdown audit method only. The executable layer is declined by owner direction (2026-10-07): the @accesslint/cli and @accesslint/chrome packages, the AccessLint MCP server, any browser-MCP wiring, and the hosted connector will not be adopted — no fleet code goes out to a third party. The method on this page is in use; local-only execution is under evaluation by the research service. Where the source text drives its own engine, this page's method — the tiers, evidence standards, checkpoints, and reporting formats — applies unchanged with whatever scanning and browser tooling the fleet has sanctioned. The shared methodology is in this skill's supporting files (shared/methodology.md) and is the authority for severity, evidence basis, and honesty conventions across all five AccessLint pages.

Default branch: !git symbolic-ref refs/remotes/origin/HEAD --short 2>/dev/null | sed 's|.*/||' || echo main

Report only what changed. Locate; don't fix.

Shared grounding and honesty conventions: the shared methodology in this skill's supporting files (docs/15-skills/_support/accesslint/accessibility-diff/shared/methodology.md).

Parse $ARGUMENTS: if --branch <name> is present, remove it and use branch mode (no value means the default branch above). The rest is the target: a URL, a config target name, or empty for the default target from accesslint.config.json. If it's empty and there's no config, ask for a URL.

1. Audit​

Start the sanctioned scanning engine against a debuggable browser session (engine execution excluded from this import — see the Fleet adaptation section).

Stash mode (default; uncommitted changes). Tell the user first: "Running in diff mode — stashing your changes to capture a baseline, then restoring. Your working tree will be fully restored." If git stash push fails, warn and exit.

git stash push -u -m "accesslint-diff-baseline"
scan <target> and store the result as the baseline snapshot
git stash pop && sleep 2
scan <target> against the baseline snapshot and capture the diff as structured data

Branch mode (--branch <name>). Tell the user first: "Diffing against <name> — checking out that branch to capture a baseline, then restoring. Your working tree will be fully restored." Branch switching triggers a rebuild but not a browser reload, so the CLI opens a fresh tab each run to read the current build. Use --wait-for "<selector>" to hold the audit until the rebuild is ready; without it, warn that a slow build may give a stale baseline.

git diff --quiet && git diff --cached --quiet || git stash push -u -m "accesslint-diff-branch"
git checkout <branch>
scan <target> and store the result as the baseline snapshot [--wait-for "<selector>"]
git checkout - && git stash pop 2>/dev/null
scan <target> against the baseline snapshot and capture the diff as structured data [--wait-for "<selector>"]

Pass --selector and --include-aaa to both runs.

2. Report​

Accessibility diff — http://localhost:3000/ vs main (94 rules, live DOM)
2 new · 1 fixed · 4 pre-existing hidden

New — Critical
- color-contrast — 2.1:1 (needs 4.5:1), #bbb on #fff
where: main > p.subtitle fix: darken to #767676
Fixed
- img-alt — <img src="old.jpg"> (no longer present)

For each new violation: where (selector verbatim, plus file:line (symbol) if source is present; don't fabricate), evidence, and fix (mechanical change or NEEDS HUMAN).

Don't edit. For fixes, apply the mechanical ones and re-run accesslint:accessibility-diff to verify; for bulk work hand off to accesslint:accessibility-fix.

3. Tear down​

Stop any browser or engine process this run started.

Notes​

  • ensure determines the port; don't hardcode 9222.
  • CLI exit 2 means a bad URL or target, or the page never loaded; check the dev server.
  • A target name resolves the same in both runs only if accesslint.config.json is unchanged across the stash or checkout. If your changes touch the config, pass an explicit URL.
  • Stash mode: sleep 2 covers most HMR cases; if the baseline looks identical to current, add --wait-for "<selector>".
  • Branch mode: no HMR; the CLI opens a fresh tab each run, and --wait-for is the rebuild gate.
  • Large DOM changes between runs cause selector drift; re-run accesslint:accessibility-scan for the full picture.

Supporting files: this skill's supporting files are held in the docsite at docs/15-skills/_support/accesslint/accessibility-diff/ — fetch them fresh from jknash/docsite main alongside this page.

Source: AccessLint/skills · plugins/accesslint/skills/accessibility-diff/ @ 2e9d73366783 · view source · Imported 2026-10-07 under the owner's directive (public-repo content approved for internal fleet use; upstream asserts MIT in its README and plugin manifests, no LICENSE file ships). Method only — CLI, MCP server, and hosted connector excluded pending security review.