Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Version control discipline for agent work. Atomic commits, meaningful messages, safe operations, and zero destructive surprises. Use this whenever committing, branching, merging, rebasing, resolving conflicts, or preparing pull requests, before any git command that rewrites or discards history, and when the user says "commit this", "clean up the history", or "undo". Consult it before every force push, reset, or clean, without exception.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 433% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 115% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 157% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 227% | 0% |
History is a debugging tool. bisect, blame, and revert only work when commits are small, honest, and well described. And nothing torches user trust faster than an agent that ran one destructive git command it was not asked to run. Two goals, then: leave history useful, and never destroy anything without an explicit instruction.
git status and git diff first, every time. Know exactly what is about to enter the commit; agents that stage blind commit debug prints, secrets, and stray files.git log first and follow the repo's existing convention (conventional commits, ticket prefixes, whatever the house style is)..env files, large binaries, or generated artifacts. Scan the staged diff for these every single time; a committed secret is compromised even after the commit is deleted, and rotating it becomes someone's bad afternoon.The following require an explicit user instruction naming the operation before you run them. "Clean this up" is not an instruction to rewrite history.
--force-with-lease so you cannot stomp work pushed by someone else in the meantime.reset --hard, clean -f, and any checkout that discards uncommitted work.When one of these seems necessary, name the command, say what it will destroy, and wait for a yes.
Work on a task branch unless told otherwise, named for the change. Sync with the remote before pushing. When conflicts appear, read BOTH sides and understand what each was trying to do; the correct resolution usually preserves both intents, and resolving by mechanically taking one side is how other people's finished work disappears. After resolving, build and run the tests before declaring the merge done, because a textually clean merge can still be semantically broken.
Prefer revert (a new commit undoing an old one) over reset on anything shared; it fixes the mistake without erasing the record. And before anything drastic, remember git reflog can usually resurrect what seems lost. Mention that option to the user before reaching for a destructive command on their behalf.
Other measured skills in the registry, with their headline benchmark lift.