Agent skill · Security

ios-accessibility

Build and audit SwiftUI, UIKit, and AppKit accessibility for VoiceOver, Voice Control, Switch Control, Full Keyboard Access, Dynamic Type, focus restoration, labels/traits/actions, traversal, custom rotors, NSAccessibility, XCTest checks, adaptive system preferences, and App Store accessibility declarations. Use when implementing accessible UI, fixing an accessibility audit, testing assistive-technology behavior, or substantiating App Store Accessibility Nutrition Labels.

Derek Pearson935★ · +23/wk · 1 repos on radarProfile →
claude-codecodexcursorNOASSERTION
Install
npx skills add dpearson2699/swift-ios-skills --skill ios-accessibility --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 5
SKILL.md size: 18 KB
Bundled scripts: none
Path: skills/ios-accessibility/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 963 · +28 this week
Language: Python
Read our review of the source →

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

Review
written from the skill's own SKILL.md · Aug 5, 2026

What it does

Build SwiftUI, UIKit, and AppKit interfaces that remain operable with VoiceOver, Switch Control, Voice Control, Full Keyboard Access, and adaptive accessibility settings.

How it works

  • Provides guidance on focus management to ensure VoiceOver focus returns to the trigger element after dismissal of sheets, alerts, or popovers.
  • Includes examples and patterns for SwiftUI accessibility modifiers, custom modals with isModal trait, and accessibilityAction handling.
  • Shows how to emit UIKit accessibility notifications for status changes, layout updates, and screen changes.
  • Covers Dynamic Type scaling with system text styles and the use of @ScaledMetric for non-text dimensions.
  • Describes Custom Rotors, System Accessibility Preferences, Decorative Content, and Voice Control label guidance.
  • Details Full Keyboard Access audit checks to ensure reachability, labeling, and operability without touch, plus traversal and focus considerations.
  • Addresses Assistive Access (iOS 18+) behavior with simplified content when enabled.
  • Presents UIKit and AppKit accessibility patterns and guidance for custom content and NSAccessibility considerations.
  • Includes App Store Accessibility Nutrition Labels guidance and testing considerations with evidence-based claims.
  • Outlines testing approaches: manual testing (VoiceOver, Voice Control, Full Keyboard Access, Switch Control, Dynamic Type) and automated testing with XCTest for accessibility identifiers and focus behavior.

When to use it

Use when implementing accessible UI, fixing an accessibility audit, testing assistive-technology behavior, or substantiating App Store Accessibility Nutrition Labels.

What it can touch

  • Tools: "claude-code", "codex", "cursor" (as declared)
  • Focus areas include VoiceOver labels, traits, actions, traversal, custom rotors, and NSAccessibility updates

Caveats

  • License: NOASSERTION
  • Declared category: Security
  • Files in the skill folder: 5
  • Skill relies on external references (references/a11y-patterns.md, references/nutrition-labels.md) for examples
From the SKILL.md

# iOS/macOS Accessibility - SwiftUI, UIKit, and AppKit Build SwiftUI, UIKit, and AppKit interfaces that remain operable with VoiceOver, Switch Control, Voice Control, Full Keyboard Access, and adaptive accessibility settings. ## Contents - [Core Principles](#core-principles) - [How VoiceOver Reads Elements](#how-voiceover-reads-elements) - [SwiftUI Accessibility Modifiers](#swiftui-accessibility-modifiers) - [Focus Management](#focus-management) - [Dynamic Type](#dynamic-type) - [Custom Rotors](#custom-rotors) - [System Accessibility Preferences](#system-accessibility-preferences) - [Decorative Content](#decorative-content) - [Voice Control](#voice-control) - [Switch Control](#switch-control) - [Full Keyboard Access](#full-keyboard-access) - [Assistive Access (iOS 18+)](#assistive-access-ios-18) - [UIKit Accessibility Patterns](#uikit-accessibility-patterns) - [AppKit Accessibility Patterns](#appkit-accessibility-patterns) - [Accessibility Custom Content](#accessibility-custom-content) - [App Store Accessibility Nutrition Labels](#app-store-accessibility-nutrition-labels) - [Testing Accessibility](#testing-accessibility) - [Common Mistakes](#common-mistakes) - [Review Checklist](#r

What's inside
Steps it walks through
  1. Contents
  2. Core Principles
  3. How VoiceOver Reads Elements
  4. SwiftUI Accessibility Modifiers
  5. Focus Management
  6. @AccessibilityFocusState (iOS 15+)
  7. Multi-Target Focus with Enum
  8. Custom Modals
  9. Accessibility Notifications (UIKit)
  10. Dynamic Type
  11. Custom Rotors
  12. System Accessibility Preferences
  13. Reduce Motion
  14. Reduce Transparency, Increase Contrast, Bold Text
Ships with 4 files
  • evals/evals.json
  • references/a11y-patterns.md
  • references/media-accessibility.md
  • references/nutrition-labels.md
More from swift-ios-skills
All skills →
About this skill
What does the ios-accessibility skill do?

Build and audit SwiftUI, UIKit, and AppKit accessibility for VoiceOver, Voice Control, Switch Control, Full Keyboard Access, Dynamic Type, focus restoration, labels/traits/actions, traversal, custom rotors, NSAccessibility, XCTest checks, adaptive system preferences, and App Store accessibility declarations. Use when implementing accessible UI, fixing an accessibility audit, testing assistive-technology behavior, or substantiating App Store Accessibility Nutrition Labels.

How do I install it?

Run `npx skills add dpearson2699/swift-ios-skills --skill ios-accessibility --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From dpearson2699/swift-ios-skills, a repository with 963 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going