Skip to main content
GitAid logo

GitAid

AI-powered Git productivity tool from MayaAI

Commit smarter. Audit history. Understand your codebase - with full ticket context, from the CLI.

PyPI version Python uv License GitHub


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 blame groups lines by commit and explains the intent behind each section.
  • File history narrative: gitaid why explains 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 audit checks whether the actual change matches what the ticket asked for - not just whether the commit message looks clean
  • gitaid blame explains why a line was written in terms of the business or product reason, not just the code change
  • gitaid why tells the story of a file's evolution using the real intent behind each change, drawn from the tickets
  • gitaid history-tldr writes a changelog grounded in what was being built, not just what files were touched
  • gitaid commit --issue GA-31 generates 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.md and 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

Apache 2.0

Release files for gitaid 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gitaid 0.4.2
File Size Uploaded
gitaid-0.4.2.tar.gz 31.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gitaid 0.4.2
File Interpreter ABI Platform
gitaid-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 72.5 kB

Release files / gitaid-0.4.2.tar.gz

Download URL gitaid-0.4.2.tar.gz
Size 31.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9a1404ca34098894c3ee16022f4149764781cf9216ddf82273ba233fb4176bb8
BLAKE2b-256 checksum
How to use checksums
2371c81c50ec76c0249d387a0384be0eb879cc6704aa58e55e82a460ed5573de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.12

Release files / gitaid-0.4.2-py3-none-any.whl

Download URL gitaid-0.4.2-py3-none-any.whl
Size 40.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
65c803e235dab7d75c82728293898fbecff4835af0b2bb4792ffc09eb1a2e6e4
BLAKE2b-256 checksum
How to use checksums
1eec8a1e578d7403a60f4367cf24a6598e9c4c5df7c7769c69cee806da2a64d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.12

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page