Get some insight from your git history — plain-English summaries, hotspots, coupling, and more.
Project description
gitsumm
Say it out loud: "get some." Point it at a repo and get some insight from your git history, in plain English.
git log tells you what happened, one line at a time. gitsumm tells you the
story: how many commits, by whom, when activity peaked, whether momentum is up
or down, and which files only one person has touched (a bus-factor risk). It's
the digest you paste straight into a standup, changelog, or team update.
Install
pip install -e . # core tool (works fully offline)
pip install -e ".[ai]" # add the optional Anthropic-powered summary
Requires Python 3.8+. The only hard dependencies are typer and rich; the
anthropic SDK is an optional extra used only by --ai.
Usage
gitsumm # summarize the last 7 days
gitsumm --days 14 # custom window (alias: -d 14)
gitsumm --standup # commit subjects grouped by author
gitsumm --hotspots 5 # rank the top N churn hotspots (high-risk files)
gitsumm --coupling # files that tend to change together (hidden coupling)
gitsumm --verbose # extra detail, incl. the lowest-hygiene commits (-v)
gitsumm --ai # add a fluent paragraph via the Anthropic SDK
gitsumm --changelog # themed changelog (Features / Fixes / Refactors / Other)
gitsumm since v1.0.0 # summarize everything since a tag (or between two tags)
gitsumm since v1.0.0 --changelog # release notes for a range
gitsumm --version
gitsumm --help
Default summary
╭──────────────── gitsumm · myrepo · get some ───────────────╮
│ Got some — 24 commits from 3 contributors in the last 7 days │
│ Most active: Alice (14 commits) │
│ Busiest day: Tuesday (9 commits) │
│ Files touched: 18 │
│ Commit hygiene: 86/100 │
│ Hottest file: payments.py — 23 changes, 5 authors. Handle with care. │
│ Momentum: ↑ up 6 vs previous 7 days (18 → 24) │
│ Heads up — 30% of commits land outside working hours... │
│ │
│ Bus-factor risk — 3 files touched by a single author: │
│ • auth.py — only Alice │
│ • billing.py — only Bob │
│ • reports.py — only Alice │
╰──────────────────────────────────────────────────────────────╯
The momentum, bus-factor, and hottest-file lines are the point of
the tool — insights a raw log won't give you. Momentum compares this window
against the equal-length window immediately before it. Bus-factor flags files
only one author has touched in the window, busiest first, so knowledge silos
surface. The inline "Hottest file" line names the single highest-risk file (only
when there's real churn). A "Heads up" line flags work-hours patterns —
appearing only when a meaningful share of commits land outside working hours
(before 8am / after 8pm) or on weekends, so it reads as a team-health signal
rather than noise. A commit hygiene score (0–100) rates workflow health — it
penalizes one-word or vague messages and oversized commits; --verbose lists
the worst offenders.
Churn hotspots — where the heat is
High-churn, multi-author files are where defects concentrate. --hotspots N
ranks them in a dedicated panel, scored as changes × distinct authors:
╭──── hotspots · myrepo · where the heat is ────╮
│ • payments.py — 23 changes · 5 authors · score 115 │
│ • auth.py — 12 changes · 3 authors · score 36 │
│ • api.py — 9 changes · 2 authors · score 18 │
╰────────────────────────────────────────────────╯
Co-change coupling — the usual suspects
Files that almost always commit together are coupled whether the code says so or
not — surfacing undocumented dependencies. --coupling reports pairs that
co-occur often enough (and with a high enough ratio) to matter; bulk commits
touching many files are ignored so they don't manufacture false coupling.
╭──── usual suspects · myrepo · files that travel together ────╮
│ • auth.py ↔ session.py — change together 90% of the time (9×) │
│ • api.py ↔ schema.py — change together 80% of the time (8×) │
╰────────────────────────────────────────────────────────────────╯
Standup mode
╭─ gitsumm · myrepo · get some standup (in the last 7 days) ─╮
│ Alice (3 commits) │
│ • Add weekly report export │
│ • Hash passwords with bcrypt │
│ • Add login endpoint │
│ │
│ Bob (1 commit) │
│ • Fix invoice rounding │
╰───────────────────────────────────────────────────────────╯
AI mode
With the [ai] extra installed and ANTHROPIC_API_KEY set, --ai adds a
fluent paragraph above the stats panel:
╭───────────────── gitsumm · myrepo · the gist ─────────────────╮
│ Over the past week myrepo saw steady progress: 24 commits │
│ from three contributors, with Alice driving most of the auth │
│ work and Tuesday the busiest day. Momentum is up on the prior │
│ week. Heads up — auth.py and reports.py have only been │
│ touched by Alice, a bus-factor risk worth spreading around. │
╰───────────────────────────────────────────────────────────────╯
--ai never breaks the tool: if the anthropic SDK isn't installed, the API
key is missing, or the request fails, gitsumm falls back to a deterministic
templated paragraph and prints a short hint explaining why. Set
GITSUMM_AI_MODEL to use a model other than the default.
Themed changelog & tag ranges
--changelog groups commits into Features / Fixes / Refactors / Other —
fluent release notes when AI is available, a deterministic keyword grouping
when it isn't (same crash-proof fallback as --ai). Pair it with the since
command to summarize a release instead of a day window:
gitsumm since v1.0.0 --changelog # everything since a tag
gitsumm since v1.0.0 v1.1.0 --changelog # between two tags
╭─ gitsumm · myrepo · changelog (since v1.0.0) ─╮
│ Features │
│ • Add user login endpoint │
│ • Add billing webhook │
│ Fixes │
│ • Fix invoice rounding │
│ Refactors │
│ • Refactor reports module │
╰──────────────────────────────────────────────╯
Every flag above (--standup, --hotspots, --coupling, --ai, --verbose)
also works with since.
Behavior & guarantees
- Works fully offline. AI is an enhancement, never a requirement.
- Fails friendly. Not a git repo, no commits in the window, or git not installed each produce a clear one-line message and a clean exit — never a stack trace.
- Reads
ANTHROPIC_API_KEYfrom the environment; missing key during--aifalls back gracefully.
Project layout
gitsumm/
├── main.py # CLI wiring + output formatting (typer + rich)
├── git_utils.py # all git/subprocess logic and analysis; returns clean objects
└── ai.py # optional Anthropic summary, fully isolated and crash-proof
Project details
Release history Release notifications | RSS feed
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 gitsumm-1.0.0.tar.gz.
File metadata
- Download URL: gitsumm-1.0.0.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9073587fb0baa132f007c0d1457909929c57d56710de4c097bf1163bc8ea0ac1
|
|
| MD5 |
5c9d068b89861d5bf8052dcfcbca3a45
|
|
| BLAKE2b-256 |
a3f122d61ee8b07a68986ee63366120c56307c591afce43a5f888593a81993ed
|
File details
Details for the file gitsumm-1.0.0-py3-none-any.whl.
File metadata
- Download URL: gitsumm-1.0.0-py3-none-any.whl
- Upload date:
- Size: 19.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
176a7997bb3d6a2cea97278a7904573145ed8e72605998d39ab15bba1060d18b
|
|
| MD5 |
bb90eb29047f5490feb0c0972bb74f04
|
|
| BLAKE2b-256 |
bc595912bf9484015178bd332c4d1fd0b0df777f59645dcefc3cf652223d7788
|