Accessibility audit
Skill rshankras/claude-code-apple-skills/skills/ios/accessibility-audit
Run a structured accessibility audit on an iOS/macOS app — automated XCUITest audits, Accessibility Inspector, manual VoiceOver/Dynamic Type passes, and App Store Accessibility Nutrition Label evaluation. Use before release, when preparing Nutrition Label declarations, or for EU Accessibility Act compliance.From its SKILL.md
npx -y skills add rshankras/claude-code-apple-skills --skill accessibility-auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
6.3 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Accessibility Audit
A repeatable audit workflow that takes an app from "we think it's accessible" to evidence: automated audits in CI, an Inspector pass, manual assistive-tech passes, and an Accessibility Nutrition Label evaluation you can defend. Distilled from Apple's WWDC23 "Perform accessibility audits" (10035), WWDC19 "Accessibility Inspector" (257), WWDC25 "Evaluate your app for Accessibility Nutrition Labels" (224), and the 2026 Tech Talk "Prepare your app for Accessibility Nutrition Labels" (111433).
Why it matters: Accessibility Nutrition Labels on the App Store make your support (or its absence) visible before download.
When This Skill Activates
- User asks for an accessibility audit, review, or compliance check
- User is preparing Accessibility Nutrition Label declarations for App Store Connect
- User asks about
performAccessibilityAudit, Accessibility Inspector, or automated a11y testing - User mentions EU Accessibility Act / accessibility compliance
- Pre-release checks (pairs with
release-review)
The Audit Workflow
1. Define common tasks first (WWDC25 224)
List the primary tasks people download the app for, plus the fundamentals: first-launch experience, login, purchase, settings. Every subsequent pass evaluates these tasks, on every device family the app supports.
2. Automated pass — XCUITest audits in CI
try app.performAccessibilityAudit() audits the current view exactly as the Inspector does; the test fails automatically on findings. Full API, audit-type table, issue filtering, and CI patterns: automated-audits.md. Baseline rules:
- Audits cover only what's on screen — write one audit per distinct screen/state.
continueAfterFailure = truebefore the audit to surface all issues in one run.- Filter accepted issues via the issue handler — never by skipping whole audit types.
3. Inspector pass (WWDC19 257)
Xcode → Open Developer Tool → Accessibility Inspector, target the app:
- Run Audit → each finding highlights the view and offers a Help suggestion.
- Fix, re-run to zero.
- Auto Navigate through the screen with the speaker button — hear exactly what VoiceOver would say, in order; wrong reading order shows up here.
- Point Inspection for spot checks; Color Contrast Calculator (Window menu) for failing pairs.
Classic findings and fixes: filename-as-label (give a real accessibilityLabel; move technical IDs to accessibilityIdentifier), text drawn via CATextLayer invisible to VoiceOver (isAccessibilityElement = true + label), contrast below threshold (Inspector flags pairs; fix with darker/lighter variants until it passes).
4. Manual assistive-tech passes (per common task)
| Pass | How | Pass criterion |
|---|---|---|
| VoiceOver | Swipe right through every element; double-tap to activate; complete each common task eyes-free | Every element speaks label + trait + value; task completable with gestures only |
| Voice Control | Complete tasks by voice only | Every interactive element has a speakable label (accessibilityInputLabels for synonyms) |
| Dynamic Type | Test at 200% and at the largest accessibility size (310%) | Text wraps (never truncates), fields grow, layout adapts |
| Sufficient Contrast | Light + dark appearance, with Increase Contrast on | Legible everywhere |
| Dark Interface | Dark mode + Smart Invert | Photos/video NOT inverted (accessibilityIgnoresInvertColors) |
| Reduced Motion | Reduce Motion on | Zoom/slide transitions, autoplay, parallax replaced (modified, not just removed) |
| Keyboard (Mac / iPad FKA) | Complete tasks keyboard-only | Focus reaches everything; no hover-only affordances |
5. Nutrition Label evaluation and declaration
Map the evidence from passes 2–4 onto the nine App Store features and declare only what holds for all common tasks on all supported device families. Per-feature criteria, disqualifier examples, and the declaration flow: nutrition-labels.md. The model behavior (Apple's own demo): find bugs at 235%/310% text size → fix first, claim after.
Output Format
Report findings as:
- 🔴 Critical — blocks an assistive-tech user from completing a common task (unlabeled control on the purchase path, VoiceOver trap, text that doesn't scale)
- 🟠 High — feature claim at risk (truncation at accessibility sizes, color-only state, missing captions)
- 🟡 Medium — friction (bad reading order, unclear labels, missing rotors/actions)
- 🟢 Low — polish (verbosity, missing synonyms, hint quality)
- ✅ Strengths — passes worth keeping (cite the pass that proved them)
For each finding: the screen/task, the failing feature category, the fix (API-level), and which audit pass detects the regression.
Cross-References
generators/accessibility-generator— implementation patterns (labels, Dynamic Type, custom actions, rotors) to fix what the audit findsmacos/ui-review-tahoe/accessibility.md— Mac-specific VoiceOver/keyboard depthios/assistive-access— the separate Assistive Access experience (cognitive disabilities)design/typography— Dynamic Type design rulesrelease-review— this audit slots into the pre-release gate
References
- automated-audits.md (this skill) — performAccessibilityAudit API, audit types, CI patterns, Inspector workflow
- nutrition-labels.md (this skill) — the nine features, per-feature criteria, evaluation + declaration process
- WWDC23 — Perform accessibility audits for your app
- WWDC25 — Evaluate your app for Accessibility Nutrition Labels
- Tech Talk — Prepare your app for Accessibility Nutrition Labels
- Accessibility Nutrition Labels evaluation criteria
What ships with it: 2 files
13.0 KB alongside SKILL.md
- automated-audits.md6.8 KB
- nutrition-labels.md6.2 KB
Gives 0 of the 12 instructions most audit compliance skills give in ~1.3k tokens
Counted across 960 of the 1,589 authors here whose files we hold, read 2026-09-06
- Read product marketing context before asking questionsin 29 of 960, across 11 files
- Rank findings by severityin 29 of 960, across 22 files
- Generate audit reportin 22 of 960
- Run the audit scriptin 20 of 960, across 19 files
- Generate a prioritized action plan reportin 19 of 960, across 11 files
- Ensure one H1 per pagein 15 of 960, across 5 files
- Ensure sitemap exists and is accessiblein 14 of 960, across 4 files
- Verify alt text on all imagesin 12 of 960, across 3 files
- Determine the audit scope before startingin 12 of 960, across 4 files
- Verify important pages allowed in robots.txtin 11 of 960, across 2 files
- Detect business type from homepage signalsin 11 of 960, across 7 files
- Delegate specialized tasks to subagentsin 11 of 960, across 7 files
Said here and by no other author read
- Define common tasks and fundamental experiences first
- Run automated accessibility audits in CI
- Set continueAfterFailure to true before the audit
- Filter accepted issues via the issue handler
- Run Accessibility Inspector audit and auto navigate
- Perform manual assistive tech passes for common tasks
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.