Commit
Create a clean, atomic git commit from the current changes. Use whenever the user says "commit", "commit this", or invokes /commit.From its SKILL.md
npx -y skills add shoichiaizawa/skills --skill commitAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 8 commands, including `bash ${CLAUDE_SKILL_DIR}/scripts/pre-flight.sh` and 7 more.
SKILL.md
4.9 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
/commit
Context
- User hint: $ARGUMENTS
- Pre-flight: !
bash ${CLAUDE_SKILL_DIR}/scripts/pre-flight.sh - Current branch: !
git branch --show-current 2>/dev/null || echo "N/A" - Change analysis: !
bash ${CLAUDE_SKILL_DIR}/scripts/analyse-changes.sh 2>/dev/null || echo "N/A" - Full diff: !
git diff HEAD 2>/dev/null || echo "N/A" - Recent commits: !
git log --oneline -10 2>/dev/null || echo "N/A" - Effort level: !
bash ${CLAUDE_SKILL_DIR}/scripts/effort-level.sh
Instructions
Not a git repository
If the git check above shows "NOT_A_GIT_REPO":
- Tell the user this directory is not a git repository.
- Run
git initto initialise one. - Stage all files by name (review the directory contents first — never use
git add -Aorgit add .). Skip files that look like secrets or build artefacts (.env,node_modules/,dist/, etc.). - Create the initial commit with the message
chore: initial commitplus the Co-Authored-By trailer (seereferences/message-format.md). - Run
git statusto confirm success, then stop.
No changes detected
If the change analysis shows "No changes detected", tell the user and stop.
If the user hint is non-empty, use it to guide which files to stage and what the commit message should convey. The hint may describe the scope ("the /parallel changes"), the intent ("fix typo in README"), or both. It is a hint, not a literal commit message — still apply Conventional Commits format and the atomicity rules below.
Step 1 — Stage and verify atomicity
Use the change analysis above (directory groups and atomicity signal) as the starting point for your atomicity assessment.
- Review the directory grouping and the full diff to determine whether changes form one or more logical units of work. If a user hint is present, use it to identify which subset of changes to stage.
- The "and" test: draft a one-line summary. If it contains "and" connecting two independent actions (e.g., "improve X and enable Y"), it's two commits — split them. A shared topic or session does not make unrelated changes atomic.
- If everything is a single logical change: stage all modified files by name
(e.g.,
git add file1 file2) and proceed. - If changes should be split into multiple commits: explain the split,
listing which files/hunks belong to each commit. Stage the first logical
unit (use
git add <file>orgit add -p <file>for partial staging) and proceed with that commit. Then continue to the next unit — repeat steps 1–3 for each remaining unit until all changes are committed. - Never use
git add -Aorgit add .— always stage files by name to avoid accidentally including untracked files.
Step 2 — Compose commit message
Read references/message-format.md (in this skill's directory) for the full
Conventional Commits format, type table, and Co-Authored-By trailer spec.
Draft the commit message following that format. Use the recent commits above for style consistency.
- Scope: derive from the directory grouping in the change analysis. If changed files share a common directory or component, use it as scope. Omit scope only when changes are genuinely cross-cutting or all files are in the repository root with no directory structure.
- Effort level: use the effort level from context above. Include it in the
Co-Authored-By trailer unless it shows
N/A.
Step 3 — Validate and commit
- Validate the draft message before committing:
cat <<'EOF' | bash ${CLAUDE_SKILL_DIR}/scripts/validate-message.sh <full draft message here> EOF - If validation fails, fix the issues and re-validate.
- Stage files and create the commit using a HEREDOC for correct formatting.
- Run
git statusafter committing to confirm success.
Safety rules
- Never amend a previous commit unless the user explicitly asks for
--amend. - Never skip hooks (
--no-verify) unless the user explicitly asks. - Never force-push unless the user explicitly asks — and warn before doing so.
- If a pre-commit hook fails: fix the issue, re-stage, and create a NEW commit. Do not amend — the failed commit never happened, so amending would modify the wrong commit.
Notes
- This skill is project-agnostic — it works in any repository.
- Projects can override this by creating
.claude/skills/commit/SKILL.mdat project level.
What ships with it: 5 files
7.0 KB alongside SKILL.md, 4 of them executable
references/
- message-format.md2.1 KB
scripts/
- analyse-changes.shruns1.7 KB
- effort-level.shruns967 B
- pre-flight.shruns395 B
- validate-message.shruns1.8 KB