Claude-skill-registry creating-commits

Use before EVERY git commit - no exceptions. Enforces pre-commit quality checks, atomic commits, and conventional commit format to prevent hook failures and maintain clean history

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/creating-commits" ~/.claude/skills/majiayu000-claude-skill-registry-creating-commits && rm -rf "$T"
manifest: skills/data/creating-commits/SKILL.md
source content

Creating Commits

Use before ANY commit - never skip for "simple" changes.

MANDATORY FIRST STEP

STOP: Create TodoWrite checklist BEFORE running any commands.

Correct pattern:

  1. Load this skill ✓
  2. TodoWrite with 6 checklist items (see below) → FIRST response
  3. Execute steps, updating todos (step 1 runs two operations in parallel)

Wrong pattern (will fail):

  1. Load skill
  2. Run git commands without TodoWrite
  3. Forget a step
  4. Hook blocks commit ❌

Workflow Checklist

Create these TodoWrite items as your FIRST action, ALL steps are required:

  1. ☐ Run
    pnpm pre-commit
    (if available) AND Read
    docs/commit_specification.md
    (PARALLEL)
  2. ☐ Run
    git diff
    and analyze staging (see below)
  3. git add <files>
    (stage atomic unit of related files)
  4. git diff --staged
    (preview commit)
  5. ☐ Write
    .claude/.commit-state.json
    (signals workflow completion)
  6. git commit -m "type(scope): description"

Parallel optimization: Step 1 runs

pnpm pre-commit
(if the script exists) and reads
docs/commit_specification.md
simultaneously since they have no dependencies.

Steps 2-3: Staging Analysis

Before running

git add
, check current staging state:

Never stage files containing secrets (

.env
,
credentials.json
,
*.pem
,
*_key
, etc.) - warn user if these appear in diff.

Some files already staged? User pre-selected - verify staged files form atomic unit.

No files staged? After reviewing

git diff
, evaluate what constitutes an atomic unit:

  • If all changes form one logical unit → stage all files and proceed
  • If multiple logical changes detected → use AskUserQuestion to ask which atomic unit to commit first, then suggest splitting rest into separate commits

Multiple logical changes? See Atomic Commits section below for how to identify and split.

Step 5: Write Commit State File

Write this file after steps 1-4 and before step 6:

cat > .claude/.commit-state.json <<'EOF'
{
  "workflow_completed": true
}
EOF

This signals the pre-commit hook that you followed the workflow. Expires in 5 minutes, auto-deletes after ANY

git commit
attempt (success or failure).

If commit fails/is blocked: Rewrite this file before retrying.

Commit Message Format

type(scope): description
- see docs/commit_specification.md

Focus on PURPOSE, not process:

  • ✅ "add creating-commits skill for git workflow"
  • ❌ "create skill and refactor for efficiency"

Review FULL diff - message describes collective change, not just latest conversation.

Atomic Commits

One logical change per commit. If multiple concerns (mixed types, different scopes, unrelated files) → suggest splitting.

Breaking Changes

If breaking backward compatibility → use

feat(api)!: description
and include
BREAKING CHANGE:
footer.

Common Rationalizations (STOP)

If you think any of these, STOP and follow checklist:

  • "Just a comment, skip checks" → Comments have syntax errors
  • "User gave message, skip preview" → Can't see what's staged
  • "Too simple for
    pnpm pre-commit
    " → Hooks fail on "simple" changes
  • "One extra file won't hurt" → Breaks atomic commits

When Checks Fail

pnpm pre-commit
fails on your changes? Fix before committing.

pnpm pre-commit
fails on unrelated code? Ask user:

  1. Fix unrelated error first
  2. Commit anyway (requires their decision)
  3. Investigate error

Never assume "error is unrelated, skip check" - ask.

Never Use
--no-verify

Never use

git commit --no-verify
without explicitly asking user permission first in bold text.