Agent Skills: Git Branch Naming Conventions

|

UncategorizedID: laurigates/claude-plugins/git-branch-naming

Install this agent skill to your local

pnpm dlx add-skill https://github.com/laurigates/claude-plugins/tree/HEAD/git-plugin/skills/git-branch-naming

Skill Files

Browse the full folder contents for git-branch-naming.

Download Skill

Loading file tree…

git-plugin/skills/git-branch-naming/SKILL.md

Skill Metadata

Name
git-branch-naming
Description
|

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/