poet-commit
Skill0 starsChanged 18 days agoMITView on GitHub
Compose git commit messages as Japanese short-form poems (haiku, senryū, tanka, renga). Use when the user asks for a poetic, lyrical, haiku, tanka, renga, or otherwise artistic commit message — or invokes /poet-commit, "commit as a haiku", "make this commit a poem". Auto-picks form by diff size unless overridden. Supports a --yolo mode for chaotic auto-commits.
- Reads credentials
- Commits and pushes
In this repository8 other files it gives its agents.
- llms.txtllms.txt
- bpmnemonicSkill
- break-timeSkill
- llms-txtSkill
- memoriaSkill
- repo-badgesSkill
- seo-geo-auditSkill
- vibeasfuncSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 4 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
Run when the skill loads (or, where Claude Code hands the commands over instead, run them first), so step 1 below starts from facts:
- Distinctive: line 38
Always disabled automatically when the diff looks security-sensitive (see Safety below).
- Very specific: line 64
Report tokens: Run bash "${CLAUDE_SKILL_DIR}/scripts/token_report.sh" ${CLAUDE_SESSION_ID} and print its one-line output.
- Very specific: line 70
Never: use git commit --no-verify, --amend, or git push.
- Very specific: line 71
Secret-sniff: If the staged diff touches .env*, *.pem, *key*, credentials*, *.secret, or contains lines matching …
- Distinctive: line 72
Empty index: If nothing is staged, do not commit.
- Very specific: line 73
Hooks: If a pre-commit hook fails, do not retry with --no-verify.
- Distinctive: line 80
No emojis, no markdown inside the poem block, no quotation marks around lines.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
poet-commit
Turn a git commit into a small piece of poetry. Inspired by the caveman plugin's invocation/stop pattern: clear triggers, clear arguments, clear off-switch.
Current state
Run when the skill loads (or, where Claude Code hands the commands over instead, run them first), so step 1 below starts from facts:
- Status: !
git status --short || true - Staged: !
git diff --staged --stat || true
Invocation
The only slash command is /poet-commit; Claude Code derives it from the directory name, so /poet does not exist. Modes are arguments to it.
| Trigger | Behavior |
/poet-commit | Default — auto-picks form by diff size, hybrid mode (conventional message + poem appended), preview before commit |
/poet-commit haiku · senryu · tanka · renga | Force a specific form |
/poet-commit pure | Poem-only commit message (no conventional prefix) |
/poet-commit free | Imaginative — ignore the diff content, write from the vibe |
/poet-commit grounded | Strictly derived from the diff (default) |
/poet-commit --no-commit | Print poem only, do not commit |
/poet-commit --yolo | Chaos mode: random form, random grounded/free, random pure/hybrid, commit immediately without preview |
| Natural language: "commit this as a haiku", "make the commit poetic", "tanka commit" | Same as /poet-commit <form> |
Arguments combine: /poet-commit tanka grounded, /poet-commit renga pure, etc.
Stop / disable
- "stop poet" · "normal commits" · "no more poems" → disable for the session, fall back to ordinary commit messages.
- Always disabled automatically when the diff looks security-sensitive (see Safety below).
Auto-form selection (when no form is specified)
Inspect git diff --staged --name-only (fallback to unstaged):
| Files changed | Form |
| 1 file | haiku (5-7-5) — or senryū if the change is a bug fix / human-flavored |
| 2–4 files | tanka (5-7-5-7-7) |
| 5+ files | renga — one 5-7-5 stanza per logical concern, then a closing 7-7 |
Override with an explicit form arg at any time.
Execution flow
- Read the diff. The status and staged stat are above; run
git diff --stagedfor the content. If nothing is staged, fall back togit diffand warn the user that nothing will be committed unless they stage first. If both are empty, refuse. - Summarize the change internally in one sentence. Identify a "kigo" — a single concrete technical motif (e.g. cache, retry, boundary, migration) that will anchor the poem if grounded.
- Pick the form from explicit arg, otherwise auto-select by file count (see table above).
- Pick the mode — grounded (default) or free if the user asked. In
--yolo, randomize. - Generate the poem following
forms.mdsyllable rules. Count syllables carefully; revise if off. No emojis. Plain ASCII or basic Unicode only. Do not invent technical claims that aren't in the diff when in grounded mode. - Assemble the message:
- hybrid (default): one conventional commit subject line (
type(scope): summary), blank line,---, blank line, the poem. - pure: just the poem. Subject line is the poem's first line; body is the rest.
- hybrid (default): one conventional commit subject line (
- Preview & confirm. Show the user the assembled message and ask for confirmation before committing. Skip this step only when
--yolois set. - Commit by running
bash "${CLAUDE_SKILL_DIR}/scripts/commit.sh"with the assembled message piped via heredoc (never--no-verify, never--amend). - Report tokens. Run
bash "${CLAUDE_SKILL_DIR}/scripts/token_report.sh" ${CLAUDE_SESSION_ID}and print its one-line output. If it fails, print(token usage unavailable)and continue.
Safety guardrails
- Confirm before committing in all modes except
--yolo. Even in--yolo, refuse silently-destructive things (force push, amend, no-verify) —--yolois chaotic about form, not about git safety. - Never stage files automatically. The user controls the index.
- Never use
git commit --no-verify,--amend, orgit push. Commits only. - Secret-sniff. If the staged diff touches
.env*,*.pem,*key*,credentials*,*.secret, or contains lines matching(?i)(api[_-]?key|secret|password|token)\s*[:=], abort poetry, warn the user, and fall back to a plain conventional commit message (still requiring confirmation). - Empty index. If nothing is staged, do not commit. Offer to print the poem only.
- Hooks. If a pre-commit hook fails, do not retry with
--no-verify. Report the failure to the user and stop.
Style rules for the poem itself
- Honor syllable counts strictly. Count out loud (silently) before emitting.
- One concrete image per stanza. Avoid abstractions like "code" or "system" unless they earn their place.
- A kireji (cutting word / turn) somewhere — a dash, a colon, a line break that pivots.
- No emojis, no markdown inside the poem block, no quotation marks around lines.
- English syllables, not strict Japanese moras. Read naturally.
- Grounded mode: the kigo must come from the diff. Free mode: anything goes, but stay tonally appropriate (don't write a love poem for a security patch).
Example output (hybrid haiku, grounded, retry-loop fix)
fix(api): clamp retry backoff to 30s ceiling
---
exponential dusk
the server, patient at last
counts to thirty, sleepsSee examples.md for more.
Files in this skill
SKILL.md— this fileforms.md— syllable rules and structural notes for each formexamples.md— curated good and bad poetic commitsscripts/commit.sh— runs the actualgit commitwith a heredoc messagescripts/token_report.sh— best-effort token usage report from the session JSONL
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

