Guide branch creation, commit messages, and titles so the repo’s semantic workflow is enforced
Scanned 9/12/2026
Install to Claude Code
npx -y skills add Unique-AG/ai --skill git-conventional-commits --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Git Conventional Commits?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/unique-ag-git-conventional-commits)More formats (shields.io, HTML) on the badges page.
---
name: git-conventional-commits
description: Guide branch creation, commit messages, and titles so the repo’s semantic workflow is enforced
license: MIT
compatibility: claude cursor opencode
metadata:
version: "1.0.0"
languages: all
audience: developers
workflow: documentation
since: "2026-02-25"
---
# When to use
- When the user authors commits
- When the user asks about conventional commits
## Use Instead [if available]
- Use `pr-create` for end-to-end PR title/body drafting and Jira-linking workflow.
- Use `github-pull-request-handling` for resolving and replying to existing PR review conversations.
## Standard
Apply the [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/) specification for commit messages and PR titles.
## Allowed types
Use exactly one of these types in PR titles and commits:
| Type | Purpose |
|---------------|---------------------------------------------|
| `chore` | Maintenance, tooling, config changes |
| `ci` | CI/CD pipeline changes |
| `deploy` | Deployment-related changes |
| `docs` | Documentation only |
| `feat` | New feature |
| `fix` | Bug fix |
| `improvement` | General improvement (non-feature, non-fix) |
| `perf` | Performance improvement |
| `build` | Build system/dependency changes |
| `refactor` | Code refactoring, no behavior change |
| `style` | Formatting only, no behavior change |
| `test` | Adding or updating tests |
## Format
```
<type>[(scope)]: <description>
[optional body]
[optional footer(s)]
```
- **Scope** (optional): Must match `[a-z:_-]+` (lowercase letters, digits, underscores, colons, hyphens). Examples: `sdk`, `api`, `my_component`.
- **Description**: Short, imperative summary. No period at the end.
## Breaking changes
For breaking changes, append `!` after type/scope and include a `BREAKING CHANGE:` footer when relevant.
Example:
```
feat(api)!: switch auth token format
BREAKING CHANGE: clients must re-authenticate with the new token format
```
## Body and footers
- Body is optional and should explain motivation ("why"), not only implementation details.
- Separate body from subject with one blank line.
- Use explicit footers for traceability, such as:
- `BREAKING CHANGE: <description>`
- `Refs: UN-12345` or `Refs: #123`
- `Reviewed-by: <name>`
## Commit Summary
- `feat(toolkit): add streaming support`
- `feat(sdk): update message endpoint`
- `ci: add semantic PR validation`
## Branch & commit workflow
1. **Check current branch**
- Run `git branch --show-current`; do not commit directly to `master`/`main`
- If you are still on the base branch, create a feature branch following this pattern: `fix/<scope>/<short-slug>` or `feat/<scope>/<short-slug>`
- Keep branch names short but descriptive (e.g., `fix/payment/null-check`)
2. **Review & stage**
- Inspect your diff (`git diff` for unstaged, `git diff --cached` for staged)
- Stage with `git add -A` once you understand all changes
- Optionally include `Refs: <ticket>` block in the commit body to link Jira/Ticket numbers (the repo tooling can pick this up)
3. **Write the commit**
- Use the `<type>(<scope>): <description>` format
- Keep the subject ≤ 72 characters without trailing period
- Add a blank line and optional body for context, explaining why the change is necessary
4. **Examples**
- `fix(api): handle missing authorization header`
- `feat(payments): add refund webhook handler`
- `chore(deps): upgrade pytest to 9.0`
## Branch/commit rules
- Always branch before committing (avoid `master`/`main`)
- Use imperative language and don’t end with punctuation
- Keep commits focused on a single concern
- Reference tickets/issue IDs in the `Refs:` section when relevant
## Quick checklist
Before finalizing a commit message or PR title:
- [ ] Starts with a valid type
- [ ] Scope is specific and relevant
- [ ] Description is imperative and has no trailing period
- [ ] First line is under 72 characters
- [ ] Breaking changes use `!` and/or a `BREAKING CHANGE:` footer
- [ ] Body explains motivation for non-trivial changesIs this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!