Analyzes git changes, groups them by logical change or OpenSpec feature, and creates conventional commits for each group. Use when organizing staged changes, splitting commits into atomic units, or creating structured commits instead of one mixed commit.
68
83%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Analyze the current git diff, group files into logical changes, then produce concise conventional-commit messages and commit each group separately.
Check for changes
git status --porcelainIf there are no changes, tell the user "Nothing to commit" and stop.
Analyze changed files before staging
Collect changed paths (modified, staged, untracked) and inspect them:
git status --porcelain
git diff --name-only
git diff --cached --name-onlyBuild file groups before staging anything.
Grouping priority (in order):
openspec/changes/<change-name>/ and related code/docs that clearly implement that same featurePrefer one commit per change group. If there is only one clear group, use one commit.
Important: If a single file contains unrelated edits for multiple groups and cannot be split cleanly at file-level, ask the user before proceeding (or keep it in one group and explain the tradeoff).
Draft a commit plan (group-by-group)
For each group:
Present the plan and ask for confirmation
Show:
Ask for confirmation before staging/committing.
Stage and commit each group individually
For each confirmed group, in order:
a. Stage only that group's files
git add -- <file1> <file2> ...b. Review the staged summary
git diff --cached --stat
git diff --cached --name-onlyc. Commit using the group's message
git commit -m "<message>"For multi-line messages, use multiple -m flags.
d. Continue to the next group (index should be clean after commit)
Confirm all commits
Show recent commits created in this run:
git log --oneline -<N>Confirm each planned group was committed.
Use this format for each group commit:
feat(<scope>): concise description of what changedRules:
connector, db, api, engine, frontend, docs, config, infra.openspec/changes/*/), use that feature name as the scope. For example: feat(mvp-full-sync): add Klaviyo connector.feat for new features, fix for bug fixes, refactor for restructuring, docs for documentation, chore for config/build changes.Examples:
Single-line:
feat(connector): add Klaviyo connector with cursor paginationMulti-line (when spanning multiple areas):
feat(connector): add Klaviyo connector with cursor pagination
feat(api): expose embedded PG URL via /api/config endpoint
fix(db): clean up stale postmaster.pid on startup
chore(docs): add project README9086596
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.