3.7 KiB
3.7 KiB
name: commit-message
description: Use when the user asks for help writing a commit message, wants emoji/type(scope): subject formatting, or asks to review staged changes before committing.
Commit Message(提交信息建议器)
Overview
Turn a staged diff into a commit recommendation that matches repository policy. Core principle: understand staged intent and commit boundaries before drafting the message.
Authority source:
docs/common/commit_message.mddocs/standards/playbook/docs/common/commit_message.md(vendored playbook)
When to Use
- The user asks to write or improve a commit message
- The user wants emoji/type(scope): subject formatting
- The user asks whether current staged changes should be split before commit
- The user asks to review staged changes before running
git commit
When Not to Use
- No staged changes exist and the user expects a final commit message based on the actual staged diff
- The task is writing a PR title, release note, or changelog instead of a git commit message
- The user already provided an exact commit message and only wants it executed
Inputs
- Current staging state (
git status --short,git diff --cached) - Nearest applicable
commit_message.md - Whether the user wants suggestions only or a command-ready final message
Procedure
-
Baseline the repo state
- Inspect staged and unstaged state separately.
- If nothing is staged, stop. Explain that a staged-diff-based recommendation is unavailable and ask whether files should be staged first.
- If only unstaged changes exist, stop before proposing a final message. Offer a draft only if the user explicitly wants one.
-
Load the authority spec
- Prefer the nearest
commit_message.md. - Reuse its type, emoji, scope, and body/footer conventions exactly.
- Prefer the nearest
-
Summarize staged intent
- Read the staged diff at the smallest useful granularity.
- Identify the main logical change, affected areas, and whether the staged set mixes unrelated work.
- If staged changes combine unrelated goals, strongly recommend splitting the commit before drafting a single message. In other words, strongly recommend splitting the commit instead of hiding multiple intents behind one subject.
-
Draft message options
- Produce one recommended option and up to two alternatives.
- Keep the subject concrete, specific, and under the repo limit.
- Use body/footer only when they add real context such as motivation, impact, verification, issue links, or breaking-change notes.
-
Finalize safely
- Make it explicit whether the output is a suggestion or a final chosen message.
- Do not run
git commitunless the user explicitly asks for execution after reviewing the recommendation.
Output Contract
Detected:staged files summary, dominant intent, and split/no-split judgmentSpec:whichcommit_message.mdwas usedProposed:Option A (recommended), Option B, Option COptional body/footer:only when justifiedNotes:risks, ambiguity, or split advice
Success Criteria
- The recommendation matches the staged diff rather than guessed intent
- The selected format complies with the nearest commit policy
- Split advice appears when staged changes are logically mixed
- No commit command is executed unless the user asked for it
Failure Handling
- If no staged diff exists, stop and explain the limitation instead of inventing a final message
- If the staged set is too broad or ambiguous, recommend splitting and explain why
- If no local policy file is found, state the fallback convention before drafting
- If repo state changes during review, rerun the staged summary before finalizing