mcpField
A
a11y-audit

a11y-audit

github.com/alirezarezvani测试与质量28.9k980 次安装2 天前更新
代码仓库

关于 a11y-audit

a11y-audit 是面向 Web 应用团队的无障碍审计技能,按扫描、修复、验证流程检查 WCAG 2.2 A 级和 AA 级,并提供框架适配的修复建议与报告。

主要功能

  1. 01扫描 WCAG 2.2 A/AA 标准
  2. 02检测开发框架
  3. 03按严重程度分类
  4. 04生成框架适配的修复示例
  5. 05检查颜色对比度
  6. 06生成合规报告与 CI 输出

适用场景

  1. 01审计 Web 项目的无障碍问题
  2. 02为发现的违规项生成修复建议
  3. 03验证修改并检查回归问题
  4. 04为合规相关人员生成报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alirezarezvani/claude-skills --skill a11y-audit

安装后在 Claude Code 中输入/a11y-audit确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
sample-component.tsx
expected_outputs/
sample-contrast-output.txt
sample-scan-output.json
sample-scan-report.md
references/
aria-patterns.md
audit-report-template.md
ci-cd-integration.md
color-contrast-guide.md
examples-by-framework.md
framework-a11y-patterns.md
testing-checklist.md
wcag-22-new-criteria.md
wcag-quick-ref.md
scripts/
a11y_scanner.py
contrast_checker.py

详细介绍

Accessibility Audit

WCAG 2.2 无障碍审计与修复技能

Description

The a11y-audit 技能为现代 Web 应用提供完整的无障碍审计流程。它实现了三阶段工作流——扫描、修复、验证——用于识别 WCAG 2.2 Level A 和 AA 违规项,按框架生成精确的修复代码,并生成可供利益相关方查阅的合规报告。

对于发现的每一处违规,它都会针对你的框架(React、Next.js、Vue、Angular、Svelte 或纯 HTML)提供精确的修改前/修改后代码修复。

本技能的功能:

  1. 扫描代码库中所有 WCAG 2.2 Level A 和 AA 违规项,并按严重程度(Critical、Major、Minor)分类
  2. 修复每个违规项,提供与框架相关的修改前/修改后代码模式
  3. 验证修复是否解决了原有违规,且未引入回归问题
  4. 报告审计结果,格式适用于开发者、产品经理和合规利益相关方
  5. 集成到 CI/CD 流水线中,防止无障碍性回归

Features

FeatureDescription
Full WCAG 2.2 Scan检查代码库中所有 Level A 和 AA 成功标准
Framework Detection自动检测 React、Next.js、Vue、Angular、Svelte 或纯 HTML
Severity Classification将每个违规项分类为 Critical、Major 或 Minor
Fix Code Generation为每个问题生成修改前/修改后的代码差异
Color Contrast Checker根据 AA 和 AAA 对比度标准验证前景色/背景色组合
Compliance Reporting生成包含通过/未通过摘要的利益相关方报告
CI/CD Integration支持 GitHub Actions、GitLab CI、Azure DevOps 流水线配置
Keyboard Navigation Audit检测缺失的焦点管理和 Tab 顺序问题
ARIA Validation检查不正确、冗余或缺失的 ARIA 属性
Severity Definitions
SeverityDefinitionExampleSLA
Critical阻碍整个用户群体的访问缺失 alt 文本,导航无法通过键盘访问发布前修复
Major严重阻碍,显著降低体验颜色对比度不足,表单缺少标签在当前迭代内修复
Minor造成使用不便的可用性问题冗余的 ARIA 角色,标题层级不够理想在接下来 2 个迭代内修复

Usage

Quick Start
# Scan entire project
python scripts/a11y_scanner.py /path/to/project

# Scan with JSON output for tooling
python scripts/a11y_scanner.py /path/to/project --json

# Check color contrast for specific values
python scripts/contrast_checker.py --fg "#777777" --bg "#ffffff"

# Check contrast across a CSS/Tailwind file
python scripts/contrast_checker.py --file /path/to/styles.css
Slash Command
/a11y-audit                    # Audit current project
/a11y-audit --scope src/       # Audit specific directory
/a11y-audit --fix              # Audit and auto-apply fixes
/a11y-audit --report           # Generate stakeholder report
/a11y-audit --ci               # Output CI-compatible results
Three-Phase Workflow

Phase 1: Scan -- 遍历源代码树,检测框架,应用规则集。

python scripts/a11y_scanner.py /path/to/project --format table

Phase 2: Fix -- 针对每个违规项应用与框架相关的修复。

完整的修复模式目录请参见 references/framework-a11y-patterns.md。

Phase 3: Verify -- 重新运行扫描器,确认修复效果并检查是否存在回归。

python scripts/a11y_scanner.py /path/to/project --baseline audit-baseline.json

Example: React Component Audit

// BEFORE: src/components/ProductCard.tsx
function ProductCard({ product }) {
  return (
    <div onClick={() => navigate(`/product/${product.id}`)}>
      <img src={product.image} />
      <div style={{ color: '#aaa', fontSize: '12px' }}>{product.name}</div>
      <span style={{ color: '#999' }}>${product.price}</span>
    </div>
  );
}
#WCAGSeverityIssue
11.1.1Critical<img> 缺少 alt 属性
22.1.1Critical<div onClick> 无法通过键盘访问
31.4.3Major白底上的颜色 #aaa 对比度不达标(2.32:1,需要 4.5:1)
41.4.3Major白底上的颜色 #999 对比度不达标(2.85:1,需要 4.5:1)
54.1.2Major交互元素缺少角色和可访问名称
// AFTER: src/components/ProductCard.tsx
function ProductCard({ product }) {
  return (
    <a href={`/product/${product.id}`} className="product-card"
       aria-label={`View ${product.name} - $${product.price}`}>
      <img src={product.image} alt={product.imageAlt || product.name} />
      <div style={{ color: '#595959', fontSize: '12px' }}>{product.name}</div>
      <span style={{ color: '#767676' }}>${product.price}</span>
    </a>
  );
}

Vue、Angular、Next.js 和 Svelte 的示例请参见 references/examples-by-framework.md。

Tools Reference

a11y_scanner.py
Usage: python scripts/a11y_scanner.py <path> [options]

Options:
  --json                  Output results as JSON
  --format {table,csv}    Output format (default: table)
  --severity {critical,major,minor}  Filter by minimum severity
  --framework {react,vue,angular,svelte,html,auto}  Force framework (default: auto)
  --baseline FILE         Compare against previous scan results
  --report                Generate stakeholder report
  --output FILE           Write results to file
  --quiet                 Suppress output, exit code only
  --ci                    CI mode: non-zero exit on critical issues
contrast_checker.py
Usage: python scripts/contrast_checker.py [options]

Options:
  --fg COLOR              Foreground color (hex)
  --bg COLOR              Background color (hex)
  --file FILE             Scan CSS file for color pairs
  --tailwind DIR          Scan directory for Tailwind color classes
  --json                  Output results as JSON
  --suggest               Suggest accessible alternatives for failures
  --level {aa,aaa}        Target conformance level (default: aa)

常见误区

误区正确做法
在 <div> 上使用 role="button"使用原生 <button>,自带键盘交互支持
对所有元素设置 tabindex="0"只有可交互元素需要获得焦点;使用原生元素
在非交互元素上使用 aria-label使用 aria-labelledby 指向可见文本
使用 display: none 对屏幕阅读器隐藏内容改用 .sr-only 类
仅依靠颜色传达含义在颜色之外添加图标、文字标签或图案
仅用占位符作为标签始终提供可见的 <label>
在没有替代方案的情况下使用 outline: none始终通过 focus-visible 提供可见的焦点指示器
信息性图片使用空的 alt=""信息性图片需要有描述性的 alt 文本
跳过标题级别(h1 -> h3)标题级别必须依次递进
只有 onClick 而没有 onKeyDown添加键盘支持,或优先使用原生元素
忽略 prefers-reduced-motion将动画包裹在 @media (prefers-reduced-motion: no-preference) 中

相关 Skills

Skill关系
senior-frontend无障碍修复中使用的前端模式
code-reviewer将无障碍检查纳入代码审查工作流
senior-qa将无障碍测试集成到 QA 流程中
playwright-pro带有无障碍断言的自动化浏览器测试
epic-design符合 WCAG 2.1 AA 标准的动画与滚动叙事
tdd-guide用于无障碍测试用例的测试驱动开发模式

参考文档

参考描述
wcag-quick-ref.mdWCAG 2.2 A 级与 AA 级标准速查表
wcag-22-new-criteria.mdWCAG 2.2 新增成功标准(焦点外观、目标尺寸等)
aria-patterns.mdARIA 模式、键盘交互与实时区域
framework-a11y-patterns.md特定框架的修复模式(React、Vue、Angular、Svelte、HTML)
color-contrast-guide.md颜色对比度检查器详情、Tailwind 调色板映射、sr-only 类
ci-cd-integration.mdGitHub Actions、GitLab CI、Azure DevOps、pre-commit 钩子配置
audit-report-template.md面向利益相关方的审计报告模板
testing-checklist.md手动测试清单(键盘、屏幕阅读器、视觉、表单)
examples-by-framework.mdVue、Angular、Next.js 和 Svelte 的完整审计示例

资源

评论

支持 Markdown