claude-skills/engineering/commit-craft
Claude 6278f7302d
fix(skills): rewrite descriptions of 111 skills that never auto-triggered
A trigger sweep of all 389 skills (Sonnet, Claude Code 2.1.317, 2 realistic
prompts + 1 near miss each) found 112 skills that fired on neither prompt.
Their descriptions now lead with the job in the words a user types and name
the situations that should load the skill ("Use whenever the user ..."),
with script names dropped to stay within each old length (G12 unchanged or
smaller). reflect is left as is: its pilot rewrite measured worse.

Also: run_evals.py --trigger-only for sweeps, a trigger case for design-qa,
and plugin versions bumped for every changed plugin (G11).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L8KYFKBwgFwRBdcBaR6xCa
2026-11-03 10:41:50 +00:00
..
.claude-plugin fix(skills): rewrite descriptions of 111 skills that never auto-triggered 2026-11-03 10:41:50 +00:00
agents feat(engineering): commit-craft, a clean commit series from a mixed tree 2026-10-31 06:36:29 +00:00
commands feat(engineering): commit-craft, a clean commit series from a mixed tree 2026-10-31 06:36:29 +00:00
skills/commit-craft fix(skills): rewrite descriptions of 111 skills that never auto-triggered 2026-11-03 10:41:50 +00:00
README.md feat(engineering): commit-craft, a clean commit series from a mixed tree 2026-10-31 06:36:29 +00:00

commit-craft

Turn a tangled working tree into a commit series a reviewer can read one commit at a time: one logical change per commit, in an order where each builds, with no secrets and a message that says why.

What it does

Script Job Blocks on
commit_planner.py Groups the working tree into commits: manifest with lockfile, pure moves, formatting, each module's change with its tests, docs, CI. Prints the git add commands .env, keys, tfstate in the tree (held back)
secret_gate.py Scans the lines a commit adds (staged, or a range before push) Provider tokens, high-entropy secrets, sensitive files, conflict markers
message_linter.py Lints one message or a series, matching the repo's convention Vague subjects, 72+ char subjects, large changes with no body, fixup!/WIP left before push

All three are stdlib Python, call git read-only, and never stage, commit or push. Each supports --help, --sample and --output json.

Install

/plugin marketplace add alirezarezvani/claude-skills
/plugin install commit-craft@claude-code-skills

Commands: /cs-commit-craft (plan, gate, commit a series) and /cs-commit-check (check staged work or a range). Agent: cs-commit-craft.

Optional git hooks run the gate and linter on every commit and push:

export COMMIT_CRAFT_SCRIPTS=/path/to/commit-craft/skills/commit-craft/scripts
cp skills/commit-craft/assets/hooks/{pre-commit,commit-msg,pre-push} .git/hooks/

Limits

  • The planner cannot read intent. It never chooses feat or fix, and two unrelated fixes in one file need git add -p.
  • The secret gate is pattern matching at commit time: no live-key verification and no history audit. Use an open-source history scanner for that.
  • WHY_MISSING is a keyword heuristic and only warns.

Origin

Proposed in issue #1004. Built independently from public sources (Git SubmittingPatches, the Linux kernel patch guide, Google's Small CLs, Conventional Commits 1.0.0, the OWASP Secrets Management Cheat Sheet); no code or text from the proposer's pack was used.

MIT © Alireza Rezvani