> axiom-ios-accessibility
Use when fixing or auditing ANY accessibility issue - VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance, App Store accessibility review.
curl "https://skillshub.wtf/CharlesWiltgen/Axiom/axiom-ios-accessibility?format=md"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
- ANY accessibility issue → accessibility-diag
- 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 toaccessibilityHidden(true)but semantically clearer) - Use
accessibilityInputLabels()for buttons with complex or changing labels — improves Voice Control accuracy by providing alternative labels - Respect
accessibilityDifferentiateWithoutColorenvironment 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
> related_skills --same-repo
> axiom-eventkit
Use when working with ANY calendar event, reminder, EventKit permission, or EventKitUI controller. Covers access tiers (no-access, write-only, full), permission migration from pre-iOS 17, store lifecycle, reminder patterns, EventKitUI controller selection, Siri Event Suggestions, virtual conference extensions.
> axiom-eventkit-ref
Use when needing EventKit API details — EKEventStore, EKEvent, EKReminder, EventKitUI view controllers, EKCalendarChooser, authorization methods, predicate-based fetching, recurrence rules, Siri Event Suggestions donation, EKVirtualConferenceProvider, location-based reminders, and EKErrorDomain codes
> axiom-contacts
Use when accessing ANY contact data, requesting Contacts permissions, choosing between picker and store access, implementing Contact Access Button, or migrating to iOS 18 limited access. Covers authorization levels, CNContactStore, ContactProvider, key fetching, incremental sync.
> axiom-contacts-ref
Use when needing Contacts API details — CNContactStore, CNMutableContact, CNSaveRequest, CNContactFormatter, CNContactVCardSerialization, CNContactPickerViewController, ContactAccessButton, contactAccessPicker, ContactProvider extension, CNChangeHistoryFetchRequest, contact key descriptors, and CNError codes