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
.gitignoregeneration. - 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
pipand 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,.pyfiles - 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:
nextin dependencies,next.config.js - Ignores:
.next/,next-env.d.ts,.vercel/,out/
- Detection:
-
React ⚛️
- Detection:
reactin dependencies - Ignores:
build/,.expo/,.expo-shared/
- Detection:
-
Vue.js 💚
- Detection:
vuein dependencies,vue.config.js - Ignores:
dist/,.nuxt/
- Detection:
-
Nuxt.js 🟢
- Detection:
nuxtin dependencies,nuxt.config.js - Ignores:
.nuxt/,.output/,dist/
- Detection:
-
Vite ⚡
- Detection:
vitein dependencies,vite.config.js - Ignores:
dist/,dist-ssr/,*.local
- Detection:
-
Angular 🅰️
- Detection:
@angular/corein dependencies,angular.json - Ignores:
dist/,.angular/,bazel-out/
- Detection:
-
Svelte 🧡
- Detection:
sveltein dependencies,svelte.config.js - Ignores:
.svelte-kit/,package/
- Detection:
🦀 Rust
- Detection:
Cargo.toml - Ignores:
target/,Cargo.lock,*.rs.bk
🐹 Go
- Detection:
go.mod,.gofiles - 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,.phpfiles - Ignores:
vendor/,composer.lock
💎 Ruby
- Detection:
Gemfile,.rbfiles - 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,.tsfiles - Ignores:
*.map,dist/,build/
🔧 Additional Electron Support
- Detection:
electronin dependencies - Ignores: Platform-specific build directories
Requirements
- Python 3.8+
- Git installed and configured
- OpenRouter API key (obtainable from OpenRouter)
Installation
-
Install the Package: Install
smart-git-agentusing pip:pip install .
Or, if installing from a source distribution:
pip install smart-git-agent
-
Create Configuration File: Generate a default configuration file:
smart-git-agent --setup -
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 (trueorfalse).dry_run: Simulate commits (trueorfalse).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
-
Clone or Set Up the Repository:
git clone <repository-url> cd PythonProject
-
Create a Virtual Environment:
python -m venv .venv .venv\Scripts\activate # Windows source .venv/bin/activate # Unix/Linux
-
Install Dependencies:
pip install -r requirements.txt
-
Install the Package Locally:
pip install -e .
-
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_keyingit-agent-config.ini. - Invalid Repository: Verify the
--repopath contains a.gitdirectory. - API Errors: Check your OpenRouter API key and internet connection.
- Files Still Being Committed: Check the debug logs to see pattern matching. Use
ignored_patternsin config for additional custom patterns. - Clear Cache: Remove
__pycache__directories if issues persist:rmdir /s /q smart_git_agent\__pycache__
Contributing
- Fork the repository.
- Create a feature branch (
git checkout -b feature/new-feature). - Commit changes (
smart-git-agentcan automate this!). - 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smart_git_agent-0.1.1.tar.gz.
File metadata
- Download URL: smart_git_agent-0.1.1.tar.gz
- Upload date:
- Size: 21.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1bac932f9ab9305ad880bd83fa484ab649cebbf62af1b8079f49262857657203
|
|
| MD5 |
9e3282c0c397a55d4bc6c0dcf37c2a52
|
|
| BLAKE2b-256 |
0d66fc1c41c31e5e0630da4664ba44d44b5b059a7677ac397a90b1960c91050d
|
File details
Details for the file smart_git_agent-0.1.1-py3-none-any.whl.
File metadata
- Download URL: smart_git_agent-0.1.1-py3-none-any.whl
- Upload date:
- Size: 19.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1a0515de9f6b2763bea960d1c29b2c195b6afbebd88f26f3fb243a528f0b2cd
|
|
| MD5 |
8b239d5ea44fd7dc4e5291fb539ad627
|
|
| BLAKE2b-256 |
1f23fd562163fbeee695354f5e7b4342c7d106a232103e8e919a24be38ff2333
|