home / skills / microck / ordinary-claude-skills / git-commit-helper

git-commit-helper skill

/skills_all/git-commit-helper

This skill analyzes staged diffs and generates conventional-commit messages to improve clarity and traceability.

This is most likely a fork of the git-commit-helper skill from dy9759
npx playbooks add skill microck/ordinary-claude-skills --skill git-commit-helper

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
4.3 KB
---
name: Git Commit Helper
description: Generate descriptive commit messages by analyzing git diffs. Use when the user asks for help writing commit messages or reviewing staged changes.
---

# Git Commit Helper

## Quick start

Analyze staged changes and generate commit message:

```bash
# View staged changes
git diff --staged

# Generate commit message based on changes
# (Claude will analyze the diff and suggest a message)
```

## Commit message format

Follow conventional commits format:

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

[optional body]

[optional footer]
```

### Types

- **feat**: New feature
- **fix**: Bug fix
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons)
- **refactor**: Code refactoring
- **test**: Adding or updating tests
- **chore**: Maintenance tasks

### Examples

**Feature commit:**
```
feat(auth): add JWT authentication

Implement JWT-based authentication system with:
- Login endpoint with token generation
- Token validation middleware
- Refresh token support
```

**Bug fix:**
```
fix(api): handle null values in user profile

Prevent crashes when user profile fields are null.
Add null checks before accessing nested properties.
```

**Refactor:**
```
refactor(database): simplify query builder

Extract common query patterns into reusable functions.
Reduce code duplication in database layer.
```

## Analyzing changes

Review what's being committed:

```bash
# Show files changed
git status

# Show detailed changes
git diff --staged

# Show statistics
git diff --staged --stat

# Show changes for specific file
git diff --staged path/to/file
```

## Commit message guidelines

**DO:**
- Use imperative mood ("add feature" not "added feature")
- Keep first line under 50 characters
- Capitalize first letter
- No period at end of summary
- Explain WHY not just WHAT in body

**DON'T:**
- Use vague messages like "update" or "fix stuff"
- Include technical implementation details in summary
- Write paragraphs in summary line
- Use past tense

## Multi-file commits

When committing multiple related changes:

```
refactor(core): restructure authentication module

- Move auth logic from controllers to service layer
- Extract validation into separate validators
- Update tests to use new structure
- Add integration tests for auth flow

Breaking change: Auth service now requires config object
```

## Scope examples

**Frontend:**
- `feat(ui): add loading spinner to dashboard`
- `fix(form): validate email format`

**Backend:**
- `feat(api): add user profile endpoint`
- `fix(db): resolve connection pool leak`

**Infrastructure:**
- `chore(ci): update Node version to 20`
- `feat(docker): add multi-stage build`

## Breaking changes

Indicate breaking changes clearly:

```
feat(api)!: restructure API response format

BREAKING CHANGE: All API responses now follow JSON:API spec

Previous format:
{ "data": {...}, "status": "ok" }

New format:
{ "data": {...}, "meta": {...} }

Migration guide: Update client code to handle new response structure
```

## Template workflow

1. **Review changes**: `git diff --staged`
2. **Identify type**: Is it feat, fix, refactor, etc.?
3. **Determine scope**: What part of the codebase?
4. **Write summary**: Brief, imperative description
5. **Add body**: Explain why and what impact
6. **Note breaking changes**: If applicable

## Interactive commit helper

Use `git add -p` for selective staging:

```bash
# Stage changes interactively
git add -p

# Review what's staged
git diff --staged

# Commit with message
git commit -m "type(scope): description"
```

## Amending commits

Fix the last commit message:

```bash
# Amend commit message only
git commit --amend

# Amend and add more changes
git add forgotten-file.js
git commit --amend --no-edit
```

## Best practices

1. **Atomic commits** - One logical change per commit
2. **Test before commit** - Ensure code works
3. **Reference issues** - Include issue numbers if applicable
4. **Keep it focused** - Don't mix unrelated changes
5. **Write for humans** - Future you will read this

## Commit message checklist

- [ ] Type is appropriate (feat/fix/docs/etc.)
- [ ] Scope is specific and clear
- [ ] Summary is under 50 characters
- [ ] Summary uses imperative mood
- [ ] Body explains WHY not just WHAT
- [ ] Breaking changes are clearly marked
- [ ] Related issue numbers are included

Overview

This skill generates clear, conventional commit messages by analyzing staged git diffs. It helps you turn code changes into concise summaries, structured bodies, and appropriate footers so commits are informative and consistent. Use it when you need help writing or reviewing commit messages for staged changes.

How this skill works

The helper inspects staged diffs (git diff --staged) and identifies the change type, affected scope, and key edits. It proposes a conventional-commits formatted message: a short imperative summary, an explanatory body that focuses on why, and optional footers for breaking changes or issue references. It can also suggest scopes and check commit checklist items.

When to use it

  • Before committing to craft a concise, conventional commit message
  • When reviewing staged changes and deciding the commit type and scope
  • To summarize multi-file or complex changes into a single coherent commit
  • When preparing commits for a pull request or changelog
  • To standardize messages across a team or project

Best practices

  • Run git diff --staged and let the helper analyze what will be committed
  • Choose a single logical purpose per commit (atomic commits)
  • Keep the summary under 50 characters and use imperative mood
  • Put rationale and impact in the body, not implementation details in the summary
  • Mark BREAKING CHANGE clearly in the footer when applicable

Example use cases

  • Generate a commit message for a staged UI change: feat(ui): add loading spinner to dashboard
  • Create a bug-fix message after fixing a null pointer in the API: fix(api): handle null values in user profile
  • Summarize a refactor spanning controllers and services: refactor(core): restructure authentication module
  • Prepare a multi-file commit that includes tests and docs with a clear body and scope
  • Amend the last commit message to improve clarity before pushing

FAQ

What input does the helper need?

It needs the staged git diff (git diff --staged) so it can inspect file changes, additions, deletions, and hunks.

Can it suggest scopes and types automatically?

Yes. It infers the most likely conventional commit type (feat, fix, docs, etc.) and suggests a scope based on changed paths and file types.