| name | commit |
|---|---|
| description | Use when creating git commits. Groups changes into atomic, single-purpose commits. |
| allowed-tools | ["Grep", "Glob", "Read", "Write", "Edit", "Bash(git status:*)", "Bash(git diff:*)", "Bash(git branch:*)", "Bash(git log:*)", "Bash(git stash:*)", "Bash(git add:*)", "Bash(git restore:*)", "Bash(git mv:*)", "Bash(git rm:*)", "Bash(git apply:*)", "Bash(git commit:*)", "Read(//tmp/**)", "Write(//tmp/**)", "Edit(//tmp/**)"] |
| context | fork |
| user-invocable | True |
| model | sonnet |
Overview
Creating clean, atomic commits that follow best practices for version control hygiene. The core principle is one logical change per commit - each commit should represent a single, coherent, easily revertable modification that can stand alone.
Instructions
ALWAYS cd to project root before git commands. NEVER use git -C. Execute git commands directly without explanatory preamble. Commit immediately without confirmation prompts (never use interactive mode).
-
Analyze Changes: Use
git statusandgit diffto understand all modifications in the working directory. Categorize changes by: - STRUCTURAL: Code reorganization, renaming, refactoring without behavior changes - BEHAVIORAL: New features, bug fixes, functionality changes - DOCUMENTATION: README updates, comment changes, documentation files - CONFIGURATION: Build files, dependencies, environment settings -
Group Logically: Organize changes into logical units where each unit: - Addresses a single purpose or problem - Structure changes to be atomic and easily revertable for safe rollback - Would make sense to revert as a unit
-
Stage Changes: Use appropriate staging strategy: - Whole file:
git add <file>- Hunk-by-hunk:git diff <file> > /tmp/patch.diff, edit the patch to keep only specific hunks, thengit apply --cached /tmp/patch.diff- NEVER usegit resetto unstage - usegit restore --stagedif needed -
Handle Pre-commit Hooks: If hooks complain about unstaged changes: - Stash unstaged changes first:
git stash push -p -m "temp: unstaged changes"(select hunks to stash) - Or stash all unstaged:git stash push --keep-index -m "temp: unstaged changes"- Commit, then restore:git stash pop -
Create Atomic Commits: For each logical group: - Write clear, descriptive commit messages following conventional format - Keep first line under 50 characters - Include context in body when necessary - IMPORTANT: DO NOT run any linter/formatter before committing. Commit exactly what the user changed
Attribution
Include in every commit:
🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <[email protected]>