Defines how git branches must be named at this organization. Use this skill whenever Claude Code is about to create a git branch, suggest a branch name, check out a new branch, or when the user asks "what should I name this branch", "create a branch for...", or "start work on issue #...". Always consult this skill before proposing or creating any branch name — even for quick fixes or experiments.
Branches follow one of two formats depending on whether a GitHub Issue exists:
With issue number (preferred when a GitHub Issue exists):
<type>/<issue-number>-<short-description>
Without issue number (for informal/exploratory work):
<type>/<short-description>
The type is always required. The issue number is optional but strongly preferred when work is tracked in GitHub Issues.
# With GitHub Issue
feat/42-add-oauth-login
fix/87-null-pointer-on-empty-cart
chore/101-upgrade-to-node-20
refactor/55-extract-payment-service
docs/12-api-authentication-guide
hotfix/200-csrf-token-missing
# Without GitHub Issue
feat/add-oauth-login
fix/null-pointer-on-empty-cart
chore/upgrade-to-node-20
refactor/extract-payment-service
docs/api-authentication-guide
hotfix/csrf-token-missing
| Type | When to use |
|---|---|
feat | New features or user-facing functionality |
fix | Bug fixes in non-production code |
hotfix | Urgent fixes to production; typically branched from main |
chore | Dependency updates, CI/CD changes, tooling, build system |
refactor | Code restructuring with no functional change |
docs | Documentation only changes |
When in doubt between feat and refactor: if the user will notice the change, use feat. If only the code changes, use refactor.
add-login, fix-crash, not adding-login, fixed-crash| ✅ Good | ❌ Bad |
|---|---|
feat/23-add-user-avatars | feat/23-AddUserAvatars |
feat/add-user-avatars | feat/23_add_user_avatars |
fix/99-login-redirect-loop | fix/99_login_redirect_loop |
fix/login-redirect-loop | fix/login redirect loop |
chore/14-bump-jest-29 | chore/14-updated-jest-version-to-29 |
chore/bump-jest-29 | chore/bumping-jest-to-version-29-stable |
refactor/67-split-auth-module | 67-split-auth-module (missing type) |
hotfix/fix-xss-in-comments | hotfix-fix-xss (wrong separator) |
#42 → use 42)Never create branches directly named:
maindeveloprelease/*stagingThese are managed through PRs only.
When asked to start work on a task or create a branch:
# With issue
git switch -c feat/42-add-oauth-login
# Without issue
git switch -c feat/add-oauth-login
If the user provides a branch name that violates these rules, point out the violation and suggest a corrected name before proceeding.