--- name: axiom-ios-accessibility description: Use when fixing or auditing ANY accessibility issue - VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance, App Store accessibility review. license: MIT --- # iOS Accessibility Router **You MUST use this skill for ANY accessibility work including VoiceOver, Dynamic Type, color contrast, and WCAG compliance.** ## When to Use Use this router when: - Fixing VoiceOver issues - Implementing Dynamic Type - Checking color contrast - Ensuring touch target sizes - Preparing for App Store accessibility review - WCAG compliance auditing - Assistive Access support (cognitive disabilities, iOS 17+) ## Routing Logic ### Accessibility Issues **All accessibility work** → `/skill axiom-accessibility-diag` - VoiceOver labels and hints - Dynamic Type scaling - Color contrast (WCAG) - Touch target sizes - Keyboard navigation - Reduce Motion support - Assistive Access (cognitive disabilities, iOS 17+) - Accessibility Inspector usage - App Store Review preparation ### Automated Scanning **Accessibility audit** → Launch `accessibility-auditor` agent or `/axiom:audit accessibility` (VoiceOver issues, Dynamic Type violations, color contrast failures, WCAG compliance scanning) ## Decision Tree 1. ANY accessibility issue → accessibility-diag 2. Want automated accessibility scan? → accessibility-auditor (Agent) ## Anti-Rationalization | Thought | Reality | |---------|---------| | "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. | ## 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 #### accessibility-diag Coverage - 8 critical accessibility issues (including Assistive Access) - WCAG compliance levels (A, AA, AAA) - Assistive Access mode (cognitive disabilities, iOS 17+) - Accessibility Inspector workflows - VoiceOver testing checklist - App Store Review requirements ## Example Invocations User: "My button isn't being read by VoiceOver" → Invoke: `/skill axiom-accessibility-diag` User: "How do I support Dynamic Type?" → Invoke: `/skill axiom-accessibility-diag` User: "Check my app for accessibility issues" → Invoke: `/skill axiom-accessibility-diag` User: "Prepare for App Store accessibility review" → Invoke: `/skill axiom-accessibility-diag` User: "Scan my app for accessibility issues automatically" → Invoke: `accessibility-auditor` agent User: "How do I support Assistive Access?" → Invoke: `/skill axiom-accessibility-diag` User: "My app doesn't show up in Assistive Access" → Invoke: `/skill axiom-accessibility-diag`