Skip to content

Branch Naming Conventions

Special characters are converted to hyphens for Git compatibility. Leading/trailing hyphens are removed, consecutive hyphens collapsed. Length capped at 50 (manual) or 100 (auto) characters.

Input Converted
feature.new feature-new
bug fix here bug-fix-here
feature:test feature-test

Suggested Branch Names

When a worktree is created without an explicit name, the branch name prompt is pre-filled with a random adjective-noun suggestion that you may override.

Suggestions come from curated lists of more than 200 adjectives and more than 250 nouns, giving over 58,000 pairings, so repeats are rare. Every word is lowercase ASCII without punctuation, which keeps a suggestion safe to use as both a Git ref and a worktree directory name.

Example suggestion
scrupulous-stable
heedful-foxglove
winsome-meadow

Automatically Generated Branch Names

Configure branch_name_script to generate names via tools like aichat or claude code. Issues/PRs output to {generated} placeholder; diffs output complete names.

Note

Smaller, faster models are usually sufficient for branch names.

Configuration

# For PRs/issues: generate a title (available via {generated} placeholder)
branch_name_script: "aichat -m gemini:gemini-3.5-flash-lite 'Generate a short title for this PR or issue. Output only the title (like feat-session-manager), nothing else.'"

# Use the generated title in PR branch/worktree naming
pr_branch_name_template: "pr-{number}-{generated}"

# For diffs: generate a complete branch name
# branch_name_script: "aichat -m gemini:gemini-3.5-flash-lite 'Generate a short git branch name (no spaces, use hyphens) for this diff. Output only the branch name, nothing else.'"

Template Placeholders

  • {number} - PR/issue number
  • {title} - Original sanitised title
  • {generated} - Generated title (falls back to {title})
  • {pr_author} - PR author username (PR templates only)

Examples:

Template Result Generated: feat-ai-session-manager
issue-{number}-{title} issue-2-add-ai-session-management (Issue #2) Not used
issue-{number}-{generated} issue-2-feat-ai-session-manager (Issue #2) Used
pr-{number}-{generated} pr-7-feat-ai-session-manager (PR #7) Used
pr-{number}-{pr_author}-{title} pr-7-alice-add-ai-session-management (PR #7 by @alice) Not used

If script fails, {generated} falls back to {title}.

Script Requirements

Receives content on stdin, outputs branch name on stdout (first line). Timeout: 30s.

Environment Variables

LAZYWORKTREE_TYPE (pr/issue/diff), LAZYWORKTREE_NUMBER, LAZYWORKTREE_TEMPLATE, LAZYWORKTREE_SUGGESTED_NAME.

Example:

# Different prompts for different types
branch_name_script: |
  if [ "$LAZYWORKTREE_TYPE" = "diff" ]; then
    aichat -m gemini:gemini-3.5-flash-lite 'Generate a complete branch name for this diff'
  else
    aichat -m gemini:gemini-3.5-flash-lite 'Generate a short title (no issue-/pr- prefix) for this issue or PR'
  fi

# Use issue/PR number in the prompt
branch_name_script: |
  aichat -m gemini:gemini-3.5-flash-lite "Generate a title for item #$LAZYWORKTREE_NUMBER. Output only the title."