safe-commit
Safe commit workflow
Step 1: Check current state
Run:
git statusShow the output. If there is nothing to commit (working tree clean), stop and report that there are no changes to commit.
Step 2: Review what will be committed
If there are staged changes, run:
git diff --stagedIf there are no staged changes but there are unstaged changes, run:
git add -AThen confirm: “Staged all changes. Run git diff --staged to review.”
Run git diff --staged and show the output.
Step 3: Generate a conventional commit message
Analyze the staged diff and write a commit message following the Conventional Commits format:
<type>(<scope>): <short summary>
<body — optional, only if the why is not obvious from the diff>Types: feat, fix, refactor, test, docs, chore, perf, style.
Rules:
- Summary line: 72 characters maximum, imperative mood (“add” not “adds” or “added”)
- Scope: the module, component, or file area affected (optional but recommended)
- Body: explain why, not what — the diff already shows what
Present the proposed commit message to the user before committing.
Step 4: Commit
After presenting the message, run:
git commit -m "<generated message>"If the commit fails (for example, a pre-commit hook rejects it), report the hook output verbatim and stop. Do not retry with a different message unless the user asks.
Step 5: Confirm
Show the result:
git statusReport the commit hash from the output of the commit command and confirm the working tree is clean.