Output files — what each artifact means
Every wcag-audit scan produces a set of output files. This page explains what each one contains, where it lives, and when you actually need to open it.
WCAG_FIXES.md
| Path | ./WCAG_FIXES.md (project root) |
|---|---|
| Format | Markdown |
| When to open it | Quick human review — scan totals, grouped issues, what changed since the last scan. |
The human-readable report. Findings are grouped by category (keyboard, color-contrast, forms, etc.), then by severity (critical → serious → moderate → minor), then by route. Each finding includes the rule ID, element selector, and a short description.
## Critical — Keyboard (3 findings)
### [rc-abc123] focus-visible-missing
Route: /dashboard
Selector: button.save-btn
The element receives keyboard focus but has no visible focus indicator.WCAG_FIXES.prompt.md
| Path | ./WCAG_FIXES.prompt.md (project root) |
|---|---|
| Format | Markdown with embedded execution protocol |
| When to open it | This is what you open in your AI editor. Open it in Claude Code, Cursor, or Windsurf and instruct the editor to follow the protocol. |
Not a report — an instruction set. The file contains the full task manifest, per-finding fix prompts, and the multi-agent or linear execution protocol the editor should run. See The fix loop for how this works end-to-end.
WCAG_FIXES.bundle.json
| Path | ./WCAG_FIXES.bundle.json (project root) |
|---|---|
| Format | JSON |
| When to open it | Dashboards, CI tooling, custom reporting. Parse programmatically. |
Machine-readable bundle of all scan results. Use this when building integrations, dashboards, or custom CI scripts.
{
"schemaVersion": 1,
"scannedAt": "2026-05-08T10:00:00Z",
"totals": {
"critical": 3,
"serious": 8,
"moderate": 12,
"minor": 2,
"suppressed": 14,
"dismissed": 2
},
"rootCauses": [
{
"rcId": "rc-abc123",
"rule": "focus-visible-missing",
"severity": "critical",
"category": "keyboard",
"source": { "file": "src/components/save-btn.tsx", "line": 14 },
"selector": "button.save-btn",
"primaryClass": "save-btn",
"routes": ["/dashboard", "/settings"]
}
]
}wcag-report.xlsx
| Path | ./wcag-report.xlsx (project root) |
|---|---|
| Format | Excel workbook (.xlsx) |
| When to open it | Sharing results with non-technical stakeholders, legal, QA managers, or anyone who works in spreadsheets. |
Multi-sheet Excel workbook. Sheets included:
- Summary — totals by severity and category, scan metadata, coverage stats.
- Coverage matrix — every route with status (audited / blocked / errored) and finding count.
- Issues — one row per finding with rule, severity, route, selector, and description.
- Screenshots — embedded annotated screenshots for findings where AI vision captured visual evidence.
ai-fix.json
| Path | ./ai-fix.json (project root) |
|---|---|
| Format | JSON |
| When to open it | Wiring fix prompts into Cursor's AI panel, custom Claude Code workflows, or any programmatic AI pipeline. |
Per-issue structured fix prompts. Each entry contains a ready-to-use fixPrompt and surrounding fixContext so editors can surface targeted guidance without reading the full report.
[
{
"rcId": "rc-abc123",
"rule": "focus-visible-missing",
"severity": "critical",
"fixPrompt": "Add a visible focus indicator to the .save-btn button. The current stylesheet suppresses :focus outline globally. Add :focus-visible styles with at least 3px outline and sufficient contrast.",
"fixContext": {
"file": "src/components/save-btn.tsx",
"line": 14,
"selector": "button.save-btn",
"wcagCriterion": "2.4.11"
}
}
].cursor/rules/wcag-fixes.mdc
| Path | .cursor/rules/wcag-fixes.mdc |
|---|---|
| Format | Cursor MDC rule file |
| When to look at it | You don't need to — Cursor picks it up automatically when you open files that have matching findings. |
A Cursor-native rule file. When you open a source file in Cursor that has associated WCAG findings, this rule attaches the relevant fix prompts as context to the Cursor AI panel automatically. Regenerated on every scan — do not edit manually.
AGENTS.md
| Path | ./AGENTS.md (project root) |
|---|---|
| Format | Markdown (idempotent upsert) |
| When to look at it | When using Claude Code — this file is read automatically at session start and injects WCAG context into every agent interaction. |
The CLI upserts a ## WCAG Audit section into your AGENTS.md (creating the file if it doesn't exist). Claude Code reads AGENTS.md at the start of every session, so this ensures WCAG findings are automatically available as context without you needing to paste anything.
wcag-coverage.json
| Path | ./wcag-coverage.json (project root) |
|---|---|
| Format | JSON |
| When to look at it | Dashboards tracking coverage over time, CI gates on minimum audited-route percentage. |
Machine-readable coverage data. Records every route that was discovered and its audit status.
{
"schemaVersion": 1,
"scannedAt": "2026-05-08T10:00:00Z",
"summary": {
"total": 47,
"audited": 43,
"blocked": 3,
"errored": 1
},
"routes": [
{ "path": "/dashboard", "status": "audited", "findingCount": 2 },
{ "path": "/admin/users", "status": "blocked", "reason": "auth-redirect" },
{ "path": "/legacy/embed", "status": "errored", "reason": "timeout" }
]
}.wcag-audit/task-manifest.json
| Path | .wcag-audit/task-manifest.json |
|---|---|
| Format | JSON |
| When to look at it | You typically don't — the LLM editor reads this to dispatch fix workers. Useful for debugging agent dispatch issues. |
Planner artifact. Groups root-cause IDs by the source file responsible for each finding. The multi-agent protocol reads this to know which findings to assign to each file-owner sub-agent.
{
"schemaVersion": 1,
"generatedAt": "2026-05-08T10:00:00Z",
"tasks": [
{
"file": "src/components/save-btn.tsx",
"rcIds": ["rc-abc123", "rc-def456"]
},
{
"file": "src/app/dashboard/page.tsx",
"rcIds": ["rc-ghi789"]
}
]
}.wcag-audit/false-positives.json
| Path | .wcag-audit/false-positives.json |
|---|---|
| Format | JSON |
| When to look at it | Auditing which findings have been dismissed and why. Commit this file to git — it persists across scans. |
Persistent false-positive registry. Written by wcag-audit dismiss (and by LLM fix-pass agents). Each entry uses a SHA-1 fingerprint of (rule + normalized selector + primaryClass) so it stays stable when page content changes.
See the suppression guide for the full schema and when to use dismiss vs .wcagignore.
.wcag-audit/codemod-log.json
| Path | .wcag-audit/codemod-log.json |
|---|---|
| Format | JSON |
| When to look at it | After a scan, to see which codemods fired and what they changed — especially useful before committing to review auto-modifications. |
Codemod audit log. Produced by @wcag-audit/next-plugin when codemods fire at scan time. Lists each codemod that ran, which files it touched, and how many changes it applied.
{
"schemaVersion": 1,
"scannedAt": "2026-05-08T10:00:00Z",
"codemods": [
{
"name": "add-lang-attribute",
"filesModified": ["src/app/layout.tsx"],
"changesApplied": 1
},
{
"name": "button-type-attribute",
"filesModified": [
"src/components/save-btn.tsx",
"src/components/modal.tsx"
],
"changesApplied": 3
}
],
"totalFilesModified": 3,
"totalChangesApplied": 4
}@wcag-audit/next-plugin is installed and source mapping is available. Run wcag-audit plugin-init to enable them. Setup guide →