skip to content
fizzgig
sign in
// product
code auditdetect what shippedbrand and reachsoonlift qualityperfect memorysoondecision graph
// build better
sourdough startersproject kicks-off in 1 prompt
// resources
pricingdocsblogabout
sign inrequest access →
audit suite/ux/legibility_review
newux / dxv0.1.0pro · $0.002/call

fizzgig__legibility_review

WCAG contrast + font-size + line-height. resolves your design tokens, composites translucent backgrounds, computes the real ratio.

// ai does this over time

the AI picks a lovely light-grey on white. it looks designed. it fails WCAG 1.4.3 by miles. the body font is 12px because that's what's in your tailwind preset for 'small'. half your audience can't comfortably read it.

// the tool does

the visual-readability companion to a11y-audit — a11y-audit checks structure; legibility-review checks perception. Builds a --custom-property map from your CSS, then for every co-located colour + background pair resolves var() references, composites translucent backgrounds over the page default, computes the real WCAG 1.4.3 contrast ratio. 5 checks: contrast-fail-aa (below 4.5:1), contrast-fail-large (clears 3:1 but not 4.5:1), font-too-small (sub-12px), tiny-size-proliferation (4+ distinct sub-14px sizes), line-height-tight (unitless < 1.4). Each finding weighs decorative-vs-informational so the AI knows what's exempt.

// so you can

the text is actually readable. sticky — re-run after any palette or type-scale change.

● new● v0.1.0● pro
// input schema
schema · application/json
{
"type": "object"
"required": [
"project"
]
"properties": {
"project": {
"type": "string"
"description": "the project slug or path"
}
"strict": {
"type": "boolean"
"default": false
"description": "fail on warnings, not just errors"
}
}
}
// output schema
schema · application/json
{
"type": "object"
"properties": {
"ok": {
"type": "boolean"
}
"findings": {
"type": "array"
"items": {
"type": "object"
"properties": {
"severity": {
"enum": [
"info"
"warn"
"high"
"critical"
]
}
"message": {
"type": "string"
}
"fix": {
"type": "string"
}
}
}
}
}
}
// example call from cursor
~/myapp — example output
→ fizzgig__legibility_review(project="myapp")
{
"ok": false,
"findings": [
{ "severity": "high",
"message": "policy uses user_id without auth.uid()",
"fix": "USING (auth.uid() = user_id)" }
],
"scanned": 3, "duration_ms": 142
}
// reviews
@maya.codes★★★★★
2 days ago

caught a policy that would have leaked every user's comments. shipped a fix in 4 minutes.

@solo_at_3am★★★★★
1 week ago

first tool i installed. it's the one that pays for itself.

@vibebuilder★★★★☆
2 weeks ago

works great. one false positive on a join table — easy to ignore.

// primary action
add to your editor
paste this into your mcp config.
.cursor/mcp.json
{
  "fizzgig": {
    "url": "https://mcp.fizzgig.ai",
    "tools": ["legibility_review"]
  }
}
full setup guide →
// pricing
$0.002 / call
included free in pro plan.
// related tools
a11y_audit
v0.2.0
→
brand_consistency
v0.2.0
→
brand_completeness
v0.2.1
→
fizzgig

the fluffy guardian of vibe-coded apps. growls at insecure code so you don't have to.

all systems operational

product

code auditbrand and reach (soon)perfect memory (soon)pricingdocschangelog

community

sourdough startersdiscord (soon)github (soon)x / twitter (soon)rss (soon)

company

aboutcontactterms (soon)privacy
© 2026 fizzgig labs.
v1.4.2 · 2026-05-01