AI-powered aid for Git
Project description
GitAid
AI-powered Git productivity tool from MayaAI
Commit smarter. Audit history. Understand your codebase - with full ticket context, from the CLI.
A note on this project
GitAid was built at a time when AI-assisted Git workflows weren't yet a standard part of developer tooling - before Cursor, GitHub Copilot, and similar tools had made this kind of thing ubiquitous. The goal was simple: stop context-switching just to write a commit message.
Since then, the landscape has shifted fast. AI coding assistants now handle most of what GitAid was built to solve, often more seamlessly and without a separate install. Rather than compete with that, I'm archiving this project as a snapshot of a genuinely useful idea at the right moment.
That said - one thing IDE tools still don't do: pull your Jira ticket context into Git commands automatically. GitAid does. When you audit a commit, explain a blame section, or summarise history, it fetches the actual ticket summary, description, and comments and uses them to give you answers grounded in why the work was done, not just what the code looks like.
If you're looking for something lightweight and terminal-native that bridges your issue tracker and your Git history, GitAid is here.
Features
- AI-generated commit messages: Instantly create clear, context-aware commit messages for your staged changes.
- Smart commit splitting: Automatically group staged changes into logical commits, each with its own AI-generated message.
- Commit auditing: Audit any commit for message quality, diff hygiene, and alignment with its Jira ticket.
- History changelog: Summarize the last N commits as a grouped, human-readable changelog.
- Empathetic blame:
gitaid blamegroups lines by commit and explains the intent behind each section. - File history narrative:
gitaid whyexplains how a file evolved across its entire commit history. - Code change explanations: Get professional, readable summaries of your staged Git diff.
- Jira context across all commands: Automatically detects issue keys in commit messages and fetches ticket details - so every command understands not just what changed, but why.
- Commit message rules: Define your own format and style rules per repo using
.gitaid-rules.md. - Multi-provider support: Works with OpenAI, Azure OpenAI, and any OpenAI-compatible API (e.g. vLLM).
- Tab-completion support: Shell autocompletion for Bash, Zsh, and Git Bash via Click.
Requirements
- Python 3.9+
- An API key for an OpenAI-compatible LLM provider
Installation
pip install gitaid
Or with uv:
uv add gitaid
Setup
Run the interactive setup wizard to configure your LLM provider:
gitaid setup
This will prompt you to choose a provider (OpenAI, Azure OpenAI, or a custom vLLM-compatible URL), validate your credentials, and store your API key securely in the OS keyring. Provider and model settings are saved to ~/.gitaid.yml.
Note: GitAid currently supports only OpenAI-compatible APIs.
To set up a Jira or GitHub Issues integration, run:
gitaid issues
Usage
git add <files>
gitaid commit
For a full list of commands and options:
gitaid --help
gitaid <command> --help
Staged changes
| Command | What it does |
|---|---|
gitaid commit |
Generate a commit message for your staged changes |
gitaid commit --split |
Split staged changes into logical groups and generate a commit message for each |
gitaid explain |
Explain your staged changes in plain English |
History and investigation
| Command | What it does |
|---|---|
gitaid audit |
Audit HEAD for quality, hygiene, and Jira alignment |
gitaid audit <commit> |
Audit a specific commit |
gitaid history-tldr |
Summarize the last 10 commits as a grouped changelog |
gitaid history-tldr --last 20 |
Same, for the last N commits |
gitaid blame <file> |
Empathetic git blame - explains the intent behind each section |
gitaid why <file> |
Narrative of how a file evolved across its entire history |
Setup
| Command | What it does |
|---|---|
gitaid setup |
Configure your LLM provider (OpenAI, Azure, vLLM) |
gitaid issues |
Configure Jira or GitHub Issues integration |
Jira Integration
Most AI tools know your code. GitAid also knows your tickets.
When commit messages contain Jira issue keys (e.g. GA-31), GitAid automatically fetches the ticket's summary, description, and comments and injects them as context into the LLM prompt. This means:
gitaid auditchecks whether the actual change matches what the ticket asked for - not just whether the commit message looks cleangitaid blameexplains why a line was written in terms of the business or product reason, not just the code changegitaid whytells the story of a file's evolution using the real intent behind each change, drawn from the ticketsgitaid history-tldrwrites a changelog grounded in what was being built, not just what files were touchedgitaid commit --issue GA-31generates a commit message that reflects the ticket's intent
Setup takes one command:
gitaid issues
Once configured, every command that reads commit history picks up Jira context automatically - no flags needed. Just make sure your commit messages include the issue key.
Commit Message Rules
You can define project-specific commit message rules by creating a .gitaid-rules.md file in the root of your repository:
- Prefix with the Jira issue key when provided: `GA-31: message`
- Keep the subject line under 72 characters
- Use imperative mood: "Add feature" not "Added feature"
- No period at the end of the subject line
GitAid will inject these rules into every LLM prompt - both when generating and when reviewing commit messages - so the AI enforces your team's conventions automatically. Commit the file to share the rules across your team.
Configuration
GitAid stores provider and model settings in ~/.gitaid.yml. This file is written automatically by gitaid setup. You can also edit it manually:
llm:
provider: openai
model: gpt-4o
For Azure OpenAI:
llm:
provider: azure
model: gpt-4o
base_url: https://your-resource.openai.azure.com
api_version: "2024-02-01"
For a custom vLLM-compatible server:
llm:
provider: vllm
model: Qwen/Qwen2.5-1.5B-Instruct
base_url: http://localhost:8000/v1
API keys are never stored in this file - they are kept in the OS keyring.
Tab Completion
Zsh (Linux or Mac):
autoload -Uz compinit
compinit
eval "$(_GITAID_COMPLETE=zsh_source gitaid)"
Add to ~/.zshrc to persist.
Bash (Linux, Bash 4.4+):
eval "$(_GITAID_COMPLETE=bash_source gitaid)"
Add to ~/.bashrc to persist.
Git Bash (Windows):
eval "$(_GITAID_COMPLETE=bash_source gitaid)"
Add to ~/.bash_profile to persist.
Why GitAid?
- Save time: Let AI handle commit hygiene so you can focus on the code.
- Improve quality: Consistent, clear commit messages across your whole team.
- Stay in context: Pull Jira or GitHub issue details directly into your commit - no tab switching.
- Enforce standards: Define your team's rules once in
.gitaid-rules.mdand let the AI enforce them.
Roadmap
- Automatic test detection and coverage suggestions
- Support for monorepo and multi-repo workflows
- Advanced pre-commit hook integration
- GitHub Issues context fetch (currently Jira only)
License
Project details
Release history Release notifications | RSS feed
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 gitaid-0.4.2.tar.gz.
File metadata
- Download URL: gitaid-0.4.2.tar.gz
- Upload date:
- Size: 31.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a1404ca34098894c3ee16022f4149764781cf9216ddf82273ba233fb4176bb8
|
|
| MD5 |
c9bc481c3136b342261a29c56784bdca
|
|
| BLAKE2b-256 |
2371c81c50ec76c0249d387a0384be0eb879cc6704aa58e55e82a460ed5573de
|
File details
Details for the file gitaid-0.4.2-py3-none-any.whl.
File metadata
- Download URL: gitaid-0.4.2-py3-none-any.whl
- Upload date:
- Size: 40.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65c803e235dab7d75c82728293898fbecff4835af0b2bb4792ffc09eb1a2e6e4
|
|
| MD5 |
3bdd32d509b98e69f7317273b16b8f8c
|
|
| BLAKE2b-256 |
1eec8a1e578d7403a60f4367cf24a6598e9c4c5df7c7769c69cee806da2a64d2
|