Content
# VibeCheck 🤙

   
> "Yes, I even vibe checked vibe check 🤯"
**VibeCheck** is a high-performance **Zig** CLI tool that scans your codebase for "unfinished vibes"—To-Dos, hardcoded secrets, debug prints, and other signs of developer desperation.
It's fast, configurable, and CI/CD ready.
## Features
- **⚡ Blazing Fast**: Recursively scans thousands of files in milliseconds.
- **🪶 Featherweight**: ~149KB static binary. Zero dependencies. Runs on a potato 🥔 🎤
- **📦 Portable**: Single executable. Linux, Mac, Windows. No `node_modules` in sight.
- **🛡️ Battle Tested**: Validated against a 50,000-file "Google-scale" monorepo.
- **🧩 Modular**: Load custom pattern packs via JSON plugin system.
- **🤖 CI/CD Native**:
- Non-zero exit codes for build failures.
- JSON output for machine parsing.
- GitHub Actions Annotations support (`--github`).
- **🧠 AI Ready**: Built-in Model Context Protocol (MCP) Server.
## Installation
### Build from Source
Requirements: [Zig 0.13+](https://ziglang.org/download/)
```bash
git clone https://github.com/copyleftdev/vibecheck.git
cd vibecheck
zig build -Doptimize=ReleaseSmall
```
The binary will be in `zig-out/bin/vibecheck`.
## Usage
**Basic Scan** (Human Readable)
```bash
vibecheck .
```
**CI/CD Mode** (Machine Readable + Exit Codes)
```bash
vibecheck . --json
```
**GitHub Actions Mode** (PR Annotations)
```bash
vibecheck . --github
```
**AI Agent Mode** (Model Context Protocol) 🤖
Turn VibeCheck into a tool for Claude/Gemini.
```bash
vibecheck --mcp
```
**List Active Patterns**
```bash
vibecheck list-patterns
```
## Configuration (`vibecheck.toml`)
Configure ignores, thresholds, and external packs.
```toml
[scan]
max_results = 100
ignore = ["*.tmp", "node_modules/", "vendor/"]
# Calculate your own vibes:
# packs = ["./my-custom-vibes.json"]
[output]
# Fail the build on 'error', 'warn', or 'info'
fail_on = "error"
```
## Vibe Packs
VibeCheck comes with **Crucial Vibes** built-in:
- **Mock Data**: `lorem` `ipsum`, `John` `Doe`
- **Fragile Paths**: `localhost` `:3000`, `127` `.0.0.1`
- **Security Laziness**: `verify` `=False`, `chmod` `777`
- **Desperation**: `FIX` `ME`, `X` `X` `X`
You can extend this by creating your own JSON packs (see `extra_vibes.json` in `examples/`).
## License
MIT