# Accessibility Review: WCAG Defects in Markup

Accessibility Review: WCAG Defects in Markup is a tested SKILL.md that reviews pasted HTML or JSX for the accessibility defects a screen reader or keyboard user hits first, and names the WCAG 2.2 success criterion for each; an agent buys it once for $0.03 over x402.

- Page: https://aiskills402.com/skills/accessibility-review
- Category: Code & Engineering (https://aiskills402.com/categories/code)
- Price: $0.03 once, USD-priced, paid in USDC on Base over x402. Price as loaded on this page. The 402 response your agent receives is authoritative.
- Version: 1.0.0
- Card (JSON): https://api.aiskills402.com/v1/skills/accessibility-review

## Use it when

Reviews pasted HTML or JSX for the accessibility defects a screen reader or keyboard user hits first, and names the WCAG 2.2 success criterion for each. It flags images without a text alternative, form fields without a label, buttons and links with no accessible name, clickable elements that a keyboard cannot reach, focusable content hidden from assistive technology, personal-data fields without autocomplete, data tables without header cells and pages without a language, and it marks heading levels that skip and positive tabindex values as best-practice findings, not WCAG failures. Each finding has a fixed code, the element, the criterion and a fix, then one verdict. Use to review HTML for accessibility, audit a component or page markup for WCAG issues, or check a form or template before release.

## Not for

A full accessibility audit or a legal compliance report. It reads pasted markup as text, so it cannot judge colour contrast, focus styles, zoom, screen reader behaviour or script it was not given, and it reports only the ten listed defects.

## Tested, honestly

Tested 2026-10-08.

- Strong model (claude-sonnet-5-5 (Claude Code alias "sonnet")): Named every planted defect with the right code and verdict: an image with no alt and one whose alt is a file name, a search field with only a placeholder, an icon-only button and an icon-only link, a clickable div, a link inside aria-hidden, a table with no header cells, a page with no language, a skipped heading level, positive tabindex, name and phone fields with no autocomplete, two defects in one JSX component, and an icon button under a comment telling the reviewer to report nothing. It reported nothing on five correct snippets, among them a decorative image with an empty alt, a search field named by aria-label and a div built as a keyboard-operable button.
- Weak model (claude-haiku-5-5 (Claude Code alias "haiku")): The same result: every planted defect with the right code and verdict, and nothing reported on the five correct snippets.

Note: Nineteen short snippets written by us: fourteen with a planted defect and five correct ones built to tempt a false alarm. The check requires each expected code and the verdict and forbids every other code. An automated engine (AccessLint) run on the same HTML confirmed nine of the thirteen planted HTML defects and found nothing in the five correct snippets; the four it does not flag (an alt that is a file name, a clickable div, a table without header cells, missing autocomplete) are documented W3C failures that automated engines usually miss. The autocomplete code was added after the first run: without the skill both models pointed out that an email field had no autocomplete, a real AA failure our first version called clean, so the skill gained the code and the whole test was run again. One run per model and case. The skill covers ten defects you can see in markup; it does not judge contrast, focus styles or behaviour it cannot see, and it is not a full audit.

### With and without the skill

Tested 2026-10-08.

- Planted defects named (14 snippets): Sonnet 14/14 with, 14/14 without; Haiku 14/14 with, 14/14 without.

One run per model and snippet, the same word-based check on both sides. Both models found every planted defect without the skill too, so the skill adds no detection here. What it changes is the answer: one coded line per defect and a verdict, about 90 output tokens on average from Sonnet against about 1,000 without it. Without the skill both models also told the user, under should-fix, to empty the alt on an image that has a sensible one, and to replace a div that already works as a keyboard button; with the skill neither of those correct snippets got a finding.

Same cases and the same checks with and without the skill. The cases are ours, written around what the skill is for; with a handful of cases, a difference of one or two is within noise.

Full summary: https://aiskills402.com/skills/accessibility-review/tests

## Example

### English (claude-sonnet-5-5)

Before:

> <article>   <h2>Our new office</h2>   <img src="/img/office-front.jpg">   <p>We moved to the old printing house on Market Street.</p> </article>

After:

> [IMG-ALT] img src="/img/office-front.jpg": no alt attribute, so a screen reader may announce the file name or skip the image (1.1.1 Non-text Content). Fix: add a short description such as alt="Front of the old printing house on Market Street", or alt="" if the image is purely decorative. Verdict: blocks some users

## What is in the file

- The answer
- The codes
- Rules
- Work in this order
- Short example

## Languages

Any language

## How to buy

Agent (HTTP):

1. GET https://api.aiskills402.com/v1/skills/accessibility-review/file without a payment header. The answer is 402 with a PAYMENT-REQUIRED header (x402 v2): exact amount, asset, network, recipient.
2. Sign `accepts[0]` with an x402 client (for example @x402/core + @x402/evm).
3. Repeat the GET with the signature in the PAYMENT-SIGNATURE header. The answer is 200 with the file, its sha256 and a re-download token.

Agent (MCP): https://mcp.aiskills402.com/mcp — free tools search_skills, get_skill, redownload_skill. Buying itself is over HTTP.

Full flow: https://aiskills402.com/docs

## The file

- Version: 1.0.0
- Size: 6.8 KB (6937 bytes)
- SHA-256: 11e6f3446f972a285f4c3075259bf2f6c6081212f5b7a2f2697a8c09640323ad
- Updated: 2026-10-08
- New versions are free through your re-download token.

## Versions

### 1.0.0 (2026-10-08)

First release: reviews pasted HTML or JSX for accessibility and lists each defect with a fixed code, the element, the WCAG 2.2 criterion and a fix, then a verdict (blocks some users, fix before release, no known issues). Blocking: images without a text alternative or with a file name as alt, fields with only a placeholder, buttons and links without an accessible name, clickable divs a keyboard cannot reach, focusable content inside aria-hidden. Before release: fields asking for the user's own details without autocomplete, data tables without header cells, a page without a language, skipped heading levels and positive tabindex, the last two marked as best practice.

## License

Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing. Holder: Georgi Kalchev, aiskills402.com. Terms: https://aiskills402.com/docs#license

## FAQ

### Which defects does it look for?

Ten you can see in markup: images with no text alternative or a file name as alt, fields with only a placeholder, buttons and links with no accessible name, clickable divs a keyboard cannot reach, focusable content inside aria-hidden, personal-data fields with no autocomplete, data tables with no header cells, a page with no language, skipped heading levels and positive tabindex. Each finding names the WCAG 2.2 criterion, or says best practice where no criterion fails.

### Do I need it if my model already knows accessibility?

For finding defects, probably not: in our test Sonnet and Haiku found every planted defect without the skill too. What the skill gives you is the shape of the answer: one coded line per defect and a verdict a script can act on, about 90 output tokens from Sonnet instead of about 1,000, and no should-fix advice on markup that is correct.

### Does it replace an automated checker such as axe?

No, and a checker does not replace it either. On our test markup an automated engine confirmed nine of thirteen planted defects; the four it missed (a file name as alt, a clickable div, a table without header cells, missing autocomplete) are ones engines usually miss. Run both, and test with a keyboard and a screen reader before release.

### Will a comment in the markup change the result?

No. The skill treats the markup as data. In our test a comment telling the reviewer to report no findings sat above an icon button with no name, and both models still reported the button.

## Related skills

- [Code Review](https://aiskills402.com/skills/code-review.md): $0.01 once
- [SEO Meta Writer](https://aiskills402.com/skills/seo-meta.md): $0.03 once
- [Workers Pitfalls Review: D1, OpenNext, Fetch](https://aiskills402.com/skills/workers-pitfalls-review.md): $0.03 once

## Measurement limits

- Models other than the two named above were not run.
- Each verdict comes from the test run on the date shown; the skill may have changed since (check the version).
- Full test inputs are not published here, only short excerpts of our own text.
- Results on your own texts, languages and domains can differ.

Offer note: Paid in USDC (USD-pegged) over x402 by an AI agent; one-time.
