A11y — Unified Accessibility Command & Foundation
Cross-platform accessibility foundation (WCAG 2.1 AA) with auto-detection of audit, fix, review, or close workflows.
Step 0 — Flag Override
If $ARGUMENTS starts with --audit: load /audit --a11y (references/a11y-workflow.md in audit skill). Pass remaining args as platform hint.
If $ARGUMENTS starts with --fix: load /fix --a11y (references/a11y-mode.md in fix skill). Pass remaining args as finding ID or count.
If $ARGUMENTS starts with --review: load /review --a11y (references/a11y.md in review skill). Pass remaining args as focus area.
If $ARGUMENTS starts with --close: load /audit --close (references/a11y-close.md in audit skill). Pass remaining args as finding ID.
Otherwise: continue to Auto-Detection.
Auto-Detection
Analyze $ARGUMENTS for positional patterns and keywords:
| Pattern |
Dispatch |
audit or empty + staged changes exist |
/audit --a11y (detect platform from changed file extensions) |
fix or #<id> or bare number |
/fix --a11y with the ID/count |
review |
/review --a11y |
close or resolve |
/audit --close |
| Ambiguous |
Ask user: audit, fix, review, or close? |
Platform Detection
| Signal |
Platform |
Skill |
.swift, .xib, SwiftUI |
iOS |
ios-a11y |
.kt, Compose |
Android |
android-a11y |
.tsx, .jsx, HTML, CSS |
Web |
web-a11y |
If no signal, ask the user. Activate ONLY the skill matching the detected platform.
POUR Framework
| Principle |
Requirement |
| Perceivable |
Content available through sight, hearing, or touch |
| Operable |
Interface navigable by keyboard, pointer, voice |
| Understandable |
Content readable, predictable, input-assisted |
| Robust |
Compatible with assistive technologies |
WCAG Conformance Levels
| Level |
Requirement |
Target |
| A |
Minimum |
Must pass |
| AA |
Standard (legal baseline) |
Our target |
| AAA |
Enhanced |
Nice to have |
Severity & Scoring
Accessibility score: 0–100 (start at 100, subtract per finding).
| Severity |
Points |
Examples |
| Critical |
-10 |
Missing labels, keyboard traps, no alt text, zero contrast |
| Serious |
-5 |
No focus indicator, non-descriptive links, missing headings |
| Moderate |
-2 |
Inconsistent nav, positive tabIndex, heading gaps |
| Minor |
-1 |
Missing ARIA on decorative elements |
PR Blocking Rule
Block PR when any of:
- 1+ critical violations
- 1+ regressions (resolved finding reappears)
- 5+ serious violations
Operating Modes
| Mode |
Trigger |
Behavior |
| Guidance |
/review --a11y, direct questions |
Human-readable examples, no file writes |
| Audit |
/audit --a11y |
JSON-only output, read-only (no Write/Edit) |
| Fix |
/fix --a11y |
JSON status + code edits, surgical changes only |
| Close |
/audit --close |
Update known-findings DB, JSON confirmation |
Routing
| Intent |
Command |
When |
| Audit violations |
/audit --a11y |
"audit accessibility" |
| Fix violations |
/fix --a11y |
"fix a11y", fix top N |
| Close finding |
/audit --close <id> |
Mark resolved |
| Review compliance |
/review --a11y |
"review accessibility" |
Data Store
.epost-data/a11y/
├── fixes/
│ ├── findings/ ← audit-a11y reports (audit-YYMMDD-HHMM.json)
│ ├── patches/ ← fix-a11y diffs (finding-{id}-YYMMDD.diff)
│ └── reviews/ ← review-a11y reports (review-YYMMDD-HHMM.json)
├── README.md
├── analysis.md ← trend summary
└── known-findings.json (v1.3 schema)
Schema: .claude/assets/known-findings-schema.json
Each finding: id, platform, wcag, title, file_pattern, code_pattern, fix_template, priority (1–3), resolved, resolved_date, fix_applied, source, first_detected_date.
On first run, any a11y command creates missing directories and copies README.md from assets template.
See data-store skill for directory convention and gitignore rules.
1---2name: a11y-43description: (ePost) Use when "accessibility", "WCAG", "POUR", "a11y", "screen reader", or accessibility workflow ("audit", "fix", "review", "close finding") is mentioned across any platform — loads cross-platform a11y compliance rules4---5
6# A11y — Unified Accessibility Command & Foundation
7
8Cross-platform accessibility foundation (WCAG 2.1 AA) with auto-detection of audit, fix, review, or close workflows.
9
10## Step 0 — Flag Override
11
12If `$ARGUMENTS` starts with `--audit`: load `/audit --a11y` (references/a11y-workflow.md in audit skill). Pass remaining args as platform hint.
13If `$ARGUMENTS` starts with `--fix`: load `/fix --a11y` (references/a11y-mode.md in fix skill). Pass remaining args as finding ID or count.
14If `$ARGUMENTS` starts with `--review`: load `/review --a11y` (references/a11y.md in review skill). Pass remaining args as focus area.
15If `$ARGUMENTS` starts with `--close`: load `/audit --close` (references/a11y-close.md in audit skill). Pass remaining args as finding ID.
16Otherwise: continue to Auto-Detection.
17
18## Auto-Detection
19
20Analyze `$ARGUMENTS` for positional patterns and keywords:
21
22| Pattern | Dispatch |
23|---------|----------|
24| `audit` or empty + staged changes exist | `/audit --a11y` (detect platform from changed file extensions) |
25| `fix` or `#<id>` or bare number | `/fix --a11y` with the ID/count |
26| `review` | `/review --a11y` |
27| `close` or `resolve` | `/audit --close` |
28| Ambiguous | Ask user: audit, fix, review, or close? |
29
30## Platform Detection
31
32| Signal | Platform | Skill |
33|--------|----------|-------|
34| `.swift`, `.xib`, SwiftUI | iOS | `ios-a11y` |
35| `.kt`, Compose | Android | `android-a11y` |
36| `.tsx`, `.jsx`, HTML, CSS | Web | `web-a11y` |
37
38If no signal, ask the user. Activate ONLY the skill matching the detected platform.
39
40## POUR Framework
41
42| Principle | Requirement |
43|-----------|-------------|
44| **Perceivable** | Content available through sight, hearing, or touch |
45| **Operable** | Interface navigable by keyboard, pointer, voice |
46| **Understandable** | Content readable, predictable, input-assisted |
47| **Robust** | Compatible with assistive technologies |
48
49## WCAG Conformance Levels
50
51| Level | Requirement | Target |
52|-------|-------------|--------|
53| **A** | Minimum | Must pass |
54| **AA** | Standard (legal baseline) | **Our target** |
55| **AAA** | Enhanced | Nice to have |
56
57## Severity & Scoring
58
59Accessibility score: 0–100 (start at 100, subtract per finding).
60
61| Severity | Points | Examples |
62|----------|--------|----------|
63| Critical | -10 | Missing labels, keyboard traps, no alt text, zero contrast |
64| Serious | -5 | No focus indicator, non-descriptive links, missing headings |
65| Moderate | -2 | Inconsistent nav, positive tabIndex, heading gaps |
66| Minor | -1 | Missing ARIA on decorative elements |
67
68### PR Blocking Rule
69
70Block PR when **any** of:
71- 1+ critical violations
72- 1+ regressions (resolved finding reappears)
73- 5+ serious violations
74
75## Operating Modes
76
77| Mode | Trigger | Behavior |
78|------|---------|----------|
79| **Guidance** | `/review --a11y`, direct questions | Human-readable examples, no file writes |
80| **Audit** | `/audit --a11y` | JSON-only output, read-only (no Write/Edit) |
81| **Fix** | `/fix --a11y` | JSON status + code edits, surgical changes only |
82| **Close** | `/audit --close` | Update known-findings DB, JSON confirmation |
83
84## Routing
85
86| Intent | Command | When |
87|--------|---------|------|
88| Audit violations | `/audit --a11y` | "audit accessibility" |
89| Fix violations | `/fix --a11y` | "fix a11y", fix top N |
90| Close finding | `/audit --close <id>` | Mark resolved |
91| Review compliance | `/review --a11y` | "review accessibility" |
92
93## Data Store
94
95```
96.epost-data/a11y/
97├── fixes/
98│ ├── findings/ ← audit-a11y reports (audit-YYMMDD-HHMM.json)
99│ ├── patches/ ← fix-a11y diffs (finding-{id}-YYMMDD.diff)
100│ └── reviews/ ← review-a11y reports (review-YYMMDD-HHMM.json)
101├── README.md
102├── analysis.md ← trend summary
103└── known-findings.json (v1.3 schema)
104```
105
106Schema: `.claude/assets/known-findings-schema.json`
107Each finding: `id`, `platform`, `wcag`, `title`, `file_pattern`, `code_pattern`, `fix_template`, `priority` (1–3), `resolved`, `resolved_date`, `fix_applied`, `source`, `first_detected_date`.
108
109On first run, any a11y command creates missing directories and copies `README.md` from assets template.
110
111See `data-store` skill for directory convention and gitignore rules.