• Home
  • About
  • Agent Skills
  • Projects
  • Blog
  • Contact
Resume
Agent Skills/git/Write Conventional Commits

Write Conventional Commits

Create, review, and improve Git commit messages using Conventional Commits, including scopes, breaking changes, issue references, and release-friendly wording.

GitConventional Commitschangelogrelease automation

Install for your agent

Download the file and place it at the path for your coding agent. Review the instructions before enabling a third-party skill.

Codex

~/.codex/skills/conventional-commits/SKILL.md

Claude Code

.claude/skills/conventional-commits/SKILL.md

Cursor

.cursor/skills/conventional-commits/SKILL.md

GitHub Copilot

.github/skills/conventional-commits/SKILL.md
</>View raw SKILL.mdInspect only the executable instructions your coding agent will receive, without catalog metadata.
Source file: conventional-commits/SKILL.md
---
name: "conventional-commits"
description: "Create, review, and improve Git commit messages using Conventional Commits, including scopes, breaking changes, issue references, and release-friendly wording."
---

# Write Conventional Commits

Use this skill to propose a commit message from a diff, review an existing message, or split unrelated changes into release-friendly commits.

## Format

```text
<type>[optional scope][!]: <description>

[optional body]

[optional footer(s)]
```

Use a lowercase type, an optional concise scope, and an imperative description without a trailing period.

## Common types

- `feat`: add user-visible behavior or capability.
- `fix`: correct a defect.
- `docs`: change documentation only.
- `refactor`: restructure code without changing intended behavior.
- `test`: add or correct tests.
- `perf`: improve performance.
- `build`: change dependencies or build tooling.
- `ci`: change automation pipelines.
- `chore`: perform maintenance not covered above.

Follow repository-specific types when a local convention exists.

## Workflow

1. Inspect the actual diff and relevant tests; do not infer the message only from filenames.
2. Identify the single user- or developer-facing purpose of the change.
3. Select the narrowest accurate type and add a scope only when it helps locate the change.
4. Keep the subject specific: say what changed, not that something was “updated”.
5. Add a body when motivation, tradeoffs, migration steps, or non-obvious behavior matter.
6. Mark breaking changes with `!` and a `BREAKING CHANGE:` footer that states the migration impact.
7. Add issue references in footers when identifiers are available.
8. If the diff contains multiple unrelated purposes, recommend separate commits instead of writing a vague umbrella message.

## Examples

```text
feat(auth): refresh expired access tokens
fix(profile): preserve avatar after form validation
docs(api): document pagination parameters
refactor(cart)!: replace numeric item ids with UUIDs
```

## Review checklist

- Does the type match the behavioral impact?
- Is the subject imperative, concise, and concrete?
- Does the scope describe a stable area rather than a temporary filename?
- Is a breaking change explicitly documented?
- Can release tooling and a human reviewer understand the message without opening the diff?

Return one recommended message first. Add alternatives only when the diff genuinely supports more than one interpretation.

Use this skill to propose a commit message from a diff, review an existing message, or split unrelated changes into release-friendly commits.

Format

<type>[optional scope][!]: <description>

[optional body]

[optional footer(s)]

Use a lowercase type, an optional concise scope, and an imperative description without a trailing period.

Common types

  • feat: add user-visible behavior or capability.
  • fix: correct a defect.
  • docs: change documentation only.
  • refactor: restructure code without changing intended behavior.
  • test: add or correct tests.
  • perf: improve performance.
  • build: change dependencies or build tooling.
  • ci: change automation pipelines.
  • chore: perform maintenance not covered above.

Follow repository-specific types when a local convention exists.

Workflow

  1. Inspect the actual diff and relevant tests; do not infer the message only from filenames.
  2. Identify the single user- or developer-facing purpose of the change.
  3. Select the narrowest accurate type and add a scope only when it helps locate the change.
  4. Keep the subject specific: say what changed, not that something was “updated”.
  5. Add a body when motivation, tradeoffs, migration steps, or non-obvious behavior matter.
  6. Mark breaking changes with ! and a BREAKING CHANGE: footer that states the migration impact.
  7. Add issue references in footers when identifiers are available.
  8. If the diff contains multiple unrelated purposes, recommend separate commits instead of writing a vague umbrella message.

Examples

feat(auth): refresh expired access tokens
fix(profile): preserve avatar after form validation
docs(api): document pagination parameters
refactor(cart)!: replace numeric item ids with UUIDs

Review checklist

  • Does the type match the behavioral impact?
  • Is the subject imperative, concise, and concrete?
  • Does the scope describe a stable area rather than a temporary filename?
  • Is a breaking change explicitly documented?
  • Can release tooling and a human reviewer understand the message without opening the diff?

Return one recommended message first. Add alternatives only when the diff genuinely supports more than one interpretation.

Skill details

Version
1.0.0
Updated
2026-08-08
Category
git
Difficulty
beginner
License
MIT
Author
Naser Rasouli

Capabilities

Executes scriptsNot required
Network accessNot required

Source article

Read the original article behind this skill for deeper explanations, context, and examples.