Skip to main content

AI-powered aid for Git

Project description

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

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

gitaid-0.4.2.tar.gz (31.8 kB view details)

Uploaded Source

Built Distribution

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

gitaid-0.4.2-py3-none-any.whl (40.7 kB view details)

Uploaded Python 3

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

Hashes for gitaid-0.4.2.tar.gz
Algorithm Hash digest
SHA256 9a1404ca34098894c3ee16022f4149764781cf9216ddf82273ba233fb4176bb8
MD5 c9bc481c3136b342261a29c56784bdca
BLAKE2b-256 2371c81c50ec76c0249d387a0384be0eb879cc6704aa58e55e82a460ed5573de

See more details on using hashes here.

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

Hashes for gitaid-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 65c803e235dab7d75c82728293898fbecff4835af0b2bb4792ffc09eb1a2e6e4
MD5 3bdd32d509b98e69f7317273b16b8f8c
BLAKE2b-256 1eec8a1e578d7403a60f4367cf24a6598e9c4c5df7c7769c69cee806da2a64d2

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