Skip to content
Agentmart
Submit a tool

conventional-commits

Format commit messages, branch names, PR titles, and issue titles to the Conventional Commits 1.0.0 spec.

Skill by falcondev-oss

IndexedMIT★ 2
Write a review

Chalk Labs

Need help deploying conventional-commits?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/falcondev-oss-conventional-commits

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Format commit messages, branch names, PR titles, and issue titles to the Conventional Commits 1.0.0 spec. Use BEFORE running `git commit`, `git checkout -b`/`git branch`, `gh pr create`, or `gh issue create`; before writing any commit message, branch name, PR title, or issue title; and whenever staging changes to commit or asked to "commit", "make a PR", "open an issue", or "create a branch" — or when another skill needs a spec-compliant commit message.

Use cases: writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/conventional-commits

What's inside

Skill name
conventional-commits
Description
Format commit messages, branch names, PR titles, and issue titles to the Conventional Commits 1.0.0 spec. Use BEFORE running `git commit`, `git checkout -b`/`git branch`, `gh pr create`, or `gh issue create`; before writing any commit message, branch name, PR title, or issue title; and whenever staging changes to commit or asked to "commit", "make a PR", "open an issue", or "create a branch" — or when another skill needs a spec-compliant commit message.
License
MIT
Instructions
122 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Conventional Commits

Every commit, branch, PR, and issue you name follows the Conventional Commits 1.0.0 spec exactly. Two rules override anything else: each commit is **atomic** (one logical change), and you **verify** the message against the spec and the actual diff before it lands.

**Exception — keep tool-generated default messages.** Merges and similar auto-generated commits keep their default message (`Merge branch ...`, `Merge pull request ...`, `Revert ...`), never rewritten into a Conventional Commits subject. Many tools identify and filter these by their default prefix, so the prefix must stay intact.

## The format

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

[optional body]

[optional footer(s)]
```

**Types** — pick the one that matches what the diff _actually does_:

| type        | use for                                                         | SemVer |
| ----------- | --------------------------------------------------------------- | ------ |
| `feat`      | a new feature                                                   | MINOR  |
| `fix`       | a bug fix                                                       | PATCH  |
| `docs`      | documentation only                                              | —      |
| `style`     | whitespace, formatting, semicolons; never CSS or visual changes | —      |
| `refactor`  | code change that neither fixes a bug nor adds a feature         | —      |
| `perf`      | a performance improvement                                       | —      |
| `test`      | adding or correcting tests                                      | —      |
| `build`     | build system or dependencies                                    | —      |
| `ci`        | CI configuration                                                | —      |
| `chore`     | anything else with no production-code effect                    | —      |
| `wayfinder` | a wayfinder map ticket/issue                                    | —      |
| `spec`      | a spec (e.g. from a wayfinder map via `/to-spec`)               | —      |

CSS, Tailwind classes, and other visual changes are code, never `style`: use `feat` for a new look, `fix` for a visual bug, and `refactor` for restructured styles with no visible change.

A wayfinder map ticket/issue is always `wayfinder`, and a spec is always `spec` — the artifact decides the type, overriding what the change itself does (`feat`, `fix`, etc.).

**Subject-line rules:**

- `type` is required, lowercase, from the table above.
- `scope` is optional: a noun in parentheses naming the affected section — `fix(parser):`.
- `!` immediately before the colon marks a breaking change (MAJOR) — `feat(api)!:`.
- Exactly one colon and one space, then the description.
- `description`: a concise, imperative summary on the same line as the type, **led by substance**. The type already carries the verb, so cut any leading verb that only echoes it (`feat: add…`, `fix: fix…`) or fills space (`give…`, `make…`, `update…`); keep a verb only when it names _how_ the change happens in a way the type can't (`refactor(auth): extract token parser`).
  - `feat(time-tracking): add shift-derived automatic blocking` → `feat(time-tracking): shift-derived automatic blocking`
  - `refactor(seeder): give duty-plan departments unique shifts` → `refactor(seeder): unique shifts per duty-plan department`

**Body & footers** (only when the change needs them):

- Body: one blank line after the description, then free-form paragraphs.
- Footers: one blank line after the body. Each footer is `Token: value` or `Token #value`. The token replaces spaces with `-` (e.g. `Reviewed-by`, `Refs`), **except** `BREAKING CHANGE`.
- Breaking change: either `!` in the prefix, or a footer `BREAKING CHANGE: <description>` — the token must be uppercase (`BREAKING-CHANGE` is synonymous).

**Language:**

- Always use american english.

## Common presets

Reach for these exact messages when the diff matches — they keep recurring commits consistent:

- **`style: lint`** — the commit contains _only_ linting/formatting changes (no change to code meaning).
- **`build(deps): upgrade deps`** — a broad dependency update touching multiple packages.
- **`build(deps): upgrade <package>`** — a dependency update scoped to one package, e.g. `build(deps): upgrade vitest`.

A preset applies only when the staged diff is genuinely just that change; if anything else is bundled in, split it out (see step 2 below) rather than stretching the preset.

## Making a commit

1. **Survey the whole diff.** Run `git status` and `git diff` (staged and unstaged). Understand every hunk before writing anything.

2. **Split into atomic commits.** Group the hunks so each planned commit is a _single_ type + scope + intent. A diff that mixes features, fixes, refactors, or unrelated scopes is **not** atomic — plan one commit per unit. Done when every hunk is assigned to exactly one planned commit and each planned commit is one type/scope/intent.

3. **Stage and draft, one commit at a time.** Stage only that commit's hunks (`git add <paths>`, or `git add -p` for partial files), then draft its message in the format above.

4. **Verify** (below) before committing. Do not run `git commit` until every check passes.

5. **Commit** with the verified message, then return to step 3 for the next planned commit.

## Verify

The feedback run. Re-read the drafted message against both the spec and the _staged_ diff. Every item must pass; if one fails, revise the message (or re-split the commit) and run the checklist again.

- **Format**: matches `<type>[scope][!]: <description>` — lowercase type from the table, one colon + one space.
- **Type matches reality**: the type describes what the staged diff does — not `feat` for a refactor, not `fix` for a new capability, not `style` for CSS or UI changes.
- **Atomic**: the staged diff is one logical change; nothing unrelated is bundled in.
- **Description**: imperative, concise, true to the change, and led by substance — no leading verb that merely echoes the type or fills space.
- **Body/footers** (if any): blank-line separated; footer tokens well-formed; any breaking change flagged with `!` or an uppercase `BREAKING CHANGE:` footer.
- **Authorship**: the attribution footer is exactly the one the Authorship section below asks for, and nothing follows it.

## Branches, PRs, and issues

The same `type` vocabulary and the subject-line rules apply, and each is verified the same way:

- **Branch**: `<type>/<kebab-case-summary>` — `feat/user-export`, `fix/parser-crash`.
- **PR title**: an exact Conventional Commits subject line (`<type>[scope][!]: <description>`), because it becomes the squash-merge commit.
- **Issue title**: `<type>[scope]: <description>` naming the desired change or the bug.

## Authorship

Add exactly the attribution footer the harness or user instructions specify.

### Commit-message formatting

When committing from a shell, pass each paragraph as a separate `-m` argument. Ordinary quoted `\n` remains literal text.

```sh
git commit \
  -m 'type(scope): summary' \
  -m 'Body paragraph.' \
  -m 'Closes #123'
```

For exact formatting, use `git commit -F <message-file>` with real line breaks.

Before pushing, verify:

```sh
git show -s --format=%B HEAD | sed -n l

From falcondev-oss/skills, MIT.

Signals

Stars
2
Forks
0
Open issues
0
Last commit (this folder)
Sep 25, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from falcondev-oss

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get conventional-commits running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying conventional-commits?

CallGet help
Cite this page

conventional-commits skill. Agent Mart. https://agentmart.dev/skills/falcondev-oss-conventional-commits (last updated 2026-10-24)