From conventional-commits
This skill should be used when creating Git commits to ensure they follow the Conventional Commits specification. It provides guidance on commit message structure, types, scopes, and best practices for writing clear, consistent, and automated-friendly commit messages. Use when committing code changes or reviewing commit history.
How this skill is triggered — by the user, by Claude, or both
Slash command
/conventional-commits:conventional-commitsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce commit messages that conform to the Conventional Commits spec. The format makes commit history machine-readable so it can drive SemVer bumps, changelogs, and release tooling.
Produce commit messages that conform to the Conventional Commits spec. The format makes commit history machine-readable so it can drive SemVer bumps, changelogs, and release tooling.
<type>[optional scope][!]: <description>
[optional body]
[optional footer(s)]
feat(parser):.feat!: or feat(api)!:.: .Token: value or Token #value lines, one blank line after the body. Tokens use - instead of spaces (e.g. Reviewed-by). The single exception is BREAKING CHANGE.The spec mandates two; the rest come from the Angular convention referenced by the spec:
feat — a new feature (MINOR in SemVer).fix — a bug fix (PATCH in SemVer).docs — documentation only.style — formatting, whitespace, semicolons; no code-behavior change.rf — code change that neither fixes a bug nor adds a feature.perf — performance improvement.test — adding or correcting tests.build — build system or external dependencies (npm, cargo, gradle, …).ci — CI configuration and scripts.chore — other maintenance that doesn't fit above.revert — reverts a previous commit; body should reference the reverted SHA.If unsure between feat and refactor: ask whether a user-visible capability changed. If yes, feat. If no, refactor.
Indicate a breaking change in either of these ways (you may use both):
! before the colon: feat(api)!: drop support for Node 16.BREAKING CHANGE: footer:
BREAKING CHANGE: `--legacy-flag` has been removed; use `--mode=legacy` instead.
When ! is used, the description itself should describe the break; the footer becomes optional. A breaking change triggers a MAJOR SemVer bump regardless of type — even chore!: or refactor!:.
type, optional (scope), optional !, then : (colon + space) — exactly.feat MUST be used for new features; fix MUST be used for bug fixes.: on the same line.Token: value or Token #value.- for spaces (Co-authored-by, Reviewed-by). BREAKING CHANGE is the one allowed exception with a space.! in the prefix and/or a BREAKING CHANGE: … footer.feat and fix are allowed and MUST NOT influence SemVer unless they include a ! or BREAKING CHANGE footer.BREAKING CHANGE token are case-insensitive in tooling, but convention is lowercase types and uppercase BREAKING CHANGE.fix: prevent race in token refresh beats fix: update auth.ts.BREAKING CHANGE: <description> — the breaking-change footer.Refs: <issue-id>, Closes: <issue-id>, Fixes: <issue-id> — issue links.Co-authored-by: Name <email> — additional authors.Reviewed-by: Name <email> — reviewers.Signed-off-by: Name <email> — DCO sign-off.Simple fix:
fix: prevent racing of requests
Feature with scope:
feat(lang): add Polish language
Breaking change via !:
feat!: send an email to the customer when a product is shipped
Breaking change via footer, with body and issue link:
feat(api): allow provided config object to extend other configs
Configs are now merged shallowly with user values taking precedence.
This unblocks the multi-tenant deployment story.
BREAKING CHANGE: `extends` is no longer a reserved key in config files.
Refs: #482
Revert:
revert: let us never again speak of the noodle incident
Refs: 676104e, a215868
The references/ directory next to this file contains additional examples to consult when drafting messages:
references/spec-examples.md — The canonical reference of Conventional Commits.references/extended-examples.md — worked examples for common real-world cases (fixes with issue links, perf, refactor, build, ci, revert, security, etc.).When unsure how to format a particular case, read these before guessing.
When writing a commit message:
git diff --cached) to see what actually changed. If nothing is staged, check git status and git diff.feat > fix > refactor > others) and mention the rest in the body.BREAKING CHANGE: (and/or !) when the public API, CLI, config, or on-disk format changes incompatibly.^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\([^)]+\))?!?: .+ before finalizing.Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub pmccarren/claude-code-workflows --plugin conventional-commits