skills/laurigates/claude-plugins/git-branch-naming

git-branch-naming

SKILL.md

Git Branch Naming Conventions

Consistent branch naming improves traceability, enables automation, and makes repository history easier to navigate.

When to Use This Skill

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

Branch Name Format

{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

Examples

# 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

Branch Types

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:

Creating Branches

Standard Workflow

# 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

Validation Pattern

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)

Issue Linking Best Practices

When to Include Issue Numbers

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

External Ticket Systems

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

Description Guidelines

Good Descriptions

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

Avoid

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

Length Guidelines

  • Minimum: 2 words after type/issue (feat/123-user-auth)
  • Maximum: 5 words, ~50 characters total
  • Sweet spot: 3-4 words (feat/123-oauth-token-refresh)

Special Branch Patterns

Release Branches

release/1.0.0
release/2.1.0-beta
release/v3.0.0-rc1

Hotfix Branches

hotfix/security-vulnerability
hotfix/critical-data-loss
hotfix/production-crash-fix

Long-Running Branches

For multi-week efforts, consider date suffix:

feat/123-major-refactor-2026q1
epic/new-billing-system

Team Conventions

User-Prefixed Branches (Optional)

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

Protected Branch Patterns

Configure branch protection for:

main
master
develop
release/*
hotfix/*

Automation Integration

Branch Name → Commit Scope

The branch type can inform commit message scope:

Branch Suggested Commits
feat/123-auth feat(auth): ...
fix/456-api fix(api): ...
docs/readme docs: ...

CI/CD Triggers

Common patterns for CI pipeline triggers:

# GitHub Actions example
on:
  push:
    branches:
      - 'feat/**'
      - 'fix/**'
      - 'hotfix/**'
  pull_request:
    branches:
      - main

Quick Reference

Branch Creation Checklist

  • Starts with valid type prefix (feat/, fix/, etc.)
  • Issue number included (if tracked work)
  • Description is kebab-case
  • Description is 2-5 words
  • Total length under 50 characters
  • No underscores, spaces, or uppercase

Command Reference

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

Type Selection Flowchart

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/
Weekly Installs
41
GitHub Stars
13
First Seen
Jan 30, 2026
Installed on
opencode41
gemini-cli40
github-copilot40
codex40
amp39
kimi-cli39