Hey dev.to! ๐
Have you ever pushed a commit in a hurry, only to realize later that you introduced a critical security flaw or a silly bug? We've all been there. The "oops, I'll fix it in the next commit" cycle is a rite of passage for developers.
What if you had a senior developer looking over your shoulder before you even push?
That's exactly why I built Git Diff Reviewer, a CLI tool that integrates directly into your Git workflow. When you commit, it automatically extracts your diff, sends it to an LLM (Gemini, OpenRouter, Groq, or local Ollama), and gives you a structured review right in your terminal.
Let's dive into how it works and how you can set it up!
๐ ๏ธ What is Git Diff Reviewer?
Git Diff Reviewer is a pre-commit hook that acts as your personal AI code reviewer. Instead of waiting for CI/CD to fail or a teammate to catch a bug, you get instant feedback.
Key features
- Multi-Provider Support: Gemini for deep capability, Groq for ultra-low latency, OpenRouter for flexibility, or Ollama for 100% local privacy.
- Strict Review Taxonomy: It doesn't just say "this looks bad." It categorizes issues (see the table below).
-
Pre-commit Hook: Runs automatically on
git commit. Zero friction. -
.reviewerignore: Filters out lockfiles, build outputs, and.envfiles so you don't waste tokens. - Fully Tested: Comes with 22 unit tests to ensure reliability.
| Category | What it catches |
|---|---|
| Critical Bugs | Logic errors, infinite loops |
| ๐ Security Vulnerabilities | SQL injection, XSS, hardcoded secrets (aligned with OWASP/CWE) |
| โ ๏ธ Anti-patterns | Code smells and bad practices |
| โก Performance Bottlenecks | N+1 queries, inefficient loops |
How It Works (Architecture)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ git commit -m "feat: update auth" โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Pre-commit hook โ
โ python main.py --staged โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Extract staged diff โ
โ + filter files via .reviewerignore โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ LLM Provider โ
โ Gemini โ Groq โ OpenRouter โ Ollama โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Structured review printed in terminal โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Setup & Installation
Let's get this running on your machine.
1. Clone the repository
git clone https://github.com/humammoin09-blip/git-diff-reviewer.git
cd git-diff-reviewer
2. Create and activate a virtual environment
python -m venv .venv
# Windows:
.\.venv\Scripts\Activate.ps1
# Mac/Linux:
source .venv/bin/activate
3. Install dependencies
pip install -r requirements.txt
4. Set up environment variables
Copy the example file and add your API key:
cp .env.example .env
Open .env and configure your provider (e.g., Gemini):
LLM_PROVIDER=gemini
GEMINI_API_KEY=your_api_key_here
๐ก Pro tip: If you want 100% privacy, set
LLM_PROVIDER=ollamaand run a local model!
5. Install the Git hook
python main.py --install-hook
That's it! Now, every time you commit, the AI will review your code.
๐ป Real-World Example
Imagine you write this code:
# auth.py
def get_user(user_id):
query = f"SELECT * FROM users WHERE id = {user_id}"
return db.execute(query)
When you commit, the AI immediately flags it:
=== AI CODE REVIEW ===
[CRITICAL] SQL Injection vulnerability detected
File: auth.py, Line 42
Issue: User input directly interpolated into SQL query.
Fix: Use parameterized queries.
CWE-89: Improper Neutralization of Special Elements used in an SQL Command
[WARNING] Hardcoded secret detected
File: config.py, Line 15
Issue: API_KEY = "sk-abc123..."
Fix: Move to environment variable.
This catches the bug before it ever reaches production. ๐
โ ๏ธ Honest Limitations
Real security engineers respect honesty over hype, so here's what the tool cannot do:
- LLM hallucinations: AI can occasionally give false positives. Treat it as a "second pair of eyes," not an absolute truth.
- Context window limits: Extremely large diffs might exceed the model's context window.
- Offline limitation: Unless you are using a local Ollama model, you need an internet connection.
๐ฎ What's Next? (Roadmap)
I'm just getting started with this. For v2, I'm planning:
- [ ] GitHub Action integration (automatic PR reviews)
- [ ] Multi-file context understanding
- [ ] Custom rule engine (define your own linting rules)
๐ค Your Turn, dev.to!
If you find this project useful, please give it a Star on GitHub! โญ
humammoin09-blip
/
git-diff-reviewer
An automated terminal tool that runs a Git diff before pushing code, uses an LLM to review or roast your code changes, and catches bad practices.
Git Diff Reviewer
A modular, terminal-based CLI tool that inspects local git diffs and sends them to your choice of LLM provider for an automated, high-rigor security and code quality review.
๐ Key Features
- Multi-Provider Support: Seamlessly switch between OpenRouter, Google Gemini, Groq, and local Ollama models.
-
Flexible Diff Targets: Review staged changes (
--staged), unstaged changes (--unstaged), or diff against specific branches/commits (--branch main). - Interactive Mode: Guided terminal prompts for picking diff targets and providers on the fly.
- Strict Review Taxonomy: Highlights Critical Bugs, Security Vulnerabilities (OWASP/CWE/Secret leaks), Anti-patterns, and Performance Bottlenecks with actionable Before/After code snippets.
- Rich Terminal Rendering: Formatted markdown and colorized panels right in your terminal.
- Safe Truncation: Automatically manages large diffs to avoid LLM token context overflow.
-
Export to Markdown: Save reviews directly to
.mdfiles for pull request commentsโฆ
Break it, fuzz it, and if you find a bug, open an issue. I read every single one.
Let me know in the comments what features you'd like to see in v2!
Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.