qa-accessibility
[Testing] WCAG 2.2 AA accessibility audit: POUR + 2.2 additions, axe-core injection, Lighthouse MCP, keyboard walk, ARIA.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
[Testing] WCAG 2.2 AA accessibility audit: POUR + 2.2 additions, axe-core injection, Lighthouse MCP, keyboard walk, ARIA.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
[Testing] Review test cases for quality, determinism, completeness, data validity, coverage gaps, duplication, live environment verification, and behavioral triangulation against docs + live + source. Delegates browser verification to qa-testing-expert; triangulation to ba-system-analyzer.
[Testing] Postman MCP collections — create, configure, verify, and export collections with proper variables, auth, and endpoints
[Testing] Autonomous test coverage gap analysis and generation — identifies missing test cases, generates enriched CSV test cases, validates P0 cases via browser, and reports improvements. Single-agent counterpart to /qa-coverage-generation.
Repo/tracker routing library for the vc-fix plugin — decides which external product repo owns a bug (client vs platform), whether the fix delivers as a direct PR, a fork-PR, or an upstream issue, and which VCS/tracker host to talk to. Used by /qa-fix and /project-init. Self-contained — no dependency on the ci/ directory.
Build, launch, smoke-test, and health-check the vc-mcp-testing-module agentic QA tooling repo. Use when asked to run, start, verify, smoke-test, or sanity-check this repo's tooling — env:check, @td() resolution, suite manifest sync, critical-UI-scope, seed dry-run, GraphQL fixture validation — or before running regression.
[QA Methodology] Triage a completed regression run's failures: collect each FAIL + its evidence (trace, screenshots, console, network) + failing CSV row, dedup + flag flaky, classify each into real-product-bug vs test-defect (bad steps / bad assertion / stale test data / stale test) vs flaky/env/known, live-verify the real ones, then route test-defects to /qa-review-tests --fix and draft bug reports. Detect-classify-verify-report only — never files a tracker ticket, never triggers /qa-fix.
| name | qa-accessibility |
| description | [Testing] WCAG 2.2 AA accessibility audit: POUR + 2.2 additions, axe-core injection, Lighthouse MCP, keyboard walk, ARIA. |
| argument-hint | page URL | component name | full audit |
Run an accessibility audit against WCAG 2.2 Level AA (the 2026 practical baseline — 2.2 is the current W3C Recommendation since 2023-10-05 and is backward-compatible with 2.1; 4.1.1 Parsing was retired). Covers POUR plus the six new 2.2 AA criteria (Focus Not Obscured, Dragging Movements, Target Size Minimum, Consistent Help, Redundant Entry, Accessible Authentication).
The six 2.2 additions are manual-first. Automated tooling covers only 2.5.8 Target Size (nascently); the other five — 2.4.11, 2.5.7, 3.2.6, 3.3.7, 3.3.8 — cannot be caught by axe and must be verified in the keyboard/manual pass. A clean axe run says nothing about them.
/qa-accessibility https://example.com/checkout # Audit a specific page
/qa-accessibility ProductCard # Audit a component (delegate to /qa-storybook)
/qa-accessibility full audit # Full site audit: homepage, sign-in, catalog, PDP, cart, checkout, account
/qa-storybook/qa-storybook — a11y addon inside stories (component-isolated; tune axe rules per component)./qa-accessibility — full-page audits against storefront/admin (keyboard journeys across landmarks, page-level contrast, modal focus return, dynamic ARIA announcements)./qa-storybook. A finding that only appears once composed into a page (focus order across landmarks, skip-link target, modal portal escape) belongs here.Determine audit scope:
/qa-storybook instead/, /sign-in, /search, PDP, /cart, /checkout, /account/orders. Skip-link and consent banner must be tested first (they affect every page).Theme scope: Run a11y assertions only on the Coffee theme — it's the only WCAG-compliant theme in this project (memory: feedback_a11y_coffee_only). Capture other themes for visual diff, not a11y gating.
Delegate to ui-ux-expert via Task tool (subagent_type: ui-ux-expert):
wcag-accessibility-checklist.mdlighthouse_audit, evaluate_script (to inject axe-core and run it), take_screenshot (focus states), and the network/console captureplaywright-firefox and playwright-edgeRun the four-layer scan per route:
axeRunSnippet() from scripts/lib/axe-runner.ts — pass it verbatim to evaluate_script (it self-loads axe if absent, runs WCAG A/AA tags only, trims the result). Await it (returns a Promise), then classifyAxeResults() maps impact→severity and surfaces incomplete as WARN-for-manual-review (best-practice already excluded). If axeAvailable === false (CSP blocked the load) the result is INCONCLUSIVE — never report it as clean. Don't hand-roll the injection — the extracted snippet is the single source.lighthouse_audit MCP and read the accessibility category. Lighthouse runs a subset of axe (~50 rules) — use for trend score, never as the only signal.document.activeElement with ACTIVE_ELEMENT_SNIPPET (from scripts/lib/axe-runner.ts) into an ordered trail, then classifyKeyboardTrail(trail) flags traps (P0), off-screen focus (FAIL), and non-monotonic order (WARN). Verify Escape closes modals and focus returns to the trigger.POUR checklist (per WCAG 2.2 AA) — the 2.2 additions marked [MANUAL] cannot come from axe; verify them by hand in the keyboard pass:
[MANUAL] (sticky elements must not cover focused field), 2.5.7 alternative to drag [MANUAL], 2.5.8 target size ≥ 24×24 CSS px (44×44 stays the mobile guidance). For composite widgets, exercise the widget-specific keys (arrows/Home/End/Escape) against the matching ARIA APG pattern.[MANUAL], 3.3.7 Redundant Entry [MANUAL] (don't re-ask for known data), 3.3.8 Accessible Authentication [MANUAL] (no cognitive-function tests without alternative; password managers must work).Output:
1.4.3, 2.4.11)color-contrast — VcButton ×14), not 14 rows. Repeated low-impact violations of one rule are usually a single root-cause fix — report the fix once. Listing every instance blows the reports.md size caps and buries the signal.data-test-id (see .claude/knowledge/automation/storefront-selectors.md) → role + accessible name → DOM path / tree position. Use the tag/role/label the keyboard walk already captured; if a finding can't be located, say so ("located by selector only")..claude/rules/reports.md (hard cap 80–150 lines per bug); include WCAG criterion ID, measured vs required values, and one annotated screenshotgetComputedStyle color + effective background; assert WCAG 2.x luminance ratio (4.5:1 normal text, 3:1 large/UI/focus indicator).best-practice tag — those are advisory, not WCAG failures. Treating them as conformance bugs creates noise and erodes the team's trust in the report.data-test-id → role + accessible name → DOM path; never invent a file:line.