agentsclimarketplace

Vcs commit msg

Skill petr-korobeinikov/skills/skills/vcs-commit-msg

Claude Code agent skills. Plain markdown. Highly opinionated.

Install
npx -y skills add petr-korobeinikov/skills --skill vcs-commit-msg

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

One thing to look at

  • 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

Writes commit messages that match the project's existing style — detected from history, asked when the signal isn't strong enough, and never mentioning an AI agent or model in any form. Git is primary; the same flow applies to other popular VCS (hg, jj, svn) by analogy.

SKILL.md

5.1 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

vcs-commit-msg

Write a commit message that fits the project's existing style. Detect from history. Ask the user when the signal isn't strong enough. Show the result before committing. Never attribute the change to an AI agent or model.

Scope

This skill governs the text of commit messages only. It does not cover branch names, PR titles or descriptions, tag messages, or anything outside the commit-message buffer.

Procedure

1. Detect the style

Sample recent history before composing.

For git:

git log -n 100 --no-merges \
  --pretty=format:'--- commit ---%nauthor: %an <%ae>%nsubject: %s%nbody:%n%b'

Each commit appears as a --- commit --- block with explicit author:, subject:, and body: fields. An empty body: means the commit has no body.

For other VCS (hg, jj, svn), produce an equivalent sample using each tool's log/template syntax. The output must contain, per commit:

  • a clear commit boundary marker;
  • the author's name and email;
  • the subject (first line of the message);
  • the body (remaining lines, may be empty).

For svn use svn log --xml, since svn has no flexible template language.

Filter obvious bot commits — best-effort, full coverage is not required:

  • author email or display name contains the substring [bot];
  • author email is [email protected], or contains a known bot marker (dependabot, renovate, github-actions, -bot@);
  • subject matches ^Merge pull request # / ^Merge branch / ^Revert ".

Some bot leakage is acceptable — do not chase 100% filtering.

For each dimension below, decide the dominant pattern when ≥80% of the filtered sample agrees; otherwise the dimension is inconclusive.

Dimensions:

  • subject format — Conventional Commits (feat: ..., fix(scope): ...), ticket-first / task-first prefix (PROJ-123: ..., [PROJ-123] ...), plain imperative ("Add ..."), descriptive ("Added ...", "Adds ..."), or other;
  • language — English, Russian, etc.;
  • capitalisation — capital / lowercase first letter, trailing dot present / absent;
  • subject length cap — smallest of 50, 72, 80 where ≥80% of subjects fit;
  • presence of body — body usual when ≥80% have one, body absent when ≥80% don't;
  • body wrap column — smallest of 72, 80, 100 where ≥80% of body lines fit;
  • trailers in regular useSigned-off-by, Closes #, Fixes #, Refs:, etc.

2. Ask about inconclusive dimensions

If any dimension is inconclusive — including an empty repository where everything is inconclusive by definition — ask the user explicitly before composing. Group all questions into a single message; do not ask one at a time.

An explicit user request — for language or any dimension — always wins over detection.

3. Compose

Build the subject (and body, if applicable) in the detected or chosen style. For ticket-prefix conventions, take the ticket from the branch / bookmark name; ask if it isn't there. Body content style follows the detected convention — do not import external best-practices over what history shows.

4. No AI attribution

The composed message must not mention any AI agent, model, or tool (Claude, ChatGPT / GPT, Copilot, Cursor, Gemini, Aider, Codex, Codeium / Windsurf, Replit AI, JetBrains AI, Tabnine, Cody, Devin, etc.) in any form:

  • no Co-Authored-By: trailer for AI accounts ([email protected], [email protected], similar machine addresses);
  • no "Generated with ...", "Made by ...", "Authored by ..." lines;
  • no inline references in subject or body.

Human Co-Authored-By: and Signed-off-by trailers are fine, per project practice.

These rules apply from scratch regardless of any existing content in the commit-message buffer — the prior message when amending or rewording, commit.template content, text inserted by another hook or tool, or an earlier draft. Drop any AI attribution that was already there; do not carry it forward.

5. Show before applying

Always show the composed message to the user and ask whether it fits before committing. Briefly note which dimensions were detected from history and which the user resolved manually, so the user sees where the choice came from. Apply via the VCS's standard commit / amend command only after the user accepts.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

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.