Skip to content
Beta Multi-model support (OpenAI, Gemini, and more) launching soon.

accessibility-compliance-monitor

Installable Ships in accessibility-auditor — or copy the raw skill below.
Open Claude.ai

Paste into Claude Code, Claude.ai, the desktop app, or the browser extension — ⌘/Ctrl+V.

ExperimentalNo security review

Accessibility Compliance Monitor

Run a recurring accessibility health-check, compare against a saved baseline, report regressions, and generate a compliance status dashboard for the specified regulation(s).

Intended for use in:

  • Managed services sprints — run monthly or after each release
  • Ongoing client programmes — track progress toward full WCAG 2.2 AA conformance
  • CI/CD regression guard — integrate into release pipelines to block regressions

Usage

/accessibility-compliance-monitor <URL or sitemap> [--baseline <path>] [--output dashboard|regression|full] [--regulation ada|eaa|508|all]

Examples:

  • /accessibility-compliance-monitor https://localhost:3000 --baseline .a11y/baseline.json --output regression
  • /accessibility-compliance-monitor sitemap.txt --output dashboard --regulation eaa
  • /accessibility-compliance-monitor https://localhost:3000 — first run, creates baseline

Phase 1 — Determine Run Mode

First run (no baseline): Run the axe scan, save results as the baseline. Produce the initial compliance report. Output: baseline-<YYYY-MM-DD>.json and a full audit report.

Subsequent runs (baseline exists): Run the axe scan, compare against baseline, report regressions and improvements. Output: regression report + updated dashboard.


Phase 2 — Axe Scan

If a single URL is provided:

npx @axe-core/cli <URL> \
  --tags wcag2a,wcag2aa,wcag21a,wcag21aa,wcag22aa \
  --reporter json \
  --save .a11y/scan-<YYYY-MM-DD>.json

If a sitemap or multi-URL list is provided, iterate over each URL:

while IFS= read -r url; do
  slug=$(echo "$url" | sed 's|https\?://||;s|/|-|g')
  npx @axe-core/cli "$url" --tags wcag2a,wcag2aa,wcag21a,wcag21aa,wcag22aa \
    --reporter json --save ".a11y/pages/$slug-<YYYY-MM-DD>.json"
done < sitemap.txt

Merge per-page results into a single aggregate JSON for comparison.


Phase 3 — Regression Detection

Compare the current scan against the baseline to identify:

New violations (regressions): Violations present in the current scan that were NOT in the baseline. These represent accessibility regressions introduced since the last audit.

Resolved violations (improvements): Violations present in the baseline that are NOT in the current scan. These represent successfully remediated issues.

Persistent violations: Violations present in both baseline and current scan. These are known open issues that have not yet been addressed.

# Extract violation IDs from JSON files using jq
BASELINE_IDS=$(jq -r '.violations[].id' .a11y/baseline.json | sort)
CURRENT_IDS=$(jq -r '.violations[].id' .a11y/scan-<date>.json | sort)

# New regressions
comm -13 <(echo "$BASELINE_IDS") <(echo "$CURRENT_IDS")

# Resolved issues
comm -23 <(echo "$BASELINE_IDS") <(echo "$CURRENT_IDS")

Regression gate rule: If any critical or serious regressions are detected, mark the health-check as FAILED. Moderate/minor regressions are flagged but do not fail the check.


Phase 4 — Compliance Status Dashboard

Generate a dashboard in the requested format. Map axe violation counts and AI-judged criterion status to regulatory conformance levels.

Regulatory mapping

Regulation Minimum bar RBA target
ADA (USA) WCAG 2.1 AA WCAG 2.2 AA
Section 508 (US Federal) WCAG 2.0 AA WCAG 2.2 AA
EAA / EN 301 549 (EU) WCAG 2.1 AA (Clause 9) WCAG 2.2 AA
AODA (Ontario) WCAG 2.0 AA WCAG 2.1 AA

WCAG 2.2 AA conformance ⊇ WCAG 2.1 AA ⊇ WCAG 2.0 AA — satisfying 2.2 AA satisfies all the above.

Dashboard output (--output dashboard)

# Accessibility Compliance Dashboard
**Product:** <name>
**Scan date:** <YYYY-MM-DD>
**Baseline date:** <YYYY-MM-DD>
**Pages scanned:** N
**Regulation(s):** <ada | eaa | 508 | all>

## Status

| Regulation | Status | Blocker count | Last reviewed |
|---|---|---|---|
| WCAG 2.2 AA | ⚠ Partially Compliant | N critical | <date> |
| ADA | ⚠ At Risk | N critical | <date> |
| EAA (EN 301 549) | ⚠ At Risk | N critical | <date> |
| Section 508 | ✅ Baseline Met | 0 critical | <date> |

## Finding Trend

| Sprint / Date | Critical | Serious | Moderate | Minor | Total |
|---|---|---|---|---|---|
| Baseline (<date>) | N | N | N | N | N |
| <date> | N | N | N | N | N |
| Today (<date>) | N | N | N | N | N |
| **Change** | **▼N** | **▼N** | **▲N** | **▼N** | **▼N** |

## Regressions Introduced (Action Required)

| Finding | SC | Severity | Page | Introduced |
|---|---|---|---|---|
| <description> | <SC> | critical | <URL> | <date> |

## Issues Resolved This Period

| Finding | SC | Resolved |
|---|---|---|
| <description> | <SC> | <date> |

## Open Known Issues

| Finding | SC | Severity | Sprint target |
|---|---|---|---|
| <description> | <SC> | serious | Sprint N |

Phase 5 — Regression Report (--output regression)

Focused output for CI/CD pipeline integration or post-release review:

# Accessibility Regression Report
**Status:** PASSED / FAILED
**Scan date:** <YYYY-MM-DD>
**Compared to baseline:** <YYYY-MM-DD>

## Summary
- New critical violations: N (FAILED if > 0)
- New serious violations: N
- Resolved since baseline: N
- Net change: ▼N / ▲N

## New Violations (Regressions)
<table of new violations with SC, element, and severity>

## Resolved Violations
<table of resolved findings>

Phase 6 — EAA-Specific Compliance Statement Data

For EU-market products subject to the European Accessibility Act (enforcement active since June 28, 2025), the EAA requires an Accessibility Statement published on the website.

Extract data for the statement:

## EAA Accessibility Statement Data

**Compliance status:** Fully compliant / Partially compliant / Not compliant
**Standard:** EN 301 549 v3.2.1 (WCAG 2.1 AA Clause 9) — evaluated against WCAG 2.2 AA
**Evaluation date:** <YYYY-MM-DD>
**Next evaluation date:** <YYYY-MM-DD + 12 months>
**Known non-conformances:**
  <list of open critical/serious findings with target remediation dates>
**Enforcement body:** <relevant national authority>
**Feedback mechanism:** <URL or email for accessibility feedback>
**Escalation path:** <enforcement body contact link>

Note: The Accessibility Statement must be updated annually or within 30 days of a significant product change. The EAA national enforcement bodies actively monitor statements for currency.


Phase 7 — Baseline Management

After each run, offer to update the baseline:

Current scan produced N total violations.
Baseline has N violations.
Net improvement: ▼N resolved, ▲N new.

Update baseline to today's scan? (y/n)

When updating:

  • Archive the old baseline: .a11y/archive/baseline-<old-date>.json
  • Save new baseline: .a11y/baseline.json
  • Append a line to .a11y/history.md with date, total violations, and critical count.

Phase 8 — Managed Services Schedule Recommendation

For managed services engagements, recommend a cadence based on the client's regulatory exposure:

Exposure Recommended cadence
Active EAA enforcement (EU market) Monthly scan + quarterly full audit
ADA litigation risk (US, > 10k monthly users) Quarterly scan + annual full audit
Internal tools only Semi-annual scan
Post-launch stabilisation Weekly scan for first 90 days

Output this recommendation at the end of the first-run report.


Reference files

See accessibility-wcag-scan/reference.md for the full WCAG 2.2 AA criterion list. See accessibility-vpat-acr/SKILL.md for producing a formal ACR from the dashboard data.

Technical details
Plugin
accessibility-auditor
Author
Dakota Smith
Skill name
accessibility-compliance-monitor
Maturity
experimental
Security review
No security review
Owners
  • design
  • engineering
  • security
Argument hint
<URL or site-map-path> [--baseline <baseline-json-path>] [--output dashboard|regression|full] [--regulation ada|eaa|508|all]
Allowed tools
  • Read
  • WebFetch(domain:localhost)
  • WebFetch(domain:*.localhost)
  • Bash(npx axe *)
  • Bash(npx @axe-core/cli *)
  • Bash(npx playwright *)
  • Bash(node *)
  • Bash(bash *)
  • Bash(cat *)
  • Bash(ls *)
  • Bash(diff *)
  • Bash(jq *)
  • Write
  • Edit
Source
plugins/accessibility-auditor/skills/accessibility-compliance-monitor/SKILL.md

Edit this skill on GitHub — opens GitHub's web editor. No git knowledge needed.