Accessibility Audit Skill
This skill produces a structured accessibility audit based on WCAG 2.2 guidelines. It covers visual, motor, cognitive, and screen reader accessibility — with prioritised remediation for each issue found.
Required Inputs
Ask the user for these if not provided:
- What is being audited (screen, component, full product, design spec)
- Description or image of the UI
- Target WCAG level (A / AA / AAA — default to AA, which is the legal standard in most jurisdictions)
- Known assistive technology users? (Yes/No — if yes, which: screen reader / switch access / voice control / magnification)
- Platform (Web / iOS / Android / Desktop app)
Programmatic Helper
Contrast ratios cannot be eyeballed. The AA line sits at 4.5:1, and #777777
on white is 4.478 (fails) while #767676 is 4.54 (passes) — no amount of
looking at a screenshot separates those. Compute them:
npx --yes notugly fix "#8ab4f8" "#ffffff" # ratio, APCA, and the nearest passing colour
npx --yes notugly onepager <url> --out review.html # every pairing, printable
npx --yes notugly vision # which colours merge for colour-blind viewers
notugly fix returns the ratio, the APCA lightness contrast, and the closest
colour to the one already chosen that passes — same hue, same chroma. Paste
those numbers into the tables below rather than estimating them.
Deterministic, zero dependencies, and no model call — so it costs nothing to
run and gives the same answer every time.
For 1.4.3 Contrast (Minimum) and 1.4.11 Non-text Contrast, every row in the
remediation table should carry a measured ratio, not an assessment. If the user
supplied a screenshot rather than hex values, say so explicitly in the audit —
an inferred ratio is not an audit finding.
Output Structure
Accessibility Audit: [Component or Screen Name]
Target standard: WCAG 2.2 Level [AA]
Platform: [Platform]
Date: [Date]
Audit Summary
| Category | Issues Found | Critical | Moderate | Minor |
|---|
| Perceivable | | | | |
| Operable | | | | |
| Understandable | | | | |
| Robust | | | | |
| Total | | | | |
Overall compliance status: ✅ Compliant / 🟡 Minor issues / 🔴 Fails AA standard
Perceivable
1.1 Text Alternatives
Issues found: [List specific issues or "None"]
1.3 Adaptable
Issues found:
1.4 Distinguishable
Issues found:
Operable
2.1 Keyboard Accessible
Issues found:
2.4 Navigable
Issues found:
2.5 Input Modalities
Issues found:
Understandable
3.1 Readable
3.2 Predictable
3.3 Input Assistance
Issues found:
Robust
4.1 Compatible
Issues found:
Prioritised Remediation List
| Priority | Issue | WCAG Criterion | Fix | Effort |
|---|
| 🔴 Critical | [Issue] | [e.g. 1.4.3 Contrast] | [Specific fix] | [Low/Med/High] |
| 🟡 Moderate | [Issue] | | | |
| 🟢 Minor | [Issue] | | | |
Priority definitions:
- 🔴 Critical: Blocks access for users with disabilities. Legal risk. Fix before launch.
- 🟡 Moderate: Significant friction. Fix in next sprint.
- 🟢 Minor: Best practice. Address in roadmap.
Quick Wins (Fix in < 1 hour)
[List any issues that are trivially fixable — e.g. adding alt text, fixing contrast with a colour swap, adding a lang attribute. These are easy to ship immediately.]
Testing Recommendations
- Manual keyboard test: Tab through the entire flow. Can you complete every task without a mouse?
- Screen reader test: VoiceOver (Mac/iOS), NVDA or JAWS (Windows). Is every piece of content and every action accessible?
- Colour contrast check: Use Stark (Figma plugin) or WebAIM Contrast Checker
- Automated scan: Axe DevTools or Lighthouse accessibility audit (catches ~30% of issues automatically)
Quality Checks
Anti-Patterns
Example Trigger Phrases
- "Audit this design for accessibility"
- "Check WCAG compliance for [screen/component]"
- "Give me an a11y audit of [UI description]"
- "What accessibility issues does this design have?"