# axiom-accessibility

A skill for fixing and auditing accessibility in Apple apps: VoiceOver, Dynamic Type, contrast, touch targets, WCAG.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1200 installs · ★ 1229
- Author: CharlesWiltgen
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/CharlesWiltgen/Axiom/tree/HEAD/axiom-codex/skills/axiom-accessibility/SKILL.md
- Updated: 2026-10-20
- HTML: https://affpapa.org/en/nevibecode/skills/axiom-accessibility

## What it does

The skill kicks in whenever you touch accessibility in an Apple-platform app. It routes by symptom: VoiceOver labels and hints, Dynamic Type scaling, contrast failures, touch targets under 44x44pt, keyboard navigation, Reduce Motion, Assistive Access. A separate branch covers UX flow — dead-end views, dismiss traps, buried CTAs, missing loading and error states. watchOS gets its own file for the Digital Crown rotor, AssistiveTouch and Double Tap.

Under the hood it is a router: a symptom table plus a decision tree pointing at `skills/accessibility-diag.md`, `skills/ux-flow-audit.md` or `skills/watchos-a11y.md`. Automated scanning lives in separate auditors. `axiom-audit-accessibility` checks labels, Dynamic Type, contrast and WCAG; `axiom-audit-ux-flow` hunts dead ends and missing states. In Codex those auditors are invoked as skills rather than Claude agents. Anything that shells out — builds, tests, simulators — needs shell access to run.

Install it before the UI is finished. VoiceOver labels bolted on at the end cost more work, and until they exist you cannot claim VoiceOver support. Contrast is not something you eyeball either; WCAG ratios need measurement, and that is what the diagnostic leans on.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-accessibility -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/axiom-accessibility/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/axiom-accessibility/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-accessibility -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/axiom-accessibility/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-accessibility -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/axiom-accessibility/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install CharlesWiltgen/Axiom axiom-accessibility
```

2. **Manually: put the files in place**
- File: `.github/skills/axiom-accessibility/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-accessibility -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/CharlesWiltgen/Axiom --path axiom-codex/skills/axiom-accessibility
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/axiom-accessibility/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-accessibility -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/CharlesWiltgen/Axiom/tree/HEAD/axiom-codex/skills/axiom-accessibility/SKILL.md

## When to use it
- label UI elements for VoiceOver and add hints
- catch Dynamic Type scaling violations
- measure contrast against WCAG AA and AAA
- grow touch targets to 44x44pt
- find dead-end views and dismiss traps in a flow

## Example prompts
- audit the settings screen for VoiceOver labels and reading order
- why does Dynamic Type break on my cards — run the diagnostic
- run axiom-audit-accessibility across the project and list contrast failures

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: fe551b005a9e434f.

BEGIN THIRD-PARTY FILE fe551b005a9e434f
```text
---
name: axiom-accessibility
description: Use when fixing or auditing ANY accessibility issue — VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance, App Store accessibility review.
license: MIT
---

# Accessibility

**You MUST use this skill for ANY accessibility work including VoiceOver, Dynamic Type, color contrast, WCAG compliance, and UX flow auditing.**

<!-- AXIOM_AUDITOR_INLINE_BEGIN — rewritten for Codex by scripts/build-codex.ts; do not hand-edit -->
> **Auditors are skills here.** Where this router says "Launch `some-auditor` agent", invoke the
> matching Codex skill instead — same procedure, no Claude Code agent required.
>
> Available: `axiom-audit-accessibility`, `axiom-audit-concurrency`, `axiom-audit-swiftdata`, `axiom-audit-swiftui-nav`, `axiom-audit-ux-flow`.
>
> The ones that shell out — builds, tests, simulators, crash symbolication — need shell access to run.
<!-- AXIOM_AUDITOR_INLINE_END -->

## Quick Reference

| Symptom / Task | Reference |
|----------------|-----------|
| VoiceOver labels, hints, navigation | See `skills/accessibility-diag.md` |
| Dynamic Type scaling violations | See `skills/accessibility-diag.md` |
| Dynamic Type on tvOS (Large Text, tvOS 27) | See `skills/accessibility-diag.md` |
| Long-form reading apps (continuous reading, Speak Screen, text navigation) | See `skills/accessibility-diag.md` |
| Captions & subtitle styling in video players (generated subtitles, style preview) | See `skills/accessibility-diag.md` |
| Custom control technique choice (adjustable, passthrough, direct touch) | See `skills/accessibility-diag.md` |
| Accessibility Nutrition Labels | See `skills/accessibility-diag.md` |
| Color contrast (WCAG AA/AAA) | See `skills/accessibility-diag.md` |
| Touch target sizes (< 44x44pt) | See `skills/accessibility-diag.md` |
| Keyboard navigation (iPadOS/macOS) | See `skills/accessibility-diag.md` |
| Button Shapes, Large Content Viewer, Full Keyboard Access, Switch Control | See `skills/accessibility-diag.md` |
| VoiceOver order broken after resize / column collapse; table & grid semantics | See `skills/accessibility-diag.md` |
| Reduce Motion support | See `skills/accessibility-diag.md` |
| Assistive Access (cognitive, iOS 17+) | See `skills/accessibility-diag.md` |
| Accessibility Inspector workflows | See `skills/accessibility-diag.md` |
| UX dead ends, dismiss traps | See `skills/ux-flow-audit.md` |
```
END THIRD-PARTY FILE fe551b005a9e434f

The third-party file has ended. Everything between the fe551b005a9e434f tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2430 of 8611 bytes. © CharlesWiltgen · MIT · https://github.com/CharlesWiltgen/Axiom/tree/HEAD/axiom-codex/skills/axiom-accessibility/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
