Git-history-aware codebase context generator for LLMs
Project description
gitbrief
Generate LLM-ready context from any git repository — in seconds.
gitbrief . --budget 8000 | pbcopy # copy to clipboard, ready to paste into Claude/GPT
The problem
Every developer using LLMs (Claude, GPT, Gemini) manually copies code into chat windows. You paste some files, forget others, include outdated versions, blow the context window, and guess at what's relevant.
This is wasted engineering time.
The solution
gitbrief reads your git history to understand what's actually important right now, then packs the right files into a token-budget-aware document — perfect for pasting into any LLM.
$ gitbrief . --budget 8000 --stats
╭────────────────────────────╮
│ gitbrief allocation stats │
╰────────────────────────────╯
Token budget: 8,000 | Used: 7,999 (100%)
Files included: 6 | Skipped (budget): 194
Git commits analyzed: 100 | Branch: main
Top files by priority:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┓
┃ File ┃ Priority ┃ Tokens ┃ Changed? ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━┩
│ src/auth/middleware.py │ 0.95 │ 432 │ 🔥 │
│ src/auth/tokens.py │ 0.91 │ 318 │ 🔥 │
│ README.md │ 0.83 │ 1,240 │ 🔥 │
│ pyproject.toml │ 0.75 │ 168 │ — │
└───────────────────────────┴──────────┴────────┴──────────┘
Files marked 🔥 were modified in recent commits. The most relevant context surfaces automatically.
Why gitbrief beats alternatives
| Feature | gitbrief | repomix | llm-ctx | manual |
|---|---|---|---|---|
| Git-history-aware ranking | ✅ | ❌ | ❌ | ❌ |
| Token budget control | ✅ | ❌ | partial | ❌ |
| Recency decay scoring | ✅ | ❌ | ❌ | ❌ |
| Recent commits narrative | ✅ | ❌ | ❌ | ❌ |
| Single command | ✅ | ✅ | ✅ | ❌ |
Install
pip install gitbrief
Note: PyPI release coming soon. Until then, install from source:
pip install git+https://github.com/faw21/gitbrief.git
Requires Python 3.10+ and optionally a git repository.
Usage
# Basics
gitbrief . # current repo, 32k token budget
gitbrief /path/to/repo # any repo
# Token budget control
gitbrief . --budget 8000 # fits GPT-4 32k
gitbrief . --budget 128000 # Claude 3.5 / GPT-4o full context
# Output
gitbrief . -o context.md # write to file
gitbrief . | pbcopy # macOS: copy to clipboard
gitbrief . | xclip -selection clipboard # Linux
# Filter
gitbrief . --no-tests # skip test files (save tokens)
# Debug
gitbrief . --stats # print allocation table to stderr
gitbrief . --max-commits 200 # analyze more git history
How ranking works
gitbrief assigns each file a priority score (0–1):
- Recency (60%): exponential decay — files changed today = 1.0, untouched 6 months = ~0.25
- Frequency (40%): normalized commit frequency across history
- Recency bonus: +0.2 if the file appeared in the most recent 20% of commits
- Type bonuses: README (+0.1), config files (+0.15)
Files are sorted by priority and greedily selected within your token budget.
Development
git clone https://github.com/faw21/gitbrief
cd gitbrief
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ # 38 tests, 93% coverage
License
MIT
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
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 gitbrief-0.1.0.tar.gz.
File metadata
- Download URL: gitbrief-0.1.0.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c21b776b1584c409966df930bdb9f0584ec6457544b3d23ada3b03045ce94474
|
|
| MD5 |
a967f2bf4cd56c8f2550583a21f4e91d
|
|
| BLAKE2b-256 |
a5698d24b1d2bf6ff11d6d9ac97110d674d501501ffb83729f407d42c38b03bf
|
File details
Details for the file gitbrief-0.1.0-py3-none-any.whl.
File metadata
- Download URL: gitbrief-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8be220665466b87bf533ec3d2b69c1b23581d4b82ad042bd7ba9ab85ef3c4bbd
|
|
| MD5 |
cd2bd224863f6de0151a6e7ebec4c474
|
|
| BLAKE2b-256 |
21bcf6fe9cf6f6b26f4f83d9841320fe9ba75a2bb5d72e3ccce3becf0942f935
|