| name | git-workflow |
| description | This skill should be used when the user asks to "make commits", "commit all changes", "create a branch", "name a branch", "organize commits", "conventional commits", "generate changelog", "release version", "bump version", or needs guidance on git workflow best practices including commit organization, branch naming, and conventional commit format. |
Git Workflow Best Practices
Guidance for creating clean, atomic commits and organizing git workflows effectively.
Available Commands
This plugin provides commands to automate git workflows:
| Command | Purpose |
|---|---|
/git-status |
Quick repository status summary |
/git-commit |
Create commits with pre-commit hooks |
/branch-cleanup |
Clean up merged/stale branches |
/generate-changelog |
Generate CHANGELOG.md using git-cliff |
Changelog Generation
Use /generate-changelog after creating commits to update CHANGELOG.md. The command uses a workflow-driven approach:
- Shows current state (branch, recent commits, latest tag, unreleased changes)
- Prompts to select action: Preview, Generate, or Release
- For releases, analyzes commits and recommends version bump level
Conventional Commit Format
Structure commit messages following the conventional commit specification. Project-specific CLAUDE.md conventions take precedence over these defaults.
type(scope): subject
body (optional)
footer (optional)
Commit Types
| Type | Purpose |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
style |
Formatting, no code change |
refactor |
Code restructuring |
perf |
Performance improvement |
test |
Adding/updating tests |
build |
Build system changes |
ci |
CI configuration |
chore |
Maintenance tasks |
revert |
Revert previous commit |
Subject Line Rules
- Maximum 50 characters
- Use imperative mood ("Add feature" not "Added feature")
- No period at end
- Capitalize first letter
Body Guidelines
- Wrap at 72 characters
- Explain what and why, not how
- Separate from subject with blank line
Footer Conventions
- Reference issues:
Fixes #123orRelates to #456 - Breaking changes:
BREAKING CHANGE: description - Co-authors:
Co-Authored-By: Name <email>
Branch Naming Conventions
Use descriptive, prefixed branch names:
Branch Prefixes
| Prefix | Purpose | Example |
|---|---|---|
feature/ |
New functionality | feature/user-authentication |
fix/ |
Bug fixes | fix/login-redirect-loop |
hotfix/ |
Urgent production fixes | hotfix/security-patch |
release/ |
Release preparation | release/v2.1.0 |
docs/ |
Documentation updates | docs/api-reference |
refactor/ |
Code restructuring | refactor/database-layer |
test/ |
Test additions | test/integration-suite |
chore/ |
Maintenance | chore/dependency-updates |
Naming Rules
- Use kebab-case (lowercase with hyphens)
- Keep names descriptive but concise
- Include ticket/issue number when applicable:
feature/123-user-auth - Avoid generic names like
feature/updateorfix/bug
Atomic Commit Principles
Create commits that are:
- Self-contained: Each commit represents one logical change
- Complete: Code compiles and tests pass after each commit
- Reviewable: Small enough to understand in one review session
Grouping Guidelines
- Keep implementation and tests together
- Separate infrastructure from application changes
- Isolate documentation unless integral to code changes
- Group by feature/component/purpose
- Keep related lock files with their manifests (package-lock.json with package.json)
What NOT to Mix
- Unrelated bug fixes in the same commit
- Formatting changes with logic changes
- Multiple features in one commit
- Refactoring with new functionality
Pre-Commit Workflow
Before committing:
- Review changes:
git diffandgit status - Check for sensitive files: Never commit
.env, credentials, API keys - Run pre-commit hooks: Let formatters and linters process files
- Re-stage if hooks modify files: Add reformatted files and retry commit
Handling Pre-Commit Hook Failures
When hooks modify files:
- Review the changes made by hooks
- Re-add the modified files:
git add <files> - Retry the commit
- Document any issues for manual review
Commit Message Template
Use heredoc format for multi-line messages:
git commit -m "$(cat <<'EOF'
type(scope): subject line here
- Detailed bullet point explaining change
- Another relevant detail
Fixes #123
EOF
)"
Protected Branches
Never force-push or directly commit to:
main/masterdevelopstaging/productionrelease/*branches
Always use pull requests for these branches.
Quick Reference
Creating a Feature Branch
git checkout -b feature/descriptive-name
Checking What to Commit
git status # See all changes
git diff # Unstaged changes
git diff --cached # Staged changes
git log --oneline -5 # Recent commit style
Staging Selectively
git add path/to/specific/file.ext
git add -p # Interactive staging
Writing Good Commits
# Simple commit
git commit -m "feat(auth): add OAuth2 login support"
# Multi-line commit
git commit -m "$(cat <<'EOF'
fix(api): resolve race condition in request handler
- Add mutex lock around shared state
- Implement request queuing for high load
- Add timeout handling for stale requests
Fixes #456
EOF
)"