skills/accessibility-enforcer/SKILL.md
Ensure mobile app UI complies with iOS VoiceOver, Android TalkBack, and WCAG mobile criteria. Detect missing labels, contrast issues, and propose accessible alternatives.
npx skillsauth add fatih-developer/fth-skills accessibility-enforcerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Accessibility (a11y) on mobile is not a nice-to-have; it's a legal and moral requirement. A screen reader user should be able to navigate, understand, and interact with the app as easily as a sighted user. This skill acts as an automated a11y auditor.
Core principle: If VoiceOver or TalkBack can't read it, the button doesn't exist for that user.
1. Identify the UI component / interaction pattern
2. Analyze for specific platform screen reader requirements
3. Check WCAG contrast and touch target sizes
4. Recommend code-level implementations
Identify the elements being used:
Screen readers need three things from an element:
Check for missing accessibilityLabel (iOS/React Native) or contentDescription (Android) on interactive non-text elements (like icon-only buttons).
Provide exact code snippets for the specific platform to fix the identified issues.
# ♿ Accessibility Audit Report
**Component / View:** [e.g., Custom Icon Button Navbar]
## 🚨 Critical VoiceOver/TalkBack Issues
*Issues blocking screen reader users from using the feature.*
1. **[Issue Name]** (e.g., Unlabeled Icon Button)
- **Problem:** [E.g., The search icon button has no label. VoiceOver will just read "Button", leaving the user confused.]
- **Fix:** [Give the exact code fix, such as adding `accessibilityLabel="Search"` and `accessibilityRole="button"`.]
## ⚠️ UX / Interaction Warnings
*Issues failing WCAG but not completely broken.*
1. **[Warning Area]** (e.g., Touch Target Too Small)
- **Problem:** [Explanation]
- **Mitigation:** [Solution, e.g., Add `hitSlop` to increase the touchable area without visually changing the design.]
## 💡 Code Implementation
```javascript/swift/kotlin
// Before (Inaccessible):
<TouchableOpacity onPress={search}>
<Icon name="search" />
</TouchableOpacity>
// After (Accessible):
<TouchableOpacity
onPress={search}
accessibilityRole="button"
accessibilityState={{disabled: false}}
accessibilityLabel="Search"
accessibilityHint="Opens the search bar to find users"
hitSlop={{top: 10, bottom: 10, left: 10, right: 10}}
>
<Icon name="search" />
</TouchableOpacity>
accessibilityLabel (e.g., "Search Button"). The screen reader will announce "Search Button Button" because of the element's trait.importantForAccessibility="no" or accessible={false}).See references/EXAMPLES.md for a worked case.
If you are executing the Pre-Release Audit Flow as defined in the Mobile ECOSYSTEM guide, and this accessibility audit passes, the next mandatory skill in the sequence is:
@mobile-perf-auditortools
Create, optimize, critique, and structure prompts for AI systems. Use this skill whenever the user is designing or improving a prompt, system prompt, coding prompt, image prompt, evaluation rubric, agent prompt, workflow prompt, or MCP-oriented prompt package. Also use it when the user asks to turn vague AI behavior into a precise instruction set, tool policy, agent spec, or prompt architecture.
testing
Assumption-first architecture review skill to stress-test project plans and expose hidden risks.
testing
Enforce and manage DESIGN.md specifications, extract design systems from URLs, and combine design reasoning with token roles to prevent drift.
testing
Forces the agent to act with a Claude-like product mindset, prioritizing user journey, UX states, and visual quality before coding.