WCAG 2.2 AA · ADA · EAA

Most tools advise.
CurbCut enforces.

A persistent context standard for building accessible UI with AI — native-first (Compose, SwiftUI) and web — with a write-time hook that blocks WCAG anti-patterns before they land.

Point your agent at the standard — one line in CLAUDE.md / .cursorrules:
Follow the accessibility rules in CurbCut.md strictly: https://github.com/SUDARSHANCHAUDHARI/CurbCut/blob/main/CurbCut.md
13enforced rules
15platform guides
3platforms · web · Compose · SwiftUI
0trust required — it's a gate, not advice

The curb-cut principle

The ramp cut into a sidewalk was built for wheelchair users — and it ended up helping everyone: strollers, luggage, delivery carts. Accessibility done at the source isn't a favor to a minority. It's baseline quality that lifts every user.

Every rule declares who verifies it

That's the idea an advisory guideline can't express. It's what lets one document drive both the model's behavior and the CI gate that stops it.

🟢 AUTO

The machine blocks it

Deterministically checkable from source — clickable divs, missing labels, suppressed focus, dp-sized text. The hook denies the write.

Verified by: the CurbCut hook · lint packs · CI
🟡 ASSISTED

The AI applies + explains

Needs reasoning over intent — focus order, live-region correctness. Applied proactively, with the reasoning shown.

Verified by: the AI, at generation time
🔵 HUMAN

A person must confirm

Announcement quality, plain language — only a real screen-reader session proves it. The AI may prepare and request; never fake it.

Verified by: a person with a screen reader

What that catches

The single most common thing an AI generates wrong — a clickable box — is AUTO-blocked. Keyboard users can't reach the first one; the hook won't let it be written.

✗ blocked at write time
<div onClick={save}>Save</div>
// not focusable · no Enter/Space
// no role · invisible to AT
✓ what CurbCut steers to
<button type="button" onClick={save}>
  Save
</button>
// keyboard + focus + semantics, free

What's in the box

Not a guideline PDF — a working system you install.

CurbCut.md

Normative core

Principle Zero, POUR, compliance profiles, the AI behavior contract — every rule tagged AUTO/ASSISTED/HUMAN.

enforce/hooks

Write-time hook

Blocks anti-patterns as they're written. Configurable warn/block, inline disables, tested.

enforce/rules · ci

Lint packs + CI

ESLint flat config, detekt & SwiftLint seeds, a GitHub Action gate on every PR.

references/

15 platform guides

Forms, Buttons, Modals, Images, Live regions — real idiomatic code for web, Compose, SwiftUI.

benchmark/

Pre-registered proof

Methodology + turnkey runner with an enforcement condition. No numbers claimed until a real run.

skill/

Agent skill

Auto-invoking operating procedure so accessibility is applied on every UI file you touch.

Honest by design

Enforcement fidelity tiers by what's actually machine-checkable — that's physics, not a shortcut. Guidance is full-depth everywhere; automatic blocking is honest about where it's reliable.

PlatformGuidesHook blockingLint pack
Webdeepreliableeslint
Jetpack Composedeeppartialdetekt seed
SwiftUIdeepexperimentalseed

SwiftUI accessibility is inferred at render, so it can't be grepped like JSX — its guides are complete while its automatic enforcement is honestly labeled experimental. We don't oversell what a build can't prove.