@accesslint/use-of-color

A WCAG 2.2 accessibility toolkit for Claude Code that audits, diffs, and fixes a11y issues in HTML, components, and live pages — backed by the `@accesslint/mcp` audit engine.

View in AI SkillSafe app
Scanned · no findings
0 downloads
0 stars
0 demos
SKILL.md

AccessLint — web accessibility (a11y) skills

Agent Skills for finding and fixing web accessibility issues, powered by @accesslint/core. They cover the WCAG 2.2 audit workflow end to end: automated scanning, hands-on keyboard and screen-reader checks, WCAG-EM conformance auditing, remediation, and regression diffing.

Works with any agent the skills CLI supports — Claude Code, Cursor, Codex, Copilot, Windsurf, Gemini, Cline, Amp, and more.

Keywords: accessibility · a11y · WCAG 2.2 · Section 508 · screen reader · keyboard navigation · color contrast · ARIA · inclusive design

The skills

Five skills, each with one responsibility. Each finding is graded on two axes — severity (user impact) and evidence basis (● verified · ◐ confirm with a human · ○ human-required).

Skill Scope Does
accessibility-scan one page Runs the rule engine against the live DOM. Returns a worklist: selector, file:line (symbol) where source mapping is available, evidence, fix directive. Locates; doesn't edit.
accessibility-inspect one page Drives the page through what the engine can't decide: keyboard and focus order, names/roles/states, reflow and zoom, reduced motion, form errors, target size. Assesses; doesn't edit.
accessibility-audit whole site WCAG-EM: defines scope, samples representative pages and flows, runs the other two per page, reports per-criterion conformance as pass, fail, or undetermined.
accessibility-fix a target or worklist Baseline, edit, verify. Applies mechanical fixes as given; leaves TODOs for visual or contextual judgment. Only fixes.
accessibility-diff a change Diffs a page against a baseline — uncommitted changes by default, or a branch. Reports only what the change introduced or fixed.
LOCATE                                 ASSESS                 REMEDIATE           GUARD
accessibility-scan    (automated) ┐
                                  ├─► accessibility-audit ─► accessibility-fix ─► accessibility-diff
accessibility-inspect (manual)    ┘   (WCAG-EM)              (edit→verify)       (regression)

The methodology they follow — WCAG-EM, the two grading axes, the boundary against standing in for real assistive-technology users — is in plugins/accesslint/skills/shared/methodology.md.

Install

Any agent (skills CLI)

npx skills add AccessLint/skills

Installs the five skills. accessibility-scan and accessibility-diff work immediately (they shell out to @accesslint/cli). accessibility-fix needs the MCP server below; accessibility-audit and accessibility-inspect also use it for rule metadata (list_rules / explain_rule) when it's available.

Claude Code (plugin)

claude plugin marketplace add accesslint/skills
claude plugin install accesslint@accesslint

Adds the skills and the bundled MCP server together, and namespaces the skills as accesslint:accessibility-scan and so on.

MCP server on its own

{
  "mcpServers": {
    "accesslint": {
      "command": "npx",
      "args": ["-y", "@accesslint/mcp@latest"]
    }
  }
}

Use

Ask in plain language — "audit this site for accessibility", "is localhost:3000 accessible", "fix the a11y issues in Nav.tsx" — or invoke a skill directly if your agent supports slash commands:

/accessibility-scan http://localhost:3000/dashboard
/accessibility-audit --level AA http://localhost:3000/
/accessibility-diff --branch main

Every skill takes a URL, a named target from accesslint.config.json, or nothing (the default target). Run npx @accesslint/cli init to set targets up once, then drop the URL.

Flag Skills Purpose
--selector <css> scan, inspect, audit, diff Scope to one component
--wait-for <css> scan, inspect, audit, diff Gate on async content or a rebuild
--include-aaa scan, diff Include AAA rules
--disable <rules> scan Skip specific rules
--level AA|AAA audit Conformance target (default AA)
--deep inspect Drive every triggered checkpoint through its full procedure (default is the lean ledger pass)
--branch [<name>] diff Diff against a branch instead of uncommitted changes

Requirements

Most a11y violations only appear after JS runs, so these skills work against a rendered page. scan, diff, audit, and fix reach the live DOM over CDP, auto-launching Chrome when no debug session is reachable — no setup.

accessibility-inspect drives the page, which needs a browser MCP (chrome-devtools, Playwright, or Puppeteer). Without one it runs the static checks and hands off the rest. In Claude Code:

claude mcp add chrome-devtools npx -- -y chrome-devtools-mcp@latest

For a page behind a login, start a headed debuggable Chrome (npx @accesslint/chrome ensure --headed) and sign in there; accessibility-fix attaches to that session instead of launching its own.

MCP tools

The plugin bundles @accesslint/mcp, which backs accessibility-fix's baseline and verify runs and supplies rule metadata. The tools are also callable directly.

Tool Purpose
audit_live Live-DOM audit over CDP; auto-launches Chrome if needed
audit_html Audit an HTML string or file
list_rules List the active rule set
explain_rule One rule in full: WCAG criterion, fixability, remediation guidance

Installed standalone they are mcp__accesslint__<tool>; installed as a Claude Code plugin, mcp__plugin_accesslint_accesslint__<tool>.

The hosted connector

The server this plugin bundles runs on your machine. It drives a Chrome you can watch, reaches localhost, staging and production alike, and keeps nothing — each call audits and returns.

AccessLint's hosted connector is a different server for the work that needs memory: a user journey across several pages, a site re-checked over time, findings that persist, and a report someone else can read. There those are flows, runs and violations. You add it in a chat client — Claude.ai, ChatGPT, or any MCP client — as a custom connector rather than installing it from npm, and it signs you in to an accesslint.com account:

https://mcp.accesslint.com/mcp

It cannot reach localhost. Both servers register under the name accesslint; this is the one with a way into your dev server.

WCAG coverage

Level A and AA — perceivable (alt text, contrast, structure), operable (keyboard, focus), understandable (labels, language), robust (ARIA, accessible names). AAA rules are opt-in via --include-aaa. Run list_rules for the active set in your installed version.

The engine catches what is mechanically detectable. Content clarity, announcement quality, keyboard-flow coherence, and lived experience need a person — these skills name and hand those off rather than guessing at them.

Resources

License

MIT

Embed badges

Add these to your README to show the skill's verification status.

SkillSafe verified badge
Verified badge
[![SkillSafe verified badge](https://api.skillsafe.ai/v1/badge/@accesslint/use-of-color/verified)](https://skillsafe.ai/skill/@accesslint/use-of-color/)
Installs badge
Installs badge
[![Installs badge](https://api.skillsafe.ai/v1/badge/@accesslint/use-of-color/installs)](https://skillsafe.ai/skill/@accesslint/use-of-color/)
Scan badge
Scan badge
[![Scan badge](https://api.skillsafe.ai/v1/badge/@accesslint/use-of-color/scan)](https://skillsafe.ai/skill/@accesslint/use-of-color/)
Eval pass rate badge
Eval pass rate
[![Eval pass rate badge](https://api.skillsafe.ai/v1/badge/@accesslint/use-of-color/eval)](https://skillsafe.ai/skill/@accesslint/use-of-color/)