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
git add (at least one staged file)
- 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
git diff --cached --stat to get an overview of staged files and change volume
- Run
git diff --cached to examine the actual code changes in detail
- Classify the commit type based on the nature of changes:
feat: new functionality visible to users
fix: bug correction
refactor: code restructuring without behavior change
docs: documentation only
test: adding or updating tests
chore: build process, dependencies, or tooling
perf: performance improvement
ci: CI/CD configuration changes
- 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
git log --oneline -10 to match the project's style conventions
- 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
BREAKING CHANGE: footer if applicable
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 |
No changes staged for commit |
Nothing added to staging area |
Run git add <files> to stage changes before generating the message |
Not a git repository |
Working directory is not inside a git repo |
Run git init or navigate to the repository root |
Ambiguous commit type |
Changes span multiple categories (feature + fix) |
Split into separate commits or use the primary intent as the type |
Scope unclear from file paths |
Changes touch many unrelated directories |
Use the most significant module or omit scope entirely |
Commit message exceeds 72 characters |
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
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: jeremylongshore-claude-code-plugins-plus-skills-generating-s3description: Generating Smart Commits4---5# Generating Smart Commits67## Current State8!`git diff --cached --stat`9!`git log --oneline -5`10!`git status --short`1112## Overview1314Analyze 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.1516## Prerequisites1718- Git repository initialized in the working directory19- Changes staged via `git add` (at least one staged file)20- Git user name and email configured (`git config user.name`, `git config user.email`)21- Understanding of the project's commit message conventions (check recent history)2223## Instructions24251. Run `git diff --cached --stat` to get an overview of staged files and change volume262. Run `git diff --cached` to examine the actual code changes in detail273. Classify the commit type based on the nature of changes:28 - `feat`: new functionality visible to users29 - `fix`: bug correction30 - `refactor`: code restructuring without behavior change31 - `docs`: documentation only32 - `test`: adding or updating tests33 - `chore`: build process, dependencies, or tooling34 - `perf`: performance improvement35 - `ci`: CI/CD configuration changes364. Determine scope from the primary directory or module affected (e.g., `auth`, `api`, `cli`, `db`)375. Check for breaking changes: removed public APIs, changed function signatures, renamed exports, schema migrations386. Check recent commit history with `git log --oneline -10` to match the project's style conventions397. Construct the commit message: `type(scope): imperative description under 72 characters`408. Add a body with bullet points explaining the "why" behind the change if the diff is non-trivial419. Append `BREAKING CHANGE:` footer if applicable4243## Output4445Conventional commit message following this format:4647```48type(scope): imperative description4950- Explanation of what changed and why51- Impact on existing functionality5253BREAKING CHANGE: description (if applicable)54```5556## Error Handling5758| Error | Cause | Solution |59|-------|-------|---------|60| `No changes staged for commit` | Nothing added to staging area | Run `git add <files>` to stage changes before generating the message |61| `Not a git repository` | Working directory is not inside a git repo | Run `git init` or navigate to the repository root |62| `Ambiguous commit type` | Changes span multiple categories (feature + fix) | Split into separate commits or use the primary intent as the type |63| `Scope unclear from file paths` | Changes touch many unrelated directories | Use the most significant module or omit scope entirely |64| `Commit message exceeds 72 characters` | Description too verbose | Shorten to the essential action; move details to the commit body |6566## Examples6768- "Analyze my staged changes and generate a conventional commit message with the right type and scope."69- "Create a commit message for these changes, checking if there are any breaking changes in the API."70- "Generate a smart commit following this project's existing commit style (check the last 10 commits)."7172## Resources7374- Conventional Commits specification: https://www.conventionalcommits.org/en/v1.0.0/75- Angular commit guidelines: https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit76- Git commit best practices: https://cbea.ms/git-commit/7778---79> Converted and distributed by [TomeVault](https://tomevault.io/claim/jeremylongshore) — claim your Tome and manage your conversions.80<!-- tomevault:4.0:skill_md:2026-04-11 -->