AX

axiom-ios-accessibility

Ensure iOS app accessibility compliance by fixing VoiceOver, contrast, and layout issues.

Install

mkdir -p .claude/skills/axiom-ios-accessibility && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/7225" && unzip -o skill.zip -d .claude/skills/axiom-ios-accessibility && rm skill.zip

Installs to .claude/skills/axiom-ios-accessibility

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Use when fixing or auditing ANY accessibility issue — VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance, App Store accessibility review.
158 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Audit VoiceOver labels and hints
  • Validate Dynamic Type support
  • Check color contrast ratios
  • Verify touch target sizes
  • Scan for WCAG compliance

How it works

It provides a diagnostic framework to audit and fix accessibility gaps across various iOS and tvOS features.

Inputs & outputs

You give it
UI component or app screen
You get back
Accessibility audit report

When to use axiom-ios-accessibility

  • Auditing app for VoiceOver support
  • Fixing low contrast UI elements
  • Optimizing touch targets for mobile
  • Updating fonts for dynamic type

About this skill

Accessibility

You MUST use this skill for ANY accessibility work including VoiceOver, Dynamic Type, color contrast, WCAG compliance, and UX flow auditing.

<!-- AXIOM_AUDITOR_INLINE_BEGIN — auto-maintained by scripts/build-inlined-auditors.ts; do not hand-edit -->

Not on Claude Code? Where this router says "Launch some-auditor agent", read that auditor's file in this suite and follow it inline — the same procedure, needing only file search and read.

Available here: skills/accessibility-auditor.md. Homed in another suite: axiom-concurrency/skills/concurrency-auditor.md, axiom-data/skills/swiftdata-auditor.md, axiom-swiftui/skills/swiftui-nav-auditor.md, axiom-swiftui/skills/ux-flow-auditor.md.

Agents that need Bash — builds, tests, simulators, crash symbolication — stay Claude Code-only; there is no inline equivalent for those.

<!-- AXIOM_AUDITOR_INLINE_END -->

Quick Reference

Symptom / TaskReference
VoiceOver labels, hints, navigationSee skills/accessibility-diag.md
Dynamic Type scaling violationsSee skills/accessibility-diag.md
Dynamic Type on tvOS (Large Text, tvOS 27)See skills/accessibility-diag.md
Long-form reading apps (continuous reading, Speak Screen, text navigation)See skills/accessibility-diag.md
Captions & subtitle styling in video players (generated subtitles, style preview)See skills/accessibility-diag.md
Custom control technique choice (adjustable, passthrough, direct touch)See skills/accessibility-diag.md
Accessibility Nutrition LabelsSee skills/accessibility-diag.md
Color contrast (WCAG AA/AAA)See skills/accessibility-diag.md
Touch target sizes (< 44x44pt)See skills/accessibility-diag.md
Keyboard navigation (iPadOS/macOS)See skills/accessibility-diag.md
Button Shapes, Large Content Viewer, Full Keyboard Access, Switch ControlSee skills/accessibility-diag.md
VoiceOver order broken after resize / column collapse; table & grid semanticsSee skills/accessibility-diag.md
Reduce Motion supportSee skills/accessibility-diag.md
Assistive Access (cognitive, iOS 17+)See skills/accessibility-diag.md
Accessibility Inspector workflowsSee skills/accessibility-diag.md
App Store Review preparationSee skills/accessibility-diag.md
UX dead ends, dismiss trapsSee skills/ux-flow-audit.md
Buried CTAs, missing empty statesSee skills/ux-flow-audit.md
Missing loading/error statesSee skills/ux-flow-audit.md
Deep link dead endsSee skills/ux-flow-audit.md
Accessibility dead ends (gesture-only)See skills/ux-flow-audit.md
watchOS-specific (VoiceOver rotor on Digital Crown, AssistiveTouch, Double Tap)See skills/watchos-a11y.md

Cross-Suite Routes

  • Full watchOS development context → See axiom-watchos
  • Live accessibility validation on the simulator (set toggles, assert announcements) → simulator-tester agent + xcui — see axiom-tools (skills/xcui-ref.md)

Decision Tree

digraph accessibility {
    start [label="Accessibility issue" shape=ellipse];
    what [label="What type?" shape=diamond];

    start -> what;
    what -> "skills/accessibility-diag.md" [label="VoiceOver/labels/hints"];
    what -> "skills/accessibility-diag.md" [label="Dynamic Type"];
    what -> "skills/accessibility-diag.md" [label="color contrast"];
    what -> "skills/accessibility-diag.md" [label="touch targets"];
    what -> "skills/accessibility-diag.md" [label="keyboard nav"];
    what -> "skills/accessibility-diag.md" [label="resizable window / desktop-class"];
    what -> "skills/accessibility-diag.md" [label="Reduce Motion"];
    what -> "skills/accessibility-diag.md" [label="Assistive Access"];
    what -> "skills/accessibility-diag.md" [label="custom control techniques"];
    what -> "skills/accessibility-diag.md" [label="continuous reading / text navigation"];
    what -> "skills/accessibility-diag.md" [label="captions / subtitle styling"];
    what -> "skills/accessibility-diag.md" [label="App Store prep / Nutrition Labels"];
    what -> "skills/ux-flow-audit.md" [label="UX dead end/dismiss trap"];
    what -> "skills/ux-flow-audit.md" [label="missing states"];
    what -> "skills/watchos-a11y.md" [label="watchOS VoiceOver / AssistiveTouch / Double Tap"];
    what -> "accessibility-auditor" [label="automated scan" shape=box];
}
  1. ANY VoiceOver, Dynamic Type (including tvOS Large Text), contrast, touch target, or WCAG issue → skills/accessibility-diag.md
  2. Assistive Access (cognitive disabilities, iOS 17+) → skills/accessibility-diag.md
  3. App Store accessibility rejection or Nutrition Labels → skills/accessibility-diag.md
  4. Reading app: VoiceOver stops at paragraphs/pages, Speak Screen halts → skills/accessibility-diag.md
  5. UX dead ends, dismiss traps, buried CTAs, missing states → skills/ux-flow-audit.md
  6. watchOS-specific accessibility (rotor on Digital Crown, AssistiveTouch, Double Tap) → skills/watchos-a11y.md
  7. Want automated accessibility scan? → accessibility-auditor agent or /axiom:audit accessibility

Automated Scanning

Accessibility audit → Launch accessibility-auditor agent or /axiom:audit accessibility

  • VoiceOver labels and hints
  • Dynamic Type violations
  • Color contrast failures
  • WCAG compliance scanning

UX flow audit → Launch ux-flow-auditor agent

  • Dead-end views, dismiss traps
  • Buried CTAs, missing empty/loading/error states
  • Deep link dead ends, accessibility dead ends

Critical Patterns

Image Accessibility

  • Use Image(decorative: "photo") for purely decorative images — automatically hidden from VoiceOver (equivalent to accessibilityHidden(true) but semantically clearer)
  • Use accessibilityInputLabels() for buttons with complex or changing labels — improves Voice Control accuracy by providing alternative labels
  • Respect accessibilityDifferentiateWithoutColor environment value — when active, provide non-color cues (icons, patterns, labels) alongside color indicators

Anti-Rationalization

ThoughtReality
"I'll add VoiceOver labels when I'm done building"Accessibility is foundational, not polish. accessibility-diag prevents App Store rejection.
"My app doesn't need accessibility"All apps need accessibility. It's required by App Store guidelines and benefits all users.
"Dynamic Type just needs .scaledFont"Dynamic Type has 7 common violations. accessibility-diag catches them all.
"Color contrast looks fine to me"Visual assessment is unreliable. WCAG ratios require measurement. accessibility-diag validates.
"UX issues are just polish"UX dead ends cause 1-star reviews. They're defects, not enhancements.
"The dismiss gesture handles it"fullScreenCover has no dismiss gesture. That's the trap.

Example Invocations

User: "My button isn't being read by VoiceOver" → See skills/accessibility-diag.md

User: "How do I support Dynamic Type?" → See skills/accessibility-diag.md

User: "Check my app for accessibility issues" → See skills/accessibility-diag.md

User: "Prepare for App Store accessibility review" → See skills/accessibility-diag.md

User: "Scan my app for accessibility issues automatically" → Launch accessibility-auditor agent

User: "How do I support Assistive Access?" → See skills/accessibility-diag.md

User: "How do I prepare my tvOS app for Large Text?" → See skills/accessibility-diag.md

User: "VoiceOver reads my screen in the wrong order after the window resizes" → See skills/accessibility-diag.md

User: "How do I support Button Shapes / the Large Content Viewer in my custom controls?" → See skills/accessibility-diag.md

User: "VoiceOver stops reading at the end of each page in my book app" → See skills/accessibility-diag.md

User: "How do I let users restyle subtitles or get generated captions in my video player?" → See skills/accessibility-diag.md

User: "Check for UX dead ends and dismiss traps" → See skills/ux-flow-audit.md

User: "My fullScreenCover has no way to dismiss" → See skills/ux-flow-audit.md

User: "Are there missing empty states in my app?" → See skills/ux-flow-audit.md

When not to use it

  • Do not delay accessibility work until the end of development

Limitations

  • Automated scans require specific auditor agents

How it compares

This skill treats accessibility as a foundational requirement rather than a post-development polish task.

Compared to similar skills

axiom-ios-accessibility side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
axiom-ios-accessibility (this skill)12moNo flagsIntermediate
ios-simulator-skill271moReviewAdvanced
mobile-ios-design2725moNo flagsIntermediate
web-design-guidelines326moNo flagsBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

More by CharlesWiltgen

View all by CharlesWiltgen

axiom-ios-build

CharlesWiltgen

Use when ANY iOS build fails, test crashes, Xcode misbehaves, or environment issue occurs before debugging code. Covers build failures, compilation errors, dependency conflicts, simulator problems, environment-first diagnostics.

332

axiom-ios-ai

CharlesWiltgen

Use when implementing ANY Apple Intelligence or on-device AI feature. Covers Foundation Models, @Generable, LanguageModelSession, structured output, Tool protocol, iOS 26 AI integration.

10

axiom-ios-data

CharlesWiltgen

Use when working with ANY data persistence, database, axiom-storage, CloudKit, migration, or serialization. Covers SwiftData, Core Data, GRDB, SQLite, CloudKit sync, file storage, Codable, migrations.

10

axiom-ios-performance

CharlesWiltgen

Use when app feels slow, memory grows, battery drains, or diagnosing ANY performance issue. Covers memory leaks, profiling, Instruments workflows, retain cycles, performance optimization.

11

axiom-networking

CharlesWiltgen

Use when implementing Network.framework connections, debugging connection failures, migrating from sockets/URLSession streams, or adopting structured concurrency networking patterns - prevents deprecated API usage, reachability anti-patterns, and thread-safety violations with iOS 12-26+ APIs

11

axiom-vision

CharlesWiltgen

subject segmentation, VNGenerateForegroundInstanceMaskRequest, isolate object from hand, VisionKit subject lifting, image foreground detection, instance masks, class-agnostic segmentation, VNRecognizeTextRequest, OCR, VNDetectBarcodesRequest, DataScannerViewController, document scanning, RecognizeDocumentsRequest

01

Search skills

Search the agent skills registry