关于 axiom-accessibility
axiom-accessibility 是面向 Apple 应用无障碍与用户流程审查的路由技能,将 VoiceOver、动态字体、对比度和 UX 流程问题指向相应指南与审查流程。
主要功能
- 01提供 VoiceOver 与动态字体指引
- 02检查对比度、触控目标和 WCAG
- 03指引排查 UX 流程死路和缺失状态
- 04提供无障碍与 UX 审查流程
- 05包含 watchOS 无障碍参考资料
适用场景
- 01诊断缺失的 VoiceOver 标签
- 02检查动态字体或颜色对比度问题
- 03查找关闭陷阱和缺失的错误状态
- 04审查 watchOS 无障碍行为
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ charleswiltgen/ axiom --skill axiom-accessibility安装后在 Claude Code 中输入/axiom-accessibility确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
skills/accessibility-auditor.mdaccessibility-diag.mdux-flow-audit.mdwatchos-a11y.md详细介绍
无障碍
任何无障碍相关工作都必须使用此技能,包括 VoiceOver、动态字体、颜色对比度、WCAG 合规性和 UX 流程审计。
无法启动 Axiom Agent? 如果此路由将你指向某个 Agent,请直接按照其流程操作。通过 MCP,
axiom_get_agent会返回该 Agent;在其他环境中,请读取下方的文件,只需使用文件搜索和读取功能即可。此处可用:
skills/accessibility-auditor.md。 位于其他套件中:axiom-concurrency/skills/concurrency-auditor.md、axiom-data/skills/swiftdata-auditor.md、axiom-swiftui/skills/swiftui-nav-auditor.md、axiom-swiftui/skills/ux-flow-auditor.md。对于其他 Agent,通过 MCP,
axiom_get_agent也会返回该 Agent;请使用axiom_xclog_*、axiom_xcsym_*和axiom_xcprof_*工具运行其 xclog、xcsym 和 xcprof 步骤。在其他环境中,请在 Axiom 的技能中搜索skills/<agent>.md;如果没有该文件,请使用本套件的技能自行完成相关工作,并使用PATH中的任意 Axiom 工具。
快速参考
| 症状 / 任务 | 参考 |
|---|---|
| VoiceOver 标签、提示、导航 | 请参阅 skills/accessibility-diag.md |
| 动态字体缩放违规 | 请参阅 skills/accessibility-diag.md |
| tvOS 上的动态字体(大号文本,tvOS 27) | 请参阅 skills/accessibility-diag.md |
| 长篇阅读应用(连续阅读、朗读屏幕、文本导航) | 请参阅 skills/accessibility-diag.md |
| 视频播放器中的字幕与副标题样式(生成式字幕、样式预览) | 请参阅 skills/accessibility-diag.md |
| 自定义控件技术选择(可调整、直通、直接触控) | 请参阅 skills/accessibility-diag.md |
| 无障碍营养标签 | 请参阅 skills/accessibility-diag.md |
| 颜色对比度(WCAG AA/AAA) | 请参阅 skills/accessibility-diag.md |
| 触控目标尺寸(< 44x44pt) | 请参阅 skills/accessibility-diag.md |
| 键盘导航(iPadOS/macOS) | 请参阅 skills/accessibility-diag.md |
| 按钮形状、大号内容查看器、全键盘访问、切换控制 | 请参阅 skills/accessibility-diag.md |
| 调整大小 / 列折叠后 VoiceOver 顺序错乱;表格与网格语义 | 请参阅 skills/accessibility-diag.md |
| 减少动态效果支持 | 请参阅 skills/accessibility-diag.md |
| 辅助访问(认知障碍,iOS 17+) | 请参阅 skills/accessibility-diag.md |
| 无障碍检查器工作流 | 请参阅 skills/accessibility-diag.md |
| UX 流程死路、无法关闭的陷阱 | 请参阅 skills/ux-flow-audit.md |
| 隐藏的 CTA、缺失的空状态 | 请参阅 skills/ux-flow-audit.md |
| 缺失的加载 / 错误状态 | 请参阅 skills/ux-flow-audit.md |
| 深度链接死路 | 请参阅 skills/ux-flow-audit.md |
| 无障碍死路(仅限手势操作) | 请参阅 skills/ux-flow-audit.md |
| watchOS 特定功能(Digital Crown 上的 VoiceOver 转子、辅助触控、轻点两下) | 请参阅 skills/watchos-a11y.md |
跨套件路由
- watchOS 开发完整背景 → 请参阅 axiom-watchos
- 在模拟器上实时验证无障碍功能(设置开关、断言播报内容) →
simulator-testerAgent +xcui— 请参阅 axiom-tools(skills/xcui-ref.md) - 在 XCUITest 中断言 VoiceOver 语音(
XCUIDevice.shared.voiceOverService、OS27) → axiom-testing(skills/ui-testing.md 模式 7)
决策树
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];
}
- 任何 VoiceOver、动态字体(包括 tvOS 大号文本)、对比度、触控目标或 WCAG 问题 →
skills/accessibility-diag.md - 辅助访问(认知障碍,iOS 17+) →
skills/accessibility-diag.md - 无障碍营养标签,或 App Review 中有关无障碍的备注 →
skills/accessibility-diag.md - 阅读应用:VoiceOver 在段落 / 页面处停止,朗读屏幕中断 →
skills/accessibility-diag.md - UX 流程死路、无法关闭的陷阱、隐藏的 CTA、缺失的状态 →
skills/ux-flow-audit.md - watchOS 特定无障碍功能(Digital Crown 上的转子、辅助触控、轻点两下) →
skills/watchos-a11y.md - 想要自动化无障碍扫描? →
accessibility-auditorAgent 或/axiom:audit accessibility
自动扫描
无障碍审计 → 启动 accessibility-auditor agent 或 /axiom:audit accessibility
- VoiceOver 标签和提示
- Dynamic Type 违规
- 颜色对比度问题
- WCAG 合规扫描
UX 流程审计 → 启动 ux-flow-auditor agent
- 无出口视图、无法关闭的陷阱
- 隐藏的 CTA、缺少空状态/加载状态/错误状态
- 深层链接无出口、无障碍功能无出口
关键模式
图像无障碍
- 对纯装饰性图像使用
Image(decorative: "photo")——VoiceOver 会自动忽略这些图像(效果等同于accessibilityHidden(true),但语义更清晰) - 对标签复杂或会变化的按钮使用
accessibilityInputLabels()——通过提供备用标签提高 Voice Control 的准确性 - 遵循
accessibilityDifferentiateWithoutColor环境值——启用时,应在颜色指示器旁提供非颜色提示(图标、图案、标签)
避免自我合理化
| 想法 | 实际情况 |
|---|---|
| “等应用做好后再添加 VoiceOver 标签” | 无障碍功能是基础,不是润色。为已完成的应用补充标签要花费更长时间;在完成之前,也无法宣称支持 VoiceOver。 |
| “我的应用不需要无障碍功能” | 所有应用都需要无障碍功能。这不是 App Store 的规定,但依赖 VoiceOver 或较大文本的用户无法使用缺少无障碍功能的应用,而且他们在下载前就能看到应用的无障碍营养标签。 |
| “Dynamic Type 只需要 .scaledFont” | Dynamic Type 有 7 种常见违规。accessibility-diag 可以全部检测出来。 |
| “在我看来,颜色对比度没问题” | 视觉评估并不可靠。WCAG 比率需要测量。accessibility-diag 可以验证。 |
| “UX 问题只是润色” | UX 流程无出口会导致 1 星评价。这是缺陷,不是改进项。 |
| “关闭手势就能解决” | fullScreenCover 没有关闭手势。这就是陷阱。 |
调用示例
用户:“我的按钮无法被 VoiceOver 读出”
→ 参见 skills/accessibility-diag.md
用户:“如何支持 Dynamic Type?”
→ 参见 skills/accessibility-diag.md
用户:“检查我的应用是否存在无障碍问题”
→ 参见 skills/accessibility-diag.md
用户:“为 App Store 无障碍审核做准备”
→ 参见 skills/accessibility-diag.md
用户:“自动扫描我的应用是否存在无障碍问题”
→ 启动 accessibility-auditor agent
用户:“如何支持 Assistive Access?”
→ 参见 skills/accessibility-diag.md
用户:“如何为我的 tvOS 应用准备大号文本?”
→ 参见 skills/accessibility-diag.md
用户:“窗口调整大小后,VoiceOver 读取屏幕内容的顺序不对”
→ 参见 skills/accessibility-diag.md
用户:“如何在自定义控件中支持按钮形状/大内容查看器?”
→ 参见 skills/accessibility-diag.md
用户:“我的图书应用中,VoiceOver 每到一页末尾就停止朗读”
→ 参见 skills/accessibility-diag.md
用户:“如何让用户重新设置字幕样式,或在视频播放器中获取自动生成的字幕?”
→ 参见 skills/accessibility-diag.md
用户:“检查 UX 流程是否存在无出口或无法关闭的陷阱”
→ 参见 skills/ux-flow-audit.md
用户:“我的 fullScreenCover 没有关闭方式”
→ 参见 skills/ux-flow-audit.md
用户:“我的应用是否缺少空状态?”
→ 参见 skills/ux-flow-audit.md