3.1 KiB
3.1 KiB
name, description, argument-hint, allowed-tools
| name | description | argument-hint | allowed-tools | |
|---|---|---|---|---|
| commit | Create structured git commits by analyzing staged and unstaged changes and grouping them logically into one or more commits with clear, descriptive messages. Use when the user asks to commit, says "commit this" or "commit my changes", wants help writing a commit message, or has finished a chunk of work that needs committing. |
|
Bash(git *), Read, Glob, Grep |
Commit Changes
You are tasked with creating git commits for repository changes.
Commit hint
$ARGUMENTS (empty/literal → infer from history and git diff)
Context:
- In-session: If there's conversation history, use it to understand what was built/changed
- Standalone: If no context available, rely entirely on git state and file inspection
Process:
-
Check git availability:
- Run
git status --shortto determine whether the current directory is a git repository - If not a git repo, tell the user: "This directory is not a git repository. Run
git initto initialize one." - Stop — do not proceed with commit.
- Run
-
Think about what changed:
- If in-session: Review the conversation history to understand what was accomplished
- Always: Run
git diffto understand the modifications in detail - If needed, inspect file contents to understand purpose and scope
- Consider whether changes should be one commit or multiple logical commits
-
Plan your commit(s):
- Identify which files belong together
- Draft clear, descriptive commit messages
- Use imperative mood in commit messages
- Focus on why the changes were made, not just what
- Check for sensitive information (API keys, credentials) before committing
-
Present your plan to the user:
- List the files you plan to add for each commit
- Show the commit message(s) you'll use
- Use the
ask_user_questiontool to confirm the commit plan. Question: "{N} commit(s) with {M} files. Proceed?". Header: "Commit". Options: "Commit (Recommended)" (Create the commit(s) as planned); "Adjust" (Change the grouping or commit messages); "Review files" (Show me the full diff before committing).
-
Execute upon confirmation:
- Use
git addwith specific files (never use-Aor.) - Create commits with your planned messages
- Show the result with
git log --oneline -n X(where X = number of commits you just created)
- Use
Important:
- NEVER add co-author information or Claude attribution
- Commits should be authored solely by the user
- Do not include any "Generated with Claude" messages
- Do not add "Co-Authored-By" lines
- Write commit messages as if the user wrote them
Remember:
- Adapt your approach: use conversation context if available, otherwise infer from git state
- In-session: you have full context of what was done; Standalone: infer from git analysis
- Group related changes by purpose (feature, fix, refactor, docs)
- Keep commits atomic: one logical change per commit
- Split into multiple commits if: different features, mixing bugs with features, or unrelated concerns
- The user trusts your judgment - they asked you to commit