allowed-tools: Bash(git status:), Bash(git diff:), Bash(git log:), Bash(git branch:), Bash(git commit:*) argument-hint: [additional explanation] description: Create a git commit
Context
- Current git status: !
git status - Staged changes: !
git diff --staged - Recent commits (for language detection): !
git log -n 10 --pretty=format:"%s" - Current branch: !
git branch --show-current
Your Task
Based on the above context:
-
Analyze the staged changes for any critical issues:
- Review the Staged changes from context above
- Check for sensitive information (passwords, API keys, etc.)
- Verify that the changes are complete and coherent
- If issues are found, confirm with the user before proceeding
-
Determine the commit message language:
- Based on the Recent commits from context above
- If the majority are in English, write in English
- If the majority are in Japanese, write in Japanese
- If
$ARGUMENTSincludes a language instruction, follow that instead
-
Create and execute the commit:
- Refer to the Commit Message Guidelines section below when writing the message
- Use
git commit -mwith an appropriate message
-
Verify the commit was successful:
- Execute
git statusto verify the commit was successful - Provide a summary of what was committed to the user
- Execute
Commit Message Guidelines
-
Follow the Conventional Commits specification:
- Format:
<type>(optional scope): <description> - Example:
feat(auth): add OAuth2 login support
- Format:
-
Allowed types:
feat,fix,docs,style,refactor,perf,test,chore -
Use the imperative mood in the description (e.g., "add", not "added" or "adds").
-
Keep the summary concise (max ~72 characters).
-
Body rules:
-
Always include a body — no exceptions, even for trivial-looking changes
-
Insert one blank line after the summary, then write the body
-
The body must be written as bullet points — never use prose paragraphs or a single free-form line
-
Each bullet should describe a reason, context, or detail of the change
-
Example:
feat(auth): add OAuth2 login support - implement login with OAuth2 - update user model with providerId - add tests for OAuth2 flow
-
-
Language rule:
- Use the same language as the majority of recent commits
- If
$ARGUMENTSincludes a language instruction, follow that instead - Scope language matches the message language: for Japanese commits, the scope may also be written in Japanese (e.g.,
feat(認証): OAuth2 ログインを追加). For English commits, keep the scope in English.
-
Focus rule:
- Do not write vague phrases like "fixed review comments", or "minor fix".
- Always describe what was actually changed (e.g., "remove unused import", "fix null check in auth flow").
-
Arguments rule:
- Treat
$ARGUMENTSas additional context or instruction for the commit message
- Treat
HEREDOC Handling for Commit Messages
When composing a multi-line commit message with git commit -m "$(cat <<...EOF ... EOF)", the HEREDOC quoting style affects how backticks are interpreted:
- Single-quoted HEREDOC (
<<'EOF'): No shell expansion happens, so write raw backticks directly (e.g., inline`functionName`or`file.ts`is safe) - Double-quoted or unquoted HEREDOC (
<<"EOF"/<<EOF): Bash may interpret backticks as command substitution. Avoid inline single backticks — use triple-backtick fenced blocks (```) if a code span is needed
Rationale: In double-quoted/unquoted HEREDOC, backticks sometimes get auto-escaped as \`, which leaks literal backslashes into the commit message.
Recommendation: Prefer <<'EOF' whenever the commit message contains backticks or code identifiers — it is the safest default.
Important Notes
- Do not execute
git add - The changes are already staged with the correct granularity and responsibility.
- Do not execute
git push
Expert Next.js App Router
Developpement
Un skill qui transforme Claude en expert Next.js App Router.
Générateur de README
Developpement
Crée des README.md professionnels et complets pour vos projets.
Rédacteur de Documentation API
Developpement
Génère de la documentation API complète au format OpenAPI/Swagger.