5.8 KiB
5.8 KiB
Commit Best Practices Skill - Usage Examples
Quick Reference
# Pre-commit validation (full)
/commit-best-practices check-pre-commit
# Pre-commit validation (quick - skip tests/lint)
/commit-best-practices check-pre-commit quick:true
# Review last commit
/commit-best-practices review-commit
# Review specific commit
/commit-best-practices review-commit commit:abc123
# Check if safe to amend
/commit-best-practices amend-guidance
# Amend with force (bypass safety)
/commit-best-practices amend-guidance force:true
# Revert guidance for commit
/commit-best-practices revert-guidance commit:abc123
# Workflow tips (all)
/commit-best-practices workflow-tips
# Workflow tips (specific focus)
/commit-best-practices workflow-tips focus:commit
/commit-best-practices workflow-tips focus:branch
/commit-best-practices workflow-tips focus:merge
Workflow Example 1: Safe Commit Flow
Developer: "I want to commit my changes"
Agent:
1. Runs: /commit-best-practices check-pre-commit
2. IF checks fail:
- Shows: "Tests failing, debug code found"
- Blocks commit
- Provides guidance to fix
3. IF checks pass:
- Continues with commit workflow
- Generates message
- Creates commit
- Reviews commit quality
Workflow Example 2: Amend Safety Check
Developer: "I need to amend my last commit"
Agent:
1. Runs: /commit-best-practices amend-guidance
2. Checks:
- Not pushed to remote? ✓
- Same author? ✓
- Not on main/master? ✓
3. Result: SAFE - provides amend instructions
OR if unsafe:
3. Result: UNSAFE - commit already pushed
- Shows alternatives (new commit, revert)
- Blocks amend
Workflow Example 3: Commit Review & Improvement
Developer commits code
Agent (automatically):
1. Runs: /commit-best-practices review-commit
2. Analyzes:
- Message quality: GOOD
- Atomicity: ✓ single feature
- Tests: ⚠ missing
- Score: 72/100
3. Suggests:
- "Good commit! Consider adding unit tests."
- "Safe to push with minor note."
Script Output Examples
pre-commit-check.sh
{
"status": "fail",
"quick_mode": false,
"checks": {
"tests": {"status": "fail", "message": "Tests failing"},
"lint": {"status": "pass", "message": "Linting passed"},
"debug_code": {"status": "fail", "count": 3, "locations": ["src/auth.js:42: console.log(user)"]},
"todos": {"status": "warn", "count": 1, "locations": ["src/auth.js:56: TODO: refactor"]},
"merge_markers": {"status": "pass", "count": 0, "locations": []}
}
}
commit-reviewer.py
{
"commit": "abc123",
"author": "John Doe <john@example.com>",
"date": "2025-10-13",
"message": {
"subject": "feat(auth): add OAuth authentication",
"subject_length": 38,
"conventional": true,
"type": "feat",
"scope": "auth"
},
"changes": {
"files_changed": 5,
"insertions": 234,
"deletions": 12,
"test_files": 1
},
"quality": {
"atomic": true,
"message_quality": "excellent",
"test_coverage": true,
"issues": []
},
"score": 95
}
amend-safety.sh
{
"safe": true,
"recommendation": "safe",
"commit": "abc123",
"author": "John Doe <john@example.com>",
"branch": "feature/oauth",
"checks": {
"not_pushed": {"status": "pass", "message": "Commit not pushed to origin/feature/oauth"},
"same_author": {"status": "pass", "message": "You are the commit author"},
"safe_branch": {"status": "pass", "message": "On feature branch: feature/oauth"},
"collaborators": {"status": "pass", "message": "Solo work on branch"}
}
}
revert-helper.sh
{
"commit": "abc123",
"original_message": "feat(auth): add OAuth authentication",
"type": "feat",
"scope": "auth",
"files_affected": 5,
"revert_message": "revert: feat(auth): add OAuth authentication\n\nThis reverts commit abc123.\n\nReason: [Provide reason here]",
"safety": {
"safe_to_revert": true,
"warnings": [],
"dependent_count": 0
}
}
Integration with Other Skills
/commit-best-practices check-pre-commit
↓ (if pass)
/commit-analysis analyze
↓
/message-generation complete-message
↓
/commit (create commit)
↓
/commit-best-practices review-commit
↓ (if score < 70)
/commit-best-practices amend-guidance
Best Practices Enforced
- Tests must pass - No commits with failing tests
- No debug code - No console.log, debugger in commits
- No TODOs - Fix or remove before committing
- No merge markers - Resolve conflicts fully
- Atomic commits - One logical change per commit
- Quality messages - Conventional commits format
- Safe amends - Only amend unpushed commits
- Proper reverts - Use revert for shared history
Common Scenarios
Scenario 1: Debug Code Found
Pre-commit check fails:
❌ Debug code: 3 instances found
- src/auth.js:42: console.log(user)
- src/api.js:18: debugger statement
Action: Remove debug code, re-stage files, retry
Scenario 2: Tests Failing
Pre-commit check fails:
❌ Tests: 2 failing
- test/auth.test.js: OAuth flow test
Action: Fix tests, verify passing, retry
Scenario 3: Unsafe Amend
Amend safety check:
❌ UNSAFE: Commit already pushed to remote
Alternatives:
1. Create new commit (recommended)
2. Use git revert (if undoing)
3. Coordinate with team before force push
Scenario 4: Non-Atomic Commit
Commit review:
Score: 58/100
⚠ Non-atomic: Mixes feat + fix + docs
Recommendation:
Split into 3 commits:
1. feat(auth): OAuth implementation
2. fix(api): null pointer handling
3. docs: authentication guide
Use: /commit-split
This skill ensures high-quality commits through automated validation, intelligent review, and guided workflows.