mcpField
G
git-branch-naming

git-branch-naming

github.com/laurigatesDevelopment5973 installsUpdated 1d ago
Repository

About git-branch-naming

A Git branch naming guide for developers and teams. It defines prefixes, issue references, descriptions, and special branch patterns to support consistent naming and automation.

Key features

  1. 01Defines type, issue, and description formats
  2. 02Lists branch types and examples
  3. 03Provides a branch-name validation regex
  4. 04Explains issue linking and descriptions
  5. 05Covers release and hotfix patterns

Use cases

  1. 01Naming a branch for a feature or fix
  2. 02Setting team branch conventions
  3. 03Validating names for automated workflows

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/laurigates/claude-plugins --skill git-branch-naming

After installing, type/git-branch-namingin Claude Code to confirm it loaded.

Details

From the project README

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 branchManaging PR workflows → git-branch-pr-workflow
Setting up team branch conventionsCommitting changes → git-commit-workflow
Discussing naming standardsRebase/merge strategies → git-branch-pr-workflow

Branch Name Format

{type}/{issue}-{short-description}
ComponentFormatRequiredExample
typeLowercase prefixYesfeat, fix
issueIssue number, no #If issue exists123
descriptionkebab-case, 2-5 wordsYesuser-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

TypePurposeConventional Commit
feat/New features, capabilitiesfeat:
fix/Bug fixesfix:
chore/Maintenance, deps, configchore:
docs/Documentation onlydocs:
refactor/Code restructuring, no behavior changerefactor:
test/Adding/updating teststest:
ci/CI/CD pipeline changesci:
hotfix/Emergency production fixesfix: (with urgency)
release/Release preparationchore: 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
ScenarioInclude Issue?Example
Work tracked in GitHub IssuesYesfeat/123-add-oauth
Work tracked in external system (Jira, Linear)Optionalfeat/PROJ-456-oauth or feat/oauth
Exploratory/spike workNospike/auth-approaches
Quick fix without issueNofix/typo-readme
Dependabot/automated PRsNochore/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
PatternExampleWhy Good
Action + Targetadd-oauth-loginClear what's being done
Component + Changeauth-service-refactorIdentifies affected area
Bug + Contextnull-pointer-user-saveDescribes the issue
Avoid
Anti-patternProblemBetter
fix/bugToo vaguefix/123-login-validation
feat/new-featureMeaninglessfeat/user-dashboard
feat/john-working-on-stuffNot descriptivefeat/456-payment-flow
fix/issue-123Redundant, no descriptionfix/123-timeout-error
feat/add-new-user-authentication-system-with-oauthToo longfeat/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:

BranchSuggested Commits
feat/123-authfeat(auth): ...
fix/456-apifix(api): ...
docs/readmedocs: ...
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
ActionCommand
Create branchgit switch -c feat/123-description
List by typegit branch --list 'feat/*'
Delete localgit branch -d feat/123-description
Delete remotegit push origin --delete feat/123-description
Renamegit 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/

Comments

Markdown supported