accessibility
Skill36 starsChanged 6 days agoMITView on GitHub
Web accessibility patterns and WCAG 2.1/2.2 compliance. Use to build accessible components, audit a UI for a11y issues, fix screen reader or keyboard problems, check contrast, or add ARIA.
We split this skill into the rules it gives an agent
9 rules. 0 are common, 6 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 96 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 57
Never skip levels (do not jump from <h2> to <h4>)
- Distinctive: line 58
Use headings for structure, not visual styling.
- Distinctive: line 87
Every form control needs a programmatically associated label:
- Very specific: line 104
Use aria-describedby to associate error messages with their input
- Very specific: line 105
Use aria-invalid="true" on fields that fail validation
- Distinctive: line 106
Write clear, specific error text ("Enter an email in the format name@example.com", not "Invalid input")
- Distinctive: line 111
Do not rely on color or an asterisk alone to indicate required status.
- Distinctive: line 128
Check contrast with browser developer tools (Chrome DevTools shows ratios on hover)
- Distinctive: line 130
Test designs with simulated color blindness (protanopia, deuteranopia, tritanopia)
“Common” is measured: kept by at least 6 in 10 of the 96 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
Web Accessibility
Accessibility is a quality attribute, not a feature to bolt on at the end. Consider it from the first line of markup. Legislation in most jurisdictions (ADA, EAA, Section 508, EN 301 549) requires digital products to be accessible.
WCAG principles: POUR
The Web Content Accessibility Guidelines organize all success criteria under four principles. Every accessibility requirement maps to at least one.
| Principle | Question it answers | Examples |
| Perceivable | Can users sense the content? | Text alternatives for images, captions for video, sufficient color contrast, resizable text |
| Operable | Can users interact with every control? | Keyboard operability, enough time to complete tasks, no seizure-triggering animations, clear navigation |
| Understandable | Can users comprehend the content and UI behavior? | Readable language, predictable navigation, input assistance and error messages |
| Robust | Does it work across assistive technologies? | Valid markup, proper use of ARIA, compatibility with screen readers and other tools |
Conformance levels
WCAG defines three levels. Each higher level includes all criteria from the levels below it.
| Level | Target audience | Typical requirement |
| A | Bare minimum, removes the most severe barriers | Most legal and procurement requirements start here |
| AA | Industry standard, addresses the majority of barriers for most users | Required by ADA, EAA, Section 508, and most organizational policies |
| AAA | Highest standard, not achievable for all content types | Aspirational; apply selectively where feasible |
For most projects, target Level AA. It meets most real-world needs and avoids requirements that conflict with some content types.
Semantic HTML fundamentals
Native HTML elements carry built-in semantics, keyboard behavior, and screen reader announcements. Using the right element is the single most effective accessibility technique.
| Instead of | Use | Why |
<div onclick="..."> | <button> | Buttons are focusable, announce their role, and respond to Enter and Space |
<span class="link"> | <a href="..."> | Links announce as "link," support middle-click, and appear in link lists |
<div class="header"> | <header>, <nav>, <main>, <footer> | Landmark elements let screen reader users jump between page regions |
<div class="list"> | <ul> / <ol> with <li> | Lists announce item count and position ("item 3 of 7") |
<div class="table"> | <table> with <th> | Table headers associate data cells with their labels for screen readers |
Styled <div> for input | <input>, <select>, <textarea> | Native form controls have label association, validation, and assistive tech support built in |
Heading hierarchy
Headings create an outline that screen reader users navigate like a table of contents.
- One
<h1>per page that describes the page purpose - Never skip levels (do not jump from
<h2>to<h4>) - Use headings for structure, not visual styling. CSS handles appearance
Common accessibility issues
| Issue | Impact | Fix |
| Missing alt text on images | Screen readers announce the filename or nothing | Add descriptive alt; use alt="" for purely decorative images |
| Insufficient color contrast | Users with low vision cannot read text | Meet 4.5:1 ratio for normal text, 3:1 for large text (AA) |
| No keyboard access to interactive elements | Keyboard and switch users are completely blocked | Use native interactive elements or add tabindex="0" and key handlers |
| Missing form labels | Screen readers cannot announce what an input is for | Associate every input with a <label> using for/id or wrapping |
| Auto-playing media | Disorienting for screen reader users, harmful for those with cognitive disabilities | Never auto-play; if unavoidable, provide a visible pause/stop control |
| Missing skip link | Keyboard users must tab through the entire nav on every page | Add a skip-to-main-content link as the first focusable element |
| No focus indicator | Keyboard users lose track of their position on the page | Never remove outline without providing a visible custom alternative |
| Missing page language | Screen readers may mispronounce content | Set lang attribute on <html> (e.g., lang="en") |
| Inaccessible dynamic content | Screen readers do not announce changes that happen after page load | Use ARIA live regions to announce dynamic updates |
| Missing document title | Screen reader users cannot identify the page when switching tabs | Set a unique, descriptive <title> for every page |
| Touch targets too small | Motor-impaired users cannot reliably tap small controls | Minimum 24x24 CSS pixels (AA), prefer 44x44 for comfortable interaction |
| Motion and animation | Can cause vertigo, nausea, or seizures | Respect prefers-reduced-motion media query; never flash more than 3 times per second |
Accessible forms
Forms are where accessibility failures do the most damage: users cannot complete purchases, registrations, or other critical workflows.
Label association
Every form control needs a programmatically associated label:
<!-- Explicit association -->
<label for="email">Email address</label>
<input type="email" id="email" name="email" required>
<!-- Implicit association (wrapping) -->
<label>
Email address
<input type="email" name="email" required>
</label>Error handling
- Display errors inline next to the relevant field, not only at the top of the form
- Use
aria-describedbyto associate error messages with their input - Use
aria-invalid="true"on fields that fail validation - Write clear, specific error text ("Enter an email in the format name@example.com", not "Invalid input")
Required fields
- Mark required fields with the
requiredattribute (native validation) oraria-required="true"(custom validation) - Do not rely on color or an asterisk alone to indicate required status. Add text like "(required)"
Color and contrast
Color must never be the only way to convey information. Pair it with text, icons, patterns, or other visual cues.
Contrast ratios (WCAG AA):
| Element | Minimum ratio |
| Normal text (under 18pt / 14pt bold) | 4.5:1 |
| Large text (18pt+ / 14pt+ bold) | 3:1 |
| UI components and graphical objects | 3:1 |
Quick wins:
- Check contrast with browser developer tools (Chrome DevTools shows ratios on hover)
- Respect
prefers-color-schemefor dark mode support - Test designs with simulated color blindness (protanopia, deuteranopia, tritanopia)
Reference Files
| Reference | Contents |
| ARIA Patterns | When to use ARIA, roles and properties, widget patterns (tabs, modals, accordions, dropdowns), live regions, landmark roles |
| Keyboard and Focus | Tab order, arrow key navigation, focus trapping, skip links, focus restoration, visible focus indicators, touch targets |
| Testing Strategies | Automated tools, manual testing checklist, screen reader testing, contrast verification, accessibility tree, CI integration |
Other versions106 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 106
- microsoft/vscode★ 194ksame name
- elastic/kibana★ 21ksame name
- midudev/preguntas-entrevista-react★ 7.8ksame name
- gitpod-io/openvscode-server★ 6.2ksame name
- posit-dev/positron★ 4.3ksame name
- legions-developer/evilcharts★ 3.1ksame name
- midudev/la-velada-web-oficial★ 1.9ksame name
- UI5/webcomponents★ 1.8ksame name
- theopenco/llmgateway★ 1.7ksame name
- microsoft/hve-core★ 1.6ksame name
96 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 tool-rename-deprecation, author-contributions and 10 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.
gitpod-ioSkilltool-rename-deprecation
Ensure renamed built-in tool references preserve backward compatibility. Use when renaming a toolReferenceName, tool set referenceName, or any tool identifier. Run on ANY change to tool registration code. Covers legacyToolReferenceFullNames for tools and legacyFullNames for tool sets.
Also in 5 projects that use this
MicrosoftSkillauthor-contributions
Identify all files a specific author contributed to on a branch vs its upstream, tracing code through renames. Use when asked who edited what, what code an author contributed, or to audit authorship before a merge. This skill should be run as a subagent — it performs many git operations and returns a concise table.
Also in 8 projects that use this
MicrosoftSkillauto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.
Also in 7 projects that use this
- +9 more from microsoft
In this repository38 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- llm-evalsSkill
- llm-observabilitySkill
- context-engineeringSkill
- debuggingSkill
- docs-lookupSkill
- performanceSkill
- securitySkill
- verification-before-completionSkill
- finishing-branchSkill
- game-feature-loopSkill
- handoffSkill
- hooks-and-guardrailsSkill
- pr-feedbackSkill
- security-researchSkill
- spec-driven-developmentSkill
- tddSkill
- agent-creatorSkill
- agentic-rules-writerSkill
- audit-dependenciesSkill
- brainstormingSkill
- communication-styleSkill
- find-test-gapsSkill
- plan-migrationSkill
- plugin-creatorSkill
- pr-message-writerSkill
- report-writerSkill
- researchSkill
- review-pr-coldSkill
- review-prSkill
- scan-refactorsSkill
- skill-creatorSkill
- skill-measureSkill
- stakeholder-update-writerSkill
- ticket-writerSkill
- ui-reviewSkill
- verify-acceptanceSkill
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.

