用途
a11y-audit 用于审计运行中的 React Native 应用的无障碍(可访问性)情况。它从 iOS 模拟器捕获无障碍树,并对照 React Native 官方的无障碍文档与最佳实践进行检查,帮助开发者发现并修复无障碍问题。
主要能力
审计按照严重程度分为三个等级:
- Critical(严重):阻断屏幕阅读器用户。例如交互元素(按钮、链接、开关、文本输入)缺少 accessibilityLabel;图片缺少无障碍标签;accessibilityLabel 仅为文件名或空字符串。
- Warning(警告):体验降级。例如交互元素缺少 accessibilityRole 或 role;触摸目标小于 44x44 点;嵌套的可访问元素(可访问父元素包含可访问子元素);切换/复选框元素缺少 accessibilityState。
- Info(信息):改进机会。例如交互元素缺少 accessibilityHint;相邻相关元素可能存在分组机会;静态文本元素可使用标题角色。
使用方式与工作流
-
预检查:在派发子代理前验证 AXe 是否安装,命令为
command -v "${IOS_SIMULATOR_MCP_AXE_PATH:-axe}" >/dev/null 2>&1。若失败则停止并提示用户通过brew install cameroncooke/axe/axe安装后重试;AXe 缺失时不要派发子代理。 -
步骤 1 — 捕获并审计无障碍树(子代理):不要在主编排上下文中加载无障碍树,而是派发一个 general-purpose 子代理(模型 haiku)。子代理运行
${CLAUDE_SKILL_DIR}/../ios-sim/scripts/ui.sh describe-all输出完整无障碍树 JSON,读取检查清单${CLAUDE_SKILL_DIR}/references/a11y-checklist.md,逐元素检查上述各级问题,并返回结构化文本报告(含扫描元素总数、各级问题计数、每个问题的元素描述与坐标及修复建议)。 -
步骤 1.5 — React 无障碍属性(可选):若 Metro/Hermes 调试器可用,则从 fiber 树中提取 React 声明的无障碍属性(accessible、accessibilityLabel、accessibilityRole、accessibilityHint、accessibilityState、accessibilityValue、importantForAccessibility、role、aria-label、aria-hidden),并与步骤 1 的原生无障碍树对比。先运行
${CLAUDE_SKILL_DIR}/../_shared/scripts/metro.sh status做守卫,若退出码为 1(Metro 未运行)则静默跳过。运行时派发子代理执行${CLAUDE_SKILL_DIR}/../_shared/scripts/cdp-bridge.js tree,返回 DISCREPANCIES 报告,列出 React 属性未出现在原生树中的组件、原生树中缺失预期 React 属性的组件、以及声明标签/角色与原生值的差异。 -
步骤 2 — 补充文档引用:根据审计中的关键词(accessibilityLabel、accessibilityRole、accessibilityHint)在
${CLAUDE_SKILL_DIR}/../../refs/react-native-docs/accessibility.md中检索,必要时读取具体章节以提供准确的修复指导。 -
步骤 3 — 呈现最终报告:合并子代理审计报告与文档引用,展示完整问题列表及按严重程度的计数;为每个 Critical 问题附带修复方案并引用 accessibility.md;总结前三项改进动作;若应用零 Critical 问题则向开发者表示祝贺。
依赖
- ios-sim:
ui.sh describe-all捕获无障碍树;capture.sh view用于可选的截图上下文。 - _shared(metro.sh、cdp-bridge.js):可选的步骤 1.5,在 Metro 运行时通过 CDP 提取 React 声明的无障碍属性。
适用场景
适用于在 iOS 模拟器上开发与测试 React Native 应用、需要检查无障碍合规性与最佳实践的场合。
限制与注意事项
- iOS 模拟器必须已启动并运行应用;如需启动可使用 ios-sim 技能。
- 无障碍树中的坐标点为逻辑点,不是像素。
- 触摸目标审计使用树中元素的 frame 尺寸。
- 针对 Android 的审计(48x48dp)需要物理设备或带 adb 的模拟器,本技能未覆盖。
- 上下文效率:无障碍树 JSON(约 10-100 KB)绝不进入主上下文,仅供子代理处理;审计检查清单(约 4 KB)仅子代理使用;子代理文本报告(约 1-3 KB)与 CDP 差异报告(约 1-3 KB)进入主上下文;文档检索结果(约 200-500 字符)进入主上下文。
关于该技能的收费、价格、平台支持范围与版本号等具体信息,资料中暂未提供。