CtrlK
BlogDocsLog inGet started
Tessl Logo

branch-namer

Generate descriptive git branch names that follow the project's naming convention. Use this skill whenever the user asks to create a branch, name a branch, start working on a feature or fix, checkout a new branch, or when you're about to run `git checkout -b` or `git switch -c`. Also trigger when you see a vague branch name like `fix/auth` or `feature/billing` that lacks a description of what's actually changing — the branch name should always tell you *what* the change does, not just its category.

90

1.14x
Quality

88%

Does it follow best practices?

Impact

93%

1.14x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

SKILL.md
Quality
Evals
Security

Branch Namer

The Problem

Branch names like fix/dx or feature/billing are technically valid but practically useless. When you scan a list of branches, you should immediately understand what each one is about without having to look up the PR or commit history.

Exception: For investigation or exploratory tasks where the outcome isn't known upfront, it's fine to name the branch after the task/ticket (e.g., chore/investigate-memory-leak or chore/PROJ-123). The descriptive slug matters most for feature and fix branches where the intent is clear.

Branch Name Format

<type>/<scope>-<descriptive-slug>

Components:

  • type: One of the conventional commit types listed below. Use the same type you'd use in the commit message. Prefer feat over feature for consistency with commit conventions. Pick the type carefully — it controls CI/CD behavior:

    TypeTriggers Release?ChangelogAuto-approve eligible
    featYes (minor bump)VisibleNo
    fixYes (patch bump)VisibleNo
    refactorYes (patch bump)VisibleNo
    choreNo releaseHiddenYes*
    testNo releaseHiddenYes*
    docsNo releaseHiddenYes*

    *Auto-approve requires experienced-contributor label, small PR size, and restricted file scope.

    Use chore/test/docs for changes that don't affect the shipped artifact (CI config, .helm charts, package.json scripts, test-only changes, README updates). These don't trigger a release even though they may affect production deployments. Use refactor only when you're restructuring code that ends up in the built/deployed application — it triggers a patch release even though nothing user-facing changed.

  • scope: A category from the project's .commitlintrc.json scope-enum list. Read this file to get the current allowed scopes. If nothing fits, use a short reasonable name. For app-specific changes, you can use a sub-path like fix/provider-console/min-balance-issue.

  • descriptive-slug: 3–6 words in kebab-case that describe what the change does. This is the part that matters most.

How to Write the Slug

The slug should answer: "What does this branch do?" in a few words. Think of it like a compressed commit message subject.

Principles:

  • Lead with a verb when natural: add-, close-, remove-, update-, handle-, migrate-
  • Drop articles (a, an, the) and filler words
  • Use domain terms the team recognizes (e.g., sequelize, stripe, managed-wallet)
  • Keep it under ~50 characters total (type + scope + slug)
  • Don't repeat the type in the slug — fix/auth-fix-login-redirectfix/auth-login-redirect

Examples

PR / Task DescriptionBad Branch NameGood Branch Name
Close Sequelize connection on container disposefix/dxfix/dx-close-sequelize-on-dispose
Redirect unauthenticated users to login on /api-keysfix/authfix/auth-redirect-unauthenticated-to-login
Add Stripe payment method to billingfeat/billingfeat/billing-add-stripe-payment-method
Handle MissingStateCookieError during authfix/authfix/auth-handle-missing-state-cookie
Granular skip labels for security scan workflowchore/cichore/ci-granular-skip-labels-security
Use local instrumentation package in indexerrefactor/indexerrefactor/indexer-use-local-instrumentation
Migrate deploy-web from deprecated SDL classrefactor/sdlrefactor/sdl-migrate-deploy-web-generate-manifest
Switch notifications build from webpack to tsuprefactor/notificationsrefactor/notifications-switch-webpack-to-tsup
Add ACT support for authorizationsfeat/walletfeat/wallet-add-act-authorization-support

Workflow

  1. Read .commitlintrc.json to get the allowed scopes for the current project
  2. Determine the typefeat, fix, refactor, chore, docs, or test?
  3. Pick the scope — which area of the codebase does this touch?
  4. Write the slug — compress the task description into 3–6 kebab-case words
  5. Check the total length — aim for under 50 characters
  6. Suggest the branch name to the user before creating it
Repository
akash-network/console
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.