Skip to content
commit logo

Git Commit Skill

commit

Create a git commit with a well-crafted message following project conventions

SKILL.md

Full skill instructions

Git Commit Skill

Create a git commit following best practices for this repository.

Process

  1. Analyze the current state - Run these in parallel:

    • git status - See all untracked and modified files
    • git diff - See both staged and unstaged changes
    • git log --oneline -10 - Review recent commit message style
  2. Draft commit message:

    • Summarize the nature of changes (new feature, enhancement, bug fix, refactor, docs, etc.)
    • Be concise (1-2 sentences) focusing on "why" rather than "what"
    • Use imperative mood (e.g., "add", "fix", "update", not "added", "fixed")
    • Follow the style of recent commits in this repo
    • Match scope to actual changes:
      • "add" = wholly new feature/​file
      • "update" = enhancement to existing feature
      • "fix" = bug fix
      • "refactor" = code restructuring
      • "feat" = new feature (if using conventional commits)
      • "chore" = maintenance tasks
  3. Stage and commit - Run these sequentially:

    • Stage relevant files by name (prefer specific files over git add -A)
    • Create commit with message ending in:
      Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
      
    • Run git status after commit to verify success
  4. Format commit messages using HEREDOC:

    git commit -m "$(cat <<'EOF'
    Your commit message here.
    
    Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
    EOF
    )"
    

Safety Rules

  • NEVER update git config
  • NEVER run destructive commands without user confirmation:
    • git push --force
    • git reset --hard
    • git checkout .
    • git clean -f
    • git branch -D
  • NEVER skip hooks (--no-verify, --no-gpg-sign) unless explicitly requested
  • NEVER amend commits unless explicitly requested
  • CRITICAL: If pre-commit hook fails, fix the issue and create a NEW commit (don't use --amend)
  • Prefer staging specific files by name rather than git add -A or git add .
  • Don't commit if there are no changes
  • Don't commit sensitive files (.env, credentials, etc.)

Arguments

  • No arguments: Commit all current changes
  • With file paths: Commit only specified files

Example Usage

/​commit
/​commit src/​components/​Button.tsx