Your app looks done. Prove it. VibeProof audits AI-generated apps for fake features, dead UI, fake persistence and false-success flows — tracing every button through to the database. One SKILL.md, zero dependencies. Works in Claude Code, Cursor and Codex.
README
Your app looks done. Prove it.
Finds fake features, dead UI, fake persistence, broken wiring and false-success flows in AI-generated apps.
<br> <br> <img src="assets/demo.png" width="820" alt="VibeProof terminal report — reality score 87 out of 100, one blocker: a login button linking to a route that does not exist"><sub><b>A real run against a production Next.js site.</b><br> The login button in the header pointed at a route that was never built.</sub>
<br><br>
</div>Your AI said it's done. Your UI looks done.
Is it actually done?
/vibeproof
No npx. No API key. No config. One markdown file your agent reads.
Linters inspect your code. VibeProof inspects your product promises.
Vibe-coded apps rarely fail because of a syntax error. They fail because something looks finished and isn't:
Delete Account → onClick={() => {}}Save → updates React state, never reaches the serverPayment successful → toast fires before the API respondsExport CSV → no handler/settings in the nav → no such routecatch { return { success: true } }None of that is a bug a linter can see. Every one of them ships.
VibeProof reads your repo, works out what the app claims to do, then follows each claim through the code:
BUTTON → HANDLER → API CALL → SERVER ROUTE → VALIDATION
→ DATABASE → RESPONSE → UI FEEDBACK
Wherever that chain breaks, it tells you the file and the line.
| | | |---|---| | **[A