Skip to main content

An intelligent Git automation tool that monitors file changes and generates AI-powered commit messages.

Project description

Smart Git AI Agent

🤖 Smart Git AI Agent is an intelligent Git automation tool that monitors file changes in a Git repository, automatically generates meaningful commit messages using AI, and optionally pushes changes to a remote repository. It uses emojis to categorize commits, supports custom ignore patterns, and includes features like dry-run mode for testing. Built as a Python package, it leverages the OpenRouter API for AI-generated commit messages and integrates seamlessly with existing Git workflows.

Features

  • Automatic File Monitoring: Watches for file changes using watchdog.
  • Smart Commit Messages: Generates concise, professional commit messages with emojis (e.g., ✨ for features, 🐛 for fixes).
  • AI Integration: Uses OpenRouter API to generate context-aware commit messages.
  • Multi-Language Support: Automatically detects project languages and frameworks for optimal .gitignore generation.
  • Custom Ignore Patterns: Ignores files based on default patterns, .gitignore, and user-defined patterns.
  • Dry-Run Mode: Simulates commits without making changes.
  • Customizable Commit Messages: Supports custom commit message templates.
  • Auto-Push: Optionally pushes commits to the remote repository.
  • Installable Package: Can be installed via pip and run as a CLI tool.

Supported Languages & Frameworks

Smart Git AI Agent automatically detects your project type and creates appropriate .gitignore patterns:

🐍 Python

  • Detection: requirements.txt, setup.py, pyproject.toml, Pipfile, poetry.lock, .py files
  • Ignores: __pycache__/, *.pyc, .venv/, venv/, dist/, build/, .pytest_cache/, .mypy_cache/, etc.

🌐 JavaScript/Node.js

  • Detection: package.json
  • Ignores: node_modules/, npm-debug.log*, yarn-error.log*, .npm, .cache/, etc.

Frontend Frameworks:

  • Next.js 🚀

    • Detection: next in dependencies, next.config.js
    • Ignores: .next/, next-env.d.ts, .vercel/, out/
  • React ⚛️

    • Detection: react in dependencies
    • Ignores: build/, .expo/, .expo-shared/
  • Vue.js 💚

    • Detection: vue in dependencies, vue.config.js
    • Ignores: dist/, .nuxt/
  • Nuxt.js 🟢

    • Detection: nuxt in dependencies, nuxt.config.js
    • Ignores: .nuxt/, .output/, dist/
  • Vite

    • Detection: vite in dependencies, vite.config.js
    • Ignores: dist/, dist-ssr/, *.local
  • Angular 🅰️

    • Detection: @angular/core in dependencies, angular.json
    • Ignores: dist/, .angular/, bazel-out/
  • Svelte 🧡

    • Detection: svelte in dependencies, svelte.config.js
    • Ignores: .svelte-kit/, package/

🦀 Rust

  • Detection: Cargo.toml
  • Ignores: target/, Cargo.lock, *.rs.bk

🐹 Go

  • Detection: go.mod, .go files
  • Ignores: vendor/, *.exe, *.test, *.out

Java/Kotlin

  • Detection: pom.xml, build.gradle, build.gradle.kts
  • Ignores: target/, build/, *.class, *.jar, .gradle/

🔷 C#/.NET

  • Detection: *.csproj, *.sln, Program.cs
  • Ignores: bin/, obj/, *.user, .vs/, [Dd]ebug/, [Rr]elease/

🐘 PHP

  • Detection: composer.json, .php files
  • Ignores: vendor/, composer.lock

💎 Ruby

  • Detection: Gemfile, .rb files
  • Ignores: *.gem, .bundle/, vendor/, tmp/

📱 Flutter/Dart

  • Detection: pubspec.yaml
  • Ignores: .dart_tool/, .flutter-plugins, .pub-cache/, build/

🍎 Swift

  • Detection: *.xcodeproj, *.xcworkspace, Package.swift
  • Ignores: build/, DerivedData/, *.xcodeproj/xcuserdata/

🐳 Docker

  • Detection: Dockerfile, docker-compose.yml
  • Special handling: Respects .dockerignore

🌍 Web Technologies

  • Detection: .html, .css, .js, .ts files
  • Ignores: *.map, dist/, build/

🔧 Additional Electron Support

  • Detection: electron in dependencies
  • Ignores: Platform-specific build directories

Requirements

  • Python 3.8+
  • Git installed and configured
  • OpenRouter API key (obtainable from OpenRouter)

Installation

  1. Install the Package: Install smart-git-agent using pip:

    pip install .
    

    Or, if installing from a source distribution:

    pip install smart-git-agent
    
  2. Create Configuration File: Generate a default configuration file:

    smart-git-agent --setup
    
  3. Configure the API Key: Edit git-agent-config.ini (created in the current directory) to add your OpenRouter API key and customize settings (see Configuration).

Usage

Run the Smart Git AI Agent as a command-line tool:

smart-git-agent --repo /path/to/your/repo

Command-Line Options

  • --repo <path>: Path to the Git repository (default: current directory).
  • --config <path>: Configuration file path (default: git-agent-config.ini).
  • --setup: Create a default configuration file and exit.
  • --dry-run: Simulate commits without making changes.

Example:

smart-git-agent --repo ./my-project --dry-run

Alternatively, run as a Python module:

python -m smart_git_agent --repo ./my-project

To stop the agent, press Ctrl+C.

Configuration

The configuration file (git-agent-config.ini) allows customization:

[DEFAULT]
openrouter_api_key = YOUR_API_KEY_HERE
model = openai/gpt-4o
language = français
branch = main
debounce_time = 10
auto_push = true
dry_run = false
commit_template = {emoji} {commit_type}{scope}: {description}
ignored_patterns =
site_url =
site_name =

Configuration Options

  • openrouter_api_key: Required OpenRouter API key.
  • model: AI model for commit messages (default: openai/gpt-4o).
  • language: Commit message language (e.g., français, english).
  • branch: Default Git branch (default: main).
  • debounce_time: Seconds between commits (default: 10).
  • auto_push: Push commits to remote (true or false).
  • dry_run: Simulate commits (true or false).
  • commit_template: Commit message format (supports {emoji}, {commit_type}, {scope}, {description}).
  • ignored_patterns: Comma-separated regex patterns to ignore files (e.g., *.bak, temp/.*).
  • site_url, site_name: Optional metadata for OpenRouter API.

Smart .gitignore Generation

When the agent detects your project for the first time, it automatically creates a comprehensive .gitignore file based on detected languages and frameworks. For example:

Multi-Framework Project Detection

🔍 Detected languages/frameworks: nextjs, react, nodejs, python, docker
✅ Created .gitignore for: nextjs, nodejs, python, docker, react

Generated .gitignore Example (Next.js + Python)

# === Common files ===
.DS_Store
.env
.env.local
*.log
*.tmp
.vscode/
.idea/

# === NODEJS ===
node_modules/
npm-debug.log*
.cache/
.npm

# === NEXTJS ===
.next/
next-env.d.ts
.vercel/
out/

# === PYTHON ===
__pycache__/
*.pyc
.venv/
venv/
build/
dist/
*.egg-info/
.pytest_cache/

Commit Types and Emojis

Type Emoji Keywords
feat add, create, implement, introduce
fix 🐛 fix, resolve, correct, repair
docs 📚 readme, documentation, comment, doc
style 💅 format, style, lint, prettier
refactor ♻️ refactor, restructure, reorganize
perf performance, optimize, speed
test 🧪 test, spec, unittest
chore 🔧 config, build, deps, dependency
security 🔒 security, auth, permission
update 🔄 update, upgrade, bump
remove 🗑️ remove, delete, clean
init 🎉 initial, first, setup

Development Setup

  1. Clone or Set Up the Repository:

    git clone <repository-url>
    cd PythonProject
    
  2. Create a Virtual Environment:

    python -m venv .venv
    .venv\Scripts\activate  # Windows
    source .venv/bin/activate  # Unix/Linux
    
  3. Install Dependencies:

    pip install -r requirements.txt
    
  4. Install the Package Locally:

    pip install -e .
    
  5. Run Tests: (Add tests in a future update, e.g., using pytest.)

Example Usage Scenarios

Web Development Project (Next.js + TypeScript)

cd my-nextjs-app
smart-git-agent --repo .
# 🔍 Detected: nextjs, react, nodejs, web
# ✅ Auto-ignores: .next/, node_modules/, *.local

Python Data Science Project

cd ml-project  
smart-git-agent --repo .
# 🔍 Detected: python
# ✅ Auto-ignores: __pycache__/, .venv/, *.pyc, .jupyter/

Full-Stack Project (Next.js + Python API)

cd fullstack-app
smart-git-agent --repo .
# 🔍 Detected: nextjs, python, nodejs, docker
# ✅ Comprehensive .gitignore for all detected technologies

Troubleshooting

  • ImportError: Ensure you're running the script as a module (python -m smart_git_agent) or the package is installed (pip install .).
  • Missing API Key: Set openrouter_api_key in git-agent-config.ini.
  • Invalid Repository: Verify the --repo path contains a .git directory.
  • API Errors: Check your OpenRouter API key and internet connection.
  • Files Still Being Committed: Check the debug logs to see pattern matching. Use ignored_patterns in config for additional custom patterns.
  • Clear Cache: Remove __pycache__ directories if issues persist:
    rmdir /s /q smart_git_agent\__pycache__
    

Contributing

  1. Fork the repository.
  2. Create a feature branch (git checkout -b feature/new-feature).
  3. Commit changes (smart-git-agent can automate this!).
  4. Submit a pull request.

License

MIT License (see LICENSE).

Contact

For issues or feature requests, open an issue on the project's GitHub repository.

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

smart_git_agent-0.1.0.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

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

smart_git_agent-0.1.0-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file smart_git_agent-0.1.0.tar.gz.

File metadata

  • Download URL: smart_git_agent-0.1.0.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.0

File hashes

Hashes for smart_git_agent-0.1.0.tar.gz
Algorithm Hash digest
SHA256 103702d2e5db74432a2559c3161f8018f6bfd48d8d1a5230654c9271d3cea589
MD5 640bfee99307400e80991ec08aac3d03
BLAKE2b-256 d522f80a3684f24c47fd4551e177f9cf3a16b94e662e9c5f299ba29d9433d030

See more details on using hashes here.

File details

Details for the file smart_git_agent-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for smart_git_agent-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 59e04b04e444f6f1e84823400fbce82db2c2e41ccd8eda1e0faf46332ef87294
MD5 7c5eb7712ccb73d8b7a42f1eef3cd75f
BLAKE2b-256 abaf03ac8a29400d4cf68c4285cd1c86d1d27c45ccbf6913f8c1135397d41ba7

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