design-accessibility
Skill10 starsChanged 26 days agoMITView on GitHub
Audits HTML against WCAG 2.2 — no-tools structural checks (alt text, heading order, form labels, lang, landmarks, skip link, viewport meta, token-based contrast), plus a full axe-core scan covering computed contrast, keyboard/focus order, reduced-motion, and 200% zoom. Uses Playwright + @axe-core/playwright when connected; otherwise the structural subset runs alone (clearly lower fidelity). Produces a severity-ranked report with per-issue remediation. Trigger when the user says "accessibility check", "a11y check", "wcag audit", "axe scan", "is this accessible", "screen reader check", or "keyboard nav check".
1 other project uses a version of this.
Adopted by
Most recently taken up by
- UXLana/design-skills-packtheir own version, first seen Oct 25, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- UXLana/design-skills-pack★ 8same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository46 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- blast-promptSkill
- client-outreachSkill
- content-draftSkill
- copywritingSkill
- csv-to-reportSkill
- design-buildSkill
- design-croSkill
- design-dimensionsSkill
- design-motionSkill
- design-researchSkill
- design-system-genSkill
- design-system-persistSkill
- design-tokens-emitSkill
- design-visual-qaSkill
- html-extractSkill
- parallel-buildSkill
- portable-html-portSkill
- qa-gateSkill
- route-codex-reviewSkill
- route-gemini-contextSkill
- route-three-brainSkill
- seo-auditSkill
- seo-backlinksSkill
- seo-clusterSkill
- seo-competitor-pagesSkill
- seo-content-briefSkill
- seo-contentSkill
- seo-dataforseoSkill
- seo-driftSkill
- seo-ecommerceSkill
- seo-firecrawlSkill
- seo-geoSkill
- seo-googleSkill
- seo-hreflangSkill
- seo-image-auditSkill
- seo-image-genSkill
- seo-local-unifiedSkill
- seo-pageSkill
- seo-programmaticSkill
- seo-schemaSkill
- seo-sitemapSkill
- seo-strategySkill
- seo-sxoSkill
- seo-technicalSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 33
Detect Playwright: If available → deep path (step 3).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
design-accessibility
Family: design Status: Stable
Purpose
A dedicated accessibility skill. Runs structural WCAG 2.2 checks on any HTML with
no tools required (the free path) and a full axe-core scan when Playwright is
installed (the deep path), producing a severity-ranked report that downstream
skills (qa-gate, design-build) can act on.
Triggers
- "accessibility check" / "a11y check" / "wcag audit"
- "axe scan" / "is this accessible"
- "screen reader check" / "keyboard nav check"
Inputs
- Target URL or local build path
- WCAG level: AA (default) | AAA
- Viewports to test (defaults: 375 / 768 / 1280)
- Optional: a design-system token file (from
design-system-gen); the token-based contrast check in Step 2 runs only when it is present
Steps
- Detect Playwright. If available → deep path (step 3). If not → static path (step 2). Always say which path ran.
- Static WCAG checks (free path, on the page source): run
scripts/design/a11y_static.py --file <page.html>— a stdlibhtml.parserstructural checker that emits severity-ranked JSON findings for imagealtcoverage, heading order (no skipped levels / one<h1>), form-control labels,<html lang>, a skip-to-content link,<main>/landmark presence, and a responsive (non-zoom-blocking) viewport meta. When adesign-system-gentoken file is present, pass--tokens <tokens.json>to add the token-contrast cross-check (the engine's own WCAG luminance math over thetext/bg/surface/primary/on_primary/accentslots). Seereferences/design-accessibility/structural-checks.mdfor the full check catalog + severity model. - Deep axe scan (Playwright path): for each viewport, run axe-core; test
keyboard nav (tab order, visible focus, focus traps in modals, escape routes);
test
prefers-reduced-motion; test 200% text scaling for truncation/overflow; verify computed-style color contrast. - Classify findings critical / serious / moderate / minor with the WCAG success criterion and remediation guidance (file:line when source is available).
- Render the report; note clearly that the static path is a subset and a full axe scan needs Playwright.
Capability routing
Accessibility auditing runs on a two-tier cascade. The free Tier-2 structural
checker (a11y_static.py) is the product — it delivers a real severity-ranked
WCAG artifact with no browser and no network; a connected Playwright + axe-core
(Tier 1) deepens it with rendered-pixel contrast and live keyboard/motion/zoom
testing. See references/CAPABILITY-TIERS.md for the cascade grammar.
capability: structural-a11y
tier1: Playwright + @axe-core/playwright (rendered scan)
tier1_signal: none
tier2: a11y_static.py (stdlib html.parser structural WCAG checker + token-contrast cross-check, no browser)
tier2_yields: severity-ranked WCAG findings (alt, heading order, labels, lang, viewport, landmarks, skip link, token contrast) with per-issue WCAG SC + fix, zero spend
tier3: none
tier3_signal: none
tier4: manual WCAG 2.2 walkthrough; connect Playwright for a full axe-core scan
needs_tier1: computed rendered-pixel contrast, live keyboard/focus order, reduced-motion behavior, 200%-zoom reflowOutputs
| Output | What it contains | Format | Quality bar (how it is scored) |
| Structural WCAG report | Severity-ranked findings (critical/serious/moderate/minor), each with its WCAG 2.2 success criterion + a concrete fix | JSON (default) or ASCII --human | every finding names a WCAG SC and a specific remediation; findings are severity-ranked and the run is deterministic (same input → identical output) |
| Token-contrast cross-check | Any design-token color pair below its ratio (4.5:1 body / 3:1 UI), with the measured ratio | rows inside the report (contrast-below-min) | only fires with --tokens; uses the engine's own WCAG math; reports the exact ratio, never a guess |
| Coverage statement | Which path ran and what a full axe scan would add | one sentence | states the static subset honestly; never implies full-scan coverage |
Filed to: the user's project workspace. The structural path is a genuine subset —
computed-contrast, live keyboard, reduced-motion, and 200%-zoom facts are marked
needs_tier1 (Playwright + axe-core), never synthesized.
Error Handling
| Condition | Detection | Behavior (degrade, never fail) | User-facing message |
| Playwright absent | MCP not exposed / not connected | run the Tier-2 a11y_static.py structural checker alone | "Ran Tier 2 (static structural checks). Connect Playwright for computed-contrast + live keyboard/motion/zoom testing." |
| No token file supplied | --tokens omitted | run every structural check except the token-contrast cross-check | "Contrast cross-check skipped — pass a design-system token file to grade color pairs." |
| Bad / missing HTML input | a11y_static.py validates and exits non-zero with a JSON error | report the validation error; analyze nothing invented | "--file/--html is required or the file is unreadable — here is the expected input." |
Unparseable --tokens JSON | json.load raises; script exits non-zero | report the parse error; skip the cross-check, keep structural findings | "Could not parse the token JSON — fixed the path and re-run for the contrast cross-check." |
| Malformed markup | html.parser tolerates it | analyze what parses; still emit a report | "Parsed leniently — findings reflect the recoverable structure." |
Dependencies
- None required for the static path (analyzes provided HTML)
- Playwright extension +
@axe-core/playwright(optional — adds computed-contrast verification + live keyboard/focus testing + reduced-motion + 200%-zoom checks; free path: the static structural checks in Step 2)
Notes
Mandatory inside the qa-gate workflow (phase 3); also standalone. The static path
catches a real subset of WCAG issues, but only a browser-based axe scan covers
computed contrast and live keyboard behavior — the report says so rather than
implying full coverage.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

