accesslint-diff

SkillDev tools

accesslint-diff is a skill that lets an AI agent diff a live page's accessibility violations against a baseline. By default it compares uncommitted changes using a stash-based workflow, or it can diff against a branch with --branch. It reports only new violations introduced, violations fixed, and a count of pre-existing issues, so the agent can focus on what a change actually affected.

Use accesslint-diff in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add accesslint-diff and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the accesslint-diff skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Have a git repository with a live web page you want to audit, and a working git setup for stashing or switching branches.

accesslint-diffStart free

What your AI can do with it

  • Diff a live page's accessibility violations against uncommitted changes
  • Diff against a branch by passing --branch [<name>]
  • Report new violations introduced, violations fixed, and pre-existing count
  • Run a full audit with no diffing using the `scan` command
  • Locate issues and suggest fixes without editing code itself
  • Run audits in a headless Chrome browser via the AccessLint CLI

Getting started

  1. Have a git repository with a live web page you want to audit, and a working git setup for stashing or switching branches.
  2. Add the accesslint-diff skill to your agent so it can be invoked when you ask for an accessibility diff.
  3. Ask the agent to audit a page, providing the URL; if no URL is given, the agent will ask for one.
  4. Optionally pass --branch <name> to diff against a branch instead of uncommitted changes; with no value, the default branch is used.
  5. Review the report of new violations, fixed violations, and pre-existing count, then apply suggested fixes yourself.

What this skill tells your AI

The instructions your AI receives, as published by sickn33/agentic-awesome-skills in skills/accesslint-diff/SKILL.md and read by ahel’s review.

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. If no URL in $ARGUMENTS, ask for one.

Parse $ARGUMENTS: strip --branch <name> if present → branch mode. If --branch has no value, use the default branch above. Remainder is the URL.

When to Use

  • Use this skill when the task matches this description: Diff a live page's accessibility violations against a baseline — by default compares uncommitted changes (stash-based), or pass --branch [] to diff against a branch. Reports only new violations introduced, violations fixed, and pre-existing count. Use scan for a full audit with no diffing.

1. Audit

PORT=$(npx -y @accesslint/chrome@latest ensure | node -e 'process.stdin.on("data",d=>process.stdout.write(""+JSON.parse(d).port))')

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"
npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --update-snapshot
git stash pop && sleep 2
npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --format json

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 — the CLI opens a fresh tab each time so it always reads the current build. Use --wait-for "<selector>" to gate the audit until the rebuild is ready; without it, warn the user that a slow build may yield a stale baseline.

Keep the branch value in the quoted branch variable below; never paste or evaluate a branch name as shell syntax.

git diff --quiet && git diff --cached --quiet || git stash push -u -m "accesslint-diff-branch"
branch="<branch>"
git check-ref-format --branch "$branch" >/dev/null
case "$branch" in -*) echo "Refusing option-like branch name: $branch" >&2; exit 1 ;; esac
git rev-parse --verify --quiet "$branch^{commit}" >/dev/null
git switch "$branch"
npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --update-snapshot [--wait-for "<selector>"]
git switch - && git stash pop 2>/dev/null
npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --format json [--wait-for "<selector>"]

Pass --selector, --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)

Each new violation: where (selector verbatim + file:line (symbol) if source present — never fabricate), evidence, fix (mechanical change or NEEDS HUMAN).

Don't edit. For fixes: apply mechanical ones then re-run accesslint:diff to verify; for bulk work hand off to accesslint:audit.

3. Tear down

npx -y @accesslint/chrome@latest stop --all  # skip if ensure reported "managed":false

Gotchas

  • ensure always determines the port — never hardcode 9222.
  • CLI exit 2 = bad URL or page never loaded; check the dev server.
  • Stash mode: sleep 2 covers most HMR cases; if baseline looks identical to current, add --wait-for "<selector>".
  • Branch mode: no HMR — CLI opens a fresh tab each run. --wait-for is the rebuild gate.
  • Heavy DOM changes between runs cause selector drift — re-run with accesslint:scan for the full picture.

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.

Signals

GitHub stars
47k
Forks
7k
Last commit
Sep 2026

Others that do the same job

Questions

Does it fix the issues it finds?
No. It locates issues and suggests fixes but does not edit code itself.
How does the default diff work?
It stashes uncommitted changes to capture a baseline scan, restores your work, re-scans, and reports only what changed. Your working tree is fully restored.
Advanced
Item type
skill
Key
accesslint-diff-sickn33
Source
github.com/sickn33/agentic-awesome-skills