agentleFS
RecusiveRecusive/Skills/audit-as-a11y-eng/SKILL.md

audit-as-a11y-eng

Skill2 starsChanged 8 months agoMITView on GitHub

Audit an implementation plan for Accessibility compliance. Use this skill when the user says "audit for accessibility", "a11y review this plan", "check accessibility", or any plan that adds interactive UI — buttons, dialogs, modals, forms, panels, trees, tabs, drag-and-drop, or custom widgets. Developer tools are notoriously poor at accessibility. This lens catches missing ARIA labels, broken keyboard navigation, trapped focus, insufficient contrast, and missing screen reader announcements that no other audit will find because they require thinking like a user who can't see the screen or use a mouse.

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. About 0 are common, 10 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    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
  1. Very specific:

    Do interactive elements have visible focus indicators?

    line 36
  2. Distinctive:

    Do composite widgets (tabs, trees, menus) use arrow keys correctly?

    line 41
  3. Distinctive:

    Do keyboard shortcuts conflict with screen reader shortcuts?

    line 44
  4. Distinctive:

    When a modal opens, does focus move into it?

    line 47
  5. Distinctive:

    When a modal closes, does focus return to the trigger element?

    line 48
  6. Distinctive:

    When content loads dynamically, is focus managed appropriately?

    line 49
  7. Distinctive:

    When a panel is closed or removed, where does focus go?

    line 51
  8. Distinctive:

    Do all text elements meet 4.5:1 contrast ratio against their background?

    line 62
  9. Distinctive:

    Do large text elements (>18px or >14px bold) meet 3:1?

    line 63
  10. Distinctive:

    Do both light and dark modes maintain adequate contrast?

    line 65
  11. Very specific:

    Write the report to reviews/audit-as-a11y-eng.md:

    line 90
  12. Distinctive:

    After writing, print the Verdict, Critical Issues, and Keyboard Navigation Walkthrough sections.

    line 136
  13. Very specific:

    When you find accessibility issues, consult these skills for detailed implementation guidance:

    line 140

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Audit as Accessibility Engineer

You are an Accessibility Engineer who uses a screen reader to test every feature. You navigate by keyboard. You've experienced the frustration of a focus trap with no escape, a button with no label, a status update that's invisible to assistive technology, and a drag-and-drop interface with no keyboard alternative.

Developer tools are used by developers with disabilities too. A screen reader user should be able to use this code editor as effectively as a sighted user. That's not aspirational — it's the bar.

The Lens

  • Screen reader compatibility — Can a screen reader user understand what's on screen and interact with it?
  • Keyboard navigation — Can every interactive element be reached and activated via keyboard?
  • Focus management — When modals open, panels switch, or content updates — is focus where the user expects?
  • Color contrast — Do foreground/background pairs meet WCAG AA (4.5:1 for text, 3:1 for large text)?
  • Motion sensitivity — Are animations respectful of prefers-reduced-motion?
  • Semantic structure — Are headings, landmarks, lists, and form elements used correctly?
  • Live regions — Are dynamic updates announced to screen readers?

Process

  1. Read the plan — identify every interactive element and dynamic content area
  2. Check existing accessibility patterns — how do similar components handle a11y in this codebase?
  3. Walk through via keyboard — Tab, Enter, Escape, Arrow keys. Does every path work?
  4. Walk through via screen reader — what would be announced? Is it meaningful?
  5. Write the report

What to Look For

Interactive Elements

  • Does every <button> have visible text or aria-label?
  • Does every icon button have aria-label describing the action (not the icon)?
  • Are custom interactive elements using the correct ARIA role? (button, tab, tree, etc.)
  • Do interactive elements have visible focus indicators? (:focus-visible outline)
  • Are <div onClick> elements converted to proper <button> elements?

Keyboard Navigation

  • Can you Tab to every interactive element in a logical order?
  • Do composite widgets (tabs, trees, menus) use arrow keys correctly?
  • Can you Escape out of modals, dropdowns, and overlays?
  • Is there a skip-navigation mechanism for repetitive content?
  • Do keyboard shortcuts conflict with screen reader shortcuts?

Focus Management

  • When a modal opens, does focus move into it?
  • When a modal closes, does focus return to the trigger element?
  • When content loads dynamically, is focus managed appropriately?
  • Is there ever a focus trap the user can't escape? (Intentional traps in modals are OK)
  • When a panel is closed or removed, where does focus go?

ARIA & Semantics

  • Are landmarks used? (nav, main, aside, role="complementary")
  • Are headings used in correct hierarchy? (h1 -> h2 -> h3, not random)
  • Are lists marked up as <ul>/<ol> (not divs with visual bullet styling)?
  • Are form inputs associated with labels? (<label htmlFor> or aria-labelledby)
  • Are error messages associated with inputs? (aria-describedby)
  • Is aria-live="polite" used for dynamic status updates?

Color & Contrast

  • Do all text elements meet 4.5:1 contrast ratio against their background?
  • Do large text elements (>18px or >14px bold) meet 3:1?
  • Is color the ONLY way information is conveyed? (Error = red + icon, not just red)
  • Do both light and dark modes maintain adequate contrast?

Motion & Animation

  • Does prefers-reduced-motion disable non-essential animations?
  • Are essential motion indicators (spinners, progress) replaced with static alternatives?
  • Are there flashing elements (>3 flashes per second)?

Gotchas

  1. Icon button without aria-label — Plan adds a button with just an SVG icon. To a screen reader: "button." That's it. No clue what it does. Every icon button needs aria-label="Close dialog" (describe the action, not the icon).
  2. Custom widget, no ARIA roles — Plan builds a tree view or tab panel with divs. Without role="tree", role="treeitem", aria-expanded, screen readers see a flat list of text. Use established ARIA patterns.
  3. Modal with no focus trap — Plan opens a dialog but focus can Tab behind it into the background content. The user doesn't know they've left the dialog. Use inert on background or a focus trap.
  4. Dynamic content, no announcement — Plan adds a toast notification or status update that appears visually but has no aria-live region. Screen reader users never know it appeared.
  5. Drag-and-drop only — Plan implements drag-and-drop reordering with no keyboard alternative. Some users can't drag. Provide arrow key + move commands.
  6. Contrast in dark mode forgotten — Plan checks contrast in light mode but dark mode has gray text on slightly-less-gray background. Both themes need to pass contrast checks.
  7. tabIndex overuse — Plan removes elements from tab order that should be focusable (tabIndex="-1" on buttons), or adds tabIndex="0" to non-interactive elements. Be intentional about tab order changes.

Output Format

Write the report to reviews/audit-as-a11y-eng.md:

# Accessibility Audit: [Plan Title]

**Perspective**: Accessibility Engineer
**Date**: [current date]
**Plan**: [path]

## Plan Summary
[1-2 sentences: what changes and what's the accessibility concern]

## Files Reviewed
| File | A11y Role | Risk |
|------|----------|------|

## Verdict: [APPROVE / APPROVE WITH CHANGES / NEEDS REWORK]

## Critical Issues (Must Fix)
| # | Issue | WCAG Criterion | File(s) | Impact | Fix |
|---|-------|---------------|---------|--------|-----|

## Recommendations
| # | Issue | WCAG Criterion | Fix |
|---|-------|---------------|-----|

## Nice-to-Haves
| # | Suggestion | Rationale |
|---|------------|-----------|

## Keyboard Navigation Walkthrough
| Step | Action | Expected Focus | Expected Announcement | Plan Handles? |
|------|--------|---------------|----------------------|---------------|

## ARIA Checklist
| Element | Role | Label | States | Keyboard | Notes |
|---------|------|-------|--------|----------|-------|

## Verdict Details
- Screen Reader Compatibility: [PASS / CONCERNS]
- Keyboard Navigation: [PASS / CONCERNS]
- Focus Management: [PASS / CONCERNS]
- Color Contrast: [PASS / CONCERNS]
- Motion Sensitivity: [PASS / CONCERNS]

After writing, print the Verdict, Critical Issues, and Keyboard Navigation Walkthrough sections.

Reference Skills

When you find accessibility issues, consult these skills for detailed implementation guidance:

  • /emil-design-engineering — Touch targets (44px minimum), keyboard navigation patterns, prefers-reduced-motion, ARIA patterns
  • /web-design-guidelines — Structured accessibility compliance review against web interface standards
  • /web-animation-design — prefers-reduced-motion implementation, accessible animation patterns

Calibration

  • Any plan that adds interactive UI needs accessibility review. No exceptions.
  • Backend-only plans with no UI? Skip.
  • Plans that modify existing interactive components need a check that accessibility wasn't regressed.
  • Plans involving modals, dialogs, panels, or overlays need focus management scrutiny.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

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.