Commit
Skill weorbitant/compound-engineering-feat-python-plugin/skills/commit
Analyze changes, group into logical units, and create conventional commits with gitmoji. Use when committing code changes.From its SKILL.md
npx -y skills add weorbitant/compound-engineering-feat-python-plugin --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
- 1 stars1 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.
SKILL.md
4.1 KB, as published. Nobody here has run it
Commit Skill
Analyze all uncommitted changes, group them into logical commit units, and create conventional commits with gitmoji β balancing atomicity with density.
Usage
/commit
Commit Format
<type>(<scope>): <emoji> <description>
<optional body>
<emoji> <change description>
<emoji> <change description>
Breaking change: feat(auth)!: π₯ remove legacy token format
Full emoji table (subject + body): references/emoji-table.md.
Body policy
- Single file or self-explanatory change β subject line only, no body.
- Multi-file or non-obvious change β bullet list, each line prefixed with an emoji.
Procedure
Step 1 β Scan
git status
git diff
git diff --cached
git log --oneline -5
If no changes, report "No changes to commit." and stop.
Step 2 β Group into logical units
Priority rules:
- Same feature β view + URL + serializer + tests = one commit.
- Same concern β pure config together; pure tests together; migrations with models.
- File proximity β same directory/module likely related.
- Import analysis β A imports from B and both changed β probably together.
Edge cases: single file β one group, no prompt. All related β one commit. Can't decide β ask user.
Present groups and wait for confirmation:
Group 1 β feat(auth): β¨ add login endpoint
- src/auth/views.py (new)
- src/auth/urls.py (modified)
- tests/auth/test_login.py (new)
Group 2 β chore: π§ update pre-commit config
- .pre-commit-config.yaml (modified)
Commit group 1 first? [Y/n/edit]
Step 3 β Scope per group
Auto-detect:
src/<app>/<module>/β scope<module>- Multiple dirs with common parent β use parent
- Unrelated dirs β ask user
- Root-level config files β no scope
Step 4 β Type per group
- New business logic β
feat - Bug fix β
fix - Only tests β
test - Only docs β
docs - Restructuring β
refactor - Config/tooling β
chore - CI/CD β
ci - Dependencies β
build - Performance β
perf - Formatting only β
style
Ambiguous β ask.
Step 5 β Amend check
Propose --amend only if ALL:
- Last commit has same type and scope
- Last commit NOT pushed (
git log --oneline @{u}..HEADshows it) - Changes extend the same logical unit
Ask: "Last commit was feat(auth): β¨ add login endpoint β these changes extend it. Amend? [Y/n]"
When amending, update the body to include new changes.
Step 6 β Preview
Show full message + file list. Wait for confirm/edit/skip.
Step 7 β Stage and commit
git add <file1> <file2> ...
git commit -m "$(cat <<'EOF'
feat(auth): β¨ add login endpoint
β
add login view with JWT token generation
π§ configure auth URLs in router
π§ͺ add tests for login success and failure
EOF
)"
Amend variant uses git commit --amend -m "$(cat <<'EOF' ... EOF)".
Step 8 β Pre-commit hooks
If the hook fails:
- Read output, identify failure
- Auto-stage any auto-fixes (formatting, imports)
- Create a new commit with the same message β NOT amend (original commit didn't happen)
- If it fails again, show errors and ask user
NEVER skip hooks with --no-verify.
Step 9 β Next group or finish
More groups β back to Step 3. All done β summary:
Done! Created 2 commits:
abc1234 feat(auth): β¨ add login endpoint
def5678 chore: π§ update pre-commit config
What this skill does NOT do
- Push to remote
- Create branches
- Run tests
Balance Principle
- One commit per logical unit β not per file, not per keystroke.
- A "logical unit" is something you'd revert as a whole.
- Different verbs ("add X" and "fix Y") β separate commits.
- Described together ("add login with tests and config") β one commit.
- Prefer fewer meaningful commits over many tiny ones.