commit-messages
SKILL.md
Commit Message Skill
Generate consistent, informative commit messages following the Conventional Commits specification.
When to Use This Skill
- User asks to "commit", "write a commit message", or "prepare commit"
- User has staged changes and mentions commits
- Before any
git commitcommand
Process
- Analyze changes: Run
git diff --stagedto see what's being committed - Identify the type: Determine the primary change category
- Find the scope: Identify the main area affected
- Write the message: Follow the format below
Commit Message Format
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
Types
| Type | Description | Example |
|---|---|---|
feat |
New feature | feat(auth): add OAuth2 login |
fix |
Bug fix | fix(api): handle null response |
docs |
Documentation only | docs(readme): add setup instructions |
style |
Formatting, no code change | style: fix indentation |
refactor |
Code change, no new feature/fix | refactor(db): extract query builder |
perf |
Performance improvement | perf(search): add result caching |
test |
Adding/fixing tests | test(auth): add login unit tests |
build |
Build system changes | build: update webpack config |
ci |
CI configuration | ci: add GitHub Actions workflow |
chore |
Maintenance tasks | chore(deps): update dependencies |
revert |
Revert previous commit | revert: feat(auth): add OAuth2 |
Scope
The scope should be a noun describing the section of the codebase:
auth,api,db,ui,config- Feature names:
search,checkout,dashboard - Or omit if change is broad
Subject Line Rules
- Use imperative mood: "add" not "added" or "adds"
- Don't capitalize first letter after colon
- No period at the end
- Max 72 characters total
Body (when needed)
- Separate from subject with blank line
- Explain what and why, not how
- Wrap at 72 characters
- Use bullet points for multiple changes
Footer (when needed)
BREAKING CHANGE:for breaking changesFixes #123to close issuesRefs #456to reference without closing
Examples
Simple feature
feat(search): add fuzzy matching support
Implement Levenshtein distance algorithm for typo tolerance
in search queries. Configurable via FUZZY_THRESHOLD env var.
Bug fix with issue reference
fix(cart): prevent duplicate items on rapid clicks
Add debounce to add-to-cart button and check for existing
items before insertion.
Fixes #234
Breaking change
feat(api)!: change response format to JSON:API
BREAKING CHANGE: API responses now follow JSON:API spec.
All clients need to update their parsers.
- Wrap data in `data` object
- Move metadata to `meta` object
- Add `links` for pagination
Multiple related changes
refactor(auth): consolidate authentication logic
- Extract JWT handling to dedicated service
- Move session management from controller to middleware
- Add refresh token rotation
This prepares for the upcoming OAuth2 integration.
Output
When generating a commit message:
- Show the staged changes summary
- Propose the commit message
- Explain the type/scope choice if non-obvious
- Ask if the user wants to proceed or modify
Weekly Installs
10
Repository
thedecipherist/…-masteryGitHub Stars
441
First Seen
Jan 27, 2026
Security Audits
Installed on
codex9
cursor9
opencode8
gemini-cli8
claude-code7
amp7