# Conventional Commits

> Conventional Commits specification for consistent, machine-readable git commit messages. Use when crafting commit messages, enforcing commitlint rules, or generating changelogs/releases.

- Skill: `pdsuwwz/conventional-commits` (Agent Skill)
- Install (CLI): `npx skillmds@latest add pdsuwwz/conventional-commits`
- Raw SKILL.md: https://api.skillmd.com/api/skills/pdsuwwz/conventional-commits/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: pdsuwwz (https://skillmd.com/u/pdsuwwz)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/pdsuwwz/conventional-commits

---


# Conventional Commits

> A lightweight convention for commit messages that enables automated tooling (changelogs, releases) and improves human readability.

## Format

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

[optional body]

[optional footer(s)]
```

- **type**: category of change (see Types below).
- **scope**: optional area of codebase, e.g. `auth`, `ui`, `deps`.
- **!**: indicates a breaking change (can also be in footer).
- **description**: short, imperative summary in present tense.
- **body**: detailed explanation, wrapped at ~72 chars when possible.
- **footer**: metadata such as `BREAKING CHANGE:` or issue references.

## Types

Common types used by popular tooling (commitlint, semantic-release):

- **feat**: new feature
- **fix**: bug fix
- **docs**: documentation only changes
- **style**: formatting, missing semi-colons, no code change
- **refactor**: 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
- **ci**: CI configuration and scripts
- **chore**: maintenance tasks
- **revert**: revert a previous commit

## Breaking Changes

Indicate breaking changes with `!` or a footer:

```
feat(api)!: remove deprecated endpoints

BREAKING CHANGE: `/v1/users` no longer accepts `status`.
```

## Examples

```
feat(chat): add streaming response support
fix(ui): handle empty history state
refactor(store): simplify session persistence
chore(deps): bump vue to 3.5.6
```

## Recommendations

- Keep the subject line under 72 characters.
- Use imperative mood: "add", "fix", "remove".
- Reference issues in footers: `Refs: #123` or `Closes #123`.

