Communitygithub.com

humbleteam/accessibility-audit

WCAG 2.2 可访问性审查技能,用于 Claude Code,提供按严重程度排序的审计结果并引用成功标准。

accessibility-audit 是什么?

该技能为 Claude Code 提供了一种系统化的 WCAG 2.2 可访问性审计方法。它支持多种输入类型:截图、URL、HTML/JSX 代码片段等,并严格区分哪些标准可以从输入中验证,哪些不能。技能内置了 18 个 WCAG 2.2 成功标准的检查清单,包括 WCAG 2.2 的新增标准,如焦点未被遮挡(2.4.11)、目标大小(2.5.8)和可访问的身份验证(3.3.8)。审计结果按严重程度分为 P0(阻塞使用)、P1(降低使用体验)和 P2(轻微摩擦)三个级别,每个发现都必须包含实际观察内容、具体修复建议和 WCAG 引用。该技能对于需要确保 Web 内容符合 WCAG 2.2 标准的开发者和质量保证团队非常有用,能够发现无障碍性问题并提供可操作的修复方案。它特别强调审计过程的诚实性——绝不猜测输入无法验证的内容,并将无法验证的项目明确列出。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add humbleteam/accessibility-audit

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

可访问性审计

第 1 步:识别输入内容

在检查任何内容之前,先确定实际提供的是什么:

  • 截图或图片 - 仅进行截图范围内的审计(参见第 3 步)。
  • URL - 如果可用,使用抓取工具获取页面,并将渲染后的 HTML 作为事实来源。如果页面截图也可用,则同时使用两者。如果没有可用的抓取工具,请要求用户粘贴页面的 HTML,而不是猜测标记。
  • HTML、JSX 或其他标记/组件片段 - 直接将其作为事实来源读取。
  • 其他任何内容(纯文字描述、没有导出图片的 Figma 链接、含糊的“检查我们的应用”) - 停止并请求提供截图、URL 或标记。不要猜测你看不见的用户界面。

如果提供了多种输入类型(例如 URL 加上某种状态的截图),则同时使用这两种,并在更广的范围内进行检查。

第 2 步:阅读检查清单

在评估任何内容之前,请阅读 references/wcag22-checklist.md。它列出了本次审计检查的全部 18 条成功标准,每行一条:SC 编号、名称、级别、是否仅凭截图即可验证,以及需要检查的内容。每次审计时都要重新阅读此文件,即使是同一会话中的第二次审计也要阅读,以免标准悄然从记忆中消失。

本次审计涵盖的标准

SC名称级别
1.1.1非文本内容A
1.3.1信息和关系A
1.4.3对比度(最低)AA
1.4.4调整文本大小AA
1.4.10自动换行AA
1.4.11非文本对比度AA
2.1.1键盘A
2.1.2无键盘陷阱A
2.4.4链接目的(在上下文中)A
2.4.6标题和标签AA
2.4.7焦点可见AA
2.4.11焦点未被遮挡(最低)- WCAG 2.2 新增AA
2.5.8目标大小(最低)- WCAG 2.2 新增AA
3.2.2输入时A
3.3.1错误识别A
3.3.2标签或说明A
3.3.8可访问的身份验证(最低)- WCAG 2.2 新增AA
4.1.2名称、角色、值A

有关每条标准需要检查的内容,请参阅 references/wcag22-checklist.md。

第 3 步:区分输入可以证明什么和不能证明什么

这是保持审计诚实的规则。永远不要对输入无法展示的标准声称通过或失败。

仅凭截图,你可以检查:

  • 1.4.3 对比度(最低)- 测量渲染的文本和背景颜色。
  • 1.4.11 非文本对比度 - 测量图标、边框和可见的焦点指示器。
  • 2.4.6 标题和标签 - 确认标题和表单标签在视觉上存在,并在脱离上下文时仍有意义。
  • 2.5.8 目标大小 - 在已知或声明视口缩放比例的情况下,测量可触摸元素的尺寸是否达到 24x24 CSS 像素的最小值。
  • 3.3.2 标签或说明 - 确认在需要标签的输入框旁边存在可见的说明。

仅凭截图,你无法检查,且必须在“此输入无法验证”下列出:

  • 1.1.1 非文本内容(替代文本存在于 DOM 中,而非像素中)。
  • 1.3.1 信息和关系(语义结构)。
  • 2.1.1 / 2.1.2 键盘行为和键盘陷阱。
  • 2.4.4 链接目的(当依赖于程序化上下文时)。
  • 2.4.7 / 2.4.11 焦点可见性,除非提供了焦点状态的截图。
  • 3.2.2 输入时、3.3.1 错误识别、3.3.8 可访问的身份验证 - 所有这些都需要交互或流程,而非静态图像。
  • 4.1.2 名称、角色、值(需要无障碍树)。

从 HTML、JSX 或抓取的页面中,直接对照标记检查所有 18 条标准:替代文本属性、标题和地标结构、标签关联、ARIA 角色和状态、tabindex 和焦点管理代码,以及任何可以解析以计算对比度的内联颜色值。如果未提供 CSS,则对比度和目标大小仍属于“无法验证”,除非给出了计算值。

第 4 步:指定严重程度

  • P0 - 阻塞使用。 用户完全无法完成任务。主要操作缺少可访问名称、键盘陷阱、对比度极低导致文本无法阅读、表单控件完全没有标签。
  • P1 - 降低使用体验。 任务可以完成但更困难。对比度低于 AA 阈值但仍可辨认、缺少可见的焦点指示器、目标小于 24x24 CSS 像素的最小值、模糊的链接文本(“点击此处”)且没有周围上下文。
  • P2 - 轻微摩擦。 轻微混淆或低效。标题级别不一致、装饰性元素对比度低、多余的说明。

第 5 步:撰写每个发现

每个发现需要三个部分,按以下顺序:

  1. 观察 - 你实际看到或读到的内容,而不是推断。(“'提交'按钮在 #7A9CC6 背景上显示白色文本 (#FFFFFF)。”)
  2. 修复 - 具体而非泛泛。(“将背景加深至 #3D5A80 或以下,以达到 4.5:1 的白色文本对比度。”)
  3. 引用 - WCAG 2.2 SC <编号>(<名称>,级别 <A/AA>)。

输出格式

请使用以下确切结构:

# 可访问性审计:<被审查内容的名称或 URL>

**输入类型:** 截图 | URL | HTML/JSX
**范围:** <实际检查内容的一句话描述>

## P0 - 阻塞使用
1. **<简短标题>**
   - 观察:<事实>
   - 修复:<具体修复>
   - WCAG 2.2 SC <x.x.x>(<名称>,级别 <A/AA>)

## P1 - 降低使用体验
(相同结构)

## P2 - 轻微摩擦
(相同结构)

## 此输入无法验证
- <SC 编号和名称> - 需要 <HTML / URL / 键盘测试 / 焦点状态截图>

## 范围说明
这是针对 WCAG 2.2 的专家审查,不能替代与使用辅助技术的人员进行测试,也不能替代法律上的 ADA 或 Section 508 合规认证。

当某个严重程度部分没有发现时,请将其省略 - 不要在暗示存在问题的标题下填充“未发现问题”等内容。当输入是截图时,始终包含“此输入无法验证”部分;当审计覆盖了完整的 HTML/JSX/URL 时,写入“无 - 完整标记可用”以代替省略该部分。始终包含范围说明。

边界情况

  • 单个截图包含多个屏幕或状态 - 在同一个报告中,在每个屏幕的 ## 子标题下分别审计,而不是跨屏幕合并发现。
  • 照片、渐变色或视频背景上的文本 - 不要估计为通过。将不确定对比度的问题记录为 P1 发现,并建议针对文本颜色测试最差的像素区域。
  • 没有可见内容的组件(空状态、加载骨架屏) - 记录下来,并询问是否提供有内容的状态,因为多个标准(标题、标签、链接目的)无法从空壳中判断。
  • 带有内联样式或未解析 CSS 变量的 HTML/JSX - 将对比度和目标大小视为无法验证,而不是猜测计算值。
  • “快速检查”或“只看大问题”的请求 - 仍然运行完整标准列表,但仅报告 P0 问题,并在范围行中注明 P1/P2 已检查但已从输出中抑制。
  • 修复后对同一屏幕进行第二次审计 - 重新运行完整流程;不要假定先前的发现仍然有效。

需要避免的失败模式

  • 不要虚构你没有从实际颜色计算出的对比度。
  • 不要因为看起来没有明显错误就标记为标准“通过” - 如果没有检查,那就是“无法验证”,而不是“通过”。
  • 不要引用你实际上没有检查过的 WCAG 成功标准。
  • 不要为了报告读起来更好看而将 P0 发现降级为 P1。

相关技能