Dev Git Commit Message logo

Dev Git Commit Message

Community
vasilyu1983
dev-git-commit-message

Generates or validates Conventional Commits messages from staged diffs. Use when drafting commit messages, checking repo rules, or inferring scope from changed files.

Overview

Publishervasilyu1983
RepositoryAI-Agents-public
Skill namedev-git-commit-message
Stars
87
Forks
19
Bundled files
13
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 13 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by vasilyu1983 on GitHub. Read the source before you install it.

Installation

Install the Dev Git Commit Message AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/vasilyu1983/AI-Agents-public.git /tmp/AI-Agents-public
mkdir -p .claude/skills
cp -r /tmp/AI-Agents-public/frameworks/shared-skills/skills/dev-git-commit-message .claude/skills/dev-git-commit-message
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Dev Git Commit Message in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Dev Git Commit Message on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Dev Git Commit Message is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Git Commit Message Generator

Generate or validate Conventional Commits for the staged surface.

Default posture: subject line first; body only when risk, rationale, or breaking-change detail is needed; standard types only unless the repo already defines custom ones; never claim behavior not visible in the diff.

Quick Reference

NeedDefaultReference
Pick a typefeat/fix/perf/refactor/docs/test/build/ci/chore/style/revertType Selection table below
Format a subjecttype(scope): imperative summary, ≤72 chars (50 ideal), no trailing periodPre-Commit Message Checklist below
Mark a breaking change! after type/scope, or a BREAKING CHANGE: footerBreaking Change Format table below
Decide on a bodyOnly for risk, non-obvious rationale, or breaking-change detailBody Required? table below
Handle AI-authored commitsNo tool attribution ever; Assisted-by: trailer only if the repo opts inAI-Authored Commits below
Pick a release/changelog toolrelease-please for reviewed PR releases; semantic-release for full automation; changesets for monoreposreferences/changelog-generation-guide.md
Scope a monorepo commitpackage/app/service directory name, one level deep, stable over timereferences/monorepo-commit-conventions.md
Validate a message locallypython scripts/commit_validator.py validate --message "..."Scripts section below

Decision Tables

Mode Selection

TriggerModeAction
User provides staged diff or asks to commitGenerateInspect staged surface, produce primary + alternatives
User provides an existing message stringValidateCheck rules, return PASS/WARN/FAIL + exact rewrite
Staged diff mixes unrelated areasSplitRecommend split commits before generating
No staged changesStopReport "no staged changes"

Type Selection

ChangeTypeNotes
New user- or API-visible capabilityfeatTriggers MINOR bump
Incorrect behavior correctedfixTriggers PATCH bump
Measurable speed or memory improvementperfTriggers PATCH bump
Structure improved, behavior unchangedrefactorNo release by default
Documentation onlydocsNo release by default
Tests onlytestNo release by default
Build tooling or packagingbuildNo release by default
CI/CD workflowciNo release by default
Repo hygiene, no product changechoreNo release by default
Whitespace or formatting onlystyleNo release by default
Reverting a prior commitrevertTriggers PATCH bump
Security fixfix(security):Prefer standard type + scope over custom security: type
Prompt/skill/YAML behavioral changefeat or fixDo not classify by file extension alone

Scope Selection

SituationAction
Repo has a scope map in config.yamlUse mapped scope
One directory or package clearly dominatesUse that name, lowercase kebab-case
Change spans 2+ stable areas equallyUse broader parent scope or omit
Repository-wide changeOmit scope
Monorepo with independently versioned packagesSee references/monorepo-commit-conventions.md

Body Required?

ConditionInclude body?
Subject is self-explanatoryNo
Reason is non-obvious from subjectYes — one sentence why
Security-sensitive or risky changeYes — risk/rollback note
Breaking changeYes — BREAKING CHANGE: footer required
Caller requests detailed templateYes — use assets/template-commit-message.md

Breaking Change Format

SignalFormat
Inline markerfeat(api)!: change auth to OAuth2
FooterBREAKING CHANGE: <migration summary>
BothAcceptable; footer body gets the detail

Before/After Examples

text
BAD:  update
GOOD: docs(readme): add deployment instructions

BAD:  fix stuff
GOOD: fix(cart): prevent negative quantity on rapid add

BAD:  feat: added user dashboard (past tense, missing scope)
GOOD: feat(dashboard): add analytics overview panel

BAD:  feat: add search (generated by Copilot)
GOOD: feat(search): add full-text product search

BAD:  feat(api): add comprehensive user search endpoint with full-text search across all profile fields including bio and location
GOOD: feat(api): add full-text user search endpoint

BAD:  feat: add dashboard, fix auth bug, update deps  (mixed concerns)
GOOD: (3 separate commits)
      feat(dashboard): add analytics overview panel
      fix(auth): correct token refresh race condition
      chore(deps): update react to 18.3.0

Pre-Commit Message Checklist

  • Starts with a valid type prefix (feat, fix, docs, test, refactor, perf, build, ci, chore, style, revert)
  • Subject is 72 characters or fewer (50 preferred)
  • Imperative mood: "add" not "added", "fix" not "fixing"
  • No trailing period on subject line
  • Scope, if used, matches repo conventions (lowercase kebab-case)
  • Single logical change; unrelated concerns split into separate commits
  • No tool/assistant attribution in subject or body
  • No generic placeholders: "update", "fix stuff", "WIP", "misc"
  • Breaking changes marked with ! or BREAKING CHANGE: footer
  • Body present only when needed; answers "why", not "what"

Workflow

  1. Decide mode from the Mode Selection table above.
  2. For generate mode, inspect staged changes in this order:
    • git diff --staged --name-status
    • git diff --staged --stat
    • git diff --staged --unified=1 only when type, scope, or risk is ambiguous
  3. Classify type and scope using the tables above.
  4. Detect scope from config.yaml first, then from the nearest stable directory.
  5. Generate: one primary suggestion, up to two alternatives when scope or emphasis is ambiguous, short rationale.
  6. Validate: run all checklist items, return PASS/WARN/FAIL with exact rewrite on failure.
  7. If the diff mixes unrelated work, recommend split commits before offering a combined message.

Output Contract

Generate

text
[NOTE] Suggested commit messages (3 files changed)

PRIMARY:
fix(auth): reject expired refresh tokens

ALTERNATIVES:
1. fix(api): reject expired refresh tokens
2. fix: reject expired refresh tokens during rotation

RATIONALE:
- Type: fix
- Scope: auth
- Signals: token validation path, regression test update, no new feature surface

Validate

text
VALIDATION: WARN

Message:
feat: update stuff

Issues:
- `update stuff` is too vague
- summary should name the changed behavior or surface

Suggested fix:
feat(auth): add refresh token rotation

AI-Authored Commits

The commit message describes the change, not the tool that produced it. Apply the same rules regardless of whether a human or an AI agent drafted the code.

Banned in subject and body: generated by, co-authored-by: <ai-tool>, via copilot, via claude, chatgpt, ai assistant, bot.

If your team requires an audit trail for AI-assisted code, add an Assisted-by: trailer as an opt-in team policy (not a default). Keep it out of the subject line. Example:

text
feat(search): add full-text product search

Assisted-by: claude-sonnet-4-6

This is an organizational opt-in pattern, not a general requirement. The default rule remains: no attribution.

Assisted-by: is a distinct trailer from Co-Authored-By: — several large open-source projects (Linux Kernel, Apache Software Foundation, LLVM, QEMU) have converged on Assisted-by: through 2026 specifically because Co-Authored-By: implies authorship/copyright standing that an AI tool cannot hold or sign a CLA for. If a repo already uses Co-Authored-By: <ai-tool> by convention, do not silently rewrite it to Assisted-by: — flag the distinction and let the maintainer choose; changing trailer conventions after history exists breaks blame/provenance tooling that greps for the old trailer.

Repo Policy Checks

Block or rewrite messages that:

  • omit the type prefix
  • use vague summaries: update, fix stuff, change code, WIP, misc
  • include assistant/tool attribution (see above)
  • overstate impact not visible in the diff
  • use past tense or gerund after the type prefix
  • exceed 72 characters on the subject line
  • end the subject line with a period

Scripts

ScriptPurpose
scripts/commit_validator.pyValidate a single message, lint a history file, or generate a Markdown quality report
bash
# Validate one message
python scripts/commit_validator.py validate --message "feat(auth): add refresh token rotation"

# Lint a batch history file
python scripts/commit_validator.py lint --input data/sample-commit-history.json

# Generate a full Markdown report
python scripts/commit_validator.py report --input data/sample-commit-history.json --output report.md

See scripts/README.md for the full quick-start, input format, and rule reference.

Worktree PR Loop

Use this skill as the commit step inside the broader worktree-first delivery loop defined by ../dev-git-workflow/SKILL.md.

In that loop: create or enter feature worktree → make code changes → stage intentionally → use this skill → run repo gate → open PR.

If the staged diff mixes several unrelated surfaces, stop and recommend split commits before the PR step.

Known Traps

  • Inferring scope from filenames alone, producing scopes that do not match the repo's bounded-context map.
  • Compressing unrelated changes into one "clean" conventional commit, destroying revert and release-note usefulness.
  • Treating AI-generated summaries as authoritative when the diff still contains hidden migrations or breaking changes.
  • Optimizing for lint-pass format while losing the operational intent maintainers need for incident archaeology.
  • Using ! or BREAKING CHANGE casually and creating noisy downstream automation.

Navigation

Fact-Checking

  • Conventional Commits spec is v1.0.0 (stable as of July 2026; no v2 released).
  • commitlint is at v21.x (21.2.1 as of July 2026); requires Node 22+; config uses ESM (export default { extends: [...] }).
  • standard-version is deprecated, not archived — the repo carries a deprecation notice pointing to release-please (GitHub-native) or the community fork commit-and-tag-version. Do not recommend it for new projects either way.
  • release-please-action is at v5 (Node 24 runtime, April 2026 breaking change); the underlying release-please package is at v17.x. Re-check the major tag before pinning a workflow — this skill will drift again.
  • semantic-release is at v25.x as of mid-2026 and actively maintained (recent work adds npm trusted publishing).
  • For current tooling, hook behavior, or release-automation recommendations, verify against primary sources in data/sources.json and use web search when available — pinned major-version numbers in this skill are a snapshot, not a guarantee.
  • If browsing is unavailable, mark volatile tool guidance as unverified.

Learnings Loop

Before applying this skill on a non-trivial task, read learnings.consolidated.md in this directory (and learnings.md if present).

After applying it, if you encountered a pattern worth remembering, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Dev Git Commit Message AI skill do?

Generates or validates Conventional Commits messages from staged diffs. Use when drafting commit messages, checking repo rules, or inferring scope from changed files.

Why use Dev Git Commit Message on TypingMind?

Because you install it once and use it with any model. Dev Git Commit Message is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Dev Git Commit Message in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/vasilyu1983/AI-Agents-public/tree/main/frameworks/shared-skills/skills/dev-git-commit-message. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Dev Git Commit Message?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Dev Git Commit Message?

As many as you like. As long as a model supports skills, you can use Dev Git Commit Message with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Dev Git Commit Message AI skill free?

Yes. It is published on GitHub by vasilyu1983 under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇