Skip to main content

AI-assisted git diff review CLI

Project description

DiffAid

PyPI version Python versions License PyPI downloads

AI-assisted git diff review CLI that catches bugs before you commit.

Features

  • Smart Analysis – Uses Gemini AI to review code changes
  • CI Integration – Exit codes for automated workflows
  • Fast – Reviews in seconds with Gemini Flash
  • Clean Output – Color-coded findings in your terminal

Installation

Install DiffAid using pip:

pip install diffaid

Requirements

  • Python 3.10+
  • Git
  • Gemini API key (free tier available)

Setup

  1. Get a free Gemini API key at: https://aistudio.google.com/apikey

  2. Set the GEMINI_API_KEY environment variable.

Option 1: Using .env file (Recommended)

Create a .env file in your project root:

GEMINI_API_KEY=your-key-here

Option 2: Environment Variable

Mac / Linux:

export GEMINI_API_KEY="your-key-here"

Windows (PowerShell):

$env:GEMINI_API_KEY="your-key-here"

Permanent Setup

Mac / Linux

Add to ~/.bashrc or ~/.zshrc:

echo 'export GEMINI_API_KEY="your-key-here"' >> ~/.bashrc
source ~/.bashrc
Windows

Add as a system environment variable through System Properties, or use PowerShell:

[System.Environment]::SetEnvironmentVariable(
  'GEMINI_API_KEY',
  'your-key-here',
  'User'
)

Usage

Stage your changes and run DiffAid:

git add .
diffaid

DiffAid will analyze your staged changes and report:

Errors – Critical issues that should be fixed

Warnings – Potential problems worth reviewing

Notes – Suggestions for improvement

Command Options

  • diffaid - Quick overview (default mode)
  • diffaid --detailed or diffaid -d - Detailed line-by-line review with all suggestions
  • diffaid --json - Output raw JSON instead of formatted text
  • diffaid --strict - Treat warnings as errors (exit code 1)
  • diffaid --version or diffaid -v - Show version and exit

Example Output

Summary: Added user authentication with JWT tokens

ERROR: Hardcoded secret key detected
  → auth.py

WARNING: Missing error handling for database connection
  → db.py

NOTE: Consider adding rate limiting to login endpoint
  → routes.py

---
Found: 1 error, 1 warning, 1 note

Exit Codes

DiffAid uses standard exit codes for CI/CD integration:

  • 0 – No errors found (warnings are OK in normal mode)
  • 1 – Errors found, OR warnings found in --strict mode
  • 2 – Tool error (git/API failure)

Project Structure

diffaid/
├── diffaid/
│   ├── ai/           # AI engine implementations
│   ├── cli.py        # Command-line interface
│   ├── git.py        # Git integration
│   └── models.py     # Data models
├── tests/            # Test suite
├── pyproject.toml    # Project configuration
└── README.md

Development

Running Tests

Install dev dependencies

pip install -e ".[dev]"

Run tests

pytest

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License – see the LICENSE file for details.

Acknowledgments

Powered by Google Gemini

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

diffaid-0.2.1.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

diffaid-0.2.1-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file diffaid-0.2.1.tar.gz.

File metadata

  • Download URL: diffaid-0.2.1.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for diffaid-0.2.1.tar.gz
Algorithm Hash digest
SHA256 b23e5353747fd1fb42fafa2a7581fc90bde59fd01b009e9b96ee3a15b947519b
MD5 4eae1a72f7a2f2650ff2a03aa157b1b8
BLAKE2b-256 33269f84f673503def035667aa593dbb80eb10c9f4bf6a6bbbf71a08df87af0e

See more details on using hashes here.

File details

Details for the file diffaid-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: diffaid-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for diffaid-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 37055b6cbf87d2ea7225c2e66134308954e23d571c387168e9842d5641173eae
MD5 8b19c88aa8e9955d68a929871ed1d475
BLAKE2b-256 8f2b98f66323949a71b26981257f7c12fbe465a7259f91df629da68c018939de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page