git-conventional-commit
Create git commits following the Conventional Commits v1.0.0 specification (conventionalcommits.org). Use when the user asks to commit changes, says "/conventional-commit", or wants a well-structured commit message. Triggers on requests like "commit this", "commit my changes", "create a commit", or any git commit workflow. Analyzes staged/unstaged changes and produces compliant commit messages with proper type, scope, description, body, and footers.
Best use case
git-conventional-commit is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Create git commits following the Conventional Commits v1.0.0 specification (conventionalcommits.org). Use when the user asks to commit changes, says "/conventional-commit", or wants a well-structured commit message. Triggers on requests like "commit this", "commit my changes", "create a commit", or any git commit workflow. Analyzes staged/unstaged changes and produces compliant commit messages with proper type, scope, description, body, and footers.
Teams using git-conventional-commit should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/git-conventional-commit/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How git-conventional-commit Compares
| Feature / Agent | git-conventional-commit | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Create git commits following the Conventional Commits v1.0.0 specification (conventionalcommits.org). Use when the user asks to commit changes, says "/conventional-commit", or wants a well-structured commit message. Triggers on requests like "commit this", "commit my changes", "create a commit", or any git commit workflow. Analyzes staged/unstaged changes and produces compliant commit messages with proper type, scope, description, body, and footers.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Conventional Commit Create git commits that follow the Conventional Commits v1.0.0 specification. ## Workflow ### 1. Gather context Run these in parallel: ``` git status git diff --cached git diff git log --oneline -10 ``` ### 2. Analyze changes - Identify **what** changed (files, functions, features, fixes) - Identify **why** it changed (bug fix, new feature, refactor, etc.) - Group related changes — if changes are unrelated, suggest splitting into multiple commits - Check for sensitive files (.env, credentials, secrets) and warn before staging ### 3. Stage changes - Stage only related changes with `git add <specific-files>` - Never use `git add -A` or `git add .` without confirming with the user - If unstaged changes exist that belong to a different logical change, leave them unstaged ### 4. Write the commit message Format per Conventional Commits v1.0.0: ``` <type>[optional scope]: <description> [optional body] [optional footer(s)] ``` #### Type (required) Pick the most specific type: | Type | When to use | | ---------- | ------------------------------------------------------------------ | | `feat` | New feature or capability (correlates with SemVer MINOR) | | `fix` | Bug fix (correlates with SemVer PATCH) | | `docs` | Documentation only | | `style` | Formatting, whitespace, semicolons — no logic change | | `refactor` | Code change that neither fixes a bug nor adds a feature | | `perf` | Performance improvement | | `test` | Adding or correcting tests | | `build` | Build system or external dependencies (e.g., go.mod, package.json) | | `ci` | CI configuration and scripts | | `chore` | Maintenance tasks that don't modify src or test files | | `revert` | Reverts a previous commit | #### Scope (optional) A noun in parentheses describing the section of the codebase: ``` feat(auth): add OAuth2 login flow fix(parser): handle empty input gracefully docs(readme): update installation steps ``` Derive scope from: package name, module, directory, or feature area. #### Description (required) - Imperative mood: "add" not "added" or "adds" - Lowercase first letter - No period at end - Max ~50 characters for the entire first line (type + scope + description) #### Body (optional) - Separate from description with a blank line - Explain **what** and **why**, not how - Wrap at 72 characters - Use when the description alone is insufficient #### Footer (optional) - Separate from body with a blank line - Format: `token: value` or `token #value` - Use `-` instead of spaces in tokens (except `BREAKING CHANGE`) Common footers: - `BREAKING CHANGE: <description>` — breaking API change (SemVer MAJOR) - `Refs: #123` — reference issues - `Reviewed-by: Name <email>` - `Co-authored-by: Name <email>` #### Breaking changes Indicate with either: 1. An exclamation mark after type/scope, e.g. `feat(api)!: change response format` 2. A `BREAKING CHANGE:` footer with explanation 3. Both for maximum clarity ### 5. Create the commit Use a HEREDOC for multi-line messages: ```bash git commit -m "$(cat <<'EOF' feat(auth): add OAuth2 login flow Implement OAuth2 authorization code flow with PKCE for secure browser-based authentication. Replaces the legacy session-based auth which had CSRF vulnerabilities. BREAKING CHANGE: /api/login now returns a JWT instead of setting a session cookie Refs: #342 EOF )" ``` For single-line commits: ```bash git commit -m "fix(parser): handle empty input without panic" ``` ### 6. Do NOT push Never push to remote unless the user explicitly asks. ## Examples Simple fix: ``` fix: resolve null pointer in user lookup ``` Scoped feature: ``` feat(api): add pagination to list endpoints ``` Multi-line with breaking change: ``` feat(config)!: switch to YAML configuration format Migrate from JSON to YAML for all configuration files. Existing JSON configs are no longer supported. BREAKING CHANGE: configuration files must be in YAML format Refs: #891 ``` Documentation: ``` docs: correct typos in contributing guide ``` Multiple footers: ``` fix(db): prevent connection pool exhaustion Add connection timeout and max idle settings to prevent pool exhaustion under high load. Refs: #456 Reviewed-by: Alice <alice@example.com> ```