CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/a11y-violation-gate

Builds a CI gate that fails the build on **new** WCAG / a11y violations introduced by a PR while grandfathering pre-existing violations on a per-rule / per-page baseline. Aggregates verdicts from axe-core / pa11y / Lighthouse a11y / WAVE / IBM Equal Access scans. Use when a project has accumulated a11y debt and a strict "zero violations" gate would block every PR - the ratchet pattern lets the team ship while preventing regressions.

72

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

Quality

Content

86%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, highly actionable skill: a complete gate script, real one-level-deep reference file, and a numbered baseline-maintenance workflow with an anti-patterns table. The main gains available are trimming the repeated ratchet/fingerprint explanations and making a couple of validation checkpoints explicit (verifying regenerated baselines, confirming fingerprint removals).

Suggestions

State the ratchet/fingerprint rationale once (Step 1) and drop its restatements in the Overview and Step 3 prose to save tokens.

Add an explicit verification step after regenerating a debated baseline: re-run the gate to confirm it passes before merging.

In Step 5 item 3, pair the 'manually remove the fingerprint' instruction with a check (e.g., grep the baseline for the removed fingerprint) so stale entries are caught immediately.

DimensionReasoningScore

Conciseness

The body is dense and mostly earns its tokens: it never explains what WCAG or CI is, and the code, baseline JSON, and severity table are all load-bearing. Not 5: there is repetition — the ratchet rationale is stated in the Overview and again in Step 2's framing, the fingerprint semantics are explained in Step 1 and restated in Step 3's prose and in the reference file, and phrases like 'the baseline is shared state - careful coordination prevents bit rot' add little. Not 3: these are minor instances of over-explanation that could be trimmed, not padded sections.

4 / 5

Actionability

A fully executable Python gate script (fingerprint construction, baseline loading, severity tiering, non-zero exit on no-go), a concrete unified-record JSON schema, a baseline file example, a severity-tier decision table, and scanner output shapes plus a ready PR-artifact template in references/gate-implementation.md. Copy-paste ready and covers the common case (axe-core) with an explicit extension path for the other scanners. Not 4: no significant execution details are missing.

5 / 5

Workflow Clarity

Steps 1-5 are clearly sequenced and the gate's no-go/exit-non-zero is itself a validation checkpoint, with a recovery loop in Step 5 item 2 (gate fails -> fix or debate and regenerate baseline). Not 5: checkpoints are implicit rather than explicit in places — no step verifies a regenerated baseline before merging, no dry-run/test of the gate itself, and the destructive 'manually remove the fingerprint' instruction in Step 5 item 3 has no verification that the removal was done correctly. Not 3: sequence and feedback loops are present, so the missing-validation cap does not apply.

4 / 5

Progressive Disclosure

SKILL.md keeps the load-bearing core (unified record, baseline format, gate decision, runnable axe-core script) inline and moves the other four scanners' shapes and the full PR-artifact template to references/gate-implementation.md, which exists and is referenced three times with clear signals ('Per-scanner output shapes and field mappings are in [references/gate-implementation.md]'). The reference is exactly one level deep (verified: it contains no nested references). Not 4: the split is clean with no inlined content that belongs in the reference file.

5 / 5

Total

18

/

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.

A strong description: concrete actions, an explicit 'Use when' trigger with a specific scenario, and domain-distinct keywords. The only weakness is that it leans entirely on the abbreviation 'a11y' and never spells out 'accessibility', slightly narrowing the natural-term surface.

Suggestions

Include the spelled-out word 'accessibility' at least once alongside 'a11y'/'WCAG' so users who type the full term match naturally.

DimensionReasoningScore

Specificity

Multiple concrete actions are named: 'Builds a CI gate that fails the build on **new** WCAG / a11y violations', 'grandfathering pre-existing violations on a per-rule / per-page baseline', and 'Aggregates verdicts from axe-core / pa11y / Lighthouse a11y / WAVE / IBM Equal Access scans'. Coverage is comprehensive for the skill's scope, matching the anchor for multiple specific concrete actions. Not 4: unlike the 'minor gaps in coverage' anchor, nothing material about the capability is left unspecified.

5 / 5

Completeness

Explicitly answers both questions: the 'what' is 'Builds a CI gate that fails the build on new WCAG / a11y violations... while grandfathering pre-existing violations' and the 'when' is 'Use when a project has accumulated a11y debt and a strict "zero violations" gate would block every PR'. The trigger condition is concrete and natural, matching the top anchor exactly. Not 4: the 'when' clause is fully explicit rather than merely present.

5 / 5

Trigger Term Quality

Strong natural keywords: 'WCAG', 'a11y', 'violations', 'PR', 'baseline', 'regressions', plus all five scanner names a user would plausibly mention. Not 5: the full word 'accessibility' never appears (only the abbreviation 'a11y' and 'WCAG'), and common phrasings like 'accessibility audit' or 'a11y regression' are not covered, so a few natural synonyms are missing.

4 / 5

Distinctiveness Conflict Risk

A clear niche (a ratchet-style CI gate on a11y violations) with distinct triggers ('accumulated a11y debt', 'zero violations gate would block every PR', scanner names) that no generic scanner-runner skill would claim. Not 4: it does not merely reduce overlap with closely related skills; its trigger conditions are essentially unique to this gate-building purpose. Third-person voice is used throughout ('Builds', 'Aggregates'), so no voice penalty applies.

5 / 5

Total

19

/

20

Passed

Validation

93%

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

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

referenced_paths_exist

Referenced path issues: 1 missing

Warning

Total

15

/

16

Passed

Reviewed

Table of Contents