vibecheck0.3.0
Reference

Detector & audit reference

All 13 detectors, their thresholds, the audit check ids, and where to fix each.

All 13 detectors are enabled by default; toggle any of them via config.detectors (see The Engine). The Fix guide column links to a fix guide for each — framework-specific where the fix differs.

DetectorWhat it catchesThresholdFix guide
dom-bloatExcessive DOM nodes and deep nesting≥ 800 nodes (warning), ≥ 1,500 (error)Excessive DOM size
duplicate-requestsThe same URL + method fetched repeatedly2+ identical requests within 2sDuplicate requests
console-spamHigh-volume console output> 20 calls per 10s windowConsole log spam
memory-leakSteadily growing JS heap without GC recovery> 10% growth over 30s (warning), > 25% (error)Memory leak
layout-thrashingClusters of layout shifts without user input≥ 3 shifts within 500msLayout shift
unoptimized-imagesMissing dimensions/lazy/alt, oversized, or distorted imagesnatural > 2× rendered; aspect mismatch > 0.15Unoptimized images
large-imagesOversized image transfers≥ 500KB (warning), ≥ 1,024KB (error)Large image files
long-task-attributionScripts causing long animation frames (LoAF)≥ 3 long frames attributed to one sourceLong tasks
resource-bloatOversized JS/CSS/font/image resources≥ 100KB (prod) / 500KB (dev)Large JS bundles
web-essentialsMissing document essentials (favicon, viewport, lang, charset)4 document checksWeb essentials
heavy-libraryKnown heavy libraries and their pitfalls16 library signaturesHeavy dependencies
seoDiscoverability / search-visibility problems20 checks (title ≤ 60, description ≤ 160 chars, …)Search visibility
aeoAI answer-engine / agent readiness9 checksAI readiness

Audit checks

The seo, aeo, and web-essentials detectors each emit one issue per failed check. Each check id below is the value carried in the issue's evidence.check.

Search visibility (seo) — 20 checks

Fix guides live under /fix/seo.

  • title-missing — Missing page title
  • title-too-long — Page title is too long
  • title-default — Page title is a framework default
  • meta-description-missing — Missing meta description
  • meta-description-too-long — Meta description is too long
  • og-image-missing — Missing social preview image (og:image)
  • og-title-missing — Missing og:title
  • og-description-missing — Missing og:description
  • canonical-missing — Missing canonical link
  • h1-missing — No <h1> heading
  • h1-multiple — Multiple <h1> headings
  • image-alt-missing — Images missing alt text
  • slug-unfriendly — Unfriendly URL slug
  • noindex — Page is set to "noindex"
  • title-too-short — Page title is very short
  • og-url-missing — Missing og:url
  • twitter-card-missing — Missing Twitter/X card
  • generic-link-text — Vague link text
  • sitemap-missing — Missing or invalid sitemap.xml
  • robots-missing — Missing robots.txt

AI answer-engine readiness (aeo) — 9 checks

Fix guides live under /fix/aeo.

  • structured-data-missing — No structured data (JSON-LD)
  • structured-data-invalid — Structured data is invalid
  • no-main-landmark — No <main> landmark
  • no-author-metadata — No author or date signals
  • llms-txt-missing — No llms.txt
  • content-requires-js — Content only renders with JavaScript
  • markdown-negotiation-missing — No markdown content negotiation
  • ai-crawlers-blocked — robots.txt blocks AI crawlers
  • mcp-discovery-missing — No agent interface (MCP) advertised

Document essentials (web-essentials) — 4 checks

Fix guides live under /fix/essentials.

  • favicon — Missing favicon
  • viewport — Missing viewport meta tag
  • lang — Missing lang attribute on <html>
  • charset — Missing charset declaration

Evidence shapes

Each issue carries a typed evidence object — e.g. dom-bloat emits { nodeCount, maxDepth, selector }, duplicate-requests emits { url, method, count, windowMs }. See IssueEvidenceMap in the protocol types for the full per-detector map.