accessibility-gatelisted
Install: claude install-skill vmobifystudio/app-dev-team
# Accessibility gate
The studio's position, from the plan: accessibility does not need a specialist role, it needs a
**gate that can fail**. This is that gate. It runs on the diff, not on the finished app, because a
retrofit is an order of magnitude more expensive than doing it in the ticket.
Where a platform auditor exists, spawn it first and fold its findings in — `axiom:accessibility-auditor`
on iOS, `ui-design:accessibility-audit` elsewhere. **Both are external and optional** (separate
plugins, not this one's `skills/`). Missing → record `N/A: <tool> — not installed`, walk the list by
hand, never file the absence as a defect.
## The gate
Each item is `PASS` or `FAIL: <what and where>`. There is no partial credit and no "minor".
1. **Every interactive element has an accessible label** that says what it does — not its icon name.
An unlabelled icon button is a control that does not exist for a screen-reader user.
2. **Reading order matches visual order**, and grouped content is grouped for the screen reader too.
3. **Every state change is announced** — loading finished, error appeared, item deleted. A silent
state change strands the user in the previous screen.
4. **Touch targets are at least 44pt (iOS) / 48dp (Android)**, including in dense lists.
5. **Contrast**: 4.5:1 body text, 3:1 large text and non-text indicators. Checked against the token,
in both light and dark.
6. **Colour is never the only signal.** Error, selection and status carry a shape, an icon