audit-swiftui-accessibility

Audits macOS SwiftUI code for accessibility defects and fixes hallucinated or legacy accessibility APIs.

2|1|Updated Jun 7, 2026
One-click install
npx skills add https://github.com/yigitkonur/plugin-swiftui --skill audit-swiftui-accessibility-yigitkonur
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: audit-swiftui-accessibility
Source: https://github.com/yigitkonur/plugin-swiftui/tree/main/plugins/swiftui/skills/audit-swiftui-accessibility
Command: npx skills add https://github.com/yigitkonur/plugin-swiftui --skill audit-swiftui-accessibility-yigitkonur

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires ast-grep, and includes scripts (resource) and references (resource) components.

What problem does it solve? SwiftUI accessibility modifiers are additive and invisible, so macOS apps compile and look correct while remaining broken for VoiceOver users — unlabeled icon buttons, composites that read as fragments, color-only state, undescribed charts, and invented or deprecated accessibility APIs that agents confidently generate. ## Core Features & Use Cases - 12-rule defect index (a11y-01 to a11y-12): Detects missing labels, values, traits, grouping, Reduce-Motion handling, chart descriptors, hallucinated API names, and the deprecated combined .accessibility(label:) modifier. - Hybrid lint engine: Runs tier-1 grep tells plus tier-2 ast-grep structural rules (e.g., Chart-without-descriptor) via the shared swiftui-lint.sh runner, emitting unified JSON and SARIF with a CI exit code on hard failures. - Corpus-grounded fixes: Verifies every claim against 1,857 real shipping macOS apps via swiftui-ctx lookup and Apple docs via Sosumi, then auto-fixes only mechanical defects (invented names, legacy combinator) under a fix-safety protocol. - Use Case: Point it at a finished macOS SwiftUI project to produce structured findings in swiftui-audits/accessibility/, each with a permalinked real-world correct example and severity classification. ## Quick Start Audit the SwiftUI sources in this macOS project for accessibility defects and write findings to the swiftui-audits/accessibility directory.

Frequently Asked Questions about audit-swiftui-accessibility

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I audit SwiftUI accessibility on macOS?

Run the shared lint runner with --skill audit-swiftui-accessibility against your SwiftUI sources to locate candidates, then read each flagged view in full to confirm defects. Confirmed findings are written as structured Markdown files under swiftui-audits/accessibility/ with severity and fix guidance.

What accessibility defects does this SwiftUI audit detect?

It detects twelve defect classes: unlabeled icon-only controls, unhidden decorative images, ungrouped composites, missing accessibility values, color-only state, ignored Reduce Motion, undescribed Charts and Canvases, tappables without traits, broken VoiceOver focus order, invented API names, the legacy combined accessibility modifier, and ungated macOS 14/15 APIs.

Does the audit fix accessibility issues automatically?

Only mechanical defects are auto-fixed: invented API names like .voiceOverLabel are swapped for .accessibilityLabel, and the deprecated combined .accessibility(label:) modifier is split into per-aspect modifiers. Judgment calls like label text remain flag-only with a corpus-grounded correct example.

Does this skill cover AppKit accessibility or keyboard focus?

No. AppKit NSAccessibility is explicitly out of scope and deferred to a future AppKit audit. Keyboard @FocusState belongs to the controls-forms audit; this skill owns only AccessibilityFocusState for VoiceOver focus.

Why does the lint report a file as a parse warning?

The runner runs a per-file parse probe; a parse warning means the file did not fully parse, so a structural ast-grep rule might have missed a defect. Those files must be read by hand rather than treated as clean.