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.3.tar.gz (22.2 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.3-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: smart_git_agent-0.1.3.tar.gz
  • Upload date:
  • Size: 22.2 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.3.tar.gz
Algorithm Hash digest
SHA256 59b155fb0b2d22ed0d82c3df534d7e5d91f8f846ecf27b5d44aca32719c8d05d
MD5 9f979cedae1e7a05f26eee1c762aa1bd
BLAKE2b-256 149235c0f6cec94d7cd5fd9ea25657f3a1ff6fd0ed4d134ac3a2c45ae4e98911

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for smart_git_agent-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cc8b26d5c224d7395a034fa4dff6acd782e31a7fdb80691fe8bd35349016c995
MD5 425c61a2f9bd74e717c131c9ec6046a1
BLAKE2b-256 54985ee8a58ebe06830c8ed08e7090fbb2010547c0426b771d1af3707585e7ae

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