SuperAPI AI 工具集

a11y-audit

测试与质量

查看项目

更新于 10-16 10:55

技能介绍

用途

a11y-audit 用于审计运行中的 React Native 应用的无障碍(可访问性)情况。它从 iOS 模拟器捕获无障碍树,并对照 React Native 官方的无障碍文档与最佳实践进行检查,帮助开发者发现并修复无障碍问题。

主要能力

审计按照严重程度分为三个等级:

  • Critical(严重):阻断屏幕阅读器用户。例如交互元素(按钮、链接、开关、文本输入)缺少 accessibilityLabel;图片缺少无障碍标签;accessibilityLabel 仅为文件名或空字符串。
  • Warning(警告):体验降级。例如交互元素缺少 accessibilityRole 或 role;触摸目标小于 44x44 点;嵌套的可访问元素(可访问父元素包含可访问子元素);切换/复选框元素缺少 accessibilityState。
  • Info(信息):改进机会。例如交互元素缺少 accessibilityHint;相邻相关元素可能存在分组机会;静态文本元素可使用标题角色。

使用方式与工作流

  1. 预检查:在派发子代理前验证 AXe 是否安装,命令为 command -v "${IOS_SIMULATOR_MCP_AXE_PATH:-axe}" >/dev/null 2>&1。若失败则停止并提示用户通过 brew install cameroncooke/axe/axe 安装后重试;AXe 缺失时不要派发子代理。

  2. 步骤 1 — 捕获并审计无障碍树(子代理):不要在主编排上下文中加载无障碍树,而是派发一个 general-purpose 子代理(模型 haiku)。子代理运行 ${CLAUDE_SKILL_DIR}/../ios-sim/scripts/ui.sh describe-all 输出完整无障碍树 JSON,读取检查清单 ${CLAUDE_SKILL_DIR}/references/a11y-checklist.md,逐元素检查上述各级问题,并返回结构化文本报告(含扫描元素总数、各级问题计数、每个问题的元素描述与坐标及修复建议)。

  3. 步骤 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 属性的组件、以及声明标签/角色与原生值的差异。

  4. 步骤 2 — 补充文档引用:根据审计中的关键词(accessibilityLabel、accessibilityRole、accessibilityHint)在 ${CLAUDE_SKILL_DIR}/../../refs/react-native-docs/accessibility.md 中检索,必要时读取具体章节以提供准确的修复指导。

  5. 步骤 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 字符)进入主上下文。

关于该技能的收费、价格、平台支持范围与版本号等具体信息,资料中暂未提供。