feat(bmvcs): add VCS workflow templates

Add 5 VCS adaptation templates for different workflows:
- git-github-flow.yaml: Simple feature branches (40% of users)
- git-gitflow.yaml: Structured releases (20% of users)
- git-trunk-based.yaml: Continuous deployment (15% of users)
- no-vcs.yaml: Prototypes and one-time scripts (5% of users)
- custom-generic.yaml: Custom/legacy VCS systems (10% of users)

Templates support VCS-agnostic artifact generation across all BMAD agents.

Part 2/5 of BMVCS migration (#661)
Completes core VCS discovery functionality

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Serhii 2025-09-30 19:57:25 +03:00
parent 2137a7790b
commit 8d342f3bd7
No known key found for this signature in database
GPG Key ID: 84A22AF415BE7704
5 changed files with 472 additions and 0 deletions

View File

@ -0,0 +1,117 @@
# Custom/Generic VCS Template
# For ~10% of users - SVN, Perforce, custom workflows, complex setups
name: Custom/Generic VCS
description: Adaptable template for non-standard version control systems
optimized_for: "Legacy systems, enterprise custom workflows, specialized VCS tools"
discovery_required:
questions_to_ask:
- "What commands do you use to save changes?"
- "How do you mark versions or milestones?"
- "How do team members share code?"
- "What's your review process?"
- "Any specific naming conventions?"
artifact_patterns:
architecture:
structure: "flexible"
format: |
- Ask: "What format works best with your system?"
- Default to markdown if no preference
- Avoid Git-specific terminology
terminology_mapping:
- instead_of: "branch"
use: "workspace/stream/variant"
- instead_of: "commit"
use: "changeset/submission/check-in"
- instead_of: "merge"
use: "integrate/incorporate/combine"
stories:
format: |
- Ask about existing story/task tracking
- Adapt to their terminology
- Focus on deliverables, not process
code:
delivery: "aligned-to-vcs"
format: |
- Ask: "How should code changes be packaged?"
- Follow their existing patterns
- Document changes clearly
agent_adaptations:
architect:
- Use VCS-neutral language
- Ask about their documentation standards
- Adapt diagrams to their tooling
pm:
- Align with existing requirement formats
- Use their project terminology
- No assumptions about workflow
sm:
- Match their task breakdown approach
- Use their status terminology
- Respect existing processes
dev:
- Follow their code organization
- Match their change description format
- No Git-specific suggestions
qa:
- Align with their testing workflow
- Use their defect tracking terms
- Respect existing procedures
generic_terminology:
version_control_neutral:
- 'Use "Save changes" instead of "commit"'
- 'Use "Code variant" instead of "branch"'
- 'Use "Combine changes" instead of "merge"'
- 'Use "Change history" instead of "git log"'
- 'Use "Revert changes" instead of "git revert"'
svn_specific:
if_detected: "Subversion/SVN"
adaptations:
- 'Use "revision" instead of "commit"'
- "Trunk/branches/tags structure"
- "Revision numbers, not hashes"
- '"svn update" before changes'
perforce_specific:
if_detected: "Perforce"
adaptations:
- 'Use "changelist" instead of "commit"'
- "Workspace/depot terminology"
- "Client specs consideration"
- "Large binary file handling"
adaptation_strategy: |
1. Never assume - always ask
2. Learn their terminology first
3. Mirror their existing patterns
4. Document in their style
5. Deliver in their format
example_interactions:
discovering_process: |
BMAD: "How do you typically save and share code changes?"
User: "We use Perforce with numbered changelists"
BMAD: "Got it! I'll use Perforce terminology. Should I organize
changes as separate changelists or group them?"
adapting_output: |
Instead of: "Create a feature branch and commit changes"
Generate: "Create a workspace and submit a changelist"
best_practices:
- "Listen more than suggest"
- "Use their language, not ours"
- "Ask when uncertain"
- "Document their process, don't change it"
- "Be flexible in output format"
- "Respect existing workflows"

View File

@ -0,0 +1,77 @@
# Git GitFlow Adaptation Template
# For ~20% of users - versioned releases
name: GitFlow
description: Structured branches with develop, release, and hotfix flows
optimized_for: "Desktop software, mobile apps, versioned APIs, scheduled releases"
artifact_patterns:
architecture:
structure: "version-aligned"
location: "docs/architecture/"
format: |
- Main architecture in docs/architecture/
- Version-specific changes in docs/releases/v{version}/
- Comprehensive planning documents
stories:
granularity: "medium"
size: "3-5 days of work"
format: |
- Stories grouped by release version
- Located in docs/releases/v{version}/stories/
- Can span multiple commits in feature branch
commits:
style: "descriptive"
branch_prefixes:
feature: "feature/"
release: "release/"
hotfix: "hotfix/"
bugfix: "bugfix/"
examples:
- "feature/user-auth: implement OAuth2 flow"
- "release/2.1.0: prepare release notes"
- "hotfix/critical-payment-bug: fix decimal handling"
agent_adaptations:
architect:
- Generate comprehensive release-oriented architecture
- Include version migration guides
- Document breaking changes clearly
pm:
- Create release-scoped PRDs
- Define features by target version
- Maintain product roadmap document
sm:
- Group stories by release milestone
- Create epic-level organization
- Track story status across branches
dev:
- Follow branch naming conventions strictly
- Include version tags in code comments
- Generate migration scripts when needed
qa:
- Comprehensive test plans per release
- Regression test suites for versions
- Hotfix validation procedures
version_management:
develop_branch: "Latest development work"
main_branch: "Production-ready releases only"
release_process: |
1. Branch release/x.y.z from develop
2. Fix bugs in release branch
3. Merge to main and tag
4. Merge back to develop
best_practices:
- "Never commit directly to main"
- "Feature branches from develop, not main"
- "Hotfixes from main, merge to both main and develop"
- "Release branches for final preparations"
- "Semantic versioning (MAJOR.MINOR.PATCH)"

View File

@ -0,0 +1,72 @@
# Git GitHub Flow Adaptation Template
# For ~40% of users - the most common workflow
name: GitHub Flow
description: Simple feature branches with pull requests
optimized_for: "Web applications, continuous deployment, small to medium teams"
artifact_patterns:
architecture:
structure: "feature-aligned"
location: "docs/architecture/features/{feature-name}/"
format: |
- Main architecture in docs/architecture/README.md
- Feature additions in feature branches
- Lightweight, PR-friendly documents
stories:
granularity: "small"
size: "1-3 days of work"
format: |
- One story per PR ideal
- Story file travels with code changes
- Located in docs/stories/{story-id}.md
commits:
style: "conventional"
examples:
- "feat: add user authentication"
- "fix: resolve login timeout issue"
- "docs: update API documentation"
pr_description: |
## What
Brief description of changes
## Why
Context from story: {story-id}
## Testing
- [ ] Unit tests pass
- [ ] Manual testing completed
agent_adaptations:
architect:
- Generate lightweight, modular architecture docs
- Focus on changed components only
- Include "Impact Analysis" section for features
pm:
- Create feature-scoped PRDs when needed
- Keep requirements atomic and PR-sized
sm:
- Generate small, independent stories
- Each story should map to one PR
- Include acceptance criteria for PR review
dev:
- Suggest feature branch names: feature/story-{id}
- Generate atomic commits
- Include PR template in first commit
qa:
- Test plans per PR
- Focus on regression in changed areas
- Checklist format for PR reviews
best_practices:
- "Keep PRs small - under 400 lines ideal"
- "One story = One PR when possible"
- "Branch from main, merge to main"
- "Delete branches after merge"
- "Deploy immediately after merge (if CI passes)"

View File

@ -0,0 +1,99 @@
# Git Trunk-Based Development Template
# For ~15% of users - mature CI/CD teams
name: Trunk-Based Development
description: Direct commits or very short-lived branches to main
optimized_for: "Continuous deployment, mature DevOps teams, microservices"
prerequisites:
required:
- "Comprehensive automated testing"
- "Feature flags system"
- "CI/CD pipeline with automatic rollback"
recommended:
- "Monitoring and alerting"
- "Blue-green or canary deployments"
artifact_patterns:
architecture:
structure: "incrementally-evolving"
location: "docs/architecture/"
format: |
- Living documents that evolve with each change
- Feature flags documented inline
- ADRs (Architecture Decision Records) for changes
stories:
granularity: "tiny"
size: "Hours to 1 day maximum"
format: |
- Ultra-small, immediately mergeable
- Flag-gated feature development
- Located in docs/stories/current/
commits:
style: "atomic"
frequency: "Multiple per day"
examples:
- "add user email validation behind flag:validate-email"
- "refactor payment service for performance"
- "enable feature flag:new-checkout-flow for 10% users"
flag_convention: "flag:{feature-name}"
agent_adaptations:
architect:
- Design for feature flags from start
- Document flag dependencies
- Create rollback procedures
pm:
- Define features as flag-gated increments
- Specify rollout percentages
- Create flag retirement timeline
sm:
- Generate tiny, atomic stories
- Each story deployable behind flag
- Include flag configuration in story
dev:
- Implement feature flags first
- Keep changes small and isolated
- Include flag cleanup tasks
- Commit directly or PR within hours
qa:
- Test with flags on/off
- Automated test coverage mandatory
- Performance testing for each change
feature_flags:
naming: "kebab-case-descriptive"
structure: |
{
"flag": "new-user-dashboard",
"description": "Redesigned dashboard for users",
"rollout": {
"dev": 100,
"staging": 100,
"production": 10
},
"expiry": "2024-Q2"
}
ci_cd_requirements:
pipeline: |
1. Automated tests (must pass)
2. Security scanning
3. Deploy to staging
4. Smoke tests
5. Deploy to production (behind flag)
6. Progressive rollout
best_practices:
- "Main branch always deployable"
- "No long-lived branches (max 24 hours)"
- "Feature flags for all new functionality"
- "Small, frequent commits"
- "Pair programming or immediate review"
- "Rollback is always an option"

View File

@ -0,0 +1,107 @@
# No Version Control Template
# For ~5% of users - prototypes, one-time scripts, POCs
name: No Version Control
description: Single deliverable packages without version tracking
optimized_for: "Prototypes, data migrations, one-time scripts, proof of concepts"
artifact_patterns:
architecture:
structure: "monolithic"
location: "deliverables/"
format: |
- Single comprehensive document
- All requirements embedded
- Self-contained package
naming: "{project}_{type}_YYYYMMDD.md"
stories:
granularity: "complete-features"
format: |
- All stories in one document
- Sequential implementation order
- No branching considerations
naming: "{project}_requirements_YYYYMMDD.md"
code:
delivery: "complete-packages"
format: |
- All code in one deliverable
- Extensive inline comments
- Setup instructions included
naming: "{project}_complete_YYYYMMDD.zip"
package_structure:
example: |
project_20240315/
├── README.md # Complete instructions
├── requirements.txt # All dependencies
├── src/ # All source code
│ └── main.py
├── docs/ # All documentation
│ ├── architecture.md
│ └── requirements.md
├── scripts/ # Setup/run scripts
│ └── setup.sh
└── tests/ # Test files if any
agent_adaptations:
architect:
- Generate single, complete architecture document
- Include all diagrams inline (base64 or ASCII)
- No references to branches or versions
- Date-stamp all documents
pm:
- Create comprehensive PRD upfront
- All requirements in one document
- Clear success criteria
sm:
- Sequential story implementation plan
- Dependencies clearly mapped
- No parallel work assumptions
dev:
- Generate complete, runnable code
- Extensive comments explaining logic
- No commit messages
- Include all necessary files
qa:
- Single test plan document
- Manual test procedures
- No regression considerations
documentation:
readme_template: |
# {Project Name}
Generated: {Date}
## Quick Start
1. Extract all files
2. Run setup script: ./scripts/setup.sh
3. Execute: python src/main.py
## Requirements
- Python 3.8+
- Dependencies in requirements.txt
## What This Does
{Clear description}
## File Descriptions
{List each file and its purpose}
## Notes
- This is a complete, self-contained package
- No version control required
- For questions, refer to docs/
best_practices:
- "Date-stamp everything"
- "Over-document rather than under-document"
- "Include all dependencies explicitly"
- "Test the complete package before delivery"
- "One ZIP/folder contains everything"
- "No external references"