Skip to content

Releases: AccessLint/skills

v0.4.1 — Chrome auto-launch

Choose a tag to compare

@ckundo ckundo released this 01 May 23:26

What's new

Chrome auto-launch — no manual setup required

audit_live now auto-launches Chrome minimized when no debug session is reachable. You no longer need to start Chrome with --remote-debugging-port=9222 before running a live-DOM audit.

The fallback chain is:

  1. Attach to an existing Chrome CDP session (if one is running)
  2. Auto-launch Chrome minimized via chrome-launcher
  3. Fall back to chrome-devtools-mcp (for auditing an existing authenticated browser session)

Installation

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

Or update an existing install:

claude plugin update accesslint

Full changelog: CHANGELOG.md

v0.3.1 — @accesslint/mcp@0.4.1 (CDN-loaded IIFE)

Choose a tag to compare

@ckundo ckundo released this 25 Apr 21:46

v0.3.1

Patch release. Picks up @accesslint/mcp@0.4.1, which replaces the inlined @accesslint/core IIFE in audit_browser_script with a CDN-loaded bootstrap.

Why

In v0.3.0, audit_browser_script returned a ~162 KB script — the audit caller plus the full @accesslint/core IIFE inlined. Agents had to relay that 162 KB through the browser MCP's evaluate_script parameter on every audit. It was costly in tokens and brushed against MCP message-size limits, sometimes triggering the agent to balk and try to read the IIFE from disk instead of pasting the script verbatim.

What changed

  • audit_browser_script payload: ~162 KB → ~1.4 KB (~100× smaller). The bootstrap now fetches the IIFE from https://cdn.jsdelivr.net/npm/@accesslint/core@<pinned>/dist/index.iife.js and evaluates it in-page. Version is pinned to whatever @accesslint/core shipped with the MCP, so behaviour stays in lock-step.
  • The script is now an async arrow (was sync) so it can await fetch. chrome-devtools-mcp and playwright-mcp both resolve the returned Promise correctly.

Known limitation

Pages with a strict Content-Security-Policy that disallows connecting to cdn.jsdelivr.net will see the bootstrap fetch fail. The static audit_html / audit_file tools are the fallback for those cases, and the audit-and-fix skill already degrades to the static flow when no browser MCP is available.

Upgrade

No action required if you install the plugin via the marketplace — npx -y @accesslint/mcp@0.4.1 resolves on first audit.

v0.3.0 — slim plugin around @accesslint/mcp@0.4.0

Choose a tag to compare

@ckundo ckundo released this 25 Apr 21:17

v0.3.0

The plugin moves to a thin orchestration layer over @accesslint/mcp@0.4.0. Most accessibility work now happens directly through the MCP's compact, filterable audit tools; the plugin keeps only the pieces that earn their context budget.

Highlights

  • One focused skill: accesslint:audit-and-fix — closes the audit → edit → verify loop. Live-DOM flow via the audit-live-page MCP prompt when a browser MCP is connected (chrome-devtools-mcp, playwright-mcp, puppeteer-mcp); static fallback via audit_diff + Edit when not.
  • Slimmed reviewer agent (413 → 91 lines) — now strictly multi-file pattern detection across a codebase. Single-file or single-URL audits go straight to the MCP.
  • Pinned to @accesslint/mcp@0.4.0 — adds audit_diff, quick_check, explain_rule, compact output mode, and rules / wcag filters across every audit tool.

What's removed

These were redundant once @accesslint/core covered the criteria directly and the live-DOM flow eliminated pseudo-transpiling:

  • accesslint:contrast-checker — replaced by audit_*({ wcag: ["1.4.3", "1.4.11"] }). The engine's distinguishable/color-contrast rule is authoritative.
  • accesslint:link-purpose — replaced by the engine's navigable/link-name rule (covers WCAG 2.4.4 / 4.1.2).
  • accesslint:use-of-color — replaced by the engine's distinguishable/link-in-text-block rule for the canonical 1.4.1 case; remaining patterns are routine LLM judgment during code review.
  • accesslint:refactor — subsumed by accesslint:audit-and-fix, which now closes the loop properly via the MCP's diff and live-DOM tools.
  • The reviewer agent's chrome-devtools URL workflow and GitHub-issue triage section — the former is owned by the audit-live-page MCP prompt; the latter was a triage feature stapled onto a code-review tool.

Migration

If you previously invoked the deleted skills:

Before After
Skill({ skill: "accesslint:contrast-checker" }) audit_html({ html, wcag: ["1.4.3", "1.4.11"], format: "compact" })
Skill({ skill: "accesslint:link-purpose" }) audit_html({ html, wcag: ["2.4.4"], format: "compact" })
Skill({ skill: "accesslint:use-of-color" }) audit_html({ html, wcag: ["1.4.1"], format: "compact" }) (or a code-review pass — the engine catches the canonical case)
Skill({ skill: "accesslint:refactor" }) Skill({ skill: "accesslint:audit-and-fix" })

The reviewer agent still works as before for codebase sweeps. URL audits now delegate to the audit-live-page MCP prompt instead of walking through chrome-devtools manually.

Requirements

  • @accesslint/mcp@0.4.0 (auto-installed by the plugin via npx).
  • For live-DOM audits: any browser MCP exposing navigate + evaluate. Recommended: chrome-devtools-mcp.

Local development

To iterate on the upstream MCP without republishing, override the plugin's MCP entry locally via ~/.claude/settings.local.json (already gitignored):

{
  "mcpServers": {
    "accesslint": {
      "command": "node",
      "args": ["/absolute/path/to/accesslint/mcp/bin/accesslint-mcp.js"]
    }
  }
}

Acknowledgments

The browser-script audit pattern (audit_browser_script + audit_browser_collect + audit-live-page prompt), released in @accesslint/mcp@0.3.0, made the plugin slim-down possible by eliminating the need for component-render pseudo-transpiling.