branch-strategy-advisor
Branch Strategy Advisor
Recommend optimal branching strategies for your project.
Quick Start
Choose strategy based on team and deployment:
- Small team + continuous deployment → GitHub Flow
- Large team + scheduled releases → Gitflow
- Fast iteration + feature flags → Trunk-Based Development
Instructions
Step 1: Assess Project Context
Team Size:
- Small (1-5 developers)
- Medium (6-20 developers)
- Large (20+ developers)
Deployment Frequency:
- Continuous (multiple times per day)
- Daily
- Weekly
- Scheduled releases (monthly/quarterly)
Release Model:
- Single production version
- Multiple versions in production
- Long-term support versions
- Rolling releases
Technical Constraints:
- Feature flags available?
- Automated testing coverage?
- CI/CD pipeline maturity?
- Code review requirements?
Step 2: Select Branching Strategy
GitHub Flow - Best for:
- Small to medium teams
- Web applications
- Continuous deployment
- Simple workflow needed
Structure:
main (production)
├── feature/user-auth
├── feature/payment-integration
└── bugfix/login-error
Workflow:
- Create feature branch from main
- Make changes and commit
- Open pull request
- Review and test
- Merge to main
- Deploy automatically
Pros: Simple, fast, continuous deployment Cons: Requires good CI/CD, no release staging
Gitflow - Best for:
- Large teams
- Scheduled releases
- Multiple versions in production
- Need for hotfix support
Structure:
main (production)
develop (integration)
├── feature/new-dashboard
├── feature/api-v2
├── release/v2.0
└── hotfix/critical-bug
Workflow:
- Feature branches from develop
- Merge features to develop
- Create release branch from develop
- Test and fix in release branch
- Merge release to main and develop
- Tag release on main
- Hotfixes from main, merge to main and develop
Pros: Structured, supports multiple versions, clear release process Cons: Complex, slower, more overhead
Trunk-Based Development - Best for:
- High-performing teams
- Continuous integration
- Feature flags available
- Fast iteration needed
Structure:
main (trunk)
├── short-lived-feature-1
└── short-lived-feature-2
Workflow:
- Create short-lived branch (< 1 day)
- Make small changes
- Merge to main frequently
- Use feature flags for incomplete features
- Deploy main continuously
Pros: Fast integration, simple, encourages small changes Cons: Requires discipline, needs feature flags, high test coverage
GitLab Flow - Best for:
- Environment-based deployments
- Need for staging
- Hybrid approach
- Multiple environments
Structure:
main (development)
├── feature/new-feature
├── staging (staging environment)
└── production (production environment)
Workflow:
- Feature branches from main
- Merge to main (development)
- Merge main to staging for testing
- Merge staging to production for release
- Hotfixes can go directly to production
Pros: Environment-based, flexible, clear promotion path Cons: More branches to manage, can be slower
Step 3: Define Branch Naming
Recommended conventions:
feature/short-description
feature/TICKET-123-description
feature/user-auth-jwt
bugfix/short-description
bugfix/ISSUE-456-null-pointer
bugfix/login-validation
hotfix/critical-issue
hotfix/security-patch
hotfix/payment-failure
release/version
release/v2.0.0
release/2024-Q1
chore/maintenance-task
chore/update-dependencies
chore/cleanup-logs
Naming rules:
- Use lowercase with hyphens
- Include ticket/issue number if applicable
- Be descriptive but concise
- Use consistent prefixes
- Avoid special characters
Step 4: Set Branch Policies
Main/Master Branch:
- Require pull request reviews (1-2 reviewers)
- Require status checks to pass
- Require up-to-date branches
- Restrict direct pushes
- Require signed commits (optional)
Develop Branch (if using Gitflow):
- Require pull request reviews
- Require CI to pass
- Allow direct pushes for hotfixes (optional)
Feature Branches:
- No restrictions
- Delete after merge
- Rebase on parent regularly
Release Branches:
- Restrict to release managers
- Only bug fixes allowed
- No new features
Step 5: Define Merge Strategy
Merge Commit - When to use:
- Want to preserve branch history
- Multiple commits represent logical units
- Need audit trail
- Gitflow workflow
Squash and Merge - When to use:
- Want clean main branch history
- Many WIP commits in feature branch
- Single logical change
- GitHub Flow workflow
Rebase and Merge - When to use:
- Want linear history
- No merge commits
- Team comfortable with rebasing
- Trunk-Based Development
Fast-Forward Only - When to use:
- Strict linear history
- Small, atomic changes
- Trunk-Based Development
- Advanced teams
Strategy Comparison
| Strategy | Team Size | Deployment | Complexity | Best For |
|---|---|---|---|---|
| GitHub Flow | Small-Medium | Continuous | Low | Web apps, SaaS |
| Gitflow | Medium-Large | Scheduled | High | Enterprise, versioned products |
| Trunk-Based | Any | Continuous | Medium | High-performing teams |
| GitLab Flow | Medium | Regular | Medium | Multi-environment deployments |
Common Scenarios
Scenario: Startup with 3 developers
- Recommendation: GitHub Flow
- Rationale: Simple, fast, supports continuous deployment
- Setup: main branch + feature branches + PR reviews
Scenario: Enterprise with 50 developers
- Recommendation: Gitflow
- Rationale: Structured, supports multiple releases, clear process
- Setup: main + develop + feature/release/hotfix branches
Scenario: SaaS with daily deployments
- Recommendation: Trunk-Based Development
- Rationale: Fast integration, continuous deployment, small changes
- Setup: main branch + short-lived features + feature flags
Scenario: Mobile app with app store releases
- Recommendation: Gitflow or GitLab Flow
- Rationale: Scheduled releases, need for release branches, testing period
- Setup: Release branches for app store submissions
Scenario: Open source project
- Recommendation: GitHub Flow
- Rationale: Simple for contributors, PR-based, clear process
- Setup: main branch + fork-based contributions
Migration Strategies
From no strategy to GitHub Flow:
- Protect main branch
- Require PR reviews
- Set up CI/CD
- Document workflow
- Train team
From GitHub Flow to Gitflow:
- Create develop branch from main
- Update CI to test develop
- Create first release branch
- Document new workflow
- Migrate features to new model
From Gitflow to Trunk-Based:
- Merge develop to main
- Remove develop branch
- Implement feature flags
- Shorten branch lifetimes
- Increase deployment frequency
Best Practices
Branch Hygiene:
- Delete merged branches automatically
- Limit active branches per developer (2-3)
- Keep branches short-lived (< 3 days)
- Sync with parent branch daily
- Use descriptive names
Code Review:
- Review within 24 hours
- Keep PRs small (< 400 lines)
- Provide constructive feedback
- Test before approving
- Use review checklists
CI/CD Integration:
- Run tests on every push
- Deploy main automatically (if continuous)
- Use staging environments
- Implement rollback mechanisms
- Monitor deployments
Documentation:
- Document chosen strategy in README
- Create workflow diagrams
- Provide examples
- Update as strategy evolves
- Include troubleshooting guide
Advanced
For complex scenarios:
- Monorepo branching strategies
- Multi-team coordination
- Release train models
- Hotfix procedures
- Branch protection rules
More from armanzeroeight/fastagent-plugins
gcp-cost-optimizer
Analyzes GCP costs and provides optimization recommendations including committed use discounts, rightsizing, and unused resources. Use when optimizing GCP spending or analyzing GCP costs.
15kubernetes-best-practices
Provides production-ready Kubernetes manifest guidance including resource management, security, high availability, and configuration best practices. This skill should be used when working with Kubernetes YAML files, deployments, pods, services, or when users mention k8s, container orchestration, or cloud-native applications.
11schema-designer
Design database schemas with proper normalization, relationships, constraints, and indexes. Use when creating database tables, modeling data relationships, or designing database structure.
11api-documentation-generator
Generate OpenAPI/Swagger specifications and API documentation from code or design. Use when creating API docs, generating OpenAPI specs, or documenting REST APIs.
9goroutine-patterns
Implement Go concurrency patterns using goroutines, channels, and synchronization primitives. Use when building concurrent systems, implementing parallelism, or managing goroutine lifecycles. Trigger words include "goroutine", "channel", "concurrent", "parallel", "sync", "context".
9inventory-manager
Organizes Ansible inventory files, manages host groups, and configures dynamic inventory. Use when organizing Ansible inventory, managing host groups, or setting up dynamic inventory sources.
9