Axiom Accessibility

CharlesWiltgen/Axiom/axiom-cursor/skills/axiom-accessibility

作者 CharlesWiltgen82c7feafae634a79b4336b3381289441886c122c无许可证1.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 平台无障碍问题:VoiceOver、动态字体、对比度、触控目标、WCAG 与 UX 流程。

功能
该技能将无障碍工作分派到参考文档,涵盖 VoiceOver 标签与导航、动态字体、颜色对比度、触控目标尺寸、键盘导航、减弱动态效果、辅助访问、字幕以及 App Store 无障碍审核准备。它还涵盖 UX 流程审计,用于发现死胡同、关闭陷阱、被埋没的行动号召,以及缺失的空状态、加载或错误状态,并包含 watchOS 特有的无障碍主题。它产出的是指导与审计方向而非文件,并可指向自动化扫描子代理。
适用场景
适用于修复或审计 Apple 平台上的任何无障碍问题,例如按钮无法被 VoiceOver 读出、动态字体缩放问题、对比度或触控目标不达标,或 WCAG 合规检查。也适合准备 App Store 无障碍审核,以及检查 UX 流程中的死胡同与缺失状态。
运行要求
仅为说明文档,不附带脚本。它引用外部工具 xcui 和 axe 用于模拟器 UI 自动化,这两者并未随附,需单独安装,并可能委派给 Cursor 子代理。未说明需要凭据或网络访问。

Cursor UI Tool Availability

xcui is an external tool and is not bundled with the Cursor plugin; it has no Axiom MCP wrapper. Before UI automation, check command -v xcui. If it is absent, AXe fallback is limited to compatible input verbs: tap, slider, type, swipe, drag, touch, gesture, button, key, key-sequence, key-combo, and screenshot. Then check command -v axe before that fallback and handle DEVELOPER_DIR explicitly if AXe reports a SimulatorKit loading error. AXe cannot replace wait, assert, a11y, dialog, voiceover, resize, or doctor. If neither tool is available, stop UI automation, explain the external setup requirement, and continue only with non-UI simulator and log checks. If AXe exists but the requested workflow requires an xcui-only capability, stop that UI workflow and report the limitation.

Accessibility

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

Cursor Subagent Routing

Delegate to the appropriate Cursor subagent when this router calls for a specialized auditor.

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 → Delegate to the accessibility-auditor subagent or /axiom-audit accessibility

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

UX flow audit → Delegate to the ux-flow-auditor subagent

  • 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" → Delegate to the accessibility-auditor subagent

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-cursor/skills/axiom-accessibility提交82c7fea

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架