| name | commit |
| description | Stage and commit changes with a Conventional Commits message. Invoke with /commit "optional scope hint". Inspects the diff, picks an appropriate type and scope, writes a concise message, and commits. Does not push. |
| user-invocable | true |
| disable-model-invocation | true |
| allowed-tools | Bash(git status:*), Bash(git diff:*), Bash(git add:*), Bash(git commit:*), Bash(git log:*) |
| argument-hint | [optional scope or context] |
/commit
Stage everything currently modified and untracked, then commit with a
Conventional Commits message inferred from the diff.
Workflow
- Run
git status and git diff --staged (plus git diff for unstaged) to
see what's actually changing. If nothing is changing, stop and say so.
- Read
git log -10 --oneline to match the repo's existing commit style — some
repos use feat(bubbles): ..., others use bubbles: ..., others use
sentence case. Match what's there, don't impose Conventional Commits if the
repo doesn't use it.
- Pick a type:
feat, fix, refactor, docs, test, chore, perf,
build, ci, style, revert. If $ARGUMENTS is non-empty, treat it as a
scope or context hint, not as the full message.
- Write a subject line ≤ 72 chars, imperative mood ("add", not "added"). If the
change is non-obvious, add a body paragraph explaining the why — not the what
(the diff already shows the what).
git add -A then git commit -m "...". Show the resulting git log -1 and
stop. Do not push.
Rules
- One commit per invocation. If the diff spans unrelated changes, stop and tell
the user to stage selectively instead of guessing.
- Never amend, force, or rewrite history from this skill — those are separate,
dangerous operations and belong in their own skill.
- Never add Claude as co-author or include "Generated by" footers unless the
repo's existing log shows that pattern.
- If pre-commit hooks fail, surface the failure and stop. Don't
--no-verify.
Examples
/commit on a diff that touches internal/tui/textarea/buffer.go: →
feat(textarea): add gap buffer backing store
/commit "rollback" on a diff that reverts a flag default: →
revert: restore default --color=auto behavior