--- description: Interactive guidance for creating properly named Git branches following conventions --- # Create Branch Command You are helping a developer create a new Git branch following Personal naming conventions and workflow best practices. ## Objective Provide **interactive, suggestive guidance** for branch creation that: 1. Analyzes current Git state 2. Suggests a properly formatted branch name 3. Gives the user control to accept, modify, or skip 4. Educates on conventions without blocking workflow ## Workflow ### Step 1: Analyze Current State Check the current Git state: ```bash # Current branch and status git branch --show-current git status # Check if on main and if it's up-to-date git fetch origin git status ``` Identify: - **Current branch**: What branch is the user on? - **Uncommitted changes**: Are there staged or unstaged changes? - **Base branch status**: Is main (or intended base) up-to-date with remote? ### Step 2: Generate Branch Name Suggestion **Activate the `github-workflow-patterns` skill** to reference branch naming conventions. Based on user's request, infer: - **Branch type**: feature, fix, bugfix, hotfix, refactor, docs, experiment, chore - **Description**: Short, kebab-case description of the work - **Ticket number** (if mentioned): e.g., PROJ-123 **Format**: `/` or `/-` **Examples**: - User says "add customer export feature" → `feature/add-customer-export` - User says "fix auth timeout bug" → `fix/resolve-auth-timeout` - User says "fix JIRA-456 data validation" → `fix/JIRA-456-data-validation` - User says "refactor validation logic" → `refactor/extract-validation-logic` - User says "urgent production fix" → `hotfix/patch-critical-error` **Rules**: - Use lowercase with hyphens (kebab-case) - Be descriptive but concise (3-5 words) - Avoid personal names, dates, or generic terms like "temp" or "dev" ### Step 3: Determine Base Branch **Default**: Branch off `main` (or `master`) **Special cases**: - If user is on a feature branch and mentions "sub-feature" or related work → suggest branching from current - If user explicitly says "from " → use that branch - For hotfixes → always suggest `main` (or production branch) ### Step 4: Present Interactive Suggestion Format your response as a clear, actionable suggestion with 3-4 options: ``` Based on your request, I suggest: Current branch: [status indicators] Branch off from: [status] Suggested name: / [Show rationale if helpful - e.g., "This follows convention: /"] What would you like to do? 1. ✓ Create branch '' 2. ✏️ Modify the branch name 3. ⏭️ Skip - continue working in current branch [4. Additional option if relevant - see Special Cases below] ``` **Status indicators**: - `(clean, up-to-date ✓)` - Clean state, synced with remote - `(uncommitted changes ⚠️)` - Has uncommitted work - `(behind origin ⚠️)` - Needs to pull latest - `(feature branch)` - Currently on a feature branch ### Step 5: Handle User Response **Option 1: Accept suggestion** - User says: "yes", "1", "create it", "go ahead", "looks good" - Action: Execute branch creation ```bash # If base branch needs updating git checkout git pull origin # Create and switch to new branch git checkout -b # Optionally set up remote tracking (if pushing immediately) git push -u origin ``` - Confirm: ``` ✓ Created and switched to: Next steps: 1. Make your changes 2. Run /git-workflow:pre-commit-check to validate quality 3. Run /git-workflow:draft-commit to create commit 4. Run /git-workflow:draft-pr to create pull request ``` **Option 2: Modify branch name** - User says: "call it ", "2", "use instead", "change to " - Action: Parse new name, validate it follows conventions, create with modified name - If name doesn't follow conventions, warn but allow (user choice) ``` ✓ Created and switched to: Note: This name doesn't follow standard convention (/). Consider using: for future branches. Next steps: 1. Make your changes 2. Run /git-workflow:pre-commit-check to validate quality 3. Run /git-workflow:draft-commit to create commit 4. Run /git-workflow:draft-pr to create pull request ``` **Option 3: Skip** - User says: "no", "3", "skip", "not now", "continue on current branch" - Action: Do nothing, acknowledge ``` Understood. Continuing work on current branch: Remember: You can run /git-workflow:create-branch anytime to create a properly named branch. ``` ## Special Cases ### Case 1: Uncommitted Changes If user has uncommitted changes, add a 4th option: ``` ⚠️ Warning: You have uncommitted changes in current branch () Suggested name: / Branch off from: What would you like to do? 1. ✓ Stash changes, create branch, restore changes 2. ✏️ Modify the branch name 3. ⏭️ Skip - continue working in current branch 4. 💾 Commit changes first (run pre-commit-check → draft-commit) ``` **If user chooses Option 1** (stash): ```bash git stash push -m "WIP: stashing for branch " git checkout git pull origin git checkout -b git stash pop ``` **If user chooses Option 4** (commit first): - Switch to pre-commit-check workflow first - Then draft-commit workflow - After commit completes, return to branch creation suggestion ### Case 2: Currently on Feature Branch If user is on a feature branch (not main/master): ``` Current branch: (feature branch) Suggested name: / Branch off from: Note: Creating a sub-feature branch from your current branch. If you want to start fresh from main instead, choose option 4. What would you like to do? 1. ✓ Create branch '' from current branch 2. ✏️ Modify the branch name 3. ⏭️ Skip - continue working in current branch 4. 🔄 Branch from main instead ``` **If user chooses Option 4**: ```bash git checkout main git pull origin main git checkout -b ``` ### Case 3: Base Branch Behind Remote If main (or base) is behind remote: ``` ⚠️ Note: is behind origin/ Suggested name: / Branch off from: (will pull latest first) What would you like to do? 1. ✓ Pull latest , then create branch '' 2. ✏️ Modify the branch name 3. ⏭️ Skip - continue working in current branch ``` ### Case 4: Already on Target Branch If a branch with the suggested name already exists: ``` ⚠️ Branch '' already exists What would you like to do? 1. 🔄 Switch to existing branch '' 2. ✏️ Use a different name (e.g., '-v2') 3. ⏭️ Skip - continue working in current branch ``` ## Parameters This command accepts optional parameters (usually inferred by the agent): - `--type=` - Branch type (feature, fix, hotfix, refactor, docs, experiment, chore) - `--description=` - Brief description of the work - `--from=` - Base branch to branch from (default: auto-detect, usually main) - `--ticket=` - Optional ticket/issue number to include in branch name **Example invocations**: ```bash # Agent infers from user's natural language request User: "Create a branch to add customer export" Agent: /git-workflow:create-branch --type=feature --description="add customer export" # Explicit invocation with parameters /git-workflow:create-branch --type=fix --description="resolve auth timeout" --ticket=PROJ-123 # Minimal invocation (will prompt for details) /git-workflow:create-branch ``` ## Output Format Always use **console format** (interactive only - markdown reports don't apply here). Present information in a clear, scannable format: - Use **emoji sparingly** for status indicators (✓, ⚠️, ✏️, ⏭️, 💾, 🔄) - Use **numbered options** for user choices - Show **concrete commands** when executing actions - Provide **clear next steps** after completion ## Key Principles 1. **Suggestive, not prescriptive**: Offer guidance but give users control 2. **Educational**: Explain conventions so users learn, not just follow 3. **Context-aware**: Adapt to current Git state and user situation 4. **Non-blocking**: Never prevent users from proceeding if they choose to skip 5. **Integrated**: Flow naturally into draft-commit and draft-pr workflows ## Example Interaction **User**: "Let's start working on adding a customer segmentation feature" **Command Response**: ``` Based on your request, I suggest: Current branch: main (clean, up-to-date ✓) Branch off from: main Suggested name: feature/add-customer-segmentation This follows convention: / What would you like to do? 1. ✓ Create branch 'feature/add-customer-segmentation' 2. ✏️ Modify the branch name 3. ⏭️ Skip - continue working in current branch ``` **User**: "1" **Command Response**: ``` ✓ Created and switched to: feature/add-customer-segmentation Next steps: 1. Make your changes 2. Run /git-workflow:pre-commit-check to validate quality 3. Run /git-workflow:draft-commit to create commit 4. Run /git-workflow:draft-pr to create pull request ``` --- **Remember**: This command is about empowering developers with best practices while respecting their autonomy and workflow preferences.