commit
Skill2 starsChanged 52 days agoMITView on GitHub
Plan and create git commits autonomously for changes made in this session (no per-commit approval prompt). Cross-session dirty files — files modified outside this conversation's tool calls — get confirmed before inclusion. Explicit file lists only, never `git add -A`. No Claude attribution lines. Use when the user wants to commit, says "/commit", or asks to land changes — and composable by any skill that needs to land changes (e.g. commit-push-pr, tdd-parallel).
- Reads credentials
188 other projects use a version of this.
Adopted by
Most recently taken up by
- daledesilva/obsidian_inktheir own version, first seen Nov 9, 2026
- thoughtbot/rails-consultanttheir own version, first seen Nov 8, 2026
- pedrohcgs/claude-code-my-workflowtheir own version, first seen Nov 8, 2026
- jisuzzzz/haechitheir own version, first seen Nov 8, 2026
- dirien/yet-another-agent-harnesstheir own version, first seen Nov 8, 2026
- denysdovhan/skillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use validate-plan, act-on-feedback and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
shawn-dumasSkillvalidate-plan
Validate an orchestration plan after pre-flight certification. Runs adversarial review, deep review (verify prompt data against codebase), and PoC gate for risky approaches. Auto-invoked by orchestrate-* skills at Step 8.
Also in 5 projects that use this
MicrosoftSkillact-on-feedback
Act on user feedback attached to the current session. Use when the user submits feedback on the session's changes via the Submit Feedback button.
Also in 3 projects that use this
decocmsSkilladd-mcp-tools
Guide for adding new MCP tools with consistent patterns for schemas, tool definitions, registry updates, and Better Auth integration
Also in 3 projects that use this
MicrosoftSkillgenerate-run-commands
Generate or modify run commands for the current session. Use when the user wants to set up or update run commands that appear in the session's Run button.
Also in 3 projects that use this
mitsuhikoSkilloebb-scotty
Austrian rail travel planner (ÖBB Scotty). Use when planning train journeys in Austria, checking departures/arrivals at stations, or looking for service disruptions. Covers ÖBB trains, S-Bahn, regional trains, and connections to neighboring countries.
Also in 3 projects that use this
mitsuhikoSkillpi-share
Load and parse session transcripts from shittycodingagent.ai/buildwithpi.ai/buildwithpi.com/pi.dev (pi-share) URLs. Fetches gists, decodes embedded session data, and extracts conversation history.
Also in 3 projects that use this
Other versions188 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 188
- microsoft/vscode★ 195ksame name
- TryGhost/Ghost★ 56ksame name
- ToolJet/ToolJet★ 41ksame name
- ShareX/ShareX★ 41ksame name
- openai/symphony★ 27ksame name
- ccusage/ccusage★ 19ksame name
- ryoppippi/ccusage★ 19ksame name
- windmill-labs/windmill★ 18ksame name
- EverMind-AI/EverMemOS★ 14ksame name
- EverMind-AI/EverOS★ 14ksame name
178 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository32 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ask-zslSkill
- codebase-designSkill
- code-reviewSkill
- commit-push-prSkill
- decision-mappingSkill
- diagnoseSkill
- domain-modelingSkill
- git-branchSkill
- grill-with-docsSkill
- human-itlSkill
- improve-codebase-architectureSkill
- prototypeSkill
- setup-zsl-superpowersSkill
- tdd-parallelSkill
- tddSkill
- teach-me-the-codebaseSkill
- to-issuesSkill
- to-prdSkill
- triageSkill
- verify-coverageSkill
- edit-articleSkill
- setup-pre-commitSkill
- steampipeSkill
- grillingSkill
- grill-meSkill
- handoffSkill
- timesheetSkill
- writing-great-skillsSkill
- afk-fanoutSkill
- afk-workerSkill
- morning-reviewSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 4 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 168 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 36
Run git status to list every dirty and untracked file.
- Distinctive: line 40
When in doubt, classify as other-origin — better to confirm than to over-include.
- Distinctive: line 44
Ask once: *"These files are dirty but I didn't touch them this session.
- Very specific: line 45
Default to "leave them out" if the user is uncertain — they can always re-run /commit after staging by hand.
- Distinctive: line 46
If the bucket is empty, skip this step entirely.
- Very specific: line 53
Docs- or scratch-only commit →
main: If every file in the commit is documentation (docs/, narrative markdown like README.md / CLAUDE.md / … - Very specific: line 76
Autonomous means autonomous: Don't draft a plan and ask "Shall I proceed?" — just execute.
“Common” is measured: kept by at least 6 in 10 of the 168 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Commit Changes
Fully autonomous for changes made in this session. Whoever summoned this skill — the user typing /commit, or another skill composing it as its commit step — that is the approval. Don't pause to ask "Shall I proceed?"
The only legitimate reason to stop and ask is cross-session ambiguity: dirty files in the tree that this conversation didn't produce.
flowchart TB
git["git status<br/>(every dirty + untracked file)"] --> q{"did this conversation<br/>touch the file?"}
q -->|"yes — Edit/Write/Bash<br/>in this session"| session["**Session bucket**<br/>auto-included"]:::good
q -->|"no — already dirty<br/>or external write"| other["**Other-origin bucket**<br/>confirm before including"]:::warn
q -->|"unsure"| other
session --> stage["explicit `git add <path>`<br/>(never `-A`)"]
other --> stage
stage --> rails{"safety rails"}
rails -->|".env* · *.pem ·<br/>credentials · >10MB"| skip["skipped<br/>(reported in summary)"]:::bad
rails -->|"clean"| route{"touches code?<br/>(SKILL.md · scripts ·<br/>plugin.json · mkdocs.yml)"}
route -->|"yes — any code file<br/>(mixed counts)"| branch["create feature branch<br/>(feature/ fix/ chore/…)"]:::warn
route -->|"no — only docs/**<br/>or .scratch/**"| onmain["stay on `main`"]:::good
branch --> commit["`git commit`<br/>no Claude attribution"]:::good
onmain --> commit
classDef good fill:#dcfce7,stroke:#16a34a;
classDef warn fill:#fef3c7,stroke:#d97706;
classDef bad fill:#fee2e2,stroke:#dc2626;Process
- Classify the dirty tree.
- Run
git statusto list every dirty and untracked file. - For each, decide which bucket it falls into:
- Session changes — files this conversation modified via
Edit,Write,NotebookEdit, or files you created/modified throughBashcommands you ran. You have the full conversation history; you know what you touched. - Other-origin changes — files that were already dirty when the session started, or modified by something outside your tool calls (the user editing in another window, a build process, a pre-commit hook, a sibling agent).
- Session changes — files this conversation modified via
- When in doubt, classify as other-origin — better to confirm than to over-include.
- Run
- Confirm the other-origin bucket (only if non-empty).
- Show the list, one line per file:
<path> — <one-line note on what kind of change, if known>. - Ask once: "These files are dirty but I didn't touch them this session. Include in the commit, leave them out, or stage them as a separate commit?"
- Default to "leave them out" if the user is uncertain — they can always re-run
/commitafter staging by hand. - If the bucket is empty, skip this step entirely.
- Show the list, one line per file:
- Plan the commit(s).
- Group session changes into one logical commit by default. Always include all the session's code changes — don't ask which subset to land. Split into multiple commits only when the diff genuinely covers two unrelated concerns (e.g. a feature change plus a doc typo that crept in).
- Draft a clear, imperative commit message focused on why, not what. Multi-line if there's substance worth recording; one line for a small change. Match the repo's existing commit-message style (check
git log --oneline -n 20if unsure).
- Route to the right branch (PR-ship-style repos only —
docs/agents/ship-style.md; trunk-style repos commit everything tomain).- Docs- or scratch-only commit →
main. If every file in the commit is documentation (docs/**, narrative markdown likeREADME.md/CLAUDE.md/docs/changelog.md) or lives under.scratch/, commit it directly onmain. These are low-risk, board/tracker, and prose changes — a branch-and-PR round-trip buys nothing. - Any code → a feature branch. If the commit touches even one code file, the whole commit goes on a branch — never split a mixed docs+code commit. Code means source and scripts (
*.py,*.sh,*.ts, …), the skill definitions themselves (**/SKILL.mdand their bundled assets), and the sync/build manifests (.claude-plugin/plugin.json,.claude-plugin/marketplace.json,mkdocs.yml,Makefile). The distinction is what the file is, not its extension — aSKILL.mdis code here, adocs/**markdown page is not. - When a branch is required and you're on
main, create it yourself — don't stop to ask — with the prefix convention (feature/fix/chore/refactor/env/, per /zsl:git-branch), then switch to it and commit. If you're already on a non-default branch, just commit there.
- Docs- or scratch-only commit →
- Execute.
git add <file1> <file2> …— explicit paths only. Nevergit add -A,git add ., or any wildcard form that could sweep in untracked files you didn't intend.git commit -m "<message>"— use a heredoc for multi-line messages.git log --oneline -n <count>to verify.
- Report. One short line per commit: sha + subject — and the branch it landed on when that wasn't
main. Done.
Safety rails (override autonomy)
These checks fire automatically and do not count as "confirmation prompts" — they protect the commit, they don't ask permission:
- Refuse to stage
.env*,*credentials*,*secret*,*.pem,*.key, files matching any pattern in.gitignorethat somehow got dirty, and large binaries (>10 MB). Surface them in the final report as "skipped for safety" with a one-line reason each. - Pre-commit hook failure — fix the underlying issue and create a new commit. Never use
--no-verify; nevergit commit --amendafter a failed hook (the previous commit may not have been created at all, so amend would modify the wrong target). - Code never lands on
main(PR-ship-style repos) — a commit that touches code is rerouted to a feature branch by Step 4, not refused: the skill creates the branch itself and commits there. Only documentation (docs/**, narrative*.md) and.scratch/changes commit straight tomain. A mixed docs+code commit counts as code and goes to the branch whole.
Important
- No co-author lines, no Claude attribution. Commits should read as if the user wrote them. No
Co-Authored-By:, no "🤖 Generated with…", no trailer of any kind beyond what the repo's own commit convention requires. - No
git add -A. Ever. Explicit file lists are how we prevent unrelated dirt from sneaking into a commit. - Autonomous means autonomous. Don't draft a plan and ask "Shall I proceed?" — just execute. The user already said yes when they typed
/commit.
Why this shape
- Autonomous for session changes because
/commitis invoked after work the user already knows about. Re-confirming each commit was friction without value. - Confirm for other-origin changes because the conversation history can't account for them — they're a genuine signal of ambiguity, the one case where stopping is the right call.
- Never
-Abecause the cost of a bad surprise (committing.envor a stash file) is far higher than the cost of typing a few paths. - Docs to
main, code to a branch because the two carry different risk. Prose and tracker edits are cheap to land and cheap to revert, so a PR round-trip is pure friction; code changes behaviour and deserves review, so they always get a branch (and a mixed commit is code). The skill makes that call and creates the branch itself — the opinion is enforced, not negotiated each time.
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.

