From sw
Orchestrates multi-repo releases with semantic versioning enforcement, alignment strategies (lockstep/independent/umbrella), RC lifecycles (alpha/beta/rc), dependency waves, brownfield detection, and rollback planning. Use for synchronized releases or version alignment.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sw:release-expertopusThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Multi-repo release orchestration, version alignment, RC lifecycle management, and release strategy.
Multi-repo release orchestration, version alignment, RC lifecycle management, and release strategy.
Format: MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]
Version Bump Rules:
MAJOR (1.0.0 -> 2.0.0):
- Breaking changes (incompatible API)
- Remove features
- Change behavior of existing features
Examples:
- Remove deprecated endpoints
- Change function signatures
- Modify data formats
MINOR (1.0.0 -> 1.1.0):
- New features (backward compatible)
- Add endpoints/functions
- Deprecate (but don't remove) features
Examples:
- Add new API endpoints
- Add optional parameters
- New module exports
PATCH (1.0.0 -> 1.0.1):
- Bug fixes (no API changes)
- Performance improvements
- Documentation updates
Examples:
- Fix null pointer error
- Optimize database query
- Update README
Pre-Release Tags:
Alpha: 1.0.0-alpha.1 # Early development (unstable)
Beta: 1.0.0-beta.1 # Feature complete (testing)
RC: 1.0.0-rc.1 # Release candidate (near production)
Final: 1.0.0 # Production release
Strategy: Lockstep
When to Use: Tight coupling, small team, shared breaking changes
Current State:
- frontend: v2.5.0
- backend: v2.5.0
- api: v2.5.0
Rules:
- ALL repos MUST bump together
- Use highest bump type (if any repo needs MAJOR, all bump MAJOR)
- Version always stays in sync
Strategy: Independent
When to Use: Loose coupling, autonomous teams, frequent releases
Current State:
- frontend: v4.2.0
- backend: v2.8.0
- api: v3.1.0
Rules:
- Each repo versions independently
- Only bump repos with changes
- Validate compatibility constraints
Strategy: Umbrella
When to Use: Product milestones, services evolve at different rates
Product: v5.0.0 (umbrella)
- frontend: v4.2.0
- backend: v2.8.0
- api: v3.1.0
Rules:
- Product version bumps for milestones
- Services version independently
- Track matrix in release-strategy.md
Analyzes commits to suggest version bumps:
# MAJOR (breaking change)
feat!: remove legacy authentication
BREAKING CHANGE: Old auth endpoints removed
# MINOR (new feature)
feat: add real-time notifications
feat(api): add WebSocket support
# PATCH (bug fix)
fix: prevent null pointer in user service
fix(ui): correct button alignment
perf: optimize database queries
# No version bump
docs: update README
chore: upgrade dependencies
style: format code
refactor: extract helper function
test: add unit tests
Version Bump Calculation:
# Example commit history
git log v2.5.0..HEAD --oneline
feat!: remove deprecated endpoints # BREAKING
feat: add dark mode toggle # FEATURE
fix: prevent crash on logout # BUGFIX
docs: update API documentation # NO BUMP
# Analysis: Breaking changes detected -> MAJOR bump
# Suggested: v2.5.0 -> v3.0.0
# Scenario: Two services depend on different versions of shared-lib
service-a:
package.json: "shared-lib": "^2.0.0"
Currently using: v2.0.0
service-b:
package.json: "shared-lib": "^1.5.0"
Currently using: v1.8.0
Conflict:
- service-a requires shared-lib v2.x (breaking changes)
- service-b still on shared-lib v1.x (outdated)
- Cannot release until service-b upgrades
Resolution:
1. Update service-b to "shared-lib": "^2.0.0"
2. Test service-b with shared-lib v2.0.0
3. Release service-b
4. Then proceed with coordinated release
# Scenario: Frontend expects API v3, but backend provides v2
frontend:
api-client: v3.0.0
Expects: POST /api/v3/users
backend:
Current version: v2.8.0
Provides: POST /api/v2/users
Conflict:
- Frontend expects v3 API
- Backend hasn't released v3 yet
Resolution:
1. Release backend v3.0.0 first (Wave 1)
2. Verify API v3 endpoints work
3. Then release frontend v5.0.0 (Wave 2)
# Build-time dependencies
shared-lib: v2.0.0
- service-a: v3.1.0 (depends on shared-lib)
- service-b: v2.5.0 (depends on shared-lib)
# Runtime dependencies
auth-service: v1.8.0
- api-gateway: v2.0.0 (calls auth-service)
- frontend: v3.2.0 (calls api-gateway)
Release Order Calculation:
### Wave 1 (Foundations)
- [ ] shared-lib: v2.0.0 -> v3.0.0
- [ ] database-migrations: v9 -> v10
### Wave 2 (Backend Services)
- [ ] auth-service: v1.8.0 -> v2.0.0 (depends: shared-lib v3.0.0)
- [ ] user-service: v1.5.0 -> v2.0.0 (depends: schema v10)
### Wave 3 (API Layer)
- [ ] api-gateway: v2.0.0 -> v3.0.0 (depends: auth-service v2.0.0)
### Wave 4 (Frontend)
- [ ] web-app: v3.2.0 -> v4.0.0 (depends: api-gateway v3.0.0)
# 1. Create RC
git tag -a v2.0.0-rc.1 -m "Release candidate 1"
npm version 2.0.0-rc.1
# 2. Deploy to staging
gh release create v2.0.0-rc.1 --prerelease
# 3. Testing phase (1-2 weeks)
# Bug found -> create v2.0.0-rc.2
# 4. Promote to final
git tag -a v2.0.0 -m "Production release"
npm version 2.0.0
gh release create v2.0.0 # NOT prerelease
DRAFT -> TESTING -> VALIDATED -> PROMOTED
| |
FAILED HOTFIX -> back to TESTING
# List RC tags
git tag -l "*-rc.*" | sort -V
# Delete old RC after promotion
git tag -d v2.0.0-rc.1 v2.0.0-rc.2
git push origin --delete v2.0.0-rc.1 v2.0.0-rc.2
# 1. Version Compatibility
shared-lib v2.0.0 compatible with service-a v3.0.0
Database schema v10 required but only v9 deployed
# 2. CI/CD Status
All tests passing
Staging deployment status
# 3. Documentation
CHANGELOG.md updated
Migration guide present
## Rollback: v3.0.0 -> v2.5.0 (Reverse wave order)
### Wave 1 (Rollback Frontend First)
- [ ] web-app: v4.0.0 -> v3.2.0
- [ ] mobile-app: v3.0.0 -> v2.5.0
### Wave 2 (Rollback API Layer)
- [ ] api-gateway: v3.0.0 -> v2.8.0
### Wave 3 (Backend - Optional)
- [ ] Keep backend if backward compatible
// service-a/package.json
{
"dependencies": {
"shared-lib": "^2.0.0" // Allows 2.0.0 to <3.0.0
}
}
// Validation
shared-lib v2.0.0 -> Compatible
shared-lib v2.5.0 -> Compatible
shared-lib v2.9.9 -> Compatible
shared-lib v3.0.0 -> Incompatible (MAJOR change)
Tracks versions for umbrella releases:
# Product Version Matrix
## v6.0.0 (Latest)
- frontend: v5.0.0
- backend: v2.9.0
- api-gateway: v4.0.0
- auth-service: v2.1.0
- shared-lib: v2.0.0
- database-schema: v12
## Compatibility Matrix
| Product | Frontend | Backend | API Gateway | Shared Lib | Schema |
|---------|----------|---------|-------------|------------|--------|
| v6.0.0 | v5.0.0 | v2.9.0 | v4.0.0 | v2.0.0 | v12 |
| v5.0.0 | v4.2.0 | v2.8.0 | v3.1.0 | v1.5.0 | v11 |
## Breaking Changes
### v6.0.0
- API Gateway v3 -> v4: Removed legacy /v2 endpoints
- Shared Lib v1 -> v2: Changed authentication interface
- Schema v11 -> v12: Added user_metadata table
Analyzes existing projects to detect release patterns:
Creates release-strategy.md:
# Release Strategy: {Product Name}
## Current Strategy
- Type: Multi-repo / Monorepo / Microservices
- Versioning: Semantic / Date-based
- Alignment: Lockstep / Independent / Umbrella
- RC Process: Pre-release tags / Channels
## Release Checklist
- [ ] All tests passing
- [ ] Changelog updated
- [ ] Version bumped
- [ ] Git tag created
- [ ] GitHub release published
- [ ] Package published
- [ ] Documentation updated
# 1. Plan release increment
sw:increment "0025-product-v3-release"
# 2. Execute wave-by-wave
sw:do
# 3. Complete release
sw:done 0025
sw-release:release-expert - Full release orchestration and version alignmentsw-release:validate-versions - Check compatibilitysw-release:bump <repo> <type> - Bump specific reposw-release:matrix - Show version matrixSemver Discipline:
Dependency Management:
Release Coordination:
Version Matrix:
Automation:
Creates/Updates:
package.json (version field)CHANGELOG.md (release notes).specweave/docs/internal/delivery/version-matrix.mdProvides:
Goal: Consistent, predictable versioning and coordinated releases across all repositories with clear compatibility guarantees.
npx claudepluginhub anton-abyzov/specweave --plugin swOrchestrates GitHub releases with automated versioning, changelog generation, multi-platform builds, and rollback support. Use when cutting a release or coordinating a deploy.
Configures Google's release-please for automated versioning, changelog generation, and publishing via GitHub Actions using Conventional Commits.
Manages git project releases: creates milestones, generates roadmaps, executes 9-stage pipeline with submodule support, closes releases. Yolo mode enables autonomous runs.