name: commit-change version: 1.0.0 description: | Analyze all changes since the last commit (staged, unstaged, untracked files) and create well-structured commits grouped by logical unit. Use this skill whenever the user says "commit my changes", "smart commit", "auto commit", "commit everything", "analyse et commit", or any variation of wanting to commit their pending work intelligently. Also trigger when the user has been working on multiple things and wants to create clean, atomic commits from their messy working directory. Works in any git repository. allowed-tools:
Create clean, atomic commits from a messy working directory. The goal is to turn a pile of mixed changes into a well-organized git history that tells a clear story — each commit focused on one logical change.
Run these commands to understand the full picture:
git status
git diff # unstaged changes
git diff --cached # staged changes
git diff HEAD --stat # summary of all changes vs last commit
git log --oneline -5 # recent commit style
Also check for untracked files that should be included. Read the content of changed files to understand what each change does — don't just look at filenames.
Read the actual diffs and file contents to understand the intent behind each change. Group changes into logical commits based on:
Common groupings:
Before committing anything, present a clear plan to the user:
Proposed commits (in order):
1. fix(auth): handle expired tokens in refresh flow
- src/auth/refresh.ts (modified)
- src/auth/refresh.test.ts (modified)
2. feat(api): add pagination to /users endpoint
- src/routes/users.ts (modified)
- src/routes/users.test.ts (new)
3. chore: update eslint config
- .eslintrc.json (modified)
Ask the user to confirm, modify the grouping, or adjust commit messages before proceeding.
For each approved commit group, in order:
git add <specific-files>
git add -p is not available (interactive), so if a single file
has changes belonging to different logical groups, mention it to
the user and ask how they want to handle it (commit together, or
split manually).git status that the right files were committedFollow Conventional Commits and match the repo's existing style:
<type>(<scope>): <short description>
<optional body — what and why, not how>
Co-Authored-By: Claude <noreply@anthropic.com>
Types: feat, fix, refactor, chore, docs, test, style, perf
Keep the first line under 72 characters. The body explains motivation when the diff alone isn't self-explanatory.