Commit
Portable Claude Code skills
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.
One thing 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.
What its author says it does
Copied from the file, not written here
Create a clean, atomic git commit from the current changes. Use whenever the user says "commit", "commit this", or invokes /commit.
SKILL.md
4.9 KB, 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.