git-commitlisted
Install: claude install-skill sergeyklay/.agents
# Git Commit
## Workflow
### Step 1: Identify changes and group atomically
```bash
git status --short
git diff
git diff --cached
```
Each commit = one logical change. Split unrelated changes into separate commits.
| Situation | Commits |
| ---------------------------------- | --------- |
| New service + its tests | 1 commit |
| New feature + unrelated config fix | 2 commits |
| Multiple files for one feature | 1 commit |
- If user says "commit all" - group into logical atomic commits
- If ambiguous - ask which files and grouping
### Step 2: Check branch safety (BLOCKING)
```bash
git branch --show-current
```
Protected branches: `main`, `master`, `develop`, `release/*`, `hotfix/*`.
**STOP if on a protected branch.** Do not commit. Do not proceed to Step 3. Instead:
1. Inform the user: "Cannot commit to `<branch>` - it is a protected branch."
2. Create a feature branch: `git checkout -b <type>/<kebab-description>`
3. Only then continue to Step 3.
If on a feature branch: proceed.
#### Branch naming convention
Format: `<type>/<kebab-case-description>`
| Type | Use Case | Example |
| ---------- | ------------------ | ---------------------------------- |
| `feat` | New feature | `feat/bill-reminders` |
| `fix` | Bug fix | `fix/null-amount-validation` |
| `refactor` | Code restructuring | `refactor/extract-payment-service` |
| `chore`