| name | release-automation |
| description | Automate software releases, versioning, and changelog management. Use when working with GitHub releases, semantic versioning, release workflows, version bumping, CHANGELOG updates, or release note generation. Handles tag creation, asset publishing, SBOM generation, and artifact signing. |
Release Automation Specialist
Mission
Automate and streamline the entire release process for the Brainarr project, ensuring consistent versioning, comprehensive release notes, and proper artifact management.
Expertise Areas
1. Semantic Versioning
- Implement and enforce semantic versioning (MAJOR.MINOR.PATCH)
- Handle pre-release versions (alpha, beta, rc)
- Coordinate version numbers across multiple files (csproj, plugin.json, VERSION)
- Detect breaking changes and suggest appropriate version bumps
2. Release Workflow Automation
- Design and implement GitHub Actions release workflows
- Create automated release pipelines triggered by version tags
- Implement release approval and validation gates
- Handle hotfix and emergency release scenarios
3. Changelog Management
- Generate changelogs from commit messages (conventional commits)
- Update CHANGELOG.md automatically
- Parse commit history for features, fixes, and breaking changes
- Create well-formatted release notes for GitHub releases
4. Artifact Management
- Package plugins as ZIP files with proper structure
- Generate checksums (SHA256, SHA512) for releases
- Sign artifacts using Cosign or GPG
- Generate Software Bill of Materials (SBOM) in SPDX format
- Attach artifacts to GitHub releases
5. Release Validation
- Run full test suite before release
- Validate assembly versions match tag version
- Check plugin.json version consistency
- Verify documentation is up-to-date
- Ensure CHANGELOG has entry for the version
Current Project Context
Brainarr Release Infrastructure
- Current Status: Advanced (release.yml workflow exists with signing)
- Version File: VERSION (single source of truth)
- Build System: MSBuild with .NET 6.0
- Package Format: ZIP with plugin structure
- Signing: Cosign keyless signing implemented
- SBOM: Generated via Anchore
- Existing Workflows: release.yml (~450 lines)
Key Files to Maintain
.github/workflows/release.yml - Main release pipeline
.github/scripts/bump-version.ps1 - Version update automation
.github/scripts/generate-release-notes.sh - Release notes generation
CHANGELOG.md - Version history
VERSION - Single source of truth for version
Brainarr.Plugin/Brainarr.Plugin.csproj - Project version
Brainarr.Plugin/plugin.json - Plugin manifest version
Best Practices
Version Management
- Single Source of Truth: Use VERSION file as canonical source
- Automated Propagation: Update all version references from VERSION file
- Validation: Ensure tag matches VERSION file in release workflow
- Pre-release Handling: Support alpha, beta, rc suffixes
Release Process
-
Pre-release Checks:
- All tests pass
- No uncommitted changes
- CHANGELOG updated
- Documentation current
- Breaking changes documented
-
Release Execution:
- Create and push version tag
- Trigger release workflow
- Build and test
- Package artifacts
- Generate SBOM
- Sign artifacts
- Create GitHub release
-
Post-release:
- Update
latest tag
- Notify stakeholders
- Update wiki documentation
- Archive release artifacts
Release Notes Format
## What's New in v1.3.1
### Features
- โจ Added support for new AI provider
- ๐ฏ Improved recommendation accuracy
### Bug Fixes
- ๐ Fixed caching issue with artist metadata
- ๐ง Corrected token estimation for long prompts
### Performance
- โก Reduced API call latency by 40%
### Security
- ๐ Updated dependencies with security patches
### Documentation
- ๐ Added troubleshooting guide for OAuth setup
**Full Changelog**: https://github.com/.../compare/v1.3.0...v1.3.1
Commands & Scripts
Version Bump
# Bump version to next patch
.github/scripts/bump-version.ps1 -BumpType patch
# Bump to specific version
.github/scripts/bump-version.ps1 -Version "1.4.0"
# Bump to pre-release
.github/scripts/bump-version.ps1 -Version "1.4.0-beta.1"
Release Tag Creation
.github/scripts/tag-release.sh v1.4.0
.github/scripts/quick-release.sh patch
Manual Release Trigger
gh workflow run release.yml -f version=1.4.0
Workflow Integration
GitHub Actions Release Flow
- Trigger: Tag push matching
v*.*.*
- Prepare: Extract version, validate format
- Build: Compile with Lidarr assemblies
- Test: Run full test suite
- Package: Create ZIP with checksums
- SBOM: Generate Software Bill of Materials
- Sign: Cosign keyless signing
- Release: Create GitHub release with notes
- Wiki: Update documentation
Release Checklist
Troubleshooting
Version Mismatch Errors
Problem: Tag version doesn't match VERSION file
Solution: Ensure VERSION file is committed before tagging
Release Workflow Fails
Problem: Tests fail during release
Solution: Run ./test-local-ci.ps1 locally first
Missing Artifacts
Problem: ZIP or checksums not attached
Solution: Check artifact upload step in workflow logs
Signing Failures
Problem: Cosign keyless signing fails
Solution: Verify OIDC token permissions in workflow
Enhancement Opportunities
For Brainarr
- Automated Changelog: Implement conventional commit parsing
- Release Drafter: Auto-draft releases from PRs
- Beta Channel: Automated beta releases from develop branch
- Release Notifications: Discord/Slack notifications
- Artifact Verification: Add verification documentation
Related Skills
code-quality - Ensure quality gates before release
artifact-manager - Handle artifact lifecycle
deployment-manager - Deploy releases to environments
Examples
Example 1: Create New Release
User: "Create a new release for version 1.4.0"
Action:
- Update VERSION file to 1.4.0
- Update CHANGELOG.md with new features/fixes
- Update csproj and plugin.json versions
- Commit changes
- Create and push tag v1.4.0
- Monitor release workflow
Example 2: Fix Release Issue
User: "The release workflow failed on signing"
Action:
- Check workflow logs for signing error
- Verify Cosign configuration
- Check OIDC token permissions
- Re-run workflow or create new tag if needed
Example 3: Generate Release Notes
User: "Generate release notes for the changes since v1.3.0"
Action:
- Parse git log between v1.3.0 and HEAD
- Categorize commits by type
- Format as markdown with emojis
- Include full changelog link