Blog |

Shipping commitdog

commitdog is a clever little piece of software that makes me lazy… and I love being lazy. It reads your git diff, suggests smart conventional commit messages, and can push to GitHub — all from the terminal. Built in pure Go. Single binary. Zero bloat. Zero AI.

commitdog is a clever little piece of software

The problem that started it all

Recently I started shipping more stuff to the internet. Like any other dev, I use git and GitHub. But I was tired of writing commit messages every single time — especially when experimenting with features and having zero clue if they would work.

My old commit messages looked like this:

One day I pushed a bunch of changes, checked the live site, and it was totally fucked. I had 8-9 commits with the exact same message. I panicked, started randomly reverting, and made things worse. Luckily I had a clean local copy.

That day I decided: this laziness is going to cause real trouble one day. So I built commitdog.

What is commitdog?

It started as a prototype using my Go knowledge and Claude. Now it's a fully offline, heuristic-based tool. No AI in the shipped version — just smart rules that actually work fast.

How to use commitdog

Install from AUR, Homebrew, curl, or build from source. Run commitdog setup once (provide your GitHub email and PAT).

Then:

Full documentation is available with a nice desktop-like interface. Go check it out.

How it works under the hood

commitdog is a **single static ~3 MB binary** written in **pure Go** (stdlib only — zero external dependencies, zero AI, zero telemetry).

It shells out to the real `git` binary for diffs and operations. It parses the staged diff, runs a secret scan, uses simple heuristics to detect conventional commit type and scope, and generates 3–4 solid suggestions instantly.

Other cool parts:

Everything is deliberately clean and auditable. No magic. Just a sharp little git sidekick.

That’s pretty much the whole story

commitdog started as my own dumb fix for my own dumb habits. I just wanted to stay lazy and stop panicking every time I broke something in public.

If it saves you even one “oh shit” moment, then building this little tool was worth every second.

Thanks for reading this ridiculously long post. Respect if you made it this far.

K, bye. 🚀