commit-work
Create high-quality git commits: review/stage intended changes, split into logical commits, and write clear commit messages (including Conventional Commits). Use when the user asks to commit, craft a commit message, stage changes, or split work into multiple commits.
When & Why to Use This Skill
This Claude skill automates the creation of high-quality Git commits by reviewing changes, logically splitting work, and generating clear messages following Conventional Commits standards. It streamlines the version control workflow, ensuring codebases remain organized, searchable, and easy to review while enforcing best practices in software configuration management.
Use Cases
- Automated Conventional Commits: Automatically generate standardized commit messages (feat, fix, refactor) based on staged changes to maintain a professional and machine-readable project history.
- Logical Change Splitting: Intelligently group related changes into separate, atomic commits when a working tree contains multiple unrelated features, fixes, or refactors.
- Pre-Commit Code Review: Perform a sanity check on unstaged and staged changes to identify accidental debug logs, hardcoded secrets, or unnecessary formatting churn before committing.
- Interactive Patch Staging: Use guided patch staging to select specific code hunks, allowing for precise control over commit boundaries even when changes are mixed within a single file.
- Workflow Standardization: Ensure all team members follow the same commit guidelines, including subject length limits and required scopes, to improve repository maintainability.
| name | commit-work |
|---|---|
| description | "Create high-quality git commits: review/stage intended changes, split into logical commits, and write clear commit messages (including Conventional Commits). Use when the user asks to commit, craft a commit message, stage changes, or split work into multiple commits." |
Commit work
Goal
Make commits that are easy to review and safe to ship:
- only intended changes are included
- commits are logically scoped (split when needed)
- commit messages describe what changed and why
Inputs to ask for (if missing)
- Single commit or multiple commits? (If unsure: default to multiple small commits when there are unrelated changes.)
- Commit style: Conventional Commits are required.
- Any rules: max subject length, required scopes.
Workflow (checklist)
- Inspect the working tree before staging
git statusgit diff(unstaged)- If many changes:
git diff --stat
- Decide commit boundaries (split if needed)
- Split by: feature vs refactor, backend vs frontend, formatting vs logic, tests vs prod code, dependency bumps vs behavior changes.
- If changes are mixed in one file, plan to use patch staging.
- Stage only what belongs in the next commit
- Prefer patch staging for mixed changes:
git add -p - To unstage a hunk/file:
git restore --staged -porgit restore --staged <path> - If the commit is whole-file (no partial hunks), prefer the committer helper:
committer.ps1 "type(scope): summary" path1 path2 ...- If script execution is blocked, run:
pwsh -File committer.ps1 "type(scope): summary" path1 path2 ...
- If script execution is blocked, run:
- It clears the index and stages exactly the files you list (never use
.). - Use
--forceonly if git reports a stale.git/index.lock. - Skip it when you need partial hunks or a multi-line commit message body.
- Prefer patch staging for mixed changes:
- Review what will actually be committed
git diff --cached- Sanity checks:
- no secrets or tokens
- no accidental debug logging
- no unrelated formatting churn
- Describe the staged change in 1-2 sentences (before writing the message)
- "What changed?" + "Why?"
- If you cannot describe it cleanly, the commit is probably too big or mixed; go back to step 2.
- Write the commit message
- Use Conventional Commits (required):
type(scope): short summary- blank line
- body (what/why, not implementation diary)
- footer (BREAKING CHANGE) if needed
- Prefer an editor for multi-line messages:
git commit -v - Use
references/commit-message-template.mdif helpful.
- Use Conventional Commits (required):
- Run the smallest relevant verification
- Run the repo's fastest meaningful check (unit tests, lint, or build) before moving on.
- Repeat for the next commit until the working tree is clean
Deliverable
Provide:
- the final commit message(s)
- a short summary per commit (what/why)
- the commands used to stage/review (at minimum:
git diff --cached, plus any tests run)