From swift-modern-dev
Use when implementing or auditing VoiceOver, Dynamic Type, accessibility labels, focus, contrast, or Hit-testing for SwiftUI iOS/macOS apps.
How this skill is triggered — by the user, by Claude, or both
Slash command
/swift-modern-dev:ios-accessibilityThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Ship usable apps with VoiceOver, Dynamic Type, and HIG accessibility baselines.
Ship usable apps with VoiceOver, Dynamic Type, and HIG accessibility baselines.
| ALWAYS | NEVER |
|---|---|
Meaningful accessibilityLabel on icon-only controls | Icon-only buttons with no label |
| Support Dynamic Type (no fixed tiny text) | Rely on color alone for meaning |
| ≥ ~44pt touch targets for interactive controls | Trap focus / unreadable contrast |
| Test with VoiceOver on critical flows | Ship decorative noise as accessibility elements |
Button {
isFavorite.toggle()
} label: {
Image(systemName: isFavorite ? "star.fill" : "star")
}
.accessibilityLabel(isFavorite ? "Remove from favorites" : "Add to favorites")
.accessibilityAddTraits(isFavorite ? .isSelected : [])
Text(title)
.font(.body) // scales with Dynamic Type
.accessibilityHeading(.h2)
.accessibilityElement(children: .combine)
.accessibilityAction(named: "Delete") { delete() }
.accessibilityHidden(true)| When | Read |
|---|---|
| Deep examples | Claude legacy examples under old skill if needed; prefer keep this slim |
npx claudepluginhub pstuart/pstuart --plugin swift-modern-devProvides best practices and SwiftUI code examples for iOS accessibility, including VoiceOver labels, Dynamic Type support, touch targets, and HIG compliance.
Build and audit accessible iOS/macOS interfaces with VoiceOver, Dynamic Type, Switch Control, Full Keyboard Access, focus restoration, and custom rotors for SwiftUI, UIKit, and AppKit.
Audits and fixes accessibility issues across Apple platforms: VoiceOver, Dynamic Type, WCAG compliance, color contrast, touch targets, and more.