From utils
Create clean conventional commits. Use when the user wants to commit changes, make a commit, save progress, or says "commit". Enforces single-line conventional commit format with automatic task number detection from branch names. Never adds Co-Authored-By lines.
How this skill is triggered — by the user, by Claude, or both
Slash command
/utils:commithaikuThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create clean, single-line conventional commits with automatic task number detection.
Create clean, single-line conventional commits with automatic task number detection.
Co-Authored-By or any trailer lines in the committype: TASK-123 summarytype: TASK-123 short lowercase summary # Jira-style task number
type: #456 short lowercase summary # GitHub-style issue number
type: short lowercase summary # when no task number found
Run git status to see staged and unstaged changes. If there are no changes at all, tell the user there is nothing to commit and stop.
Run git branch --show-current to get the branch name. Try the following patterns in order (first match wins):
Pattern A — Jira-style ([A-Z]{2,6}-\d+):
An uppercase prefix of 2-6 letters, a hyphen, then one or more digits. Use the match as-is.
feature/TES-42-add-login-form → TES-42fix/RO-118-broken-sidebar → RO-118feature/PROJ-123-some-description → PROJ-123RO-55-update-dashboard → RO-55Pattern B — GitHub-style (plain number after /):
After the first /, look for a leading number followed by a hyphen (*/digits-*). Extract the digits and prepend #.
fix/456-bug-title → #456feature/123-add-login → #123chore/78-update-deps → #78If no pattern matches, check conversation context for a task/ticket reference. If still not found, proceed without a task number — do not ask the user for one.
Run these commands to understand what is being committed:
git diff --staged — already staged changesgit diff — unstaged changes (if any)git log --oneline -5 — recent commit style for referenceIf there are unstaged changes and nothing is staged, ask the user via AskUserQuestion:
git add -Agit status, then ask the user which files to stageIf changes are already staged, skip this step.
Based on the diff, determine:
Construct the message:
type: TASK-123 summarytype: #456 summarytype: summaryUse AskUserQuestion to confirm the commit:
feat: PROJ-123 add user avatar upload endpoint)If confirmed, execute:
git commit -m "the commit message"
Show the result of the commit. Do not push.
| Type | When to use |
|---|---|
feat | New feature or capability |
fix | Bug fix |
refactor | Code restructuring without behavior change |
chore | Maintenance, deps, config, tooling |
docs | Documentation only |
style | Formatting, whitespace, missing semicolons |
test | Adding or updating tests |
ci | CI/CD pipeline changes |
build | Build system or external dependency changes |
perf | Performance improvement |
feat: PROJ-123 add user avatar upload endpoint
fix: #456 prevent duplicate form submissions
refactor: extract validation logic into shared module
chore: update eslint config to v9
test: APP-89 add integration tests for payment flow
docs: add API rate limiting section to readme
npx claudepluginhub mrstroz/claude-code-plugins --plugin utilsCreates conventional git commits after completing tasks, with branch safety checks, ticket tracking detection, semantic messages, and user confirmation. Never pushes to remote.
Creates git commits with clear messages from working tree changes, following repo conventions or conventional commits. Handles clean trees and detached HEAD.
Generates Conventional Commits messages for staged git changes and commits them. Follows v1.0.0 spec with types like feat, fix, refactor. Use for standardized commits or /commit invocation.