re0-git — Claude Code skill: rewrite commit messages
Rewrites a finished commit message to match the local Git log style. Run it after committing when the log should explain the change without opening a diff.
npx skills add LilMGenius/paperthin --skill re0-git -a claude-codeWhat re0-git does
re0-git reads git show --stat, git diff, documented repository rules, and nearby messages before rewriting a finished commit. It keeps durable handoff facts, removes diff-proven trivia, and leaves the tree unchanged. For HEAD, it uses a GPG-signed amend and updates both dates.
Older commits retain their dates. The skill rebuilds the selected commit and replays every descendant, so rewriting an older commit is a rebase rather than a simple ref move. Do not rewrite pushed or shared history without explicit confirmation. That matters because the resulting history needs a force-push.
It never creates a commit or treats cleanup as a reason to commit. Verification checks an empty diff between old and new tips, the GPG signature, intended dates, and whether git log still tells the story on its own.
What it helps with
- trim stale details from a finished commit message
- match commit wording to nearby repository history
- keep handoff facts visible in
git log - amend
HEADwithout changing tracked content - verify GPG signatures and commit dates after rewriting
Example prompts for the agent
- Run re0-git on the latest commit.
- Use re0-git to rewrite
HEADwithout changing the tree. - Clean up messages in this short unpushed range with re0-git.
How to install re0-git
1Skills CLI (Vercel)
npx skills add LilMGenius/paperthin --skill re0-git -a claude-code2Manually: put the files in place
~/.claude/skills/re0-git/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/re0-git/
1Skills CLI (Vercel)
npx skills add LilMGenius/paperthin --skill re0-git -a codex2Manually: put the files in place
.agents/skills/re0-git/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add LilMGenius/paperthin --skill re0-git -a cursor2Manually: put the files in place
.cursor/skills/re0-git/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install LilMGenius/paperthin re0-git2Manually: put the files in place
.github/skills/re0-git/SKILL.md1Skills CLI (Vercel)
npx skills add LilMGenius/paperthin --skill re0-git -a gemini-cli2Platform CLI
gemini skills install https://github.com/LilMGenius/paperthin --path skills/depth/re0-gitManually: put the files in place
.devin/skills/re0-git/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add LilMGenius/paperthin --skill re0-git -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about re0-git
How do I install re0-git in Claude Code?
Run npx skills add LilMGenius/paperthin --skill re0-git -a claude-code.
What does re0-git do?
It rewrites the message of an existing commit into a concise handoff record that follows local log conventions. It reads the change and nearby history before editing the message.
Does re0-git change files in a commit?
No. It changes the commit message and applies its date rules, then checks that git diff between the old and new tips is empty.
Source text
SKILL.md · MIT
--- name: re0-git disable-model-invocation: true description: "Rewrite a finished commit's message into a clean, handoff-ready form in your own log style, so `git log` alone tells the story. User-invoked: run it after a commit." --- Rewrite a finished commit message so the log hands off on its own — in the author's own voice, not an imposed one. ## Goal Repeated amends and momentum commits leave a message bloated, stale, or padded with trivia. `re0-git` rewrites the message into a clean version that lets a fresh session continue from `git log` alone, without reading the diff. It refines what the author already writes. Only the message moves — and timestamps, per the date rule below; the tree never changes. It is **user-invoked** — run it once you've decided to commit. A commit-cleanup tool in the agent's reach would bias it toward committing when it shouldn't. ## Workflow 1. Scope the target — usually `HEAD`, sometimes a short unpushed range. 2. Read the change (`git show --stat`, `git diff`) and any documented commit rules. Then sample nearby non-target messages: start with 10, stop earlier if the convention is obvious, or expand only until the convention is clear. 3. Resolve mixed logs in this order: documented project rules, nearby commits touching the same area, then same-author commits within that convention. Do not average incompatible styles or let one author's habits override the repo. 4. Rewrite the message to the **commit-economy** (below): keep only durable handoff facts, fold supporting edits into the change they serve, and cut anything the diff or tag already proves. Give trivia no bullet of its own. 5. Re-commit signed, dates per the rule below. For the tip (`HEAD`): `git commit --amend -S --date=now` — the `--date=now` is what moves the author date to now; a bare `--amend` resets only the committer date and leaves the author date stale. For an older commit, keeping its dates: rebuild it — `GIT_AUTHOR_DATE`/`GIT_COMMITTER_DATE git commit-tree <tree> -p <parent> -S -m "<new message>"` — then replay every descendant onto the rebuilt commit (a non-tip rewrite is a rebase, not a ref move), or you orphan them. 6. Verify and report. ## Rules - **Never create or suggest a commit** — re0-git only rewrites the message of a commit that already exists. Using it is never a reason to commit. - **Message only** — the tree must stay byte-identical (`git diff <old> <new>` empty); never edit content in a re0-git pass. - **commit-economy** — the commit-message standard this skill enforces: one bullet per real, durable change with supporting edits folded in, nothing the diff or version already proves, no co-author tags, matched to the local log's own shape (sampled above). Where that sampling finds no settled shape, fall back to a subject line, a blank line, then one `-` bullet per change on a single unwrapped line — never prose paragraphs, which explain where a log should list. A step a documented checklist already mandates for any change of this shape (registering a new skill, syncing translated docs after a source edit) is proof the process ran, not a fact about this change — fold it as a trailing clause on the bullet it serves, or drop it if that bullet already implies it; it earns a bullet of its own only when something about *how* it was done is itself non-obvious. The same bar governs the first draft; re0-git only enforces it on a message that already drifted past it. - **Dates by position; always gpg-signed.** The commit you're finalizing — `HEAD` — takes both author and committer date = now, because re-cleaning the latest commit is itself continued work. Every older commit (`HEAD~1` and back) keeps its original author + committer dates; never restamp the past. - **Never rewrite pushed or shared history** without explicit confirmation — it forces a force-push. ## Verification 1. `git diff <old-tip> <new-tip>` is empty — content unchanged. 2. Each rewritten commit is gpg-signed (`%G?` = `G`) with dates as intended. 3. Re-read `git log` alone, diff hidden — if any cut line turns out to be needed to follow the change, restore it.
© LilMGenius · MIT · LilMGenius/paperthin