Skip to content

Open Orchestrator automatically generates meaningful branch names from your task descriptions. When you run owt new "Add user authentication", the tool creates a branch named feat/add-user-authentication without any manual naming.

The Algorithm

Branch name generation follows a deterministic pipeline:

Task Description


1. Detect prefix keyword


2. Normalize text (lowercase, strip punctuation)


3. Split into words


4. Filter filler words


5. Limit to 6 words


6. Join with hyphens


7. Truncate to 50 characters


8. Combine as "prefix/slug"

Step-by-Step Breakdown

1. Detect Prefix Keyword

The first step scans the task description for a keyword that maps to a branch prefix. The first matching keyword wins.

PrefixKeywords
featadd, create, implement, build, new, feature
fixfix, bug, repair, resolve, patch
refactorrefactor, restructure, reorganize, clean, simplify
docsdocument, docs, readme, guide, documentation
testtest, spec, coverage, assert
experimentexperiment, try, explore, prototype, spike, poc
chorechore, update, upgrade, bump, maintain
perfperformance, optimize, speed, cache, fast
securitysecurity, auth, vulnerability, cve, encrypt

If no keyword matches, the default prefix is feat.

2. Normalize

The description is lowercased and punctuation is stripped:

"Add User Authentication!!" → "add user authentication"

3. Split into Words

The normalized string is split on whitespace:

"add user authentication" → ["add", "user", "authentication"]

4. Filter Filler Words

Common filler words are removed to keep the slug concise:

"fix the broken login page issue" → ["fix", "broken", "login", "page", "issue"]

Filler words removed include: the, a, an, is, are, was, were, be, been, being, have, has, had, do, does, did, will, would, could, should, may, might, shall, can, for, and, but, or, nor, not, so, yet, to, of, in, on, at, by, with, from, into, about, it, its, this, that, these, those, i, we, you, they, he, she.

5. Limit to 6 Words

Only the first 6 remaining words are kept:

["implement", "user", "authentication", "with", "jwt", "tokens", "and", "refresh"]
→ ["implement", "user", "authentication", "jwt", "tokens", "refresh"]

6. Join with Hyphens

Words are joined:

["user", "authentication", "jwt", "tokens"] → "user-authentication-jwt-tokens"

7. Truncate to 50 Characters

The slug is truncated at 50 characters on a word boundary to avoid cutting words in half.

8. Combine Prefix and Slug

The prefix keyword (from step 1) is removed from the slug if it appears there, then combined:

prefix: "feat"
slug: "add-user-authentication"
         ↓ (remove prefix keyword "add" since it mapped to feat)
slug: "user-authentication"
result: "feat/user-authentication"

Examples

Task DescriptionGenerated Branch
"Add user authentication"feat/user-authentication
"Fix the broken login page"fix/broken-login-page
"Refactor database queries"refactor/database-queries
"Write tests for payment module"test/payment-module
"Update dependencies to latest"chore/dependencies-latest
"Optimize API response times"perf/api-response-times
"Add security headers to all endpoints"security/headers-all-endpoints
"Document the REST API"docs/rest-api
"Try out the new caching library"experiment/new-caching-library
"Implement OAuth2 with Google and GitHub providers for SSO"feat/oauth2-google-github-providers-sso

Usage

Branch naming happens automatically with owt new:

bash
# Branch name generated from description
owt new "Add user authentication"
# Creates: feat/user-authentication

# With template override
owt new "Add user authentication" -t bugfix
# Creates: fix/user-authentication (template overrides prefix)

You do not need to think about branch names. Describe the task in natural language and Open Orchestrator handles the rest.

Next Steps