# Git Commit

> Create conventional commit messages. Use when committing changes or writing commit messages.

- Skill: `diegosouzapw/git-commit-3` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add diegosouzapw/git-commit-3`
- Raw SKILL.md: https://api.skillmd.com/api/skills/diegosouzapw/git-commit-3/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: diegosouzapw (https://skillmd.com/u/diegosouzapw)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/diegosouzapw/git-commit-3

---


## Conventional Commits Format

```
<type>(<scope>): <subject>

<body>

<footer>
```

## Types

| Type | Description |
|------|-------------|
| `feat` | New feature |
| `fix` | Bug fix |
| `docs` | Documentation only |
| `style` | Formatting, no code change |
| `refactor` | Code restructuring, no behavior change |
| `perf` | Performance improvement |
| `test` | Adding/updating tests |
| `build` | Build system or dependencies |
| `ci` | CI/CD configuration |
| `chore` | Maintenance tasks |
| `revert` | Reverting previous commit |

## Rules

### Subject Line
- Max 50 characters
- Imperative mood ("add" not "added")
- No period at end
- Lowercase

### Body (optional)
- Wrap at 72 characters
- Explain what and why, not how
- Separate from subject with blank line

### Footer (optional)
- Reference issues: `Closes #123`, `Fixes #456`
- Breaking changes: `BREAKING CHANGE: description`

## Examples

### Simple
```
feat(auth): add OAuth2 login support
```

### With Body
```
fix(api): handle null response from payment gateway

The payment gateway occasionally returns null instead of an error
object when the service is degraded. This caused unhandled exceptions.

Added null check and appropriate error handling.

Fixes #789
```

### Breaking Change
```
refactor(api)!: change user endpoint response format

BREAKING CHANGE: The /api/users endpoint now returns an object
with a `data` wrapper instead of a raw array.

Before: [{ id: 1, name: "John" }]
After: { data: [{ id: 1, name: "John" }], meta: { total: 1 } }
```

## Commands
```bash
# Stage and commit
git add .
git commit -m "feat(scope): description"

# Amend last commit
git commit --amend

# Interactive rebase to fix commits
git rebase -i HEAD~3
```

