From git-conventions
Create and validate commit messages following the Conventional Commits standard. Use when committing code, reviewing commit messages, converting existing commits to conventional format, or when someone asks about commit message formatting. Also use proactively when preparing commits to ensure compliance, and when a commit linter (commitlint or a commit-msg hook) rejects a commit message and the last commit needs correcting and amending.
How this skill is triggered — by the user, by Claude, or both
Slash command
/git-conventions:conventional-commit [create|validate|convert|fix] [optional message, branch, or linter output][create|validate|convert|fix] [optional message, branch, or linter output]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
All commit descriptions for commits to work branches must use the [Conventional Commits](https://www.conventionalcommits.org/) standard.
All commit descriptions for commits to work branches must use the Conventional Commits standard.
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Only these types are permitted:
| Type | Purpose |
|---|---|
feat | New feature |
fix | Bug fix |
docs | Documentation only changes |
style | Formatting, whitespace, semicolons (no code meaning change) |
refactor | Code change that neither fixes a bug nor adds a feature |
perf | Code change that improves performance |
test | Adding missing tests or correcting existing tests |
build | Build system or external dependency changes |
ci | CI configuration files and scripts |
chore | Other changes that do not modify src or test files |
revert | Reverts a previous commit |
One type per commit. A commit must contain only one type of change. This is a discipline enforced through code review.
README.md at repo root)api, service, lib, cronfeat(api): Add invoice exportRefs: #123 or BREAKING CHANGE: description! after type/scope: feat(api)!: Remove legacy endpointBREAKING CHANGE: in the footer! suffix is preferred for visibilityWork branch merge commits to main use a different standard:
When /conventional-commit create is invoked:
git diff --staged --stat. IF the output is empty, tell the user nothing is staged and STOP.git diff --staged to understand what changed.README.md at the repository root for defined scopes. IF scopes are defined, use the matching one. IF scope is marked required, never omit it. IF no scopes are defined, include a scope only when the impact area is obvious.Signed-off-by: Name <email>).git commit -F /tmp/commit-msg.txt, then remove the file. Never pass a multi-line message with -m.git show --stat HEAD that only the intended files were committed.When /conventional-commit validate is invoked:
git log --format="%h %s" -20, or limit to the range named in the provided arguments.<type>[scope]: <description> using only the permitted types in the table above.git log --format="%h|%b" -20 and flag commits with an empty body).When /conventional-commit convert is invoked:
git log <base>..<branch> --format="%h %s" (base is main, or develop when main does not exist). Otherwise run git log --format="%h %s" -20.When /conventional-commit fix is invoked, or a commit linter (commitlint or a commit-msg hook) has rejected the last commit message:
git log -1 --format=%B.Signed-off-by.git branch -r --contains HEAD. If the commit exists on any remote branch, STOP and report that amending would require a force-push; show the corrected message instead.git commit --amend -F /tmp/commit-msg.txt. The -F route avoids shell quoting issues and preserves the pre-wrapped body. Remove the temporary file afterwards.When invoked without arguments or with just a message:
! or BREAKING CHANGE: footerBefore creating commits, check for repository-specific scopes:
README.md in the repository rootCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
npx claudepluginhub marjovanlier/claude-plugins --plugin git-conventions