commit-craft
Plans a reviewable series of commits from a mixed working tree, blocks staged secrets and .env files, and lints commit messages, using bundled Python scripts.
- Kind
- Skill
- Works with
- Claude Code
- Languages
- Python
- Source
- Claude Skills (Alireza Rezvani) @ e4a1dc369590
- Path
- engineering/commit-craft/skills/commit-craft/SKILL.md
- Jobs
- Git workflow, Guardrails
- Topics
- Git & pull requests
Credit
- Made by
- alirezarezvani
- Original
- github.com/alirezarezvani/claude-skills/blob/e4a1dc3695908dd5…
- License
- MIT
Listed by Skill Manifest; not made by us.
InstallInstall it from a plugin marketplace.
/plugin marketplace add alirezarezvani/claude-skills
Install factsScanned 2 Nov 2026
- Adds
- .claude/skills/commit-craft/ (the skill folder)
- 9 file(s) the skill refers to
- Runs scripts
- Yes
- scripts/commit_planner.py
- scripts/secret_gate.py
- scripts/message_linter.py
- shell block in the text
- Uses the network
- None found
- Needs secrets
- None found
- Source revision
- e4a1dc369590
- Licence
- MIT
- Last activity
- 31 Oct 2026
- Review
- Reviewed
Found by a static scan of the stored text; nothing is run. “None found” is not a guarantee, so read what you install before you run it.
- Only the main file is read; other files in the folder are not scanned
# Commit Craft
> **Portability:** 3 stdlib Python scripts that call `git` read-only. No network.
> **The scripts never stage, commit or push.** You do, one group at a time, after the gate passes.
Agents leave large mixed diffs: a feature, a reformat, a dependency bump and a
stray `.env`, all in one tree. Committed as one blob, that diff cannot be
reviewed, reverted or bisected. This skill turns it into a series where each
commit is one logical change, builds on its own, holds no secrets and says why.
## Workflow
```bash
# 1 - Plan: which commits, in which order, staged how?
python scripts/commit_planner.py # working tree vs HEAD, untracked included
# 2 - For each group: stage exactly its files, then gate what is staged
git add -- <files of group N> # or git add -p for MIXED_FORMATTING files
python scripts/secret_gate.py # blocks before the commit exists
# 3 - Write the message, lint it, commit
python scripts/message_linter.py -m "<message>" --staged && git commit -m "<message>"
# 4 - Before push: the whole series, and proof every commit builds
python scripts/message_linter.py --range @{upstream}..HEAD
…