Bless me Father, for I have force-pushed to main.
Analyzes your git history for sins — bad commit patterns — issues a humorous confession, and assigns penance. Run it from any git repo. Get judged.
# Run directly (no install needed)
npx commit-confessional
# Or clone and run
git clone https://github.com/NickCirv/commit-confessional
cd commit-confessional
node index.js# From inside any git repo:
node /path/to/index.js
# Or if installed globally:
confess Examining your conscience...
╔══════════════════════╗
║ ║
║ CONFESSIONAL BOOTH ║
║ ║
║ 🕯️ git confess 🕯️ ║
║ ║
╚══════════════════════╝
"Bless me Father, for I have sinned."
It has been unknown days since my last refactor.
Repo: my-startup-app
────────────────────────────────────────────────────────────
YOUR SINS:
💥 [MORTAL SIN] Force Pushes (×3, +15 pts)
You overwrote 3 piece(s) of history. Very Thanos of you.
→ abc1234 forced update on main
🔗 [VENIAL SIN] Fix Chains (fix fix fix...) (×4, +8 pts)
4 consecutive "fix" commits. Write it right the first time, brother.
→ fix login, fix login again, fix login for real, fix login pls
☀️ [MORTAL SIN] Sunday Deploys / Commits (×5, +25 pts)
5 commits on a Sunday. The Lord rested. You did not.
→ feat: "should be fine" hotfix
😶 [CARDINAL SIN] Single-Character / Dot Commits (×2, +20 pts)
commit -m "." — a masterwork of communication.
→ def5678 .
────────────────────────────────────────────────────────────
SIN SCORE: 68 points — IRREDEEMABLE
✝ YOUR PENANCE:
You are beyond penance. Burn the repo and start fresh.
God have mercy on your codebase.
┌─────────────────────────────────────────┐
│ CERTIFICATE OF CONFESSION │
│ │
│ Penitent: my-startup-app │
│ Sins: 4 │
│ Score: 68 pts │
│ Verdict: IRREDEEMABLE │
│ │
│ "Go, and commit more meaningfully." │
│ — Father git blame │
└─────────────────────────────────────────┘
| Sin | Severity | Description |
|---|---|---|
| Force Pushes | MORTAL | Searched via git reflog --all |
| Fix Chains | VENIAL | 3+ consecutive commits starting with "fix" |
| WIP Commits | VENIAL | Messages containing "wip", "temp", "asdf", "lol", etc. |
| Merge Main Into Main | MORTAL | git log --merges for self-merges |
| Sunday Deploys | MORTAL | Commits made on Sundays |
| 2am Commits | VENIAL | Commits between midnight and 4am |
| Identical Messages | VENIAL | Same commit message appearing twice in a row |
| Binary Files | MORTAL | .zip, .exe, .dmg, etc. committed to history |
| Dot Commits | CARDINAL | commit -m "." or single-character messages |
| Commented-Out Code | VENIAL | Dead code added in recent commits |
| Score | Verdict | Penance |
|---|---|---|
| 0–5 | ABSOLVED | Say 3 Hail Linuses and refactor one function today |
| 6–15 | SINNER | Write unit tests for the last 3 features you shipped without them |
| 16–30 | REPEAT OFFENDER | Squash last 10 commits, write a CHANGELOG, attend code review |
| 31+ | IRREDEEMABLE | Burn the repo and start fresh. God have mercy on your codebase. |
Because we've all done it. The 2am hotfix. The fix fix fix fix chain. The git push --force after a bad rebase. The Sunday deploy that took down prod. The commit -m "." at 3am when you just needed it deployed.
This is your confessional. Run it. Get judged. Do your penance. Be better.
- Zero external dependencies — pure Node.js ES modules
- Requires Node.js 18+
- Requires git in PATH
- Works on any git repo with at least one commit
- No data leaves your machine — all analysis is local
gitcommands
MIT License — go forth and sin no more.