agentsclimarketplace

Accessibility audit

Skill idimsh/tdds-business-skills/accessibility-audit

Portable SKILL.md agent skills for Claude, Codex, and other AI coding agents — audits, legal, design, and prompt engineering

Install
npx -y skills add idimsh/tdds-business-skills --skill accessibility-audit

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 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

Audit and fix accessibility issues following WCAG 2.2 Level AA + a11y project best practices

SKILL.md

10.5 KB, as published. Nobody here has run it

Accessibility Audit (WCAG 2.2 + a11y)

This skill audits a project for accessibility issues and fixes them. Based on:

Invoke this skill when an accessibility audit is requested. It should scan the project automatically without assuming a specific slash-command system.

Agent Portability

This skill must work across Codex, Claude, and other SKILL.md-compatible agents. Do not assume slash commands, Claude-only memory files, or a specific package manager. Use the repository's existing tools and conventions. If no automated accessibility tooling is installed, perform the manual audit and recommend optional external tools without installing dependencies.


Step 0: Scan the project

Read the project's index.html, all page components, layout components, and form components. Build a mental map of:

  • Which pages exist
  • Which components handle user interaction (forms, buttons, links, modals, accordions)
  • Which components have animations or media (video, audio)
  • What CSS framework is used (Tailwind, vanilla, etc.)
  • Whether prefers-reduced-motion is already handled

Step 1: Audit — check every category

Go through each category below. For every issue found, note the file, line, and which WCAG criterion it violates. Group findings by severity (Critical → Major → Minor).

1. Global Code

CheckWCAGHow to verify
<html lang="..."> is set and correct3.1.1 (A)Read index.html
Each page has a unique <title>2.4.2 (A)Check all pages
Viewport zoom is NOT disabled (maximum-scale=1 or user-scalable=no must be absent)1.4.4 (AA)Check <meta name="viewport">
Landmark elements used (<main>, <nav>, <header>, <footer>, <section>)4.1.2 (A)Check page structure
Linear content flow / logical DOM order2.4.3 (A)Check for CSS-only reordering
No autofocus attribute on inputs2.4.3 (A)Grep for autofocus
No title attribute tooltips on interactive elements4.1.2 (A)Grep for title=

2. Headings

CheckWCAGHow to verify
Only one <h1> per page2.4.6 (AA)Check all pages
Heading levels don't skip (h1 → h3 without h2)2.4.6 (AA)Check heading hierarchy
Headings introduce content sections2.4.6 (AA)Check section structure

3. Images & Icons

CheckWCAGHow to verify
All <img> have alt attribute1.1.1 (A)Grep for <img without alt
Decorative images have alt=""1.1.1 (A)Check decorative images
SVG icons have aria-hidden="true" or accessible label1.1.1 (A)Check SVG usage
Complex images (charts, graphs) have text alternatives1.1.1 (A)Check if applicable

4. Color Contrast

CheckWCAGHow to verify
Normal text: 4.5:1 contrast ratio minimum1.4.3 (AA)Check all text colors against backgrounds
Large text (18px+ or 14px+ bold): 3:1 minimum1.4.3 (AA)Check large text
UI components & icons: 3:1 minimum1.4.11 (AA)Check borders, icons, focus rings
No opacity modifiers that reduce contrast below threshold1.4.3 (AA)Grep for opacity on text
Color is not the only way to convey info1.4.1 (A)Check error states, status indicators

5. Keyboard & Focus

CheckWCAGHow to verify
All interactive elements are keyboard accessible2.1.1 (A)Check for onClick without keyboard handler
Visible focus styles on all interactive elements2.4.7 (AA)Check :focus / focus-visible styles
Focus order matches visual layout1.3.2 (A)Check tabIndex usage
No keyboard traps2.1.2 (A)Check modals, dropdowns
Focus not obscured by sticky headers/bars2.4.11 (AA)Check sticky/fixed elements
Skip link present and visible on focus2.4.1 (A)Check for skip navigation

6. Forms

CheckWCAGHow to verify
All inputs have associated <label> (or aria-label / aria-labelledby)3.2.2 (A)Check all form inputs
Required fields marked with aria-required="true"3.3.2 (A)Check required inputs
Error messages associated with inputs (aria-describedby or aria-invalid)3.3.1 (A)Check error handling
Errors not communicated by color alone1.4.1 (A)Check error states
autocomplete attributes on common fields (name, email, etc.)1.3.5 (AA)Check form inputs
fieldset + legend for grouped inputs (radio groups, checkboxes)1.3.1 (A)Check grouped inputs

7. Links & Buttons

CheckWCAGHow to verify
Links use <a>, buttons use <button> (not <div onClick>)1.3.1 (A)Check interactive elements
Link/button text is descriptive (no "click here", "read more" without context)2.4.4 (A)Check link text
Links opening in new tab have indication (aria-label or visual + sr text)G201Grep for target="_blank"
Links are visually distinguishable (not just by color)1.4.1 (A)Check link styling

8. Media & Animation

CheckWCAGHow to verify
No autoplay audio/video with sound1.4.2 (A)Check media elements
Video has captions/subtitles1.2.2 (A)Check video elements
All media can be paused2.2.2 (AA)Check media controls
prefers-reduced-motion disables animations2.3.3 (AAA)Check CSS + JS animations
No content flashes more than 3 times per second2.3.1 (A)Check animations

9. Mobile & Touch

CheckWCAGHow to verify
Touch targets minimum 24×24px (44×44px recommended)2.5.8 (AA)Check buttons, links on mobile
No horizontal scrolling at 320px viewport1.4.10 (AA)Check responsive layout
Content works in both orientations1.3.4 (AA)Check orientation lock
Dragging actions have alternatives2.5.7 (AA)Check drag interactions

10. ARIA & Semantics

CheckWCAGHow to verify
ARIA roles used correctly (not on wrong elements)4.1.2 (A)Check ARIA usage
aria-hidden="true" on decorative elements4.1.2 (A)Check decorative content
Live regions (aria-live) for dynamic updates4.1.3 (AA)Check toast/notification components
Modals/dialogs have role="dialog" + aria-modal + focus trap4.1.2 (A)Check modal components
Accordion/disclosure patterns use proper ARIA4.1.2 (A)Check accordion components

11. WCAG 2.2 New Criteria

CheckWCAGHow to verify
Help mechanisms are consistent across pages (chat, FAQ link, etc.)3.2.6 (A)Check help patterns
No redundant entry — don't ask users to re-enter info already provided3.3.7 (A)Check multi-step forms
No cognitive function tests for auth (CAPTCHA alternatives)3.3.8 (AA)Check auth flows

Step 2: Report findings

Present findings as a table grouped by severity:

## Accessibility Audit Results

### 🔴 Critical (breaks access for some users)
| Issue | File | WCAG | Fix |
|-------|------|------|-----|
| ... | ... | ... | ... |

### 🟠 Major (significant barrier)
| Issue | File | WCAG | Fix |
|-------|------|------|-----|
| ... | ... | ... | ... |

### 🟡 Minor (improvement opportunity)
| Issue | File | WCAG | Fix |
|-------|------|------|-----|
| ... | ... | ... | ... |

### ✅ Passing
- [list what's already good]

Ask the user: "Should I fix the issues automatically? All issues or only selected ones?"


Step 3: Fix issues

Apply fixes directly in the codebase. For each fix:

  • Edit the file
  • Add a brief comment only if the fix isn't self-explanatory
  • Never break existing functionality

Common fixes:

Missing alt text:

// Decorative → alt=""
<img src="..." alt="" />

// Meaningful → descriptive alt
<img src="..." alt="Description of image content" />

Missing labels:

<label htmlFor="email">E-Mail</label>
<input id="email" type="email" aria-required="true" />

// Or for icon-only buttons:
<button aria-label="Open menu">
  <MenuIcon aria-hidden="true" />
</button>

Focus styles:

:focus-visible {
  outline: 2px solid var(--c-accent);
  outline-offset: 2px;
}

Skip link:

<a href="#main-content" className="sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-50 focus:px-4 focus:py-2 focus:bg-white focus:text-black">
  Skip to content
</a>

prefers-reduced-motion:

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

External links:

<a href="..." target="_blank" rel="noopener noreferrer">
  Link Text <span className="sr-only">(opens in new tab)</span>
</a>

aria-live for dynamic content:

<div aria-live="polite" aria-atomic="true">
  {statusMessage}
</div>

Step 4: Summary

After fixing, present:

Accessibility Audit Complete!

✅ [N] issues fixed
⚠️ [N] issues need manual testing (keyboard nav, screen reader)
📊 WCAG 2.2 Level AA compliance: [estimated %]

Fixed:
- [list of fixes applied]

Manual testing recommended:
- Tab through all pages — verify focus order and visibility
- Test with screen reader (VoiceOver: Cmd+F5 on Mac)
- Test at 200% zoom — verify no content is cut off
- Test at 320px width — verify no horizontal scroll
- Test with prefers-reduced-motion enabled

Tools for further testing:
- axe DevTools: browser extension for automated checks
- WAVE: https://wave.webaim.org/
- Lighthouse Accessibility audit in Chrome DevTools

Rules

  • Target WCAG 2.2 Level AA (not AAA, unless already implemented)
  • prefers-reduced-motion handling is mandatory, not optional
  • Never remove existing accessibility features
  • Use English for sr-only text in examples; localize to the project's language at implementation time
  • Follow the project's existing code style and framework conventions
  • Do NOT install any npm packages — use native HTML/ARIA
  • Automated tools catch ~30% of issues — this audit is the manual review layer
  • Always recommend manual testing with keyboard + screen reader after fixes

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.