agentsclimarketplace

Conventional commits

Skill sebastianhauer/skills/plugins/conventional-commits/skills/conventional-commits

A personal, growing collection of agent skills, portable across Claude Code, Codex, Cursor, and other coding agents, each shipped as an installable plugin.

Install
npx -y skills add sebastianhauer/skills --skill conventional-commits

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 15 days oldThe repository was created 15 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Conventional Commits format and style rules for git commit messages -- types, scopes, subject and body, trailers, and prohibited patterns. Use when writing, reviewing, or fixing a commit message, choosing a commit type or scope, or asking about commit message conventions or Conventional Commits.

The file declares its own license as LICENSE. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

5.3 KB, as published. Nobody here has run it

Conventional Commits

Conventional Commits v1.0.0 with the preferences below. Encodes only the delta from the standard -- format, imperative mood, and what the types mean are assumed known.

Format

<type>[(<scope>)][!]: <description>, then an optional body one blank line below. ! before the colon marks a breaking change; add a BREAKING CHANGE: footer, or let the description carry it.

Types

The types according to @commitlint/config-conventional, always lowercase: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test.

Unsure which type fits? See type-selection.md for tie-breakers between the easily-confused pairs.

Subject line

  • Imperative mood, no trailing period, lowercase start -- avoid Sentence-case, Title Case, and ALL-CAPS subjects (commitlint subject-case); keep real acronyms (API, TTL) as-is
  • At most 70 characters -- GitHub truncates an auto-generated PR title (taken from the first commit's subject) near 72, so 70 keeps it whole
  • Plain text -- no markdown, no backticks; it renders literally in git log --oneline and on GitHub
  • Scope is the primary affected module or theme (auth, api, parser, ci); use a unifying theme when a change spans modules
  • Multiple scopes are allowed when the change genuinely touches distinct modules with no shared theme -- separate them with / (feat(api/ui):), one of the delimiters commitlint's scope-delimiter-style recognizes; prefer one scope when a theme fits

Body

Lead with WHY. The first paragraph states the rationale -- the problem or high-level reason the change exists -- not what or how, which the diff already shows.

If the WHY cannot be inferred from the diff and available context, ask the user. Never invent a rationale.

Then:

  • Separate from the subject with one blank line; wrap at 72; ASCII only
  • Omit entirely when the subject says it all; when present, aim for 1-6 lines -- more suggests the commit should be split
  • Multi-part change: one line of context, then bullets -- not a wall of prose
  • Do NOT restate the subject, narrate steps, or use filler -- see the Bad example

Backticks (body only)

Backticks are forbidden in the subject and used in the body for things you could grep for in source -- identifiers, flags, paths, literal values, commands (parse_config, --dry-run, src/main.rs, null, git rebase). Leave concepts and proper nouns plain (pagination, backpressure, OAuth).

Trailers and footers

Default: run git commit -m with the message only, and never self-inject any trailer. Conventional Commits permits issue and reference footers (Closes #123, Refs: #456, Reviewed-by: a real person; rules 8-10), but prefer to keep issue and ticket links in the PR description -- add such a footer only when the human explicitly asks for it on the commit.

Signed-off-by and Co-authored-by are valid ONLY on explicit human direction naming a real natural person -- a DCO sign-off the human makes, or a real human co-author -- never on your own initiative. Absolute rule: an AI agent must NEVER, under any circumstances, add itself or any non-human identity as a Co-authored-by, Signed-off-by, or author. No exceptions, no overrides.

Prohibited

  • Emoji or Unicode anywhere in the message
  • () appended to function names -- write parse_config, not parse_config()
  • AI self-attribution as author, co-author, or signer

Examples

feat(auth): add password reset via email
refactor(api/ui): extract the shared request-retry helper

Both the client and the dashboard carried near-identical retry
loops, so every change had to be made and reviewed twice.
fix(parser): handle empty input without crashing

Empty files reached the tokenizer as a null slice and
panicked on the first index. Treat them as a zero-token
document instead.
feat(api)!: paginate list endpoints by default

BREAKING CHANGE: list endpoints now return a single page;
clients that expected the full collection must follow the
`next` cursor.
feat(export): add CSV export for reports

Users could only read reports in the browser and asked to
pull the numbers into their own spreadsheets.

- Stream rows behind the `--format csv` flag
- Persist the default output path in `config/export.toml`

Bad -- verbose, restates the diff, filler:

refactor(store): move query building out of the request handler

This commit changes `store.py`. In order to make the code
cleaner, the query building logic is moved out of the request
handler into its own function, and the handler is updated to
call it.

Good -- WHY first, prose then bullet:

refactor(store): move query building out of the request handler

The handler parsed the request and assembled the query in one
place, so neither could be unit-tested on its own.

- Build queries in `build_query`, called from the handler

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.