Skills git-commit-helper

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/0xtresser/git-cmt-helper" ~/.claude/skills/openclaw-skills-git-commit-helper && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/0xtresser/git-cmt-helper" ~/.openclaw/skills/openclaw-skills-git-commit-helper && rm -rf "$T"
manifest: skills/0xtresser/git-cmt-helper/SKILL.md
source content

Git Commit Message Guide

Format

Every commit message MUST follow this structure:

<type>(<scope>): <subject>

[optional body]

[optional footer]

Type (required)

TypeWhen to use
featNew feature or capability
fixBug fix
docsDocumentation only
refactorCode change that neither fixes nor adds
testAdding or updating tests
choreBuild, CI, tooling changes

Scope (required)

Scope MUST be a real module name from this project. See references/modules.md for the full list.

If unsure of the scope, check the file paths being changed — the top-level directory is usually the correct scope.

Subject (required)

  • Imperative mood: "add feature" not "added feature"
  • No period at the end
  • Max 72 characters total (including type and scope prefix)
  • Lowercase first letter

Body (optional)

  • Explain WHY, not WHAT (the diff shows what changed)
  • Wrap at 72 characters
  • Separate from subject with blank line

Breaking Changes

If the commit introduces a breaking change, add footer:

BREAKING CHANGE: <description of what breaks and migration path>

Examples

Good:

feat(auth): add JWT token refresh endpoint

Tokens now auto-refresh 5 minutes before expiry.
Previously users had to re-login after token expiration.
fix(parser): handle empty input without crashing
refactor(db): extract connection pooling to separate module

BREAKING CHANGE: DatabaseClient constructor no longer accepts
pool config. Use PoolConfig.create() instead.

Bad:

updated some stuff          ← no type, no scope, vague
feat: Add new Feature.      ← capitalized, period, missing scope
fix(misc): various fixes    ← "misc" is not a real module