/SKILL.md
Audit and improve web accessibility following WCAG 2.2 guidelines. Use when asked to "improve accessibility", "a11y audit", "WCAG compliance", "screen reader support", "keyboard navigation", "make accessible", "add alt text", or "fix contrast". Trigger on: accessibility, WCAG, ADA, Section 508, VPAT, alt text, color contrast, ARIA, keyboard navigation, screen readers, a11y, blind, deaf, motor impairment, cognitive disability, tabindex, landmark regions, skip link, captions, transcripts, axe-core, focus management, NVDA, JAWS, VoiceOver. Do not use for general HTML/CSS styling unrelated to accessibility.
npx skillsauth add franklinnolasco7/wcag-accessibility-skill wcag-accessibility-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Comprehensive WCAG 2.2 guidelines. Make content usable by everyone.
| Needed for | File |
| ------------------ | ----------------------------------- |
| Success criteria | references/WCAG.md |
| Code patterns | references/A11Y-PATTERNS.md |
| Full SC coverage | references/wcag-guides-full.md |
| Term definitions | references/wcag-glossary.md |
| Contrast ratios | references/quick-reference.md |
| Testing procedures | references/testing-procedures.md |
| VPAT structure | references/vpat-template-guide.md |
| Principle | Description | | ------------------ | ------------------------- | | Perceivable | Content can be perceived | | Ooperable | Interface can be operated | | Understandable | Content is understandable | | Robust | Works with AT |
| Level | Requirement | | ------- | -------------------------------------- | | A | Minimum (must pass) | | AA | Standard (legal in many jurisdictions) | | AAA | Enhanced (nice to have) |
<img src="chart.png" alt="Q3 sales showing 40% increase" />
<!-- ✅ descriptive -->
<img src="decorative.png" alt="" role="presentation" />
<!-- ✅ decorative -->
<button aria-label="Open menu"><svg aria-hidden="true">...</svg></button>
<!-- ✅ icon button -->
Visually hidden class:
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
| Text Size | AA | AAA | | -------------------- | ----- | ----- | | Normal text (< 18px) | 4.5:1 | 7:1 | | Large text (≥ 18px) | 3:1 | 4.5:1 | | UI components | 3:1 | 3:1 |
<video controls>
<source src="video.mp4" />
<track
kind="captions"
src="captions.vtt"
srclang="en"
label="English"
default
/>
</video>
<details>
<summary>Transcript</summary>
<p>Full text...</p>
</details>
element.addEventListener("keydown", (e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
action();
}
});
:focus {
outline: none;
}
:focus-visible {
outline: 2px solid #005fcc;
outline-offset: 2px;
}
:focus {
scroll-margin-top: 80px;
}
Full pattern: see references/A11Y-PATTERNS.md#skip-link
Minimum 24 × 24 CSS pixels (AA).
button,
[role="button"] {
min-width: 24px;
min-height: 24px;
}
@media (prefers-reduced-motion: reduce) {
* {
animation: none !important;
transition: none !important;
}
}
<html lang="en">
<label for="email">Email</label> <input id="email" autocomplete="email" />
Placeholder ≠ label.
<input aria-invalid="true" aria-describedby="error" />
<p id="error" role="alert">Please enter a valid email</p>
<input autocomplete="current-password" /> <button>Sign in with passkey</button>
Prefer native elements:
<button>Click</button>
<!-- ✅ -->
<div role="button">Click</div>
<!-- ❌ -->
<div aria-live="polite">Saving...</div>
npx lighthouse https://example.com --only-categories=accessibility
axe https://example.com
Manual: keyboard nav, screen reader, 200% zoom, high contrast, reduced motion.
Screen reader commands: see references/A11Y-PATTERNS.md#screen-reader-commands
| Claim | Response |
| ------------------------- | ------------------ |
| "Scan passed = compliant" | Scans catch ~30% |
| Placeholder as label | Fails SC 1.3.1 |
| alt="image.png" | Meaningless |
| tabindex="1" | Breaks focus order |
| outline:none | Fails SC 2.4.7 |
VPAT produces ACR — procurement document. Use VPAT 2.5 INT (WCAG 2.1 + 508 + EN 301 549).
Terms: Supports · Partially Supports · Does Not Support · Not Applicable · Not Evaluated.
Full guide: references/vpat-template-guide.md
scripts/contrast-check.js — Batch hex contrast checker.
scripts/wcag-audit-report.js — axe-core JSON → grouped WCAG report.
scripts/aria-lint-rules.json — axe-core + eslint configs.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.