git-plugin/skills/git-branch-naming/SKILL.md
Git branch naming conventions — type prefixes (feat/fix/chore), issue linking, kebab-case. Use when creating branches or setting up repo conventions.
npx skillsauth add laurigates/claude-plugins git-branch-namingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Consistent branch naming improves traceability, enables automation, and makes repository history easier to navigate.
| Use this skill when... | Use something else when... |
|------------------------|---------------------------|
| Creating a new feature/fix branch | Managing PR workflows → git-branch-pr-workflow |
| Setting up team branch conventions | Committing changes → git-commit-workflow |
| Discussing naming standards | Rebase/merge strategies → git-branch-pr-workflow |
{type}/{issue}-{short-description}
| Component | Format | Required | Example |
|-----------|--------|----------|---------|
| type | Lowercase prefix | Yes | feat, fix |
| issue | Issue number, no # | If issue exists | 123 |
| description | kebab-case, 2-5 words | Yes | user-authentication |
# With issue number (preferred when issue exists)
feat/123-oauth-login
fix/456-null-pointer-crash
chore/789-update-dependencies
docs/101-api-reference
# Without issue number (when no issue exists)
feat/oauth-integration
fix/memory-leak-cleanup
chore/update-eslint-config
refactor/auth-service-split
| Type | Purpose | Conventional Commit |
|------|---------|---------------------|
| feat/ | New features, capabilities | feat: |
| fix/ | Bug fixes | fix: |
| chore/ | Maintenance, deps, config | chore: |
| docs/ | Documentation only | docs: |
| refactor/ | Code restructuring, no behavior change | refactor: |
| test/ | Adding/updating tests | test: |
| ci/ | CI/CD pipeline changes | ci: |
| hotfix/ | Emergency production fixes | fix: (with urgency) |
| release/ | Release preparation | chore: or release: |
# With issue number
git switch -c feat/123-user-authentication
# Without issue number
git switch -c fix/login-timeout-handling
# From specific base
git switch -c feat/456-payment-api main
git switch -c hotfix/security-patch production
Before creating, validate the format:
# Branch name regex pattern
^(feat|fix|chore|docs|refactor|test|ci|hotfix|release)/([0-9]+-)?[a-z0-9]+(-[a-z0-9]+)*$
Valid:
feat/123-user-auth ✓fix/memory-leak ✓chore/update-deps ✓Invalid:
feature/user-auth ✗ (use feat, not feature)fix/UserAuth ✗ (use kebab-case, not PascalCase)my-branch ✗ (missing type prefix)feat/fix_bug ✗ (use hyphens, not underscores)| Scenario | Include Issue? | Example |
|----------|----------------|---------|
| Work tracked in GitHub Issues | Yes | feat/123-add-oauth |
| Work tracked in external system (Jira, Linear) | Optional | feat/PROJ-456-oauth or feat/oauth |
| Exploratory/spike work | No | spike/auth-approaches |
| Quick fix without issue | No | fix/typo-readme |
| Dependabot/automated PRs | No | chore/bump-lodash |
For Jira, Linear, or other systems, use the ticket ID:
feat/PROJ-123-user-dashboard
fix/LINEAR-456-api-timeout
chore/JIRA-789-update-sdk
| Pattern | Example | Why Good |
|---------|---------|----------|
| Action + Target | add-oauth-login | Clear what's being done |
| Component + Change | auth-service-refactor | Identifies affected area |
| Bug + Context | null-pointer-user-save | Describes the issue |
| Anti-pattern | Problem | Better |
|--------------|---------|--------|
| fix/bug | Too vague | fix/123-login-validation |
| feat/new-feature | Meaningless | feat/user-dashboard |
| feat/john-working-on-stuff | Not descriptive | feat/456-payment-flow |
| fix/issue-123 | Redundant, no description | fix/123-timeout-error |
| feat/add-new-user-authentication-system-with-oauth | Too long | feat/oauth-authentication |
feat/123-user-auth)feat/123-oauth-token-refresh)release/1.0.0
release/2.1.0-beta
release/v3.0.0-rc1
hotfix/security-vulnerability
hotfix/critical-data-loss
hotfix/production-crash-fix
For multi-week efforts, consider date suffix:
feat/123-major-refactor-2026q1
epic/new-billing-system
For large teams where branch ownership matters:
# Pattern: {user}/{type}/{description}
alice/feat/123-oauth
bob/fix/456-memory-leak
# Or: {type}/{user}-{description}
feat/alice-oauth-integration
fix/bob-memory-leak
Configure branch protection for:
main
master
develop
release/*
hotfix/*
The branch type can inform commit message scope:
| Branch | Suggested Commits |
|--------|-------------------|
| feat/123-auth | feat(auth): ... |
| fix/456-api | fix(api): ... |
| docs/readme | docs: ... |
Common patterns for CI pipeline triggers:
# GitHub Actions example
on:
push:
branches:
- 'feat/**'
- 'fix/**'
- 'hotfix/**'
pull_request:
branches:
- main
feat/, fix/, etc.)| Action | Command |
|--------|---------|
| Create branch | git switch -c feat/123-description |
| List by type | git branch --list 'feat/*' |
| Delete local | git branch -d feat/123-description |
| Delete remote | git push origin --delete feat/123-description |
| Rename | git branch -m old-name new-name |
Is it a bug fix? → fix/
Is it a new capability? → feat/
Is it documentation? → docs/
Is it maintenance/deps? → chore/
Is it restructuring code? → refactor/
Is it adding tests? → test/
Is it CI/CD changes? → ci/
Is it an emergency? → hotfix/
testing
Verify accumulated bug claims at upstream HEAD and dedup against trackers before filing issues. Use when filing upstream reports from backlogs, audit docs, or git-history findings.
documentation
Gate outward-bound text (upstream issues, docs, PR bodies) through isolated haiku fresh-reader critique before publishing. Use when an artifact must survive a reader with zero project context.
tools
Suggest improvements to SKILL.md content, descriptions, or tool config from eval results. Use when raising pass rates, fixing triggering, or iterating on a skill after evaluation.
tools
deadbranch CLI for stale-branch cleanup — dry-run preview, TUI or non-interactive delete, protects main/develop/WIP. Use when asked to clean up branches, prune branches, or remove stale branches.