# Git AI Documentation Generator A privacy-focused CLI tool that analyzes git diffs and generates intelligent commit messages, changelogs, and API documentation using local AI models via Ollama. ## Features - **Commit Message Generation**: Generate conventional commit messages from staged or all changes - **Changelog Generation**: Auto-generate changelogs from git commit history between tags/commits - **API Documentation**: Generate OpenAPI-style documentation from code changes - **Privacy-Focused**: All processing happens locally using Ollama - no data sent to external APIs - **Multi-Language Support**: Supports Python, JavaScript, TypeScript, Go, Rust, and Java - **Framework Detection**: Automatically detects FastAPI, Flask, Express, and Django patterns ## Installation ```bash # Install from source pip install -e . # Or install with dev dependencies pip install -e ".[dev]" ``` ## Prerequisites - Python 3.9+ - [Ollama](https://ollama.ai/) installed and running locally - A model pulled (e.g., `ollama pull llama3.2`) ## Usage ### Generate Commit Messages Generate a commit message from staged changes: ```bash git add . git-ai-doc commit ``` Generate from all changes (including unstaged): ```bash git-ai-doc commit --all ``` With language context for better results: ```bash git-ai-doc commit --language python ``` ### Generate Changelogs Generate a changelog from commits since a tag: ```bash git-ai-doc changelog --from v1.0.0 ``` Generate between two versions: ```bash git-ai-doc changelog --from v1.0.0 --to v2.0.0 ``` ### Generate API Documentation Generate API documentation from changes: ```bash git-ai-doc api-docs --all ``` With framework hint: ```bash git-ai-doc api-docs --all --framework fastapi ``` ## Commands ### commit Generate a commit message from git changes. Options: - `--staged/--all`: Use staged changes (default) or all changes - `--language, -l`: Programming language context - `--model, -m`: Ollama model to use ### changelog Generate a changelog from git commit history. Options: - `--from, -f`: Starting reference (tag, commit, branch) - `--to, -t`: Ending reference (default: HEAD) - `--limit, -l`: Maximum commits to process (default: 100) - `--format`: Output format (markdown, json) ### api-docs Generate API documentation from code changes. Options: - `--staged/--all`: Use staged changes or all changes - `--ref`: Git reference to compare against - `--framework`: Force framework detection ## Configuration ### Environment Variables | Variable | Description | Default | |----------|-------------|---------| | `OLLAMA_HOST` | Ollama server URL | `http://localhost:11434` | | `OLLAMA_MODEL` | Default model | `llama3.2` | | `DEBUG` | Enable verbose logging | `false` | ### Configuration File Create a `.ai-doc-gen.yaml` in your project root: ```yaml ollama_host: http://localhost:11434 model: llama3.2 debug: false ``` Or in your home directory: - `~/.ai-doc-gen.yaml` - `~/.git-ai-doc.yaml` ### CLI Options Override config at runtime: ```bash git-ai-doc commit --model codellama --ollama-host http://custom:11434 ``` ## Supported Languages - Python (`.py`) - JavaScript (`.js`) - TypeScript (`.ts`) - Go (`.go`) - Rust (`.rs`) - Java (`.java`) - C/C++ (`.c`, `.cpp`, `.h`) ## Development ```bash # Install development dependencies pip install -e ".[dev]" # Run tests pytest tests/ -v # Run with coverage pytest tests/ --cov=src --cov-report=term-missing # Lint code ruff check src/ tests/ ``` ## Architecture ``` src/ ├── cli.py # Main CLI entry point ├── config.py # Configuration management ├── git_utils.py # Git operations using GitPython ├── ollama_client.py # Ollama LLM integration ├── output.py # Rich console output formatting └── commands/ ├── commit.py # Commit message generation ├── changelog.py # Changelog generation └── api_docs.py # API documentation generation ``` ## License MIT