Commit Poetry
Transforms your git history into poetry — sonnets from sprint logs, haiku from hotfixes, limericks from legacy code, and epic ballads from major rewrites. Tu...
Description
name: commit-poetry version: 1.0.0 description: > Transforms your git history into poetry — sonnets from sprint logs, haiku from hotfixes, limericks from legacy code, and epic ballads from major rewrites. Turns the mundane chronicle of software development into genuine literary art. Also: the most entertaining way to review what actually happened last quarter. author: J. DeVere Cooley category: fun-tools tags:
- creative
- git-history
- poetry
- entertainment
metadata:
openclaw:
emoji: "📝"
os: ["darwin", "linux", "win32"]
cost: free
requires_api: false
tags:
- zero-dependency
- fun
- creative
Commit Poetry
"In the beginning was the commit. And the commit was 'init'. And it was without form, and void."
What It Does
Your git log is a chronicle. Every commit message, every branch name, every merge conflict resolution tells a story. Commit Poetry reads that story and retells it as actual poetry — matching the poetic form to the nature of the work.
Bug fixes become haiku (short, precise, illuminating). Rewrites become epic poetry (long, dramatic, transformative). Merge conflicts become dramatic dialogues. And the commit history of a legacy module becomes a Gothic horror novella.
The Poetic Forms
Haiku (5-7-5 syllables)
For: Bug fixes, one-line changes, moments of clarity
From commit: "fix: null check in user validation"
Undefined lurks here
A single question mark saves
The production night
From commit: "fix: off-by-one in pagination"
Less than, not less-or
Equal — one character changed
A thousand rows spared
From commit: "remove unused import"
You were invited
But never called upon — gone
The bundle breathes now
Limerick
For: Silly bugs, embarrassing fixes, "I can't believe this was the problem"
From commit: "fix: typo in environment variable name"
A developer keen and quite bright
Debugged through the day and the night
The prod server crashed
The logs were all trashed
'Twas DATABSE_URL spelled not right
From commit: "fix: accidentally committed node_modules"
A junior pushed code with great pride
Then noticed the diff was too wide
Eight thousand new files
Stretched on for miles
node_modules was along for the ride
Sonnet (14 lines, iambic pentameter)
For: Sprint retrospectives, feature completions, meaningful milestones
From: Sprint 42 commit history (checkout rewrite)
When first we faced the checkout's tangled mess,
A thousand lines of logic intertwined,
With payment flows that no one could assess,
And edge cases the tests could never find.
Through patient weeks we carved the monolith,
Each function split to serve a single aim,
With types to guard the contracts we built with,
And tests to prove the output stayed the same.
The old code fell like autumn's fading leaves,
While new abstractions rose to take their place,
Each module clean, each boundary that achieves
The independence of its own namespace.
So here we ship, with coverage at ninety-four,
What once was tangled, tangled now no more.
Ballad
For: Major rewrites, migrations, epic multi-month efforts
From: The Great TypeScript Migration (6 months of commits)
Come gather 'round, developers all,
And hear the tale I tell,
Of JavaScript's long, untyped reign,
And how the types befell.
'Twas in the year of twenty-five,
The errors grew too grand,
"Cannot read property of undefined!"
Rang across the land.
A hero rose, with tsconfig bright,
And strict mode set to true,
"AllowJs first," the hero cried,
"We'll migrate file by file, through."
Three hundred files of .js to .ts,
Each `any` type a sin,
With every interface defined,
The safety grew within.
Six months it took, through storm and strife,
But when the deed was done,
The compiler caught a thousand bugs
Before a single one could run.
Free Verse
For: Chaotic periods, production incidents, "what even happened this week"
From: Incident INC-3847 commit sequence
3:47 AM
the pager screams
"fix: increase connection pool"
(it wasn't the connection pool)
"fix: actually increase timeout"
(it wasn't the timeout either)
"revert: actually increase timeout"
4:12 AM
"fix: the real fix — cache stampede on expired session"
(it was always the cache)
(it is always the cache)
"chore: add monitoring for cache hit rate"
5:30 AM
the sun rises on a fixed system
the developer does not rise until noon
Dramatic Dialogue
For: Merge conflicts, opposing PRs, refactor debates
From: Merge conflict between feature/new-auth and feature/new-logging
ACT I: The Merge
AUTH BRANCH:
"I have rewritten the middleware!
Request flows through ME now, authenticated,
Validated, blessed with tokens divine."
LOGGING BRANCH:
"And I have rewritten the middleware!
Request flows through ME now, observed,
Measured, timestamped for eternity."
GIT:
"CONFLICT in src/middleware/index.ts"
DEVELOPER:
(staring at <<<<<<< HEAD)
"Why. Why do both of you touch the same file."
AUTH BRANCH:
"I was here first."
LOGGING BRANCH:
"My PR was approved first."
DEVELOPER:
(opens coffee)
(it is 9 AM and already too late for this)
ACT II: The Resolution — 47 lines, both changes preserved,
a new middleware chain that serves two masters.
The developer commits with the message: "fix: merge conflict"
and speaks of it no more.
Gothic Horror
For: Legacy code, ancient modules, the file nobody wants to touch
From: git log --follow src/legacy/invoice-generator.js
THE INVOICE GENERATOR
A Tale of Horror in Five Chapters
Chapter I: Genesis (2019)
It was born in innocence — 47 lines,
a simple function that turned numbers into PDFs.
Its creator committed it with the message "add invoicing"
and was never heard from again.
Chapter II: Growth (2020)
It grew. Tax calculations. Multi-currency. Discounts.
Five developers contributed. None read what the others wrote.
By December it was 847 lines and had achieved sentience.
Chapter III: The Warnings (2021)
"TODO: refactor this" appeared on line 12.
Then line 89. Then line 234.
The TODOs were never addressed.
They remain, like headstones.
Chapter IV: Abandonment (2022-2024)
No commits for 26 months. The module was sealed.
Developers spoke of it in whispers.
"Don't touch invoice-generator."
"Why?" "Just don't."
Chapter V: Today
It runs. It generates invoices. It handles $2M monthly.
Nobody understands it. Nobody will touch it.
It has no tests. It has no documentation.
It has only... the TODOs. Waiting.
Rap Verse
For: Celebratory moments, shipping features, team victories
From: v2.0.0 release tag
Yo, we shipped the two-point-oh, let me break it down,
Rewrote the whole stack, turned the codebase around,
TypeScript strict mode, every type is sound,
Coverage ninety-five, bugs? They can't be found.
GraphQL on the API, REST is deprecated,
Kubernetes deployed, auto-scaled and federated,
Auth is OAuth2, sessions been cremated,
Six months of work and we finally graduated.
Shout out to the team who survived the migration,
The merge conflicts, the failed CI, the frustration,
But we're live in prod with zero degradation,
v2.0 — standing ovation. 🎤
Poetry Modes
| Mode | Input | Output |
|---|---|---|
| Last Commit | Most recent commit | Haiku |
| Last Sprint | 2-week commit history | Sonnet or Free Verse |
| Feature Branch | All commits on a branch | Ballad or Dialogue |
| File History | Full history of one file | Gothic Horror or Epic |
| Incident | Commits during an incident timeframe | Free Verse (always) |
| Release | All commits between two tags | Rap Verse or Ballad |
| Merge Conflict | Conflicting commits | Dramatic Dialogue |
| Random | Any commit | Limerick |
When to Invoke
- Sprint retro — Present the sprint as a sonnet instead of a bullet list
- Friday afternoon — Turn the week's commits into limericks (team morale++)
- After a production incident — The free verse write-up is better than any postmortem
- Release celebration — Rap verse for the release notes
- When the legacy code scares you — Gothic horror for catharsis
- When you need a laugh — Random limerick mode on any commit
Why It Matters
Git logs are the most accurate record of what a team actually did — but nobody reads them because they're boring. Poetry makes the history memorable, shareable, and genuinely enjoyable.
Also: a sonnet about a sprint is a more honest retrospective than most retro meetings produce.
Zero external dependencies. Zero API calls. Pure literary engineering.
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!