Web accessibility
Skill Lukk17/agent-standards/.agents/skills/web-accessibility
One git checkout drops a shared AI coding setup (skills, subagents, MCP servers, OpenSpec scaffolding) into any project, across Claude Code, Kilo, OpenCode, Codex, and Copilot.
npx -y skills add Lukk17/agent-standards --skill web-accessibilityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Accessibility for web interfaces to WCAG 2.2 AA. Semantic HTML, keyboard operability, focus management, ARIA used correctly, colour contrast, accessible forms and images, reduced-motion, and screen-reader-minded testing. Use when building or auditing web UI, components, or pages for users of assistive technology.
SKILL.md
3.2 KB, as published. Nobody here has run it
Web Accessibility
Make web interfaces usable by people who navigate with a keyboard, a screen reader, voice control, or a magnifier. The target is WCAG 2.2 AA, treated as a default, not a final-sprint audit.
When to activate
- Building or reviewing any web UI component, page, or flow.
- Auditing an existing interface for accessibility.
- Designing forms, modals, navigation, or any interactive widget.
Semantic structure first
- Use the semantic element that means what you need:
buttonfor actions,afor navigation,nav,main,header,ul,table, and real headings in order. The browser gives you focus, keyboard behaviour, and a role for free. - Reach for ARIA only to fill a gap the platform cannot, never to paper over non-semantic markup. A
divwithrole="button"and hand-wired key handlers is a worse button thanbutton. The first rule of ARIA is do not use ARIA when a native element will do. - Give each page one
h1and a logical heading hierarchy with no skipped levels; screen-reader users navigate by heading.
Keyboard and focus
- Every interactive control is reachable and operable by keyboard alone, in a logical tab order. If a mouse can do it, the keyboard must too.
- Keep a visible focus indicator. Never remove the focus outline without replacing it with something at least as clear.
- Manage focus on change: move focus into an opened dialog and trap it there, return it to the trigger on close, and move focus to the new content (or a status region) on a client-side route change.
- No keyboard trap: a user who tabbed in must be able to tab out.
Perceivable content
- Meet contrast minimums: 4.5:1 for normal text, 3:1 for large text and for meaningful user-interface and graphical boundaries. Never use colour as the only way to convey meaning; pair it with text, shape, or an icon.
- Give every meaningful image a text alternative that conveys its purpose. Mark a purely decorative image with an empty alt so assistive tech skips it.
- Respect the user's reduced-motion preference: gate non-essential animation behind
prefers-reduced-motion. - Make tap and click targets large enough to hit comfortably.
Forms
- Associate a real label with every form control. Placeholder text is not a label.
- Tie an error message to its field programmatically and announce it, so a screen-reader user learns what failed and why, not just that something did.
- Group related controls (a set of radios, a fieldset) with an accessible name.
Internationalisation and testing
- Build translation-ready from the start: route user-facing text through one localisation layer, set the document language, and do not bake text into images.
- Automated scanners catch only a fraction of real barriers. Test the keyboard path end to end and listen to the flow with a screen reader before calling it accessible.