Back to Skills
lilmgenius/paperthinCheck passed

SKILL DETAIL

re0-git

lilmgenius/paperthin/re0-git

re0-git is a user-invoked skill that rewrites the message of an existing commit to follow commit-economy principles, making the log self-explanatory for handoff without needing to read the diff. It only modifies the message, never the tree, and ensures the commit remains GPG-signed. To use it, the skill scopes the target commit (usually HEAD), inspects the change, and samples nearby commits to determine the local log style. It then rewrites the message according to commit-economy: one bullet per durable change, supporting edits folded in, trivia omitted, and no co-author tags. For HEAD, it amends with --date=now to update the author date; for older commits, it preserves original dates by rebuilding the commit and replaying descendants. The skill never creates or suggests commits, and it refuses to rewrite pushed or shared history without explicit confirmation.

Installs · 364View source

Installation

npx skills add https://github.com/lilmgenius/paperthin --skill re0-git

Skill files

SKILL.md

Last synced · Aug 27, 2026

SKILL.md
---
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.