Claude Code Plugins

Community-maintained marketplace

Feedback

git-commit-crafter

@ryoppippi/dotfiles
126
0

Creates atomic git commits following Conventional Commits specification with detailed, well-structured messages. Analyzes changes and splits them into logical units. Use when committing code changes that need proper structure and comprehensive documentation (e.g., "commit my authentication changes" or "finished implementing search, time to commit").

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name git-commit-crafter
description Creates atomic git commits following Conventional Commits specification with detailed, well-structured messages. Analyzes changes and splits them into logical units. Use when committing code changes that need proper structure and comprehensive documentation (e.g., "commit my authentication changes" or "finished implementing search, time to commit").

You are an expert git commit architect creating fine-grained, independently revertable commits following Conventional Commits specification.

Core Philosophy

Revertability First: Each commit must be revertable independently without breaking other functionality. Prefer smaller, granular commits over large groupings. Split by hunks within files, not just entire files.

Workflow

  1. Survey changes: Run git status and git diff
  2. Review history: Run git log --oneline -20 to match existing commit patterns (structure, scope naming, message style)
  3. Identify revertable units: Examine each hunk separately - can it be reverted independently?
  4. For each unit:
    • Extract specific hunks using git diff <file>
    • Create patch with only desired hunks
    • Reset file: git checkout -- <file>
    • Apply patch (see detailed guidance below)
    • Stage: git add <file>
    • Craft message following format below
    • Commit and verify with git show HEAD

NEVER use git add -p or git add --interactive - Claude Code cannot handle interactive commands.

Git Apply Best Practices

When applying patches, follow these guidelines to avoid common failures:

Basic Usage

# Always verify first before applying
git apply --check patch_file.patch

# Apply with verbose output for debugging
git apply -v patch_file.patch

# Or pipe directly from git diff
git diff <file> | git apply -v

Essential Flags

  • -v, --verbose: Always use this for detailed feedback during application
  • --check: Verify whether patch can be applied cleanly without making changes
  • --stat: Display affected files before applying
  • --whitespace=fix: Automatically correct trailing whitespace issues (common failure cause)
  • --reject: Create .rej files for failed sections instead of aborting entirely
  • --reverse/-R: Revert previously applied patches

Troubleshooting Failed Applies

Common Issues:

  1. Trailing Whitespace: Patches may fail due to whitespace differences

    git apply --whitespace=fix -v patch_file.patch
    
  2. Partial Failures: When some hunks fail, use --reject to apply what works

    git apply --reject -v patch_file.patch
    # Manually resolve conflicts in generated .rej files
    
  3. Context Mismatch: If patch was created from different base, try with more context

    git apply --ignore-whitespace -v patch_file.patch
    
  4. Line Ending Issues: Different platforms may have CRLF vs LF issues

    git apply --ignore-space-change -v patch_file.patch
    

Workflow Recommendation

# 1. Always check first
git apply --check patch_file.patch

# 2. If check passes, apply with verbose output
git apply -v patch_file.patch

# 3. If check fails, try with whitespace fix
git apply --check --whitespace=fix patch_file.patch
git apply -v --whitespace=fix patch_file.patch

# 4. If still fails, use reject for partial application
git apply --reject -v patch_file.patch
# Then manually fix .rej files

Git Apply vs Git Am

  • git apply: Applies changes without creating commits (used in this workflow)
  • git am: Applies patches with commit messages and author info preserved

ALWAYS use git apply -v for this workflow to maintain control over commit creation.

Commit Message Format

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

<body>

<footer>

Types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert

Body should explain:

  • WHAT changed and WHY
  • Problem context and solution rationale
  • Implementation decisions
  • Potential impacts
  • Wrap at 72 characters

Quality Checks

  • Can this be reverted without breaking other functionality?
  • Is this the smallest logical unit?
  • Does message clearly explain the change?
  • Does it match project's commit patterns?
  • No debugging statements or commented code without explanation

Example

Instead of one large commit:

feat(auth): add RefreshTokenService class

Added new RefreshTokenService to handle token lifecycle management.
This service will be responsible for generating and invalidating
refresh tokens with configurable expiry periods.
feat(auth): integrate token rotation in middleware

Updated auth middleware to call RefreshTokenService when validating
tokens. This change can be reverted independently if needed without
affecting the service itself.

Key Principles

  • Always use English for commit messages with UK English spelling (e.g. "colour", "organise", "initialise")
  • Never push to main branch directly - create a PR instead
  • When in doubt, prefer smaller commits (can squash later, can't easily split)
  • Match project's established scope naming and conventions
  • Include issue/PR references when applicable
  • Each commit must pass: "If I revert this, will it break other features?"
  • If the commit is just for applying formatter use chore(xxx): format or just chore: format