Axiom Accessibility

CharlesWiltgen/Axiom/axiom-codex/skills/axiom-accessibility

作者 CharlesWiltgen82c7feafae634a79b4336b3381289441886c122cMIT1.1K 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫今天更新

Use when fixing or auditing ANY accessibility issue — VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance, App Store accessibility review.

AI 產生的概覽

將 Apple 平台 App 的無障礙與 UX 流程問題導向診斷參考與稽核技能。

功能
這是一個針對 Apple 平台無障礙工作的路由技能。它把症狀與任務——VoiceOver 標籤、動態字級、色彩對比度、觸控目標、WCAG 合規、鍵盤導覽、減少動態效果、輔助使用存取、字幕、App Store 審查準備,以及 UX 死路——對應到三份參考文件:accessibility-diag、ux-flow-audit 和 watchos-a11y。它也會指向用於無障礙與 UX 流程掃描的自動稽核技能。它產出的是指引與稽核方向,而不是檔案或程式碼。
適用情境
適用於修正或稽核 Apple 平台 App 的無障礙問題,例如 VoiceOver 不朗讀某個控制項、動態字級違規、對比度或觸控目標不符標準,或準備 WCAG 與 App Store 無障礙審查。也適用於 UX 流程檢查,例如無法關閉的陷阱、被埋沒的 CTA,以及缺少的空狀態、載入狀態或錯誤狀態。
執行需求
沒有指令碼,只有說明。它會引用搭配的稽核技能;若要在模擬器上做即時驗證,還需要 shell 存取權與 Xcode 工具鏈,以及 xcui 參考。

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 / TaskReference
VoiceOver labels, hints, navigationSee skills/accessibility-diag.md
Dynamic Type scaling violationsSee 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 LabelsSee 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 ControlSee skills/accessibility-diag.md
VoiceOver order broken after resize / column collapse; table & grid semanticsSee skills/accessibility-diag.md
Reduce Motion supportSee skills/accessibility-diag.md
Assistive Access (cognitive, iOS 17+)See skills/accessibility-diag.md
Accessibility Inspector workflowsSee skills/accessibility-diag.md
App Store Review preparationSee skills/accessibility-diag.md
UX dead ends, dismiss trapsSee skills/ux-flow-audit.md
Buried CTAs, missing empty statesSee skills/ux-flow-audit.md
Missing loading/error statesSee skills/ux-flow-audit.md
Deep link dead endsSee skills/ux-flow-audit.md
Accessibility dead ends (gesture-only)See skills/ux-flow-audit.md
watchOS-specific (VoiceOver rotor on Digital Crown, AssistiveTouch, Double Tap)See skills/watchos-a11y.md

Cross-Suite Routes

  • Full watchOS development context → See axiom-watchos
  • Live accessibility validation on the simulator (set toggles, assert announcements) → simulator-tester agent + xcui — see axiom-tools (skills/xcui-ref.md)
  • Asserting VoiceOver speech in an XCUITest (XCUIDevice.shared.voiceOverService, OS27) → axiom-testing (skills/ui-testing.md Pattern 7)

Decision Tree

dot
digraph accessibility {    start [label="Accessibility issue" shape=ellipse];    what [label="What type?" shape=diamond];
    start -> what;    what -> "skills/accessibility-diag.md" [label="VoiceOver/labels/hints"];    what -> "skills/accessibility-diag.md" [label="Dynamic Type"];    what -> "skills/accessibility-diag.md" [label="color contrast"];    what -> "skills/accessibility-diag.md" [label="touch targets"];    what -> "skills/accessibility-diag.md" [label="keyboard nav"];    what -> "skills/accessibility-diag.md" [label="resizable window / desktop-class"];    what -> "skills/accessibility-diag.md" [label="Reduce Motion"];    what -> "skills/accessibility-diag.md" [label="Assistive Access"];    what -> "skills/accessibility-diag.md" [label="custom control techniques"];    what -> "skills/accessibility-diag.md" [label="continuous reading / text navigation"];    what -> "skills/accessibility-diag.md" [label="captions / subtitle styling"];    what -> "skills/accessibility-diag.md" [label="App Store prep / Nutrition Labels"];    what -> "skills/ux-flow-audit.md" [label="UX dead end/dismiss trap"];    what -> "skills/ux-flow-audit.md" [label="missing states"];    what -> "skills/watchos-a11y.md" [label="watchOS VoiceOver / AssistiveTouch / Double Tap"];    what -> "accessibility-auditor" [label="automated scan" shape=box];}
  1. ANY VoiceOver, Dynamic Type (including tvOS Large Text), contrast, touch target, or WCAG issue → skills/accessibility-diag.md
  2. Assistive Access (cognitive disabilities, iOS 17+) → skills/accessibility-diag.md
  3. App Store accessibility rejection or Nutrition Labels → skills/accessibility-diag.md
  4. Reading app: VoiceOver stops at paragraphs/pages, Speak Screen halts → skills/accessibility-diag.md
  5. UX dead ends, dismiss traps, buried CTAs, missing states → skills/ux-flow-audit.md
  6. watchOS-specific accessibility (rotor on Digital Crown, AssistiveTouch, Double Tap) → skills/watchos-a11y.md
  7. Want automated accessibility scan? → accessibility-auditor agent or axiom-audit-accessibility

Automated Scanning

Accessibility audit → axiom-audit-accessibility

  • VoiceOver labels and hints
  • Dynamic Type violations
  • Color contrast failures
  • WCAG compliance scanning

UX flow audit → axiom-audit-ux-flow

  • Dead-end views, dismiss traps
  • Buried CTAs, missing empty/loading/error states
  • Deep link dead ends, accessibility dead ends

Critical Patterns

Image Accessibility
  • Use Image(decorative: "photo") for purely decorative images — automatically hidden from VoiceOver (equivalent to accessibilityHidden(true) but semantically clearer)
  • Use accessibilityInputLabels() for buttons with complex or changing labels — improves Voice Control accuracy by providing alternative labels
  • Respect accessibilityDifferentiateWithoutColor environment value — when active, provide non-color cues (icons, patterns, labels) alongside color indicators

Anti-Rationalization

ThoughtReality
"I'll add VoiceOver labels when I'm done building"Accessibility is foundational, not polish. accessibility-diag prevents App Store rejection.
"My app doesn't need accessibility"All apps need accessibility. It's required by App Store guidelines and benefits all users.
"Dynamic Type just needs .scaledFont"Dynamic Type has 7 common violations. accessibility-diag catches them all.
"Color contrast looks fine to me"Visual assessment is unreliable. WCAG ratios require measurement. accessibility-diag validates.
"UX issues are just polish"UX dead ends cause 1-star reviews. They're defects, not enhancements.
"The dismiss gesture handles it"fullScreenCover has no dismiss gesture. That's the trap.

Example Invocations

User: "My button isn't being read by VoiceOver" → See skills/accessibility-diag.md

User: "How do I support Dynamic Type?" → See skills/accessibility-diag.md

User: "Check my app for accessibility issues" → See skills/accessibility-diag.md

User: "Prepare for App Store accessibility review" → See skills/accessibility-diag.md

User: "Scan my app for accessibility issues automatically" → axiom-audit-accessibility

User: "How do I support Assistive Access?" → See skills/accessibility-diag.md

User: "How do I prepare my tvOS app for Large Text?" → See skills/accessibility-diag.md

User: "VoiceOver reads my screen in the wrong order after the window resizes" → See skills/accessibility-diag.md

User: "How do I support Button Shapes / the Large Content Viewer in my custom controls?" → See skills/accessibility-diag.md

User: "VoiceOver stops reading at the end of each page in my book app" → See skills/accessibility-diag.md

User: "How do I let users restyle subtitles or get generated captions in my video player?" → See skills/accessibility-diag.md

User: "Check for UX dead ends and dismiss traps" → See skills/ux-flow-audit.md

User: "My fullScreenCover has no way to dismiss" → See skills/ux-flow-audit.md

User: "Are there missing empty states in my app?" → See skills/ux-flow-audit.md

來源與署名

來源:CharlesWiltgen/Axiom位於axiom-codex/skills/axiom-accessibility提交82c7fea

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架