Skip to content
Skills Library
Programming · Writing

commit-message

/commit-message

Write a clear Conventional Commits message from the staged changes (or a described change), and split work into sensible commits when a diff mixes unrelated changes. Use when the user says "commit this", "write a commit message", "what should the commit say", "fix my commit message", "squash message", "make this a conventional commit", or asks to clean up commit history before a PR. Reads the actual diff; never invents what changed. For pull request descriptions, use pr-description instead.

Licence
MIT
Last repository change
04.11.2026

Assessment and security

100/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 04.11.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What it does and when to use it

Write a clear Conventional Commits message from the staged changes (or a described change), and split work into sensible commits when a diff mixes unrelated changes. Use when the user says "commit this", "write a commit message", "what should the commit say", "fix my commit message", "squash message", "make this a conventional commit", or asks to clean up commit history before a PR. Reads the actual diff; never invents what changed. For pull request descriptions, use pr-description instead.

Triggers from the description

commit thiswrite a commit messagewhat should the commit sayfix my commit messagesquash messagemake this a conventional commit
Original author description

Write a clear Conventional Commits message from the staged changes (or a described change), and split work into sensible commits when a diff mixes unrelated changes. Use when the user says "commit this", "write a commit message", "what should the commit say", "fix my commit message", "squash message", "make this a conventional commit", or asks to clean up commit history before a PR. Reads the actual diff; never invents what changed. For pull request descriptions, use pr-description instead.

How it works

  1. Inputs
  2. Format (Conventional Commits)
  3. Rules
  4. Output
  5. Examples
Original SKILL.md headings · 96 lines, 568 words
SKILL.md preview
---
name: commit-message
description: Write a clear Conventional Commits message from the staged changes (or a described change), and split work into sensible commits when a diff mixes unrelated changes. Use when the user says "commit this", "write a commit message", "what should the commit say", "fix my commit message", "squash message", "make this a conventional commit", or asks to clean up commit history before a PR. Reads the actual diff; never invents what changed. For pull request descriptions, use pr-description instead.
license: MIT
---

# Commit Message

Writes the commit message a careful reviewer would want to read six months
from now: what changed and *why*, in the project's own style. The usual
failure is describing the mechanism ("update utils.ts") instead of the intent
("fix double-charging when a payment retries").

## Inputs

1. **The diff.** `git diff --staged`. If nothing is staged, use `git diff`
   and say you're describing unstaged changes (don't stage files unless the
   user asked you to commit).
2. **The house style.** `git log --oneline -20`. If the repo already uses a
   style (Conventional Commits, gitmoji, ticket prefixes like `ABC-123:`),
   match it. Otherwise use Conventional Commits.
3. **The why.** From the conversation, the branch name, or an issue the user
   mentioned. If the reason isn't knowable, keep the body to *what*; never
   invent a motivation.

## Format (Conventional Commits)

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

<body: why this change, what it does at a high level, anything surprising>

<footer: BREAKING CHANGE: ..., Closes #123, Co-authored-by: ...>
```

- **type:** `feat` (new behaviour), `fix` (bug fix), `refactor` (no behaviour
  change), `perf`, `docs`, `test`, `build`, `ci`, `chore`, `style`, `revert`.
- **scope:** the area touched, as the codebase names it (`auth`, `checkout`,
  `api`). Omit if it spans everything.
- **summary:** imperative mood ("add", not "added"/"adds"), lowercase start,
  no trailing period, **≤ 72 characters** (aim for ~50). Say the outcome.
- **body:** wrap at 72. Explain why and any trade-off. Skip it for trivial
  changes (typo, version bump).
- **breaking changes:** `!` after the type (`feat(api)!: ...`) **and** a
  `BREAKING CHANGE:` footer saying what callers must do.

## Rules

- **Describe the diff you see.** Every claim in the message must be visible
  in the diff. Don't say "add tests" if no tests changed.
- **One logical change per commit.** If the diff mixes a bug fix, a refactor
  and a formatting sweep, propose a split and the `git add -p` / file groups
  for each, with a message per commit. Ask before splitting if the user said
  "commit this".
- **No noise:** no "WIP", "misc fixes", "update files", file lists, or emoji
  unless the repo uses them.
- **Never include secrets** you spot in the diff. If the diff contains an API
  key, `.env` file or credentials, stop and warn the user before committing.
- **Attribution lines** (e.g. `Co-authored-by:`) go in the footer, after a
  blank line, only when they apply.

## Output

Show the message in a fenced block, ready to use. When committing for the user,
pass it with a heredoc so newlines survive:

```bash
git commit -F - <<'EOF'
fix(checkout): stop double-charging when a payment retries

The retry handler created a new charge instead of reusing the
idempotency key from the first attempt, so slow card networks
could charge twice. Reuse the original key on retry.

Closes #418
EOF
```

## Examples

**Good:**

```
feat(dashboard): show revenue by sales rep for the selected month
```

```
refactor(api): move lead validation into a shared schema

Both the webhook and the manual-entry form validated leads with
slightly different rules, which let malformed phone numbers in
through the form. One schema now serves both.
```

**Bad** (and why):

- `updated stuff` - says nothing.
- `fix: Fixed the bug in utils.ts where the function was returning the wrong value.` -
  past tense, mechanism not outcome, trailing period, too long.
- `feat: add login, fix typo in footer, bump deps` - three commits in one.

Versions

RepositoryScoreLicence
This page · CharlieJamesGwapo/claude-work-skills100MIT
netopsengineer/axiom100MIT
lee-w/maigo100MIT
8thlight-daveloper/threnos100GPL-3.0
Kuan-AI-com/agent-skills100MIT
vindotski/spotcraft100Apache-2.0
haiderstudio/commit-message-skill100MIT
weikinhuang/dotfiles100MIT
ahgraber/skills100CC0-1.0

Database snapshot: 13.11.2026 · package version f8267e323790 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100commit-craft
    Writes precise Conventional Commits messages from the actual staged diff and splits mixed work into logical commits. Use when the user asks to commit, write or fix a commit message, squash, or "clean up" git history before a push.
  • 100git-commit
    Use this skill when the user wants to make a Git commit or split changes into more than one commit. Also use it when the user types "/commit" or asks for a conventional commit. The skill examines the diff, stages the related files, writes a Conventional Commits message, and runs…
  • 100conventional-commit
    Write a Conventional Commits message for the staged changes. Use when the user asks to commit, write a commit message, or summarize staged changes for git.
  • 100git-commit
    Use this skill when the user wants to make a Git commit or split changes into more than one commit. Also use it when the user types "/commit" or asks for a conventional commit. The skill examines the diff, stages the related files, writes a Conventional Commits message, and runs…
  • 100squash-commit
    Write a Conventional-Commits squash commit message for a finitevolX pull request from its commits and description. Use when asked for a squash / merge commit message.
  • 90commit-work
    Create high-quality git commits: review/stage intended changes, split into logical commits, and write clear commit messages (including Conventional Commits). Use when the user asks to commit, craft a commit message, stage changes, or split work into multiple commits.

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.