| name | commit |
| description | Commit current changes with a clear, descriptive message |
| argument-hint | ["special instructions"] |
| disable-model-invocation | true |
| metadata | {"internal":true} |
Commit Changes
Commit the current staged/unstaged changes with a well-crafted commit message.
Arguments
$ARGUMENTS can be used for special instructions, such as:
- Guiding the message: "emphasize the breaking change"
- Adding context: "this fixes issue #123"
- Requesting amend: "amend the previous commit"
Step 1: Gather Information
Run these commands in parallel to understand the changes:
- Git status:
git status --porcelain (check for staged/unstaged changes)
- Staged diff:
git diff --cached (what will be committed if there are staged changes)
- Unstaged diff:
git diff (what's modified but not staged)
- Recent commits:
git log -5 --oneline (to match existing commit style)
Important checks:
- If no changes exist (nothing staged or unstaged), inform the user there's nothing to commit
- If there are unstaged changes but nothing staged, stage all changes with
git add -A (or ask user if they want to selectively stage)
- If there are both staged and unstaged changes, ask user if they want to include unstaged changes
Step 2: Analyze Changes
Review the diff to understand:
- What changed (files, functions, features)
- Why it changed (bug fix, new feature, refactor, etc.)
- Impact (breaking changes, dependencies, configuration)
Step 3: Generate Commit Message
Message Guidelines
-
Subject line:
- Use imperative mood ("add feature" not "added feature")
- Keep under 50 characters (hard limit: 72)
- Don't end with a period
- Use lowercase for the first letter
-
Body (if needed for complex changes):
- Separate from subject with blank line
- Wrap at 72 characters
- Explain what and why, not how
- Use bullet points for multiple items
-
Footer (if needed):
- Reference issues:
Fixes #123, Closes #456
Examples
Simple change:
add user authentication endpoint
Change with body:
add rate limiting to public endpoints
- Implement token bucket algorithm
- Add configurable limits per endpoint
- Include rate limit headers in responses
Closes #234
Step 4: Create the Commit
-
Stage changes (if needed):
git add -A
Or stage specific files if user requested selective staging.
-
Create commit using HEREDOC for proper formatting:
git commit -m "$(cat <<'EOF'
<description>
<body if needed>
<footer if needed>
EOF
)"
-
Verify the commit was created:
git log -1 --oneline
-
Report the commit hash and message to the user.
Edge Cases
- No changes: Inform user there's nothing to commit
- Amend requested: Use
git commit --amend (only if explicitly requested in arguments)
- Large changes: Suggest breaking into multiple commits if changes span unrelated areas
- Merge conflicts: Inform user and provide guidance on resolution
- Pre-commit hooks fail: Report the failure and suggest fixes