| title | branch-from-issue |
| name | branch-from-issue |
| description | Create a git branch named after a GitHub issue. |
| disable-model-invocation | true |
| argument-hint | [issue-number] [branch-prefix] |
| arguments | ["issue","prefix"] |
| allowed-tools | Bash(gh issue view *) Bash(git checkout *) Bash(git branch *) |
Create branch from GitHub issue
Step 1: Read the issue title
Run:
gh issue view $issue
Extract the issue title from the output. If the issue does not exist or gh is not authenticated, stop and report the error.
Step 2: Slugify the title
Convert the issue title to a branch-safe slug:
- Convert to lowercase
- Replace spaces and punctuation with hyphens
- Remove any characters that are not letters, digits, or hyphens
- Collapse consecutive hyphens into one
- Strip leading and trailing hyphens
- Truncate to 40 characters maximum (truncate at a word boundary if possible)
Examples:
- "Fix login page crash on mobile" →
fix-login-page-crash-on-mobile
- "Add support for OAuth 2.0 / PKCE flow" →
add-support-for-oauth-20-pkce-flow
- "Update README with installation instructions" →
update-readme-with-installation
Step 3: Determine the branch prefix
If $prefix is not empty, use it as provided.
If $prefix is empty, use feature as the default prefix.
Valid examples: feature, fix, chore, hotfix. Accept any non-empty string the user provides.
Step 4: Create the branch
Construct the full branch name: $prefix/$issue-<slug>
For example, if $prefix is fix, $issue is 142, and the slug is login-page-crash-on-mobile:
fix/142-login-page-crash-on-mobile
Run:
git checkout -b $prefix/$issue-<slug>
If the branch already exists, report the conflict and stop. Do not force-create or checkout the existing branch automatically.
Step 5: Confirm
Report the new branch name and confirm the current branch has switched:
git branch --show-current
Example output:
Created and switched to: fix/142-login-page-crash-on-mobile