mcpField
C
conventional-commit

conventional-commit

github.com/jkappersDevelopment0197 installsUpdated 37w ago
Repository

About conventional-commit

conventional-commit is a skill for writing Git commit messages that follow Conventional Commits v1.0.0. It inspects staged changes, derives a type and optional scope, and commits only files already staged.

Key features

  1. 01Inspects staged diffs
  2. 02Selects commit type and scope
  3. 03Formats messages to the specification
  4. 04Supports bodies and footers
  5. 05Does not stage files

Use cases

  1. 01Writing a commit for staged changes
  2. 02Choosing a type and scope from a diff
  3. 03Adding context or breaking-change notes to a commit

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/jkappers/agent-skills --skill conventional-commit

After installing, type/conventional-commitin Claude Code to confirm it loaded.

Details

From the project README

Commit Authoring

Create git commits following Conventional Commits v1.0.0.

When invoked with arguments, commit staged changes with a message for: $ARGUMENTS

This skill applies only to git commit messages. Do not apply these conventions to PR titles, branch names, changelog entries, or release notes unless explicitly requested.

Workflow

  1. Run git diff --cached to inspect staged changes
  2. If no staged changes exist, report this and stop
  3. Analyze the diff to determine the appropriate type, scope, and description
  4. Compose the commit message following the rules below
  5. Run git commit -m "<message>" (use a HEREDOC for multi-line messages)
  6. Do not stage files. Only commit what is already staged.

Message Structure

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

Types

TypePurpose
featNew feature
fixBug fix
docsDocumentation only
styleFormatting, whitespace
refactorNeither fix nor feature
perfPerformance improvement
testAdding or updating tests
buildBuild system or dependencies
ciCI configuration
choreMaintenance tasks

Scopes

Scope is optional. When used, set it to the module, component, or area of the codebase affected.

Derive scopes from the project structure. Use directory names or module names, not file names.

Examples: feat(auth):, fix(api):, docs(readme):, refactor(db):

Omit scope when the change is cross-cutting or affects the project root.

Description

Use imperative mood: "add feature" not "added feature" or "adds feature". Lowercase the first letter after the type prefix. Omit trailing period. Limit to 50 characters.

Body

Wrap at 72 characters. Explain what changed and why, not how.

Separate the body from the description with one blank line.

Use the body for context the diff alone does not convey: motivation, trade-offs, or constraints that influenced the approach.

Prohibited Content

Do not include any of the following in commit messages:

  • AI attribution ("Generated with Claude Code", "Co-authored-by" lines for AI)
  • Emoji in type prefixes or descriptions
  • Time estimates or dates
  • TODO items or future work references
  • File lists (the diff already shows what changed)
  • Apologies or hedging ("try to fix", "hopefully resolves")

Examples

Simple:

docs: correct spelling of CHANGELOG

With scope:

feat(lang): add Polish language

Breaking change:

feat!: send email to customer when product ships

BREAKING CHANGE: customers now receive emails by default.

With body:

fix: prevent duplicate form submissions

Disables submit button after first click and adds
debounce to the handler.

With footer:

fix: resolve race condition in auth flow

Refs: #123
Reviewed-by: Alice

Comments

Markdown supported