CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/wcag-compliance-reporter

Builds a per-page WCAG 2.2 compliance score report by aggregating output from one or more accessibility scanners (axe-core / pa11y / lighthouse / WAVE / IBM Equal Access), pivoting violations by Success Criterion (1.4.3 contrast, 2.4.7 focus visible, etc.), grouping by conformance level (A / AA / AAA), reporting per-page coverage gaps explicitly (the "this page wasn't scanned" failure mode), and emitting both an executive summary and a per-page drill-down. Use after a multi-page accessibility scan - pa11y-ci, axe across a sitemap, lighthouse-batch - when the team needs a shareable conformance report rather than a per-page tool dump.

70

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

Quality

Content

78%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-structured skill body: a clearly sequenced six-step pipeline with genuine validation checkpoints (unknown-verdict and page-coverage checks), compact executable core code, and exemplary one-level-deep progressive disclosure into three real reference files. The main deductions are a thrice-repeated ~30%-coverage point, a conformance() function that isn't copy-paste clean, and undefined helper structures (SC_BY_LEVEL, sc-mapping.json shape).

Suggestions

State the '~30% of SCs are tool-detectable' fact once (Step 3, where it justifies the unknown verdict) and have the Anti-patterns and Limitations sections reference it rather than restate it.

Clean up conformance(): make the return type consistent with its docstring, flatten the nested comprehension into a readable loop or comprehension over agg['by_sc'] items, and define SC_BY_LEVEL (or point to where it lives) so the function is copy-paste runnable.

Add an explicit error-recovery loop after Step 4: when pages-to-scan.yaml reveals unscanned pages, re-run the scanners on just those pages and re-aggregate before rendering the report.

DimensionReasoningScore

Conciseness

The body is dense with non-obvious, load-bearing content (SC counts, conformance rules, tri-state verdict logic, anti-patterns) with no tutorial padding, but the "automated tools cover ~30% of SCs" point is repeated in Step 3, the Anti-patterns table, and Limitations, and the Overview could be trimmed slightly - matching 'efficient; minor instances of over-explanation that could be trimmed' rather than the every-token-earns-its-place anchor.

4 / 5

Actionability

Concrete and mostly executable: a TypeScript Violation interface, a copy-paste aggregate() function, a pages-to-scan.yaml example, and the verdict table, plus a worked normalizer and CI job in references. However conformance() is not copy-paste clean (returns a tuple while its docstring declares a string, with a convoluted nested comprehension), and helpers SC_BY_LEVEL, level_set, and sc_from_axe_tags are referenced but never defined in the bundle - 'mostly executable guidance with minor gaps' rather than fully executable.

4 / 5

Workflow Clarity

Six numbered steps in 'How to use' are expanded as Step 1-5 sections in matching order, with validation checkpoints built in (Step 3's unknown-verdict coverage check and Step 4's page-coverage check against pages-to-scan.yaml). It falls short of the top anchor because there is no explicit error-recovery loop (e.g., re-run scanners on missing pages, then re-aggregate) - 'clear sequence with most checkpoints present; minor validation gaps'.

4 / 5

Progressive Disclosure

All three referenced bundle files exist (references/tool-normalizers.md, references/sample-report-format.md, references/machine-output-and-ci.md), each signaled at point of use in the body and again in the References section, one level deep with no nesting. SKILL.md keeps the core logic inline and appropriately pushes deep detail (per-tool normalizers, full report format, CI templates) into references, and each reference opens with a 'Deep reference for... Consult when...' navigation header - matching the top anchor.

5 / 5

Total

17

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is strong: it lists five concrete capabilities with named tools, uses third-person voice, and closes with an explicit 'Use after...' trigger clause naming the exact upstream commands. The only gap is a few missing natural synonyms (a11y, accessibility audit, VPAT) that users might say when they need this skill.

DimensionReasoningScore

Specificity

"Builds a per-page WCAG 2.2 compliance score report by aggregating output from one or more accessibility scanners", "pivoting violations by Success Criterion (1.4.3 contrast, 2.4.7 focus visible)", "grouping by conformance level (A / AA / AAA)", "reporting per-page coverage gaps", "emitting both an executive summary and a per-page drill-down" - five distinct concrete actions with named tools, matching the comprehensive-coverage anchor rather than the 'minor gaps' anchor at 4.

5 / 5

Completeness

The 'what' is explicit (aggregates scanner output, pivots by SC, groups by level, reports coverage gaps, emits summary plus drill-down) and the 'when' is explicit with concrete triggers: "Use after a multi-page accessibility scan - pa11y-ci, axe across a sitemap, lighthouse-batch - when the team needs a shareable conformance report rather than a per-page tool dump."

5 / 5

Trigger Term Quality

Natural terms include "WCAG 2.2", "compliance", "accessibility scanners", "axe-core", "pa11y", "lighthouse", "WAVE", "conformance report", "pa11y-ci", "lighthouse-batch" - good coverage, but common user phrases like "a11y", "accessibility audit", "VPAT", or "Section 508" are missing, so it sits below the comprehensive-synonym anchor.

4 / 5

Distinctiveness Conflict Risk

Clear niche (aggregating scanner output into a conformance report, not scanning itself) with distinct triggers; "aggregating output from one or more accessibility scanners" and "rather than a per-page tool dump" carve the boundary against scanner skills, so conflict risk is minimal.

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Reviewed

Table of Contents