https://github.com/maxgfr/git-recap
Monthly commit recap generator — AI-powered summaries, bullet points, and commit lists
https://github.com/maxgfr/git-recap
ai anthropic bash changelog cli commit-history developer-tools gemini git github homebrew mistral openai
Last synced: about 23 hours ago
JSON representation
Monthly commit recap generator — AI-powered summaries, bullet points, and commit lists
- Host: GitHub
- URL: https://github.com/maxgfr/git-recap
- Owner: maxgfr
- License: mit
- Created: 2026-03-13T12:17:36.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-01T12:02:07.000Z (3 months ago)
- Last Synced: 2026-04-01T14:07:20.135Z (3 months ago)
- Topics: ai, anthropic, bash, changelog, cli, commit-history, developer-tools, gemini, git, github, homebrew, mistral, openai
- Language: Shell
- Size: 149 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# git-recap
Commit recap generator — AI-powered summaries, bullet points, and commit lists.
Supports multiple AI providers: **Claude** (CLI & API), **OpenAI**, **Mistral**, **Gemini**.
## Installation
### Homebrew
```bash
brew install maxgfr/tap/git-recap
```
### Manual
```bash
curl -fsSL https://raw.githubusercontent.com/maxgfr/git-recap/main/script.sh -o /usr/local/bin/git-recap
chmod +x /usr/local/bin/git-recap
```
## Requirements
- `git`
- `gh` (GitHub CLI, authenticated)
- One of the AI providers (optional):
- `claude` CLI for Claude (default)
- `ANTHROPIC_API_KEY` env var for Claude API (without CLI)
- `OPENAI_API_KEY` env var for OpenAI/ChatGPT
- `MISTRAL_API_KEY` env var for Mistral
- `GEMINI_API_KEY` env var for Gemini
- `jq` (required for `-f json` and `curl` fallback)
## Usage
```
git-recap [OPTIONS]
Arguments:
GitHub URL, owner/repo, repo name, SSH URL, or local path (.)
Options:
-u, --user GitHub username (auto-detected via gh)
-p, --period Period (default: current-month). Values:
current-month, last-month, current-week, last-week,
current-year, last-year, all, , YYYY-MM, YYYY
-m, --mode Mode: summary, commits, bullets, all (default: all)
-f, --format Format: text, markdown, json (default: text)
-o, --output Write output to file
-b, --branch Branch (default: auto-detected)
--provider AI provider: claude, claude-api, openai, mistral, gemini (default: claude)
--model AI model override (see defaults below)
--lang Language for AI output: en, fr, es, de, ... (default: en)
--voice Narrative voice: I, we, neutral, or nominal (default: neutral)
neutral: noun-based English ("Implementation of...")
nominal: noun-based French ("Mise en place de...")
--team Team mode: all contributors, grouped by author
--all-branches Fetch commits from all branches
--no-ai Skip AI generation (summary/bullets)
--init Initialize configuration
-h, --help Show this help
-v, --version Show version
```
### Periods
| Period | Description |
|--------|-------------|
| `current-month` | Current month (default) |
| `last-month` | Previous month |
| `current-week` | Current week (Monday to Sunday) |
| `last-week` | Previous week |
| `current-year` | Current year |
| `last-year` | Previous year |
| `all` | All commits ever |
| `` | Last N months |
| `YYYY-MM` | Specific month (e.g., `2026-01`) |
| `YYYY` | Specific year (e.g., `2025`) |
### AI Providers & Default Models
| Provider | Flag | Default Model | Requires |
|----------|------|---------------|----------|
| Claude (CLI) | `--provider claude` | `haiku` | `claude` CLI |
| Claude (API) | `--provider claude-api` | `claude-haiku-4-5-20251001` | `ANTHROPIC_API_KEY` |
| OpenAI | `--provider openai` | `gpt-4o-mini` | `OPENAI_API_KEY` |
| Mistral | `--provider mistral` | `mistral-small-latest` | `MISTRAL_API_KEY` |
| Gemini | `--provider gemini` | `gemini-2.0-flash` | `GEMINI_API_KEY` |
Override the model with `--model`:
```bash
git-recap --provider claude --model sonnet maxgfr/subtool
git-recap --provider claude-api --model claude-sonnet-4-6 maxgfr/subtool
git-recap --provider openai --model gpt-4o maxgfr/subtool
git-recap --provider gemini --model gemini-1.5-pro maxgfr/subtool
```
### Language & Voice
Control the language and narrative voice of AI-generated content:
```bash
# Default: noun-based neutral style ("Implementation of...", "Optimization of...")
git-recap maxgfr/subtool
# First person singular
git-recap --voice I maxgfr/subtool
# Team voice ("we implemented...", "we fixed...")
git-recap --voice we maxgfr/subtool
# Noun-based French style ("Mise en place de...", "Optimisation de...")
git-recap --voice nominal maxgfr/subtool
# French language output
git-recap --lang fr maxgfr/subtool
```
### Team Mode
Generate a recap for all contributors, grouped by author:
```bash
# Team recap on default branch
git-recap --team maxgfr/subtool
# Team recap, all branches, markdown output
git-recap --team --all-branches -f markdown -o recap.md maxgfr/subtool
# Team recap on a specific branch
git-recap --team -b develop maxgfr/subtool
```
## Examples
```bash
# Current month recap
git-recap maxgfr/subtool
# Last month, markdown output
git-recap -p last-month -f markdown -o recap.md maxgfr/subtool
# Current week recap
git-recap -p current-week maxgfr/subtool
# All commits ever
git-recap -p all maxgfr/subtool
# Full year 2025
git-recap -p 2025 maxgfr/subtool
# Specific month, commits only
git-recap -p 2026-01 -m commits maxgfr/subtool
# Use Claude API (without CLI)
git-recap --provider claude-api maxgfr/subtool
# Use Mistral AI
git-recap --provider mistral maxgfr/subtool
# Use Gemini with a specific model
git-recap --provider gemini --model gemini-1.5-pro maxgfr/subtool
# JSON output
git-recap -f json -m commits maxgfr/subtool | jq .
# No AI, just raw data
git-recap --no-ai -m all maxgfr/subtool
# Team mode
git-recap --team maxgfr/subtool
# French recap
git-recap --lang fr maxgfr/subtool
# From various URL formats
git-recap https://github.com/maxgfr/subtool
git-recap git@github.com:maxgfr/subtool.git
# Local repo
git-recap .
# Also works as a git subcommand
git recap maxgfr/subtool
```
## Output Formats
### Text (default)
```
=== Monthly Recap - subtool - March 2026 ===
--- Stats ---
Total commits: 34
First commit: 2026-03-06
Last commit: 2026-03-13
Busiest day: 2026-03-08 (14 commits)
--- Summary ---
[AI-generated summary]
--- Changes ---
* [AI-generated bullet points]
--- Commits ---
7354b0c - fix: translate text-only (2026-03-13)
...
```
### Markdown
Stats table, AI summary, bullet list, and commit table with clickable hashes linking to GitHub.
### JSON
Structured output with `repo`, `period`, `stats`, `summary`, `bullets[]`, and `commits[]` fields.
## Configuration
Run `git-recap --init` to create `~/.git-recaprc`:
```bash
GIT_RECAP_USER="maxgfr"
GIT_RECAP_PROVIDER="claude"
GIT_RECAP_MODEL=""
GIT_RECAP_FORMAT="text"
GIT_RECAP_LANG="en"
GIT_RECAP_VOICE="neutral"
```
## License
MIT