What is the Swift accessibility skill?
The swift-accessibility-skill is an Agent Skill in PasqualeVittoriosi/swift-accessibility-skill. It auto-activates on SwiftUI, UIKit and AppKit code, so your AI coding agent applies accessibility silently as it writes, and it audits existing code against all 9 App Store Accessibility Nutrition Labels.
The Swift accessibility skill is an Agent Skill that makes accessibility a first-class part of SwiftUI, UIKit and AppKit development. It covers all 9 App Store Accessibility Nutrition Labels across iOS, macOS, watchOS, tvOS and visionOS.
The skill auto-activates on any SwiftUI, UIKit or AppKit code, so no slash command is needed. It works with Claude, Codex, Cursor and any tool that supports the Agent Skills standard.
Three modes
- Writing code: accessibility is applied silently as you build, inferred labels are marked [VERIFY] and a compact summary follows each generation.
- Auditing code: a structured report with severity levels, a device testing checklist and Nutrition Label readiness.
- Nutrition Labels: recommendations with pass or fail criteria for all 9 labels, support reasons and blocked-label reasons.
First-draft rules
The skill includes accessibility in the first draft instead of patching a bare element later. An icon-only button gets an accessibilityLabel marked [VERIFY], a decorative image gets accessibilityHidden, and animation is gated on the Reduce Motion environment value.
How audits are reported
- Blocks Assistive Tech: completely unreachable elements, fix immediately.
- Degrades Experience: reachable elements with significant friction.
- Incomplete Support: gaps preventing Nutrition Label claims.
- Verified in code: items confirmed correct by static analysis.
Audits run only when you explicitly ask. Quick fix mode addresses only Blocks Assistive Tech and Degrades Experience issues, and the default mode covers all severity levels including Incomplete Support and Nutrition Label gaps.
Who the Swift accessibility skill is for
Best for
- SwiftUI, UIKit or AppKit projects where VoiceOver, Voice Control and Dynamic Type support should be built in from the first draft.
- Apps preparing App Store Accessibility Nutrition Label recommendations.
- Reviews of existing views that need an audit report and a QA checklist to hand to testers.
Not for
- Server-side Swift, non-UI packages and CLI tools.
- Auditing a website against WCAG 2.2 with Lighthouse evidence and code patterns for keyboard, contrast and ARIA, which the web accessibility skill covers.
- Auditing a Figma design, a live page or a written description against WCAG 2.1 AA, which the accessibility review skill covers.
- Guiding a four phase WCAG 2.0, 2.1 and 2.2 audit that ends in a prioritised report, which the web accessibility audit skill covers.
- Applying the Mac rulebook of standard menus, resizable windows, customizable toolbars and source list sidebars, which the platform-design-macos skill covers.
How to install Swift Accessibility Skill: SwiftUI, UIKit and AppKit for AI Coding Agents
/plugin marketplace add PasqualeVittoriosi/swift-accessibility-skill
/plugin install swift-accessibility-skill@swift-accessibility-skillManual install: copy the swift-accessibility-skill/ folder into ~/.claude/skills/ user-wide or .claude/skills/ in a project. Codex uses ~/.codex/skills/ and Cursor uses ~/.cursor/skills/.Add the marketplace
In Claude Code, run
/plugin marketplace add PasqualeVittoriosi/swift-accessibility-skill.Install the plugin
Run
/plugin install swift-accessibility-skill@swift-accessibility-skill.Add a memory reference
Add a line in
./CLAUDE.mdfor a project or~/.claude/CLAUDE.mduser-wide that points toswift-accessibility-skill@swift-accessibility-skillfor SwiftUI, UIKit and AppKit accessibility implementation and audits.Use the skill
The skill auto-activates on SwiftUI, UIKit and AppKit code. To call it explicitly, use
/swift-accessibility-skill.
Check that it loaded
Ask your agent to audit a view, for example: Audit this view for accessibility. Expect a report grouped under Blocks Assistive Tech, Degrades Experience, Incomplete Support and Verified in code.
Key features
- VoiceOver patternsEvery non-decorative element gets a concise, context-independent label. Icon-only buttons need an accessibilityLabel, decorative images are hidden with accessibilityHidden(true), and state is a trait, not a label.
- Voice Control rulesLabels must exactly match visible text, accessibilityInputLabels gives icon-only elements alternate names, and every interactive element must appear in the Show numbers and Show names overlays.
- Dynamic TypeText styles replace fixed font sizes, @ScaledMetric scales custom values, and fixed-size UI chrome uses accessibilityShowsLargeContentViewer. ViewThatFits is preferred for adaptive layout on iOS 16 and later.
- Display settingsReduce Motion replaces meaningful animations with dissolve or fade and removes decorative ones. Contrast targets 4.5:1 for text and 3:1 for non-text, and shape, icon or text accompanies color.
- Motor and inputTouch targets are at least 44 by 44 points, every element is reachable via Tab, every modal closes via Escape, and swipe-only gestures get UIAccessibilityCustomAction alternatives for Switch Control.
- Semantic structureReading order uses accessibilitySortPriority, a screenChanged notification moves focus on a new screen, modals use accessibilityViewIsModal, and custom navigation uses accessibilityRotor.
- Version-safe APIsAPIs introduced after iOS 15 get #available guards with older-OS fallback behavior, such as UIAccessibility.post when AccessibilityNotification.Announcement is not available.
- Accessibility SummaryAfter each code generation or fix, the skill appends an Accessibility applied list, Xcode checks such as Canvas Dynamic Type Variants and Accessibility Inspector, and a Test on device list.
- Nutrition Label recommendationThe output lists labels you could claim and should not claim, with reasons and a common-task verification table. A label is not suggested if any common task in its column fails.
- Reference routingThe skill folder holds SKILL.md plus examples, references and resources folders. Before answering, the skill selects one primary reference file and loads more only when a request spans several domains.
Frequently asked questions
What is the Swift accessibility skill?
It is an Agent Skill for accessibility across SwiftUI, UIKit and AppKit. Your AI coding agent applies accessibility as it writes code, audits existing code with severity levels and a device testing checklist, and prepares App Store Accessibility Nutrition Label recommendations with pass or fail criteria for all 9 labels.
How do I install the Swift accessibility skill?
In Claude Code, run /plugin marketplace add PasqualeVittoriosi/swift-accessibility-skill, then /plugin install swift-accessibility-skill@swift-accessibility-skill. You can also copy the skill folder into ~/.claude/skills/ user-wide or .claude/skills/ in a project. Codex uses ~/.codex/skills/ and Cursor uses ~/.cursor/skills/ for a manual install. The skill auto-activates on SwiftUI, UIKit and AppKit code.
Which Nutrition Labels does the skill cover?
It covers all 9 App Store Accessibility Nutrition Labels: VoiceOver, Voice Control, Larger Text, Dark Interface, Differentiate Without Color, Sufficient Contrast, Reduced Motion, Captions and Audio Descriptions. The coverage spans iOS, macOS, watchOS, tvOS and visionOS, and it also handles Switch Control and Full Keyboard Access.
When does the Swift accessibility skill activate?
It auto-activates on any SwiftUI, UIKit or AppKit code, so no slash command is needed. It also triggers on terms such as VoiceOver, Dynamic Type, Reduce Motion, WCAG and accessibility audit. You can call it explicitly with /swift-accessibility-skill, or ask for an audit with a prompt like Audit this view for accessibility.
What does an audit report contain?
An audit is a structured report with four groups: Blocks Assistive Tech, Degrades Experience, Incomplete Support and Verified in code. It closes with the items you must test on device and a Nutrition Label readiness verdict of Achievable, Blocked by an issue, or Not applicable. Audits run only when you explicitly ask.
Why are some labels marked VERIFY?
When the agent infers a label, it adds a // [VERIFY] comment, because SF Symbol names such as square.and.arrow.up rarely match what users expect to hear, which would be Share. Inferred labels need human review. A control with visible text needs no extra label, since an added label overrides the text VoiceOver reads.
Which AI coding agents can use the skill?
It works with Claude, Codex, Cursor and any tool that supports the Agent Skills standard. You place the skill folder inside that tool's skills directory, such as .gemini/skills/ for Gemini CLI, .github/skills/ for GitHub Copilot, .opencode/skills/ for OpenCode or .windsurf/skills/ for Windsurf.
How does the skill handle Voice Control?
Labels must exactly match visible text, because mismatches silently break the Tap name command. Icon-only elements get alternate names through accessibilityInputLabels, such as Compose and New Message. Every interactive element must appear in the Show numbers and Show names overlays, and UI hidden behind a swipe needs a voice-accessible alternative through accessibilityAction.


