Initial commit
This commit is contained in:
81
git-commit/SKILL.md
Normal file
81
git-commit/SKILL.md
Normal file
@@ -0,0 +1,81 @@
|
||||
---
|
||||
name: git-commit
|
||||
description: Create git commits with succinct technical messages. Activates when user requests git commit creation.
|
||||
---
|
||||
|
||||
# Git Commit
|
||||
|
||||
## Overview
|
||||
|
||||
Create clean, technical git commit messages in logical units. Analyze changes and group related modifications into separate commits.
|
||||
|
||||
## Process
|
||||
|
||||
1. Run `git status` and `git diff` to analyze all changes
|
||||
2. Apply grouping algorithm to identify commit units
|
||||
3. For each unit:
|
||||
- Stage only files for that unit
|
||||
- Draft succinct message (1-2 sentences max)
|
||||
- Create commit
|
||||
4. Verify all changes are committed
|
||||
|
||||
## Grouping Algorithm
|
||||
|
||||
1. **Categorize** each file by type (priority order: Fix > Feature > Refactor > Test > Doc > Config)
|
||||
2. **Build dependency graph** (types before code, implementation before tests, refactors before fixes)
|
||||
3. **Merge units** if: same directory AND same type AND <5 files total
|
||||
4. **Keep separate** if: different types OR cross-module changes OR >4 files in group
|
||||
5. **Order commits**: dependencies first, then independents, docs last
|
||||
|
||||
**Change types:**
|
||||
- **Fix**: Bug fixes addressing specific issues
|
||||
- **Feature**: New functionality in related files
|
||||
- **Refactor**: Code restructuring without behavior changes
|
||||
- **Test**: Test additions/modifications (commit with implementation if coupled)
|
||||
- **Doc**: Documentation updates
|
||||
- **Config**: Build config, dependencies, tooling
|
||||
- **Types**: Type definition changes (commit before code using them)
|
||||
|
||||
**Coupling boundaries:**
|
||||
- **Tightly coupled** (one commit): Type changes + code using them, renames affecting imports, implementation + its tests if <3 files
|
||||
- **Independent** (separate commits): Different modules, unrelated bug fixes, separate features, docs
|
||||
|
||||
**Examples:**
|
||||
```
|
||||
✅ Good grouping:
|
||||
Commit 1: Add null check to user validation (src/validation/user.ts)
|
||||
Commit 2: Update UserForm to use new validation (src/forms/UserForm.tsx, src/forms/UserForm.test.ts)
|
||||
Commit 3: Document validation rules (docs/api/validation.md)
|
||||
|
||||
❌ Bad grouping:
|
||||
Commit 1: Update validation and fix tests and add docs (mixes 3 types, unclear scope)
|
||||
```
|
||||
|
||||
**Circular dependencies:**
|
||||
If fix A requires refactor B, create minimal commits preserving buildability: refactor first, then fix.
|
||||
|
||||
## Message Guidelines
|
||||
|
||||
**Focus on WHAT changed in the code:**
|
||||
- "Add null checks to user validation"
|
||||
- "Extract database logic into separate module"
|
||||
- "Fix memory leak in event handler cleanup"
|
||||
|
||||
**Avoid progress/milestone language:**
|
||||
- ❌ "Implement user authentication feature"
|
||||
- ❌ "Continue work on API endpoints"
|
||||
- ❌ "Add tests and improve code quality"
|
||||
|
||||
## Edge Cases
|
||||
|
||||
**Single logical unit**: All changes tightly coupled → one commit
|
||||
**Mixed changes in one file**: Use `git add -p` to stage hunks separately
|
||||
**Too many units (>6)**: Present grouping plan, ask user to confirm or merge
|
||||
|
||||
## Important
|
||||
|
||||
- Never include "Co-Authored-By: Claude" or "Generated with Claude Code"
|
||||
- No heredoc format with attribution footers
|
||||
- Describe technical change, not project progress
|
||||
- Default to multiple small commits over one large commit
|
||||
- Ensure every file is staged exactly once
|
||||
Reference in New Issue
Block a user