
conventional-commits
Generates semantic commit messages following the Conventional Commits specification with proper types, scopes, breaking changes, and footers. Use when users request "write commit message", "conventional commit", "semantic commit", or "format commit".
- Installs
- 472
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/patricio0312rev/skills --skill conventional-commits- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads conventional-commits automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Conventional Commits
Write standardized, semantic commit messages that enable automated versioning and changelog generation.
Core Workflow
- Analyze changes: Review staged files and modifications
- Determine type: Select appropriate commit type (feat, fix, etc.)
- Identify scope: Optional component/module affected
- Write description: Concise summary in imperative mood
- Add body: Optional detailed explanation
- Include footer: Breaking changes, issue references
Commit Message Format
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Commit Types
| Type | Description | Semver | Example |
|---|---|---|---|
feat | New feature | MINOR | feat: add user authentication |
fix | Bug fix | PATCH | fix: resolve login redirect loop |
docs | Documentation only | - | docs: update API reference |
style | Formatting, whitespace | - | style: fix indentation in utils |
refactor | Code change, no feature/fix | - | refactor: extract validation logic |
perf | Performance improvement | PATCH | perf: optimize database queries |
test | Adding/fixing tests | - | test: add unit tests for auth |
build | Build system, dependencies | - | build: upgrade to Node 20 |
ci | CI/CD configuration | - | ci: add GitHub Actions workflow |
chore | Maintenance tasks | - | chore: update .gitignore |
revert | Revert previous commit | - | revert: undo feature flag change |
Scopes
Scopes indicate the area of the codebase affected:
# Component/module scopes
feat(auth): add OAuth2 support
fix(api): handle timeout errors
docs(readme): add installation steps
# File-based scopes
style(eslint): update linting rules
build(docker): optimize image size
# Layer scopes
refactor(service): extract user service
test(e2e): add checkout flow tests
Breaking Changes
Mark breaking changes with ! or BREAKING CHANGE footer:
# Using ! notation
feat(api)!: change response format to JSON:API
# Using footer
feat(api): change response format
BREAKING CHANGE: Response now follows JSON:API specification.
Clients must update their parsers.
Commit Message Examples
Simple Feature
feat: add dark mode toggle
Feature with Scope
feat(ui): add dark mode toggle to settings page
Bug Fix with Issue Reference
fix(auth): resolve session expiration race condition
The session refresh was racing with the expiration check,
causing intermittent logouts.
Fixes #234
Breaking Change
feat(api)!: migrate to v2 response format
BREAKING CHANGE: All API responses now use camelCase keys
instead of snake_case. Update client parsers accordingly.
Migration guide: https://docs.example.com/v2-migration
Multiple Footers
fix(payments): correct tax calculation for EU customers
Updated tax calculation to use customer's billing country
instead of shipping country for digital goods.
Fixes #456
Reviewed-by: Alice
Co-authored-by: Bob <bob@example.com>
Revert Commit
revert: feat(auth): add OAuth2 support
This reverts commit abc123def456.
Reason: OAuth provider has rate limiting issues in production.
Will re-implement with proper caching.
Description Guidelines
Do
- Use imperative mood: "add" not "added" or "adds"
- Keep under 72 characters
- Start with lowercase
- No period at the end
- Be specific and concise
Don't
- "Fixed bug" (too vague)
- "Updated stuff" (not descriptive)
- "WIP" (commit when ready)
- "misc changes" (split into separate commits)
Good Examples
feat: add email verification flow
fix: prevent duplicate form submissions
refactor: extract payment processing to service
perf: cache user preferences in memory
docs: add API authentication examples
Bad Examples
# Too vague
fix: fixed it
update: updates
# Wrong tense
feat: added new feature
fix: fixes the bug
# Too long
feat: add a new feature that allows users to export their data in multiple formats including CSV, JSON, and XML
Body Guidelines
When to include a body:
- Changes need context or explanation
- Complex logic that isn't self-evident
- Breaking changes require migration info
- Multiple related changes in one commit
fix(cache): invalidate user cache on profile update
Previously, profile updates were not reflected until cache expiry.
This caused confusion when users updated their avatar and didn't
see the change immediately.
The fix adds cache invalidation after successful profile updates
and ensures CDN purge for static assets.
Footer Tokens
| Token | Purpose | Example |
|---|---|---|
Fixes | Closes issue | Fixes #123 |
Closes | Closes issue | Closes #456 |
Refs | References issue | Refs #789 |
BREAKING CHANGE | Breaking change | BREAKING CHANGE: description |
Reviewed-by | Reviewer credit | Reviewed-by: Name |
Co-authored-by | Co-author credit | Co-authored-by: Name <email> |
Integration with Tooling
Commitlint Configuration
// commitlint.config.js
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [
2,
'always',
[
'feat', 'fix', 'docs', 'style', 'refactor',
'perf', 'test', 'build', 'ci', 'chore', 'revert'
]
],
'scope-case': [2, 'always', 'kebab-case'],
'subject-case': [2, 'always', 'lower-case'],
'subject-max-length': [2, 'always', 72],
'body-max-line-length': [2, 'always', 100]
}
};
Husky Pre-commit Hook
# .husky/commit-msg
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit "$1"
Package.json Setup
{
"devDependencies": {
"@commitlint/cli": "^18.0.0",
"@commitlint/config-conventional": "^18.0.0",
"husky": "^8.0.0"
},
"scripts": {
"prepare": "husky install"
}
}
Semantic Release Integration
Conventional commits enable automated versioning:
# .releaserc.yml
branches:
- main
plugins:
- "@semantic-release/commit-analyzer"
- "@semantic-release/release-notes-generator"
- "@semantic-release/changelog"
- "@semantic-release/npm"
- "@semantic-release/git"
Version Bumping Rules
| Commit Type | Version Bump | Example |
|---|---|---|
feat | Minor (0.X.0) | 1.2.0 → 1.3.0 |
fix | Patch (0.0.X) | 1.2.0 → 1.2.1 |
perf | Patch (0.0.X) | 1.2.0 → 1.2.1 |
BREAKING CHANGE | Major (X.0.0) | 1.2.0 → 2.0.0 |
| Others | No bump | 1.2.0 → 1.2.0 |
Commit Message Generator
When analyzing changes, generate a commit message:
# 1. Check staged changes
git diff --cached --name-only
# 2. Analyze change type
# - New files = likely feat
# - Modified test files = test
# - Modified docs = docs
# - Bug-related keywords = fix
# 3. Identify scope from path
# src/components/Button.tsx → components or ui
# src/services/auth.ts → auth or services
# 4. Generate message
feat(ui): add loading state to Button component
Best Practices
- One logical change per commit: Don't mix features with fixes
- Commit early, commit often: Small, focused commits
- Write for reviewers: Messages should explain why, not just what
- Reference issues: Link to tickets/issues when applicable
- Use scopes consistently: Establish team conventions
- Review before committing:
git diff --cachedto verify changes
Output Checklist
Every commit message should:
- Start with valid type (feat, fix, docs, etc.)
- Use imperative mood in description
- Keep description under 72 characters
- Include scope when applicable
- Mark breaking changes with
!or footer - Reference related issues in footer
- Provide body for complex changes
- Follow team's scope conventions
FAQ
What does the conventional-commits skill do?
Generates semantic commit messages following the Conventional Commits specification with proper types, scopes, breaking changes, and footers. Use when users request "write commit message", "conventional commit", "semantic commit", or "format commit".
How do I install conventional-commits?
Run npx skills add https://github.com/patricio0312rev/skills --skill conventional-commits in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/conventional-commits/ (personal) or .claude/skills/conventional-commits/ (project).
Which AI agents can use conventional-commits?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is conventional-commits safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains conventional-commits?
It is published by patricio0312rev in patricio0312rev/skills. It has 472 recorded installs.
More from patricio0312rev/skills
framer-motion-animator
patricio0312rev/skills
Creates smooth animations and micro-interactions using Framer Motion including page transitions, gestures, scroll-based animations, and orchestrated sequences. Use when users request "add animation", "framer motion", "page transition", "animate component", or "micro-interactions".
eslint-prettier-config
patricio0312rev/skills
Configures ESLint and Prettier for consistent code quality with TypeScript, React, and modern best practices. Use when users request "ESLint setup", "Prettier config", "linting configuration", "code formatting", or "lint rules".
postman-collection-generator
patricio0312rev/skills
Generates Postman collection JSON files from Express, Next.js, Fastify, Hono, or other API routes. Scans route definitions, extracts endpoints, methods, params, and creates importable collections. Use when users request "generate postman collection", "export to postman", "create postman file", or "postman import".
changelog-writer
patricio0312rev/skills
Generates changelogs and release notes from git commits, PR titles, and issue references. Organizes changes by impact type (breaking, features, fixes, improvements), formats according to Keep a Changelog standard, and provides version tagging and semantic versioning suggestions. Use when users request "create changelog", "write release notes", "document version changes", or "prepare release".
bruno-collection-generator
patricio0312rev/skills
Generates Bruno collection files (.bru) from Express, Next.js, Fastify, or other API routes. Creates organized collections with environments, authentication, and folder structure for the open-source Bruno API client. Use when users request "generate bruno collection", "bruno api testing", "create bru files", or "bruno import".
jsdoc-typescript-docs
patricio0312rev/skills
Documents TypeScript code with JSDoc comments, generates API documentation, and creates type-safe documentation. Use when users request "JSDoc", "code documentation", "API docs", "TypeDoc", or "inline documentation".
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.