a11y-ops
Web accessibility end to end: WCAG 2.2 AA, EAA and ADA Title II obligations, audits (axe, pa11y, keyboard, screen reader), the common failures, accessibility…
Skill by claude-mods
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/0xdarkmatter-a11y-ops
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/a11y-ops
Tools it pre-approves 3
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
ReadWriteBash
What's inside
- Skill name
a11y-ops- Description
- Web accessibility end to end: WCAG 2.2 AA, EAA and ADA Title II obligations, audits (axe, pa11y, keyboard, screen reader), the common failures, accessibility statements, and server-rendered Craft CMS/Twig sites (Formie, CKEditor, multi-site lang). Use when asked about a11y, WCAG, EAA, EN 301 549, Section 508, VPAT, NVDA/VoiceOver, focus, skip links, ARIA, landmarks, alt text, form labels or errors, contrast, target size, or 'is my site accessible'.
- License
- MIT
- Allowed tools
- Read, Write, Bash
- Metadata
- author: claude-mods · related-skills: color-ops, icon-ops, playwright-ops, testing-ops, craftcms-ops, cypress-ops
- Instructions
- 226 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves any shell command
Files (8)
- SKILL.md
- accessibility-statement.template.md · assets/
- audit-workflow.md · references/
- common-failures.md · references/
- server-rendered-templates.md · references/
- wcag-conformance.md · references/
- scan-a11y.py · scripts/
- run.sh · tests/
SKILL.md (first lines)
# a11y-ops Accessibility stopped being a quality preference and became a legal requirement with dates attached. It is also, unhelpfully, a domain where the tooling everyone reaches for finds well under half the problems — so the work is mostly about knowing where automation stops. ## Helps with "Is our site compliant?" — a question with a real answer that depends on which jurisdiction, which standard version, and which deadline applies to that client. An audit that needs to find real failures rather than produce a score. Vendor "94% accessible" numbers correspond to nothing in the standard. A component library where every custom control is mouse-only, because a `<div>` replaced a `<button>` and nothing replaced what the `<button>` was doing. Forms that lose conversions from screen reader and keyboard users: placeholders used as labels, errors signalled only in red, no `autocomplete`. `outline: none` shipped across a design system, leaving keyboard users with no idea where they are. A modal, dropdown or date picker that traps focus, or drops it, or never returns it to the trigger. Writing an accessibility statement that is honest enough to be defensible rather than an overclaim that creates its own liability. Wiring accessibility into CI so a fix stays fixed instead of being re-bought at the next audit. ## The two things that decide everything **1. Automated tooling finds roughly 30–40% of WCAG failures.** Every plan follows from this. A green axe run is a floor, not a result — the rest needs a keyboard and a human. Anyone selling automated compliance is selling the 30%. **2. Use the native element.** `<button>`, `<a href>`, `<input>`, `<select>`, `<details>` arrive with focusability, keyboard activation, correct role and state announcement already handled. Almost every failure in the catalogue comes from replacing one with a `<div>` and rebuilding a fraction of what was lost. Its corollary is the first rule of ARIA: **no ARIA beats bad ARIA**, because `role="button"` claims a contract a div does not fulfil. ## Which standard, and by when Target **WCAG 2.2 Level AA** for essentially every project. It satisfies every regime below, and building to 2.1 to skip nine criteria just buys a migration at a worse moment. | Regime | Standard | Status (verified 2026-08-30) | |---|---|---| | **EAA** (EU) | EN 301 549 v3.2.1 → WCAG 2.1 AA | Applicable since 28 Jun 2025; **2026 is the first full supervision year**. v4.1.1 expected 2026 moves it to **WCAG 2.2**. Fines ~€5k–€500k | | **ADA Title II** (US) | WCAG 2.1 AA | **Deadlines extended 20 Apr 2026**: 26 Apr **2027** (pop ≥50k), 26 Apr **2028** (smaller) | | **UK PSBAR** | WCAG 2.2 AA | Public sector; accessibility statement required | **The EAA is extraterritorial** — it applies to anyone offering services to consumers in the EU regardless of where the business sits. And conformance is **per-page and all-or-nothing**: one failed AA criterion means the page does not conform. There is no partial credit and no percentage. Full detail, the nine criteria new in WCAG 2.2, and what a conformance claim commits you to → [`references/wcag-conformance.md`](references/wcag-conformance.md). ## Workflow — four passes, cheapest first ### 1. Static source scan (seconds, in CI) ```bash scripts/scan-a11y.py src/ # exit 10 = findings scripts/scan-a11y.py --min-severity serious src/ scripts/scan-a11y.py --json src/ | jq '.data[] | select(.severity=="critical")' ``` Catches the mechanical failures in HTML/JSX/Vue/Svelte/Astro source before anything renders: missing alt, unlabelled inputs, placeholder-as-label, icon-only controls with no name, click handlers on non-interactive elements, positive `tabindex`, heading skips, `aria-hidden` on focusable elements, untitled iframes, unmuted autoplay, duplicate ids. Exit codes: `0` clean · `2` usage · `3` path missing · `5` nothing scannable · `10` findings. It reads *source*, so it cannot see computed contrast or conditionally-rendered markup — it is a pre-filter, not the audit. Server-side templates (`.twig`, `.blade.php`) are not the page; save the rendered HTML and scan that. ### 2. Automated DOM scan (minutes, per route) Run **axe-core** against the rendered page — ideally inside the Playwright suite you already have, so authentication and navigation aren't rebuilt in a separate crawler (`playwright-ops`). Alternatives: `pa11y-ci` for URL lists, Lighthouse for quick triage. **Scan states, not just pages.** Open the menu, trigger the error, expand the accordion. A modal's focus trap is invisible to a scan of the page behind it. ### 3. Keyboard pass (10 minutes, highest yield) Put the mouse down. Tab the whole page: is focus order logical, is the indicator always *visible* and not eclipsed by a sticky header (2.4.11), is everything mouse-reachable also keyboard-reachable, can you escape every modal and does focus return to the trigger, does the skip link move focus rather than just scroll? Nearly every custom component fails one of these, and none of them appear in an automated scan. ### 4. Screen reader pass (30+ minutes) Test **one** combination properly: NVDA + Firefox on Windows, or VoiceOver + Safari on macOS. Listen for name, role and state on every control; a sensible heading outline; errors that are announced; alt text that says what the image *means here*. Tool comparison, what to test in what order, and how to write a finding a developer can act on → [`references/audit-workflow.md`](references/audit-workflow.md).
From 0xDarkMatter/claude-mods, MIT.
More from 0xDarkMatter/claude-mods
- 0.654score
claude-api-ops
claude-mods
Building applications ON Claude - the Anthropic API and Claude Agent SDK.
SkillAFreshness: A★ 75Claude Code - 0.654score
claude-code-ops
claude-mods
Claude Code internals - hooks, skill frontmatter, headless mode, and extension debugging, current as of June 2026.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
bash-ops
claude-mods
Defensive Bash scripting for production automation, CI scripts, and agent-facing tools.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
loop-ops
claude-mods
Design and safely run OUTER loops - scheduled discover-triage-implement-verify-escalate agent loops.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
adr-ops
claude-mods
Author, index, and lint Architecture Decision Records — append-only memory that recovers the WHY behind a system's shape.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
git-ops
claude-mods
Git + worktree orchestrator: status survey, per-worktree triage, commits, PRs, branches, releases, rebases — reads inline, writes to a background agent.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
fleet-ops
claude-mods
Landing discipline for parallel work: sequential test-gated landing queue, pre-land scrub, auto-rebase of in-flight lanes, fleet status, one-shot revert…
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
asus-router-ops
claude-mods
ASUS router config and hardening: Asuswrt-Merlin, security hardening, encrypted DNS (DoT/DoH), VPN (WireGuard/OpenVPN), guest networks, VLAN/IoT isolation…
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
atomise
claude-mods
Atom of Thoughts (AoT) reasoning - decompose complex problems into atomic units with confidence tracking and backtracking.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
auth-ops
claude-mods
Authentication and authorization patterns - JWT, OAuth2, sessions, RBAC, ABAC, passkeys, MFA, identity-aware proxies, and Better Auth.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
auto-skill
claude-mods
Evaluate current session for skill-worthy workflows and create reusable skills.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
color-ops
claude-mods
Color for developers: color spaces, accessibility contrast, palette generation, CSS color functions, design tokens, dark mode.
SkillAFreshness: A★ 75Claude Code +9
Signals
- Stars
- 75
- Forks
- 8
- Open issues
- 0
- Last commit (this folder)
- Oct 5, 2026 (23 days ago)
- Last release
- Oct 14, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/0xDarkMatter/claude-mods
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from claude-mods
- 0.685score
file-search
claude-mods
Modern file and content search using fd, ripgrep (rg), and fzf.
SkillCFreshness: C★ 443Claude Code +9 - 0.685score
code-stats
claude-mods
Analyze codebase with tokei (fast line counts by language) and difft (semantic AST-aware diffs).
SkillCFreshness: C★ 443Claude Code +9 - 0.685score
sqlite-ops
claude-mods
Patterns for SQLite databases in Python projects - state management, caching, and async operations.
SkillCFreshness: C★ 443Claude Code +9 - 0.685score
project-planner
claude-mods
Detects stale project plans and suggests session commands.
SkillCFreshness: C★ 443Claude Code +9 - 0.685score
python-env
claude-mods
Fast Python environment management with uv (10-100x faster than pip).
SkillCFreshness: C★ 443Claude Code +9 - 0.685score
container-orchestration
claude-mods
Docker, Kubernetes, and AWS ECS/Fargate patterns.
SkillCFreshness: C★ 443Claude Code +9
Cite this page
a11y-ops skill. Agent Mart. https://agentmart.dev/skills/0xdarkmatter-a11y-ops (last updated 2026-10-24)