Skip to content
Development
Skill

/commit-message-generator

Automatically generate conventional commit messages when user has staged changes and mentions committing. Analyzes git diff and status to create properly formatted commit messages following conventional commits specification, and appends the Assisted-by git trailer recording

From plugin
cms-cultivator
1726 skills1 agent
Install
$ npx -y skills add kanopi/cms-cultivator --skill commit-message-generator --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/commit-message-generator

Context preview

The summary Claude sees to decide when to auto-load this skill.

Automatically generate conventional commit messages when user has staged changes and mentions committing. Analyzes git diff and status to create properly formatted commit messages following conventional commits specification, and appends the Assisted-by git trailer recording

SKILL.md

commit-message-generator.SKILL.md
name: commit-message-generator
description: Automatically generate conventional commit messages when user has staged changes and mentions committing. Analyzes git diff and status to create properly formatted commit messages following conventional commits specification, and appends the Assisted-by git trailer recording which AI model (Claude, GPT, Gemini, or any other LLM) assisted the change. Invoke when user mentions "commit", "staged", "committing", or asks for help with commit messages.

Commit Message Generator

Automatically generate conventional commit messages for staged changes.

Philosophy

Commit messages are the history and documentation of your code's evolution.

Core Beliefs

1. **Commits Tell a Story**: Each commit should explain what changed and why 2. **Conventional Format Enables Automation**: Structured messages power changelogs and semantic versioning 3. **Clarity Over Brevity**: A clear 2-line message beats a cryptic 5-word one 4. **Context Matters**: Messages should be understandable months later without additional context

Why Conventional Commits

  • **Automated Changelogs**: Generate release notes from commit history
  • **Semantic Versioning**: Determine version bumps (major/minor/patch) automatically
  • **Better Searchability**: Find specific types of changes quickly
  • **Team Communication**: Consistent format aids code review and collaboration

When to Use This Skill

Activate this skill when the user:

  • Mentions "commit", "committing", "staged changes", or "ready to commit"
  • Shows `git add` or `git status` output with staged changes
  • Asks "what should my commit message be?"
  • Says "I need to commit my changes"
  • Asks for help writing commit messages

Decision Framework

Before generating a commit message, ask yourself:

Is This Ready to Commit?

  • ✅ **Yes** - Staged changes represent a single logical unit of work
  • ❌ **No** - Multiple unrelated changes staged → Suggest splitting into separate commits
  • ⚠️ **Maybe** - Large changeset → Review to ensure it's cohesive

What Type of Change Is This?

1. **New functionality** → `feat` type 2. **Bug fix** → `fix` type 3. **Code improvement without behavior change** → `refactor` type 4. **Documentation only** → `docs` type 5. **Tests only** → `test` type 6. **Multiple types** → Suggest splitting commits

What Scope Makes Sense?

  • **Module/component name** - For focused changes (e.g., `auth`, `api`, `ui`)
  • **Feature area** - For cross-cutting changes (e.g., `validation`, `logging`)
  • **No scope** - For global changes (e.g., dependencies, config)

Should This Be Multiple Commits?

Split if staged changes include:

  • ✅ Unrelated features or fixes
  • ✅ Refactoring + new feature (split: refactor first, feature second)
  • ✅ Multiple bug fixes
  • ❌ Feature + tests (keep together)
  • ❌ Feature + documentation (keep together)

Decision Tree

User mentions commit
    ↓
Check: Staged changes?
    ↓ Yes
Check: Multiple unrelated changes?
    ↓ No
Check: Follows conventional commits pattern?
    ↓ Generate message
    ↓
Review with user → Commit

Workflow

1. Check for Staged Changes

git status
git diff --staged

If no staged changes, inform the user and suggest staging files first.

2. Analyze Recent Commits for Style

git log --oneline -10

Learn the repository's commit message conventions.

3. Generate Conventional Commit Message

**Format**: `<type>(<scope>): <description>`

**Types**:

  • `feat` - New feature
  • `fix` - Bug fix
  • `docs` - Documentation changes
  • `style` - Code style changes (formatting, semicolons, etc.)
  • `refactor` - Code refactoring (no functional changes)
  • `test` - Adding or updating tests
  • `chore` - Build process, dependency updates, etc.
  • `perf` - Performance improvements
  • `ci` - CI/CD changes

**Example**:

feat(auth): add two-factor authentication support

- Implement TOTP-based 2FA
- Add backup codes generation
- Include recovery flow for lost devices
- Update user profile settings UI

4. Drupal/WordPress-Specific Patterns

**Drupal**:

  • Config changes: `feat(config): add user profile field configuration`
  • Module work: `fix(custom_module): correct permission check in access callback`
  • Hooks: `refactor(hooks): simplify hook_form_alter implementation`

**WordPress**:

  • Theme work: `style(theme): improve mobile navigation styles`
  • Plugin work: `fix(plugin): correct ACF field validation`
  • Blocks: `feat(blocks): add testimonial Gutenberg block`

5. Append the Assisted-by Trailer

When AI assisted in producing the **change itself** (not merely this commit message), append an `Assisted-by:` git trailer as the last block of the message — the per-commit provenance convention adopted by the Linux kernel, Fedora, and the OpenInfra Foundation. The per-PR complement is the Delivery Record ([kanopi/delivery-record](https://github.com/kanopi/delivery-record)).

**Format** — `Assisted-by: <Vendor>/<model-id>`, using whichever assistant actually did the work. This is deliberately vendor-neutral:

Assisted-by: Claude/claude-fable-5
Assisted-by: OpenAI/gpt-5.4-codex
Assisted-by: Google/gemini-3-pro

Rules:

  • Identify the current session's model from your own runtime context; never

guess or hardcode a model name. One trailer line per assisting model if more than one contributed.

  • Place trailers at the end of the message, after any `Refs:` /

`BREAKING CHANGE:` footers, so `git interpret-trailers` and `git log --grep="^Assisted-by:"` work.

  • **Skip the trailer** when the change was written entirely by a human and

AI only helped phrase this commit message — the trailer attests to the change, not the prose. Also skip on explicit request (`--no-assisted-by`).

  • This trailer replaces `Co-Authored-By` for AI attribution — never add

`Co-Authored-By: Claude…` (or any AI co-author line) to commit messages.

The audit trail this enables:

git log --grep="^Assisted-by:"        # every AI-assi
Read more
Ships withcms-cultivator

Specialist agents and auto-invoked skills for Drupal/WordPress development. Works in Claude Code, Claude Desktop, and OpenAI Codex. Full documentation: What changed in 2.0? CMS Cultivator now focuses on CMS development workflows.

Get the whole plugin

Other skills on cms-cultivator.