accessibility-audit

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
This is a full WCAG 2.2 accessibility audit using WCAG-EM. It defines scope, samples representative pages and flows, runs both evaluation tiers, and produces one conformance report:
  • Automated tier:
    accesslint:accessibility-scan
    (the rule engine).
  • Semi-automated manual tier:
    accesslint:accessibility-inspect
    (keyboard, focus, state, reflow, and the rest the engine can't decide).
Assess; don't fix (
accesslint:accessibility-fix
) or diff (
accesslint:accessibility-diff
). One page with no sampling is a
accessibility-scan
, not an audit. This skill delegates each sampled page to its own subagent (step 4), so it stays light on large samples.
The full doctrine — WCAG-EM in detail, the severity rubric with examples, the no-proxy boundary, grounding — is in
../shared/methodology.md
. The rules needed to run this skill are below.
这是一项采用WCAG-EM方法论的完整WCAG 2.2无障碍审计服务。它会定义审计范围、选取代表性页面与流程,运行两个评估层级,并生成一份合规性报告:
  • 自动化层级:
    accesslint:accessibility-scan
    (规则引擎)。
  • 半自动化手动层级:
    accesslint:accessibility-inspect
    (键盘操作、焦点、状态、重排版等引擎无法判定的内容)。
仅做评估,不修复(使用
accesslint:accessibility-fix
)或对比差异(使用
accesslint:accessibility-diff
)。无需抽样的单页面检查属于
accessibility-scan
,而非审计。该技能会将每个抽样页面委托给独立的子Agent(步骤4),因此在处理大量样本时仍能保持轻量化。
完整的准则细节——WCAG-EM详解、含示例的严重性评估标准、无代理边界、基础规则——请查看
../shared/methodology.md
。运行此技能所需的规则如下。

Grading

分级标准

Each finding carries a severity and an evidence basis. Keep them separate.
  • Evidence basis: ● verified (deterministic, with cited proof) · ◐ flagged (evidence captured, a person decides) · ○ human-required (needs assistive technology or lived experience; handed off, not emulated).
  • Severity: critical (blocks a core task) · serious (major barrier) · moderate (friction, still completable) · minor (polish).
每个发现都会标注严重性和证据基础,二者需区分开。
  • 证据基础:● 已验证(确定性结论,附引用依据) · ◐ 已标记(已收集证据,需人工判定) · ○ 需人工介入(需要辅助技术或实际使用经验;转交人工,不做模拟)。
  • 严重性:critical(核心任务受阻) · serious(主要障碍) · moderate(存在摩擦,但仍可完成) · minor(优化细节)。

WCAG-EM steps

WCAG-EM执行步骤

Run in order and state what you did at each.
  1. Scope. State the target and its boundary, the goal (default WCAG 2.2 AA;
    --level AAA
    adds AAA), the technologies in use, and the assistive-technology baseline the human handoff should cover. You scope that baseline; you don't test it.
  2. Explore. Use Glob/Grep to find routes, templates, and shared components. Note key flows, content types, and stateful UI (modals, wizards, empty and error states).
    accesslint.config.json
    targets are a starting point.
  3. Sample. Choose a structured set (entry page, each key flow end to end, every page with a new template or complex widget, and the important states) and a small random set. Say what's in each and why.
  4. Evaluate. Delegate each sampled page or state to its own
    Task
    so it runs in its own context and returns its findings; independent pages can run in parallel. Each Task:
    • runs
      accesslint:accessibility-scan
      (
      --format json
      ) first, then
      accesslint:accessibility-inspect
      against the same rendered state — same URL,
      --selector
      ,
      --wait-for
      — passing scan's results (or at least the list of SCs the engine covered) into the inspect run;
    • dedups by SC ownership before driving, not after:
      accessibility-scan
      owns rule-detectable criteria,
      accessibility-inspect
      owns interaction and judgment criteria; inspect never re-checks an engine-owned SC, and where both still cover the same SC at the same element,
      accessibility-scan
      's result wins;
    • returns a structured block: per finding, the SC, severity, evidence basis (●/◐/○), location, tier, evidence, and fix or handoff, plus this page's per-SC ledger (verified / flagged / engine-owned / N/A / not exercised).
    Aggregate the returned blocks in step 5. For a one- or two-page scope, run the tiers inline instead of spawning a
    Task
    .
    A shared browser is optional and improves selector matching across tiers, but it's a pre-wired precondition, not something this skill sets up at runtime: the browser MCP binds to its Chrome at server start (
    --autoConnect
    or
    --browser-url
    ), with the engine pointed at the same port. Without it (the default), each Task runs both tiers against the same URL and
    --wait-for
    gate and dedups by SC ownership.
  5. Report. Aggregate into the format below. Conformance has three states: pass or fail only for ● findings; everything ◐ or ○ — and every SC no page exercised — is undetermined and goes to a human. One sampled page failing an SC fails it for the whole scope at that level. Don't report conformance you can't support, and don't let a not-exercised SC read as a pass. Keep the ledger to counts and bare SC lists — group undetermined SCs by shared reason, one clause per group — and spend the report's words on failures, flags, and handoffs: a pass is its SC number in the list, with at most one sentence of narration for the whole passing set.
按顺序执行,并说明每个步骤的操作内容。
  1. 范围定义。明确目标及其边界、审计目标(默认WCAG 2.2 AA级;添加
    --level AAA
    可升级为AAA级)、所使用的技术,以及人工转交环节应覆盖的辅助技术基准。由你确定该基准范围,无需对其进行测试。
  2. 探索调研。使用Glob/Grep查找路由、模板和共享组件。记录关键流程、内容类型和有状态的UI(模态框、向导、空状态和错误状态)。
    accesslint.config.json
    中的目标可作为起始参考。
  3. 样本选取。选择一组结构化样本(入口页面、每个关键流程的完整链路、所有包含新模板或复杂组件的页面,以及重要状态)和一组小型随机样本。说明每个样本的内容及选取原因。
  4. 评估执行。将每个抽样页面或状态委托给独立的
    Task
    ,使其在独立上下文环境中运行并返回结果;独立页面可并行执行。每个Task需完成:
    • 先运行
      accesslint:accessibility-scan
      --format json
      格式),再针对相同渲染状态(同一URL、
      --selector
      --wait-for
      条件)运行
      accesslint:accessibility-inspect
      ,并将扫描结果(或至少引擎覆盖的准则列表)传入检查环节;
    • 在执行前而非执行后按准则归属去重:
      accessibility-scan
      负责可通过规则检测的准则,
      accessibility-inspect
      负责交互和需主观判断的准则;检查环节不得重新验证引擎已覆盖的准则,若两者在同一元素上覆盖同一准则,以
      accessibility-scan
      的结果为准;
    • 返回结构化内容:每个发现需包含准则编号、严重性、证据基础(●/◐/○)、位置、评估层级、证据、修复建议或转交说明,此外还需包含该页面的准则台账(已验证/已标记/引擎覆盖/不适用/未测试)。
    在步骤5中汇总返回的结构化内容。若审计范围为1-2个页面,可直接运行两个层级,无需创建
    Task
    共享浏览器为可选配置,可提升跨层级的选择器匹配精度,但这是预先配置的前提条件,而非该技能在运行时设置的内容:浏览器MCP在服务器启动时绑定到Chrome(
    --autoConnect
    --browser-url
    ),引擎指向同一端口。若未配置共享浏览器(默认状态),每个Task会针对同一URL和
    --wait-for
    条件运行两个层级,并按准则归属去重。
  5. 报告生成。按以下格式汇总内容。合规状态分为三类:仅对●类发现标记通过或失败;所有◐/○类发现,以及未测试的准则,均标记为不确定并转交人工。只要有一个抽样页面未通过某准则,则整个审计范围内该准则的合规状态为失败。不得报告无依据的合规结论,且不能将未测试的准则视为通过。台账仅保留统计数量和准则编号列表——按共同原因对不确定准则分组,每组用一句话说明——报告重点描述失败、标记和转交内容:通过的准则只需列出编号,整个通过集合最多用一句话说明。

Report format

报告格式

undefined
undefined

Accessibility audit — <product / scope>

无障碍审计 — <产品/范围>

WCAG 2.2 Level AA · WCAG-EM · <N> pages/states sampled
WCAG 2.2 AA级 · WCAG-EM · 抽样<N>个页面/状态

Scope

审计范围

  • Target & boundary: <…> Goal: WCAG 2.2 AA
  • Technologies in use: <…>
  • AT baseline (for the human handoff, not tested here): <SR+browser pairs, keyboard-only, …>
  • 目标与边界:<…> 审计目标:WCAG 2.2 AA级
  • 使用的技术:<…>
  • 辅助技术基准(供人工测试使用,此处不做测试):<屏幕阅读器+浏览器组合、仅键盘操作等>

Sample

样本说明

  • Structured: <page/state> — <why> (×N)
  • Random: <page/state>
  • 结构化样本:<页面/状态> — <选取原因> (共×N个)
  • 随机样本:<页面/状态>

Conformance (per success criterion)

合规性(按成功准则划分)

  • Pass ●: <n> · Fail ●: <n> · Undetermined (◐/○/not exercised): <n> · N/A: <n>
  • Fail ●: <SCs> Pass ●: <SCs> N/A: <SCs>
  • Undetermined: <SCs (shared reason)> · <SCs (shared reason)>
  • Pass/fail is asserted only for ● criteria; ◐/○ and not-exercised are undetermined.
  • 通过 ●:<n> · 失败 ●:<n> · 不确定(◐/○/未测试):<n> · 不适用:<n>
  • 失败 ●:<准则编号> 通过 ●:<准则编号> 不适用:<准则编号>
  • 不确定:<准则编号(共同原因)> · <准则编号(共同原因)>
  • 仅对●类准则判定通过/失败;◐/○类及未测试准则均为不确定。

Findings — by severity, tagged by evidence basis

发现结果 — 按严重性排序,标记证据基础

Critical

Critical(严重)

  • [●] <barrier> — SC x.x.x — where: <selector / file:line> — tier: scan|inspect — →
    accessibility-fix
  • [◐] <barrier> — SC x.x.x — evidence: <screenshot / measurement> — confirm: <what a person checks>
  • [●] <障碍描述> — 准则x.x.x — 位置:<选择器 / 文件:行号> — 评估层级:scan|inspect — → 建议使用
    accessibility-fix
    修复
  • [◐] <障碍描述> — 准则x.x.x — 证据:<截图/测量数据> — 需确认:<人工检查内容>

Serious / Moderate / Minor

Serious / Moderate / Minor(严重/中等/轻微)

[same shape]
[格式同上]

Human-required (○) — the testing handoff

需人工介入(○)—— 测试转交项

  • <what only AT or lived experience reveals> — SC x.x.x needs: <functional ability + AT, per Section 508 FPC> flow: <sampled flow>
  • <仅辅助技术或实际使用经验可发现的问题> — 准则x.x.x 需求:<功能能力+辅助技术,符合Section 508 FPC标准> 流程:<抽样流程>

Recommendations

建议

  • Root-cause / pattern fixes (one change that clears many instances) → hand to
    accessibility-fix
    .
  • What to send to human and AT testing, and on which flows.
  • Wire
    accesslint:accessibility-diff
    into CI for the sampled targets.
undefined
  • 根因/模式修复(一处修改解决多个案例)→ 转交
    accessibility-fix
    处理。
  • 需转交人工和辅助技术测试的内容及对应流程。
  • 在CI中集成
    accesslint:accessibility-diff
    用于抽样目标的检查。
undefined

Notes

注意事项

  • Assess, don't fix (use
    accessibility-fix
    ) or diff (use
    accessibility-diff
    ). Don't emulate human experience: usability is ◐, lived experience is ○ and handed off.
  • Conformance is per SC across the whole sample. Don't average failures away.
  • Two browsers can drift selectors; prefer a shared browser for ●-precision, otherwise note that dedup is best-effort.
  • State what wasn't covered (pages outside the sample, ○ criteria). Omitting it reads as "all clear".
  • Use
    list_rules
    and
    explain_rule
    for engine-rule metadata.
  • 仅做评估,不修复(使用
    accessibility-fix
    )或对比差异(使用
    accessibility-diff
    )。不要模拟人类使用体验:可用性问题标记为◐,实际使用经验相关问题标记为○并转交人工。
  • 合规性按准则在整个样本中的表现判定,不得平均失败案例。
  • 不同浏览器的选择器可能存在差异;为保证●级精度,建议使用共享浏览器,否则需说明去重仅为最佳效果。
  • 明确说明未覆盖的内容(样本外的页面、○类准则)。遗漏会被视为“无问题”。
  • 可使用
    list_rules
    explain_rule
    获取引擎规则的元数据。