Skip to content
| Marketplace
Sign in
Azure DevOps>Azure Boards>BranchPilot
BranchPilot

BranchPilot

Felice Lombardi

|
3 installs
| (1) | Free
Automate Git branch creation from Azure Boards Work Items. Enforce branch naming conventions, auto-link branches to tickets, and support GitFlow, GitHub Flow, and custom branching strategies.
Get it free

BranchPilot — Create Branches from Work Items in Azure DevOps

Automate Git branch creation directly from Azure Boards Work Items. Enforce consistent branch naming conventions, automatically link branches to Work Items, and keep your team's Git workflow clean — with zero manual effort.


The Problem BranchPilot Solves

Every developer on an Azure DevOps team goes through the same ritual dozens of times a day:

  1. Open a Work Item (Bug, User Story, Task, Feature…)
  2. Switch to the repository
  3. Type a branch name — trying to remember the team naming convention
  4. Forget to link the branch back to the Work Item

The result: inconsistent branch names, broken traceability between code and tickets, and wasted time.

BranchPilot eliminates all of this with one click.


What BranchPilot Does

BranchPilot adds a "New branch…" action to the Work Item context menu in Azure Boards. When clicked, it opens a panel where the developer selects the target repository and the source branch — the branch name is generated automatically according to your team's naming rules.

The branch is created in Git and immediately linked to the Work Item so it appears in the Work Item's Development section, giving full traceability from ticket to code.


Key Features

One-click branch creation from any Work Item

Create a Git branch directly from a Bug, User Story, Task, Feature, Epic, or any custom Work Item type — without leaving Azure Boards.

Smart branch naming engine

Define naming rules based on:

  • Source branch (e.g. branching from hotfix/* → auto-prefix hotfix/, branching from develop → feature/)
  • Work Item type (Bug → bugfix/, User Story → feature/, Task → task/)
  • Fallback default for everything else

Rules use glob patterns (hotfix/*, release/*) or regular expressions for maximum flexibility.

Automatic Work Item linking

The newly created branch is automatically linked to the Work Item using the standard Azure DevOps artifact link (ArtifactLink). No need to manually associate branches — the Development panel updates immediately.

Configurable Work Item state transitions

Optionally move the Work Item to a target state (e.g. "Active", "In Progress") as soon as the branch is created, keeping your board up to date automatically.

Always-explicit repository and source branch selection

No silent assumptions. The developer always selects the target repository and the "Based on" branch — preventing accidental branches off the wrong base.

Editable branch name (optional)

Allow developers to manually adjust the auto-generated name before confirming, or lock it to enforce strict naming conventions.

Per-project configuration hub

Full settings UI available in Project Settings → BranchPilot. Configure naming rules, templates, state transitions, and general options — all stored per Azure DevOps project.

Export and Import configuration

Export the project configuration as a JSON file and import it into other projects. Perfect for teams managing multiple repositories or projects with a shared branching strategy.

Bilingual UI — English and Italian

The extension interface is fully available in English and Italian, with automatic language detection from the project settings.


How It Works

Step 1 — Open a Work Item

Open any saved Work Item on Azure Boards. The Work Item must have an ID (it must be saved at least once).

Step 2 — Open the context menu

Click the ⋯ overflow menu on the Work Item form or the board card and select "New branch… (BranchPilot)".

Step 3 — Choose repository and source branch

A side panel opens. Select:

  • Repository — the Git repository where the branch will be created
  • Based on — the source branch to branch from (defaults to the repository's default branch)

Step 4 — Confirm the branch name

The branch name is generated instantly from your naming rules. Review it, adjust it if allowed, and click Create.

Result

The branch is created in Git and linked to the Work Item. The Work Item's Development section shows the new branch immediately. If a state transition is configured, the Work Item state is also updated.


Branch Naming Engine

Branch names are generated by a rules engine with strict precedence:

1. rulesBySourceBranch  ← first match wins (evaluated on the "Based on" branch)
2. rulesByWorkItemType  ← first match wins (case-insensitive Work Item type)
3. defaults             ← fallback template

Example naming rules and output

Source branch Work Item type Generated branch name
hotfix/1.5 Bug hotfix/99-fix-null-pointer-on-login
hotfix/1.5 User Story hotfix/42-add-payment-provider
develop Bug bugfix/99-fix-null-pointer-on-login
develop User Story feature/42-add-payment-provider
develop Task task/7-write-unit-tests
release/2024-Q1 User Story release/42-add-payment-provider
main Epic feature/15-platform-migration

Template tokens

Compose branch names using dynamic tokens:

Token Value
{wi.id} Work Item ID (e.g. 42)
{wi.title} Work Item title, sanitized for Git
{wi.type} Work Item type (e.g. Bug, User Story)
{wi.state} Work Item state (e.g. New, Active)
{wi.assignedTo} Display name of the assigned user
{prefix} Prefix resolved by the matched rule

Example template: {prefix}{wi.id}-{wi.title} → feature/42-add-payment-provider

Name sanitization

BranchPilot automatically sanitizes the generated name to produce valid Git branch names:

  • Special characters (spaces, /, :, ", &, (, ), etc.) → replaced with -
  • Consecutive separators collapsed to a single -
  • Leading and trailing - stripped
  • Forced to lowercase (configurable)
  • Truncated to maxLength characters (default: 80, hard limit: 250), always preserving the Work Item ID

Supported Branching Strategies

BranchPilot is designed to work with any Git branching strategy:

GitFlow

  • develop → feature/{id}-{title}
  • hotfix/* → hotfix/{id}-{title}
  • release/* → release/{id}-{title}
  • Bug type → bugfix/{id}-{title}

GitHub Flow / Trunk-Based Development

  • Any source → feature/{id}-{title} (single rule, simple template)

Custom enterprise conventions

  • Full regex support: ^app/release\d+(/.*)?$ → app/release/{id}-{title}
  • Multiple repo overrides with different templates per repository

Configuration

Open Project Settings → BranchPilot to configure. All settings are stored per Azure DevOps project using the Extension Data Service.

General settings

{
  "general": {
    "lowercase": true,
    "nonAlnumReplacement": "-",
    "maxLength": 80,
    "allowManualNameOverride": true
  }
}
Field Description
lowercase Force branch names to lowercase (recommended: true)
nonAlnumReplacement Character used to replace invalid characters (default: "-")
maxLength Maximum branch name length (default: 80)
allowManualNameOverride Allow developers to edit the auto-generated name

Full configuration schema

{
  "schemaVersion": 1,
  "general": {
    "lowercase": true,
    "nonAlnumReplacement": "-",
    "maxLength": 80,
    "allowManualNameOverride": true
  },
  "defaults": {
    "template": "feature/{wi.id}-{wi.title}",
    "workItemState": { "enabled": false, "state": "Active" }
  },
  "repoOverrides": {
    "my-repo-name": {
      "defaultTemplate": "custom/{wi.id}-{wi.title}"
    }
  },
  "rulesBySourceBranch": [
    {
      "name": "Hotfix branch rule",
      "matchType": "glob",
      "match": "hotfix/*",
      "prefix": "hotfix/",
      "template": "{prefix}{wi.id}-{wi.title}",
      "workItemState": { "enabled": true, "state": "In Progress" }
    },
    {
      "name": "Release branch rule",
      "matchType": "regex",
      "match": "^release(/.*)?$",
      "prefix": "release/",
      "template": "{prefix}{wi.id}-{wi.title}"
    }
  ],
  "rulesByWorkItemType": [
    {
      "workItemType": "Bug",
      "prefix": "bugfix/",
      "template": "{prefix}{wi.id}-{wi.title}",
      "workItemState": { "enabled": true, "state": "Active" }
    },
    {
      "workItemType": "User Story",
      "prefix": "feature/",
      "template": "{prefix}{wi.id}-{wi.title}",
      "workItemState": { "enabled": true, "state": "Active" }
    },
    {
      "workItemType": "Task",
      "prefix": "task/",
      "template": "{prefix}{wi.id}-{wi.title}"
    }
  ]
}

Export / Import

In Project Settings → BranchPilot:

  • Export JSON — downloads the current configuration as branchpilot-config.json
  • Import JSON — loads a configuration exported from this or another project

Required Permissions

BranchPilot requires the following Azure DevOps scopes:

Scope Purpose
vso.work_write Read Work Item details and update Work Item state
vso.code_write Create Git branches and add artifact links

Installation

From the Visual Studio Marketplace

  1. Install from Visual Studio Marketplace.
  2. Open any Azure DevOps project.
  3. Navigate to Project Settings → BranchPilot to configure naming rules.

Private / on-premises install

# 1. Clone the repository
git clone https://github.com/managerfx/branch-pilot-az-devops.git
cd branch-pilot-az-devops

# 2. Install dependencies
npm install

# 3. Build and package
npm run package

# 4. Upload the generated .vsix via Organisation Settings → Extensions → Upload

Troubleshooting

Symptom Solution
"Save the Work Item before creating a branch" The Work Item must be saved and have a valid ID before using BranchPilot
Branch dialog / panel does not open Ensure the extension is installed and enabled for the project
"You don't have permission to create branches" Your account needs GenericContribute permission on the target Git repository
Branch name is not auto-generated Make sure a repository and a source branch are selected in the panel
Settings not saving Only Project Administrators can save BranchPilot settings
State not updating after branch creation Check that workItemState.enabled is true in the matching rule and that the target state exists in the Work Item process

Diagnostic details

When an error occurs, a collapsible Diagnostic details section appears in the panel. Click Copy diagnostics to copy a structured JSON log — useful when reporting issues at github.com/managerfx/branch-pilot-az-devops/issues.


Use Cases

  • Development teams enforcing a company-wide Git branching convention (GitFlow, GitHub Flow, trunk-based)
  • Scrum / Kanban teams wanting to keep Azure Boards Work Items automatically linked to branches
  • Tech leads who want to remove manual steps and naming errors from the developer workflow
  • Enterprise teams managing multiple repositories with different branching strategies per repo
  • Regulated environments where traceability between tickets and code changes is mandatory

License

MIT © FeliceLombardi Source: github.com/managerfx/branch-pilot-az-devops

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft