The Grammarly for AI Code. Catch slop before it ships.
$ npx vibe-check src vibe-check v0.1.0 Violations Found: no-any (3) error src/api.ts:12:8 Avoid using 'any' type [no-any] no-lazy-comments (2) warn src/utils.ts:45:1 Lazy TODO/FIXME comment detected [no-lazy-comments] ╔════════ ✓ vibe-check ════════╗ ║ ║ ║ VIBE SCORE 78/100 ║ ║ ║ ║ ✨ Good Vibes ║ ║ ║ ╚══════════════════════════════╝ Vibe check passed.
$ npx github:hereshecodes/vibe-check .
Or install globally: npm install -g github:hereshecodes/vibe-check
any TypesIf you're using TypeScript, use it properly. No more const data: any.
Flags // TODO, // fix later, // idk, and other procrastination markers.
Detects data, handleStuff, processItem - names that say nothing.
Flags files over 500 lines. If it's that big, break it up.
Catches console.log left in production code. Use a real logger.
Errors shouldn't vanish silently. Handle them or throw them.
I love vibe coding. Cursor, Claude, Copilot—they've changed how I build software. But I kept running into the same problem: the AI would drift.
It would forget my tech stack. Suggest deprecated APIs. Write const data: any everywhere. Leave behind // TODO fix later comments that I'd forget about.
I was spending more time cleaning up AI slop than I saved by using AI in the first place.
So I built vibe-check. It's not a replacement for ESLint—it catches the vibe problems that syntax linters miss. The lazy patterns. The generic names. The code that technically works but smells like it was written by a robot that doesn't care about your codebase.
Free for open source. Support the dev for private repos.