// the find
asottile/git-code-debt
A dashboard for monitoring code debt in a git repository.
git-code-debt tracks how metrics like TODO count, import count, and curse words change over time in a git repo, then serves a small Flask dashboard with time-series graphs. It's a niche but genuinely useful tool for teams that want to catch slow-burn code rot — the kind that doesn't show up in any single PR review.
The extensible metric system is clean: subclass SimpleLineCounterBase, implement two methods, register your package — done. The incremental generation model (pick up from last commit) means you can schedule it cheaply. asottile maintains this well; CI is green, pre-commit is wired in, and the last push was this month despite the modest star count. SQLite as the backing store is the right call for a local dev tool — no infrastructure overhead.
The built-in metrics are pretty thin — TODO count, curse words, submodule count, lines in __init__.py. You'll need to write your own for anything that actually matters to your codebase, which means the real work is on you. The dashboard UI is frozen in 2014-era jQuery Flot; it works but you're not getting any modern interactivity. There's no multi-repo support — one config, one database, one repo. And the documentation for writing custom metrics stops at toy examples, so you're reading source to figure out how DiffParserBase actually delivers commits.