Skillshub generating-smart-commits
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/generating-smart-commits" ~/.claude/skills/comeonoliver-skillshub-generating-smart-commits && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/generating-smart-commits/SKILL.mdsource content
Generating Smart Commits
Current State
!
git diff --cached --stat
!git log --oneline -5
!git status --short
Overview
Analyze staged git changes and generate Conventional Commits messages with accurate type classification, scope detection, and breaking change identification. Supports
feat, fix, docs, style, refactor, test, chore, perf, ci, and build types following the Conventional Commits 1.0.0 specification.
Prerequisites
- Git repository initialized in the working directory
- Changes staged via
(at least one staged file)git add - Git user name and email configured (
,git config user.name
)git config user.email - Understanding of the project's commit message conventions (check recent history)
Instructions
- Run
to get an overview of staged files and change volumegit diff --cached --stat - Run
to examine the actual code changes in detailgit diff --cached - Classify the commit type based on the nature of changes:
: new functionality visible to usersfeat
: bug correctionfix
: code restructuring without behavior changerefactor
: documentation onlydocs
: adding or updating teststest
: build process, dependencies, or toolingchore
: performance improvementperf
: CI/CD configuration changesci
- Determine scope from the primary directory or module affected (e.g.,
,auth
,api
,cli
)db - Check for breaking changes: removed public APIs, changed function signatures, renamed exports, schema migrations
- Check recent commit history with
to match the project's style conventionsgit log --oneline -10 - Construct the commit message:
type(scope): imperative description under 72 characters - Add a body with bullet points explaining the "why" behind the change if the diff is non-trivial
- Append
footer if applicableBREAKING CHANGE:
Output
Conventional commit message following this format:
type(scope): imperative description - Explanation of what changed and why - Impact on existing functionality BREAKING CHANGE: description (if applicable)
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Nothing added to staging area | Run to stage changes before generating the message |
| Working directory is not inside a git repo | Run or navigate to the repository root |
| Changes span multiple categories (feature + fix) | Split into separate commits or use the primary intent as the type |
| Changes touch many unrelated directories | Use the most significant module or omit scope entirely |
| Description too verbose | Shorten to the essential action; move details to the commit body |
Examples
- "Analyze my staged changes and generate a conventional commit message with the right type and scope."
- "Create a commit message for these changes, checking if there are any breaking changes in the API."
- "Generate a smart commit following this project's existing commit style (check the last 10 commits)."
Resources
- Conventional Commits specification: https://www.conventionalcommits.org/en/v1.0.0/
- Angular commit guidelines: https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit
- Git commit best practices: https://cbea.ms/git-commit/