Get the FREE Ultimate OpenClaw Setup Guide →

commit-message-generator

npx machina-cli add skill kanopi/cms-cultivator/commit-message-generator --openclaw
Files (1)
SKILL.md
7.1 KB

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 functionalityfeat type
  2. Bug fixfix type
  3. Code improvement without behavior changerefactor type
  4. Documentation onlydocs type
  5. Tests onlytest 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. Present to User for Approval

When used via workflow-specialist agent: The agent will use AskUserQuestion to present the commit message for review:

  • Show the generated message
  • Ask: "Would you like to proceed with this commit message, or would you like to edit it?"
  • Options: "Approve and commit" or "Edit message"
  • If user selects "Other", they can provide their edited version

When used conversationally: Show the generated commit message and ask: "Here's a commit message based on your changes. Would you like me to commit with this message, or would you like to modify it?"

6. Execute Commit (only after approval)

git commit -m "commit message here"

Or for multi-line messages:

git commit -m "$(cat <<'EOF'
feat(auth): add two-factor authentication support

- Implement TOTP-based 2FA
- Add backup codes generation
- Include recovery flow
EOF
)"

Integration with CMS Cultivator

This skill complements the /pr-commit-msg slash command:

  • This Skill: Automatically triggered during natural conversation

    • "I'm ready to commit"
    • "What should my commit message say?"
  • /pr-commit-msg Command: Explicitly invoked for staged changes

    • User deliberately wants commit message generation
    • Batch generation workflow

Both use the same analysis approach but different invocation methods.

Best Practices

  1. Analyze the actual changes - Don't just use file names, understand what changed
  2. Be specific in scope - Use module name, component name, or feature area
  3. Include breaking changes - Add BREAKING CHANGE: footer if applicable
  4. Reference tickets - Include ticket numbers if found in branch name
  5. Follow project conventions - Match the existing commit style

Example Interactions

Example 1: Simple fix

User: "I fixed the login bug, ready to commit"
[Skill analyzes git diff]
Skill: "I'll generate a commit message for your login fix..."

Generated:
fix(auth): resolve session timeout on remember-me login

- Correct cookie expiration logic
- Add test coverage for remember-me flow

Would you like me to commit with this message?

Example 2: Feature addition

User: "Staged my changes, need to commit"
[Skill analyzes extensive changes]
Skill: "I see you've added a new dashboard widget. Here's a commit message..."

Generated:
feat(dashboard): add performance metrics widget

- Create new widget component
- Add database query for metrics
- Include responsive design
- Add widget to admin dashboard page

Resources

Source

git clone https://github.com/kanopi/cms-cultivator/blob/main/skills/commit-message-generator/SKILL.mdView on GitHub

Overview

Automatically generate conventional commit messages when you have staged changes. It analyzes git diff and status to produce a properly formatted message in the conventional commits style. This helps maintainable history, better changelogs, and smoother automation during releases.

How This Skill Works

The skill checks for staged changes using git status and git diff --staged, then reviews recent commit style to align with repo conventions. It then generates a <type>(<scope>): <description> message, including a descriptive body when needed to explain the change.

When to Use It

  • User mentions commit, committing, staged changes, or ready to commit
  • Git status or git diff --staged output shows staged changes
  • User asks what their commit message should be
  • User says I need to commit my changes
  • User asks for help writing commit messages

Quick Start

  1. Step 1: Check for staged changes with git status and git diff --staged
  2. Step 2: Review repository conventions and let the tool suggest a type/scope
  3. Step 3: Use the generated message to run git commit -m "<type>(<scope>): <description>"

Best Practices

  • Ensure staged changes form a single logical unit of work before committing
  • Choose an appropriate conventional type (feat, fix, docs, etc.) and a relevant scope
  • Provide a clear description; include a succinct subject and a descriptive body if needed
  • Limit the scope to a focused area when possible to facilitate changelogs
  • Review the generated message with the user before finalizing the commit

Example Use Cases

  • 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
  • fix(api): return 404 when user not found in lookup - Guard against null user IDs - Update error handling path
  • docs(readme): update contribution guidelines Clarify commit message conventions and examples for new contributors
  • refactor(ui): optimize rendering of user list - Memoize list items to reduce re-renders - Simplify state management in UserList component
  • test(auth): add tests for token refresh flow - Coverage for success and failure paths - Ensure refresh token rotation behavior

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers