mcpField
A
a11y-audit

a11y-audit

github.com/borgheiTesting & quality1.0k72 installsUpdated 1w ago
Repository

About a11y-audit

Accessibility Audit is a skill for developers checking HTML and CSS against WCAG 2.1 accessibility criteria. It combines markup scanning with color-contrast checks and supports JSON output and strict gating for CI workflows.

Key features

  1. 01Scan HTML for WCAG 2.1 issues
  2. 02Check image alt text and headings
  3. 03Validate forms, ARIA, and landmarks
  4. 04Measure AA and AAA color contrast
  5. 05Suggest compliant color alternatives
  6. 06Support JSON output and strict mode

Use cases

  1. 01Audit HTML templates during development
  2. 02Check stylesheet contrast before release
  3. 03Gate CI on Level A violations
  4. 04Re-scan files after accessibility fixes

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/borghei/claude-skills --skill a11y-audit

After installing, type/a11y-auditin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

examples/
sample-page.html
references/
wcag-guidelines.md
scripts/
a11y_scanner.py
contrast_checker.py

Details

From the project README

Accessibility Audit

Category: Engineering Domain: Web Accessibility

Overview

The Accessibility Audit skill provides automated scanning of HTML files for WCAG 2.1 compliance violations and color contrast checking against AA/AAA standards. It catches missing alt text, broken heading hierarchies, unlabeled form inputs, and insufficient color contrast early in development.

Clarify First

Before running the audit, confirm these inputs. If any is unknown or vague, ASK — do not assume:

  • Target & scope — which HTML files, directory, or CSS to scan (determines what gets checked and the --file/--dir/--css arguments)
  • Conformance level — A, AA, or AAA target (sets contrast thresholds and which violations are CRITICAL vs WARNING vs INFO)
  • Use context — one-off remediation vs CI gate (drives --strict gating and JSON output)

Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.

Quick Start

# Scan HTML for WCAG violations
python scripts/a11y_scanner.py --file index.html

# Scan a directory of HTML files
python scripts/a11y_scanner.py --dir ./src/templates

# Check color contrast
python scripts/contrast_checker.py --foreground "#333333" --background "#ffffff"

# Parse CSS file for contrast issues
python scripts/contrast_checker.py --css styles.css

# JSON output for CI
python scripts/a11y_scanner.py --file index.html --format json

Tools Overview

a11y_scanner.py

Scans HTML files for WCAG 2.1 violations including structural, semantic, and interactive element issues.

FeatureDescription
Image alt textDetects missing or empty alt on non-decorative images
Heading hierarchyValidates h1-h6 levels are sequential
Form labelsEnsures inputs have associated label elements
ARIA attributesChecks ARIA usage correctness
Link textFlags generic text like "click here" or "read more"
Language attributeChecks for lang on html element
Tab orderDetects positive tabindex values
LandmarksValidates semantic landmark usage
contrast_checker.py

Checks color contrast ratios against WCAG AA and AAA thresholds.

FeatureDescription
Ratio calculationComputes relative luminance contrast ratio
AA compliance4.5:1 normal text, 3:1 large text
AAA compliance7:1 normal text, 4.5:1 large text
CSS parsingExtracts color/background pairs from CSS
Color suggestionsRecommends nearest compliant color

Workflows

Full Accessibility Audit
  1. Scan HTML - Run a11y_scanner.py on all templates
  2. Check contrast - Run contrast_checker.py on stylesheets
  3. Triage - Prioritize Level A violations first
  4. Remediate - Fix critical issues (alt text, form labels, headings)
  5. Re-scan - Verify fixes pass all checks
CI Integration
# Gate on Level A violations
python scripts/a11y_scanner.py --dir ./templates --format json --level A --strict

# Check CSS contrast
python scripts/contrast_checker.py --css ./static/css/main.css --format json
Development Workflow
  1. Pre-commit - Quick scan of changed HTML files
  2. PR review - Full scan as part of review checklist
  3. Staging audit - Comprehensive scan before release
  4. Monitoring - Regular scheduled audits

Reference Documentation

Common Patterns Quick Reference

WCAG Levels
LevelDescriptionTypical Requirement
AMinimum baselineLegal compliance
AAIndustry standardMost regulations, ADA
AAAEnhancedBest practice goal
Contrast Ratios
ContextAAAAA
Normal text (<18pt)4.5:17:1
Large text (>=18pt bold or >=14pt)3:14.5:1
UI components3:13:1
Quick Fixes
IssueFix
Missing alt text<img alt="Description of image">
Skipped headingUse sequential h1 through h6
No form label<label for="inputId">Label</label>
Generic link textReplace "click here" with descriptive text
Missing lang<html lang="en">
Positive tabindexUse tabindex="0" or tabindex="-1" only
Severity Mapping
  • CRITICAL - WCAG Level A violations
  • WARNING - WCAG Level AA violations
  • INFO - WCAG Level AAA recommendations

Comments

Markdown supported