Write commit messages, changelogs, release notes, and manage versioning following Conventional Commits with required scope. Use when the user asks for a commit message, changelog, release notes, versioning, tagging, or how to format commits.
feat(auth): add OAuth2 social login
fix(api): prevent race condition in user creation
docs(readme): update installation instructions
refactor(db)!: migrate from MySQL to PostgreSQL
BREAKING CHANGE: Database schema incompatible with v1.x
chore(deps): upgrade TypeScript to v5
test(api): add integration tests for user endpoints
perf(search): optimize query with database index
2. Changelog
Group by type (Added, Changed, Fixed, Removed, Security).
One line per item; link to PR/commit when possible.
Put newest entries at the top (or follow existing CHANGELOG style).
3. Release Notes
User-facing summary of the release.
Highlights and breaking changes first; then full list or link to changelog.
Version and date in title or header.
4. Versioning (Semantic Versioning)
Use SemVer (MAJOR.MINOR.PATCH): MAJOR for breaking changes, MINOR for new features, PATCH for bug fixes.
For complete versioning guide: See reference/VERSIONING.md, which covers:
SemVer format and version bump rules
Pre-release versions (alpha, beta, rc)
Determining version from Conventional Commits
Examples and best practices
5. Tagging and Release Management
Create annotated tags (git tag -a v1.2.3 -m "Release v1.2.3") with v prefix. Use automated tools (semantic-release, release-please) or manual workflow (update version, CHANGELOG, commit, tag, push).
For complete release guide: See reference/RELEASES.md, which covers:
Changelog/release notes match what actually changed
Version bump follows SemVer based on change type
Tag created and pushed for releases (annotated tag with git tag -a)
GitHub Release created with release notes (if applicable)
Cross-Skill Integration
Situation
Skill to invoke
How
Need to version based on commit history
Use SemVer rules in Section 4 above
Automated: semantic-release / release-please
Commit includes security fix
security-reviewer skill
Read skills/security-reviewer/SKILL.md to verify fix
Commit includes breaking API change
architect / documentation skill
Update API docs and write ADR
Revert commit needed
Use git revert <SHA>
Creates new commit that undoes changes (safe; don't use git reset)
See also:ci-cd skill for automating releases in CI/CD pipelines.
1---2name: git-commits3description: Write commit messages, changelogs, release notes, and manage versioning following Conventional Commits with required scope. Use when the user asks for a commit message, changelog, release notes, versioning, tagging, or how to format commits.4---56# Git / Commits Skill78## Core Philosophy910**"Commits tell a story; changelogs tell users what changed."**1112Write clear, consistent commit messages and changelogs so history is readable and releases are understandable.1314---1516## Protocol1718### 1. Commit Message Format1920Follow **[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)** when the project does not specify otherwise:2122```23<type>(<scope>): <short summary>2425[optional body]2627[optional footer(s)]28```2930**Format Rules:**31- `<type>`: Required, lowercase type from list below32- `(<scope>)`: **Required**, noun describing section of codebase (e.g., `api`, `auth`, `ui`, `db`)33- `<short summary>`: Required, imperative mood, lowercase, no period, ~72 chars max34- Breaking changes: Add `!` after scope: `feat(api)!: drop support for Node 12`3536**Scope Naming:**37- Use **lowercase** nouns (e.g., `api`, not `API`)38- Be **specific** but not too granular (e.g., `auth` not `login-form-button`)39- Common scopes: `api`, `auth`, `ui`, `db`, `cli`, `docs`, `config`, `deps`, `tests`, `ci`, `build`40- For components: `user-service`, `payment-flow`, `dashboard`41- For features: `oauth`, `search`, `notifications`42- Be consistent across the project (check `git log --oneline` for existing patterns)4344**Types:** `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `perf`, `ci`, `build`, `revert`.4546- **feat**: New feature for the user (triggers MINOR bump)47- **fix**: Bug fix for the user (triggers PATCH bump)48- **docs**: Documentation only changes49- **style**: Code style changes (formatting, whitespace, no logic change)50- **refactor**: Code change that neither fixes a bug nor adds a feature51- **test**: Adding or updating tests52- **chore**: Maintenance tasks (deps, tooling, config)53- **perf**: Performance improvement54- **ci**: CI/CD configuration and scripts55- **build**: Build system or external dependencies56- **revert**: Reverts a previous commit5758**Breaking Changes:**59- Option 1: Add `!` after scope: `refactor(api)!: drop deprecated endpoints`60- Option 2: Footer: `BREAKING CHANGE: description of what broke`61- Both trigger MAJOR version bump6263**Body:** Use when you need to explain "why", context, or side effects. Leave blank line after summary.6465**Footers:** `BREAKING CHANGE: <description>`, `Fixes #123`, `Closes #456`, `Refs #789`6667**Examples:**68```69feat(auth): add OAuth2 social login70fix(api): prevent race condition in user creation71docs(readme): update installation instructions72refactor(db)!: migrate from MySQL to PostgreSQL7374BREAKING CHANGE: Database schema incompatible with v1.x75chore(deps): upgrade TypeScript to v576test(api): add integration tests for user endpoints77perf(search): optimize query with database index78```7980### 2. Changelog8182- Group by type (Added, Changed, Fixed, Removed, Security).83- One line per item; link to PR/commit when possible.84- Put newest entries at the top (or follow existing `CHANGELOG` style).8586### 3. Release Notes8788- User-facing summary of the release.89- Highlights and breaking changes first; then full list or link to changelog.90- Version and date in title or header.9192### 4. Versioning (Semantic Versioning)9394Use **SemVer** (`MAJOR.MINOR.PATCH`): MAJOR for breaking changes, MINOR for new features, PATCH for bug fixes.9596**For complete versioning guide:** See [reference/VERSIONING.md](reference/VERSIONING.md), which covers:97- SemVer format and version bump rules98- Pre-release versions (alpha, beta, rc)99- Determining version from Conventional Commits100- Examples and best practices101102### 5. Tagging and Release Management103104Create annotated tags (`git tag -a v1.2.3 -m "Release v1.2.3"`) with `v` prefix. Use automated tools (semantic-release, release-please) or manual workflow (update version, CHANGELOG, commit, tag, push).105106**For complete release guide:** See [reference/RELEASES.md](reference/RELEASES.md), which covers:107- Tagging releases (annotated tags, naming conventions)108- Automated release workflow (semantic-release, release-please, standard-version)109- Manual release workflow (step-by-step)110- Commands reference (git tag, gh release, npm version)111- Troubleshooting and best practices112113**Project Conventions:**114- Always respect existing project conventions if they differ from this standard115- Check project's CONTRIBUTING.md or git history for established patterns116- If project requires Jira ticket prefixes (e.g., `feat(api): PROJ-123 add endpoint`), include them117- Scope is **required** by this standard; if project allows scope-less commits, follow project rules118119**Reference:** [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)120121---122123## Checklist124125- [ ] Type is lowercase and valid (feat, fix, docs, etc.)126- [ ] **Scope is present** and describes codebase section (api, auth, ui, db, etc.)127- [ ] Summary is imperative mood, lowercase, no period, ~72 chars max128- [ ] Breaking changes use `!` after scope or `BREAKING CHANGE:` footer129- [ ] Body explains "why" when needed (leave blank line after summary)130- [ ] Footers follow format: `BREAKING CHANGE:`, `Fixes #123`, `Closes #456`131- [ ] Changelog/release notes match what actually changed132- [ ] Version bump follows SemVer based on change type133- [ ] Tag created and pushed for releases (annotated tag with `git tag -a`)134- [ ] GitHub Release created with release notes (if applicable)135136---137138## Cross-Skill Integration139140| Situation | Skill to invoke | How |141|-----------|----------------|-----|142| Need to version based on commit history | Use SemVer rules in Section 4 above | Automated: `semantic-release` / `release-please` |143| Commit includes security fix | **security-reviewer** skill | Read `skills/security-reviewer/SKILL.md` to verify fix |144| Commit includes breaking API change | **architect** / **documentation** skill | Update API docs and write ADR |145| Revert commit needed | Use `git revert <SHA>` | Creates new commit that undoes changes (safe; don't use `git reset`) |146147**See also:** **ci-cd** skill for automating releases in CI/CD pipelines.
Run npx skillmds@latest add micaelmalta/git-commits in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Write commit messages, changelogs, release notes, and manage versioning following Conventional Commits with required scope. Use when the user asks for a commit message, changelog, release notes, versioning, tagging, or how to format commits. It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Capability flags: makes network calls. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
micaelmalta (@micaelmalta) published this skill. Their other Agent Skills are listed on their SkillMD profile.