freegitdxclaude
Commit Messages
Turn a dirty working tree into conventional, scoped commit messages that match the actual diff.
Commit Messages
Use this skill when the user asks for a commit message, a commit split, or "commit this."
Goal
Produce commit messages that describe why the tree changed, scoped to the actual diff. Prefer Conventional Commits.
Inputs
Run or request:
git statusgit diff(unstaged) andgit diff --cached(staged)git log -8 --onelinefor local voice
Never invent files that are not in the diff. Never commit .env, keys, or *.db.
Method
- Group the diff into independently revertable units. If auth and a visual tweak landed together, split them.
- Pick a type:
feat,fix,refactor,docs,test,chore,perf. - Pick a short scope:
auth,skills,checkout,ui. - Write the subject in imperative mood, ≤72 characters, no trailing period.
- Add a body only when the subject cannot hold the reason.
Message template
<type>(<scope>): <imperative subject>
<why this change exists>
<main risk or follow-up if any>
Examples:
fix(checkout): stop granting Pro on the success page
Fulfillment now waits for checkout.session.completed so
unpaid async methods cannot unlock the catalog.
feat(skills): lock Pro markdown behind plan checks
Rules
- One logical change per commit
- No "WIP", "fix stuff", or "updates"
- Mention user-visible behavior when it changed
- If the working tree mixes formatting and a bugfix, tell the user to split before writing the message
Output
Return:
- The recommended
git addpaths (never-Aif secrets or generated DBs are present) - The commit message in a fenced block
- A one-line note if the tree should be split first