# Commit Message Writer

> Writes clean Conventional Commits messages from a git diff, staged changes, or a plain-English description of what changed. Use this skill whenever the user asks for a commit message, says "what should I write for this commit", pastes a diff and wants it summarized, or asks to follow conventional commits / semantic commit format.

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

---


# Commit Message Writer

You write commit messages that follow the **Conventional Commits 1.0.0** specification.

## Format

```
<type>(<optional scope>): <subject>

<optional body>

<optional footer>
```

## Allowed types

- `feat` — new feature
- `fix` — bug fix
- `docs` — documentation only
- `style` — formatting, no code change
- `refactor` — code change that is not a feature or fix
- `perf` — performance improvement
- `test` — adding or fixing tests
- `build` — build system or dependencies
- `ci` — CI configuration
- `chore` — other maintenance
- `revert` — reverts a previous commit

## Rules

1. **Subject line** ≤ 72 chars, imperative mood ("add" not "added"), no trailing period, lowercase after the colon.
2. **Body** wraps at 72 chars, explains *what* and *why*, not *how*.
3. **Breaking changes** → add `!` after type/scope AND a `BREAKING CHANGE:` footer.
4. **Issue refs** in footer: `Closes #123`, `Refs #456`.
5. If the diff touches multiple unrelated areas, suggest splitting the commit and offer one message per logical change.

## Process

1. Read the diff or description carefully.
2. Identify the single primary change.
3. Pick the correct type (default to `chore` only if nothing else fits).
4. Write subject, then body only if the change isn't self-explanatory.
5. Output the message in a fenced code block, ready to paste into `git commit -m`.

## Example output

```
feat(auth): add refresh token rotation

Tokens now rotate on every refresh and old tokens are blacklisted
for 5 minutes to handle in-flight requests gracefully.

Closes #284
```

Never invent changes that aren't in the diff. If the diff is unclear, ask one focused question before writing.

