a11y-audit
Skill6 starsChanged 28 days agoMITView on GitHub
Audit a module's or theme's storefront templates for WCAG 2.1 Level AA accessibility issues and emit ranked findings. This is a read-only, static-first audit skill — it never modifies templates and does not require a running Magento instance. - STATIC-FIRST. The default pass analyzes .phtml / .html templates and .less / .css files with no running Magento, no Docker, no credentials. See references/wcag-rules.md for the static check catalog. - RUNTIME OPT-IN. The pa11y pass is strictly opt-in (--runtime). It requires…
We split this skill into the rules it gives an agent
8 rules. 0 are common, 2 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 24 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 33
READ-ONLY: Never modifies templates, never installs packages, never uploads.
- Very specific: line 34
WCAG CRITERION MAPPING: Every finding records the WCAG 2.1 success criterion it violates (e.g.
- Very specific: line 39
HONEST GAPS: If no templates are found, state so.
- Very specific: line 44
Default: auto — agents when the plugin's context-budget hook reports this conversation above its threshold, inline otherwise.
- Very specific: line 110
When conditions are met, run pa11y <url> (or pa11y-ci) and merge runtime findings with static findings.
- Very specific: line 113
When any condition is unmet, add a scanner_errors entry:
- Distinctive: line 117
Never invent runtime findings.
- Very specific: line 137
Run build-findings.sh with DOCS_ROOT=<output_root> (the resolved --docs-root value, or .docs by default) so both artifacts land under …
“Common” is measured: kept by at least 6 in 10 of the 24 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Magento 2 Accessibility Audit
Audit a module's or theme's storefront templates for WCAG 2.1 Level AA accessibility issues and emit ranked findings. This is a read-only, static-first audit skill — it never modifies templates and does not require a running Magento instance.
Core Rules
- STATIC-FIRST. The default pass analyzes
.phtml/.htmltemplates and.less/.cssfiles with no running Magento, no Docker, no credentials. Seereferences/wcag-rules.mdfor the static check catalog. - RUNTIME OPT-IN. The pa11y pass is strictly opt-in (
--runtime). It requires (1) a storefront URL the user provides, and (2)pa11ypresent in{ctx.tools}. When either is absent the runtime pass is skipped with an honest "runtime pass unavailable" note inscanner_errors— the result is never invented. Seereferences/runtime-pa11y.md. - THEME-AWARE. Resolve the active theme via
context({ctx.theme}). Hyva projects (Tailwind + Alpinex-*) and Luma projects (RequireJS/Knockoutdata-bind) produce different template patterns; the scan adapts. Seereferences/theme-discovery.md. - READ-ONLY. Never modifies templates, never installs packages, never uploads.
- WCAG CRITERION MAPPING. Every finding records the WCAG 2.1 success criterion it
violates (e.g.
1.1.1,4.1.2) as asubcategoryor tag. - SHARED SEVERITY SCALE. Calibrate to
context/references/severity.md. Missing alt on a product image =high; color-contrast heuristic =medium; purely advisory structural suggestion =low/info. - HONEST GAPS. If no templates are found, state so. If the runtime pa11y pass is
unavailable, record a
scanner_errorsentry — never emit fabricated findings.
Execution Mode
Default: auto — agents when the plugin's context-budget hook reports this conversation
above its threshold, inline otherwise. In agents mode (--agents flag, or execution_mode in
.claude/m2.json surfaced as {ctx.execution_mode} — selection contract in
context/references/execution-modes.md) the judgement
passes of this skill are dispatched to the read-only reviewer agent with a frontend/accessibility
dimension brief, and this skill owns synthesis. The scripted scanners
(scripts/build-findings.sh) are deterministic and run identically in both modes.
Severity Calibration (a11y-specific)
| Severity | A11y example |
| High | <img> missing alt; form input with no label/aria-label |
| High | <a>/<button> with no accessible text |
| Medium | Heading order skip (h1→h3); positive tabindex; missing skip-link |
| Medium | ARIA role misuse (e.g. role="button" on <div> without keyboard) |
| Medium | Color-contrast heuristic flag in LESS/CSS (1.4.3 — heuristic only) |
| Low | Missing lang attribute on root <html> |
| Low | Missing <title> on partial layouts |
| Info | Runtime pa11y pass skipped (no URL or pa11y absent) |
Workflow
Phase 0 — Context Resolution
Invoke context. Capture {ctx} including {ctx.theme}, {ctx.tools}, and
{ctx.magento_root}. Hard-stop if the target module or theme directory cannot be
resolved.
Phase 1 — Scope
Determine the audit target:
- Module scope (
--module=<Vendor>_<Module>): scan{magento_root}/app/code/{Vendor}/{Module}/view/frontend/templates/**/*.phtmland anyapp/design/frontend/**/{Vendor}_{Module}/**. - Theme scope (
--theme=<Vendor>/<Theme>): scan{magento_root}/app/design/frontend/{Vendor}/{Theme}/**. - Default: infer the first custom module or the active
{ctx.theme}path.
See references/theme-discovery.md for template location rules.
Phase 2 — Static Scan
Run ${CLAUDE_SKILL_DIR}/scripts/scan-templates.sh:
- Scans
.phtmland.htmlfor the WCAG check catalog inreferences/wcag-rules.md. - Scans
.lessand.cssfor color-contrast heuristics (WCAG 1.4.3 — heuristic only; note this cannot fully verify contrast without rendering). - Outputs a JSON array of finding objects conforming to
context/references/findings-schema.md. Each finding'scategoryis one of the documented buckets (alt-text,aria,semantic-html,keyboard,contrast,forms) so findings summarize by bucket. - Adapts to Hyva vs. Luma template patterns via
{ctx.theme}. - For module scope, pass any resolved theme-override roots (e.g.
app/design/frontend/{ctx.theme}/{Vendor}_{Module}/templates, perreferences/theme-discovery.md) viaEXTRA_SCAN_ROOTS(os.pathsep- or newline-separated) so the single scan covers both the module's own templates and the overrides that render.
Phase 3 — Optional Runtime pa11y Pass (OPT-IN)
Skipped by default. Only runs when all of:
--runtimeflag is passed.- The user provides a
--url=<storefront-url>. pa11yis present in{ctx.tools}.
When conditions are met, run pa11y <url> (or pa11y-ci) and merge runtime findings
with static findings. See references/runtime-pa11y.md for the merge strategy.
When any condition is unmet, add a scanner_errors entry:
{"scanner": "pa11y", "stderr": "runtime pass skipped — <reason>"}Never invent runtime findings.
Phase 4 — Report
Produce three deliverables:
- Markdown audit report (LLM deliverable, NOT automated):
{output_root}/accessibility/{Vendor}_{Module}-a11y-{date}.md(module scope; theme/site scope:a11y-{scope}-{date}.md). Sections: target identity + scope summary, findings by WCAG criterion (Critical/High/Medium/Low/Info), static-only caveat, runtime pass status, skipped checks, recommended next steps (each naming the executing skill:frontendfor template fixes). - JSON + SARIF (automated via
${CLAUDE_SKILL_DIR}/scripts/build-findings.sh). The automated basename uses the underscore module name (e.g.Acme_Storefront→Acme_Storefront-a11y-{date}):
Run{output_root}/accessibility/{Vendor}_{Module}-a11y-{date}.json # OUTPUT_KIND=accessibility {output_root}/accessibility/{Vendor}_{Module}-a11y-{date}.sarifbuild-findings.shwithDOCS_ROOT=<output_root>(the resolved--docs-rootvalue, or.docsby default) so both artifacts land under{output_root}/accessibility/.
WCAG Checks (Summary)
See references/wcag-rules.md for the full static check catalog.
| Rule | WCAG SC | Severity |
<img> missing alt | 1.1.1 | high |
Form input without label/for/aria-label | 1.3.1, 4.1.2 | high |
<a> / <button> with no accessible text | 2.4.4, 4.1.2 | high |
| Heading-order skip (e.g. h1→h3) | 1.3.1 | medium |
Missing lang on <html> | 3.1.1 | low |
Invalid or abused ARIA roles / aria-* | 4.1.2 | medium |
Positive tabindex / keyboard traps | 2.4.3 | medium |
| Missing skip-link | 2.4.1 | medium |
| Color-contrast heuristic in LESS/CSS | 1.4.3 | medium |
Scripts
${CLAUDE_SKILL_DIR}/scripts/scan-templates.sh— read-only static scan; outputs a JSON array of findings conforming tocontext/references/findings-schema.md.${CLAUDE_SKILL_DIR}/scripts/build-findings.sh— aggregates scan output and emits via the sharedcontext/scripts/emit-findings.shpipeline (JSON + SARIF).OUTPUT_KIND=accessibility,SKILL_NAME=a11y-audit.
Reference Files
references/wcag-rules.md— static check catalog, each mapped to a WCAG SC.references/theme-discovery.md— template location rules; Luma vs. Hyva differences; how to use{ctx.theme}.references/runtime-pa11y.md— the OPT-IN runtime pa11y pass specification.context/references/severity.md— shared severity scale.context/references/findings-schema.md— JSON document structure and finding object shape.context/references/theme-detection.md—{ctx.theme}resolution algorithm.
Inputs
/magento2-tools:a11y-audit [--module=<Vendor>_<Module>]
[--theme=<Vendor>/<Theme>]
[--runtime --url=<storefront-url>]
[--format=markdown|json|sarif]
[--scope=module|theme]
[--docs-root=<path>]Outputs
Module scope (basename uses the underscore module name, e.g. Acme_Storefront):
{output_root}/accessibility/{Vendor}_{Module}-a11y-{date}.md # LLM deliverable (Phase 4)
{output_root}/accessibility/{Vendor}_{Module}-a11y-{date}.json # automated (build-findings.sh)
{output_root}/accessibility/{Vendor}_{Module}-a11y-{date}.sarif # automated (build-findings.sh)Theme/site scope:
{output_root}/accessibility/a11y-{scope}-{date}.md
{output_root}/accessibility/a11y-{scope}-{date}.json
{output_root}/accessibility/a11y-{scope}-{date}.sarif{output_root} defaults to .docs ({ctx.docs_root}); see the --docs-root/DOCS_ROOT
recipe in context/references/artifact-layout.md.
Output root (--docs-root)
This skill accepts --docs-root=<path> (see
context/references/artifact-layout.md). When set, run the emitter with
DOCS_ROOT=<path> so artifacts land under <path>/accessibility/; otherwise they default
to {ctx.docs_root}/accessibility/. Orchestrators such as feature
pass this to collect a run's artifacts under one folder.
Related Skills
| Concern | Skill |
| Build accessible frontend templates / components | frontend |
| General module quality/architecture review | review |
| Context resolution (Phase 0) | context |
| Deep static-analysis gate (phpcs, phpstan) | lint |
Other versions30 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 30
- gitkraken/vscode-gitlens★ 9.9ksame name
- plugin87/ux-ui-agent-skills★ 3ksame name
- SwitchbackTech/compass★ 227same name
- Hassaan146/claude-skills★ 18same name
- helderberto/agent-skills★ 17same name
- renfei-design/Figma-AI-Bridge★ 16same name
- Mozurok/fhorja.dev★ 10same name
- greglas75/zuvo★ 8same name
- scayver/marketing-skills★ 8same name
- viknesh20-20/claude-code-tool-kit★ 7same name
20 more not listed
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.
Used alongsideProjects with it also use dependency-audit, design-tokens and 5 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
francogalfreSkilldependency-audit
Audits package.json dependencies for outdated packages, security vulnerabilities, unnecessary deps, and version issues. Use when the user says "audit my dependencies", "check my packages", "what deps should I update", "clean up package.json", "are there security issues in my deps", or pastes a package.json.
Also in 3 projects that use this
ilikescienceSkilldesign-tokens
Expert in design tokens using the DTCG specification. Use this skill when users ask about design tokens, DTCG format, token validation, formatting, transformation, color spaces (sRGB, Display P3, OKLCH), references and aliasing, resolvers, theming with modifiers/contexts, multi-platform design systems, accessibility, or working with tools like jq, jsonata, and terrazzo. Helps with token file creation, resolver configuration, structure, naming conventions, and best practices.
Also in 3 projects that use this
GitHubSkillrefactor
Surgical code refactoring to improve maintainability without changing behavior. Covers extracting functions, renaming variables, breaking down god functions, improving type safety, eliminating code smells, and applying design patterns. Less drastic than repo-rebuilder; use for gradual improvements.
Also in 5 projects that use this
dillonluiSkilldesign-review
Review a view or flow for UX and UI issues. Provides severity-ranked, actionable findings grounded in established design heuristics. Use when the user asks for design feedback, UX review, or UI critique.
Also in 3 projects that use this
AnthropicSkilldesign-system
Audit, document, or extend your design system. Use when checking for naming inconsistencies or hardcoded values across components, writing documentation for a component's variants, states, and accessibility notes, or designing a new pattern that fits the existing system.
Also in 3 projects that use this
HashiCorpSkillchangelog
Add a `.changelog/<PR_NUMBER>.txt` entry for a GitHub Pull Request, commit, and push.
Also in 3 projects that use this
In this repository35 other files it gives its agents.
- admin-formSkill
- admin-listingSkill
- auditSkill
- breeze-adaptSkill
- breeze-compatSkill
- breeze-themeSkill
- cli-commandSkill
- contextSkill
- data-migrationSkill
- debugSkill
- deploySkill
- docsSkill
- eav-attributeSkill
- extension-pointSkill
- featureSkill
- fixSkill
- frontendSkill
- graphqlSkill
- i18nSkill
- indexerSkill
- lintSkill
- marketplaceSkill
- message-queueSkill
- module-createSkill
- perf-auditSkill
- releaseSkill
- remediateSkill
- reviewSkill
- securitySkill
- system-configSkill
- test-generateSkill
- triageSkill
- upgradeSkill
- webapiSkill
- widgetSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
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.

