Loading...
Loading...
Automatically applies accessibility best practices to Swift projects (SwiftUI and UIKit). Use when working on iOS/macOS projects that need VoiceOver support, Dynamic Type, WCAG compliance, or accessibility audits. Triggers on Swift accessibility tasks, a11y improvements, or when the user mentions accessibility, VoiceOver, or Dynamic Type.
npx skill4agent add madebyecho/agent-skills swift-accessibility| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Missing VoiceOver Labels | CRITICAL | |
| 2 | Missing Context and Discoverability | HIGH | |
| 3 | Visual, Interaction, and System Setting Compliance | MEDIUM | |
p0-images-without-labels.accessibilityLabelp0-icon-only-buttonsp1-missing-hints.accessibilityHintp1-missing-identifiers.accessibilityIdentifierp1-missing-input-labelsaccessibilityInputLabelsp1-small-touch-targetsp1-color-only-informationp2-hardcoded-fontsp2-ungrouped-elementsp2-missing-header-traits.isHeaderp2-decorative-elements-visiblep2-contrast-insufficientp2-reduce-motion-ignoredp2-bold-text-ignoredp2-custom-actions-missingp2-dynamic-content-not-announcedp2-modal-focus-management| Nutrition Label | Rules Covering It |
|---|---|
| VoiceOver | p0-*, p1-missing-hints, p1-missing-identifiers, p2-ungrouped-elements, p2-missing-header-traits, p2-decorative-elements-visible, p2-custom-actions-missing, p2-dynamic-content-not-announced, p2-modal-focus-management |
| Voice Control | p1-missing-input-labels, p1-missing-hints, p2-custom-actions-missing |
| Larger Text (Dynamic Type) | p2-hardcoded-fonts |
| Sufficient Contrast | p2-contrast-insufficient |
| Dark Interface | p2-contrast-insufficient (checks both modes) |
| Differentiate Without Color Alone | p1-color-only-information |
| Reduced Motion | p2-reduce-motion-ignored |
| Bold Text | p2-bold-text-ignored |
| Touch Target Size | p1-small-touch-targets |
**/*.swiftimport SwiftUIimport UIKit.accessibilityLabel.accessibilityHint.accessibilityIdentifier.accessibilityHidden.accessibilityInputLabelsaccessibilityReduceMotionisAccessibilityElementaccessibilityLabelaccessibilityIdentifierUIAccessibility.isReduceMotionEnabledadjustsFontForContentSizeCategoryrules/[VERIFY].accessibilityLabel("Settings icon") // [VERIFY] confirm label matches intentassets/audit-template.swiftAccessibilityAuditTests.swiftperformAccessibilityAudit()## Accessibility Audit Report
### Issues Found
| Priority | Category | Count |
|----------|----------|-------|
| P0 Critical | ... | ... |
| P1 High | ... | ... |
| P2 Medium | ... | ... |
### Changes Applied
- **Files modified**: [list]
- **Issues fixed**: [count] of [total]
- **Test file generated**: [path]
### Accessibility Nutrition Label Readiness
| Feature | Status |
|---------|--------|
| VoiceOver | Ready / Needs Work |
| Voice Control | Ready / Needs Work |
| Larger Text | Ready / Needs Work |
| Sufficient Contrast | Needs Manual Review |
| Differentiate Without Color | Ready / Needs Work |
| Reduced Motion | Ready / Needs Work |
### Manual Review Required
Items marked with [VERIFY] that need human confirmation:
- [list of VERIFY items with file:line references]
### Next Steps
- [ ] Run VoiceOver testing (see assets/checklist.md)
- [ ] Review [VERIFY] markers and update labels
- [ ] Run generated accessibility tests
- [ ] Test with Dynamic Type at all sizes (up to AX5)
- [ ] Test in both Light and Dark modes
- [ ] Enable Increase Contrast + Bold Text + Reduce Transparency and verify
- [ ] Enable Reduce Motion and verify animations
- [ ] Test with Voice Control ("Show Names", "Show Numbers")rules/references/swiftui-patterns.mdreferences/uikit-patterns.mdreferences/wcag-guidelines.mdassets/audit-template.swiftassets/checklist.md