git:20260224.ea1af26 to git:20260225.4c54924

14 added, 12 removed. Audit A to A.

---
name: commit-detection
description: Detects optimal commit type from git changes. Use when analyzing commits, determining commit type, or before committing.
allowed-tools: Bash, Read, Grep
---
# Commit Type Detection Skill
Expert knowledge for detecting the optimal conventional commit type.
## Detection Algorithm
### Step 1: Gather Data
```bash
# Get modified files
git diff --name-only
git diff --staged --name-only
# Get change statistics
git diff --stat
git diff --staged --stat
# Check for keywords in diff
git diff | grep -i "fix\|bug\|error" | head -5
```
### Step 2: Categorize Files
| Category | File Patterns |
|----------|---------------|
| docs | `*.md`, `*.txt`, `*.rst`, `README*`, `CHANGELOG*` |
| test | `*.test.*`, `*.spec.*`, `__tests__/*`, `test/*` |
| config | `*.json`, `*.yml`, `*.yaml`, `*.toml`, `.*rc` |
| ci | `.github/*`, `.gitlab-ci.yml`, `Jenkinsfile` |
| build | `package.json`, `Makefile`, `webpack.*`, `vite.*` |
| style | Only whitespace, formatting changes |
| src | `*.ts`, `*.js`, `*.py`, `*.go`, `*.rs`, etc. |
### Step 3: Apply Rules
```
IF only docs files changed:
→ docs
IF only test files changed:
→ test
IF only config/build files changed:
→ chore
IF only CI files changed:
→ ci
IF diff contains "fix", "bug", "error", "issue", "resolve":
→ fix
IF new files added with business logic:
→ feat
IF files renamed/moved without logic change:
→ refactor
IF performance keywords ("optimize", "perf", "speed", "cache"):
→ perf
IF formatting only (whitespace, semicolons):
→ style
DEFAULT:
→ Use /commit-pro:commit for smart analysis
```
### Step 4: Determine Scope
Extract scope from primary directory:
```
src/components/Button.tsx → ui or button
src/api/auth.ts → auth
lib/utils/date.ts → utils
server/routes/user.ts → user
```
## Quick Reference
- | Type | When | Version Bump | Git Tag |
- |------|------|-------------|---------|
- | `feat` | New functionality | **MINOR** (1.X → 1.X+1) | `vX.Y.0` |
- | `fix` | Bug correction | PATCH | No |
- | `docs` | Documentation only | PATCH | No |
- | `style` | Formatting only | PATCH | No |
- | `refactor` | Code restructure | PATCH | No |
- | `perf` | Performance | PATCH | No |
- | `test` | Tests only | PATCH | No |
- | `build` | Build/deps | PATCH | No |
- | `ci` | CI/CD config | PATCH | No |
- | `chore` | Maintenance | PATCH | No |
+ | Type | When | Version Bump |
+ |------|------|-------------|
+ | `feat` | New functionality | PATCH |
+ | `fix` | Bug correction | PATCH |
+ | `docs` | Documentation only | PATCH |
+ | `style` | Formatting only | PATCH |
+ | `refactor` | Code restructure | PATCH |
+ | `perf` | Performance | PATCH |
+ | `test` | Tests only | PATCH |
+ | `build` | Build/deps | PATCH |
+ | `ci` | CI/CD config | PATCH |
+ | `chore` | Maintenance | PATCH |
+
+ > MINOR/MAJOR bumps are **manual user decisions**, never automatic.
## Examples
**Example 1: Only README changed**
```
Files: README.md
→ /commit-pro:docs
```
**Example 2: New component + test**
```
Files: src/Button.tsx, src/Button.test.tsx
→ /commit-pro:feat (primary is new feature)
```
**Example 3: Fix in existing file**
```
Files: src/api/auth.ts
Diff contains: "fix login bug"
→ /commit-pro:fix
```