name: release-manager
description: Automated release management skill for uiautomator2-mcp-server. Evaluates codebase status, runs checks, updates documentation, and manages the complete release workflow.
license: Apache-2.0
compatibility: Requires Git repository with proper configuration, Python environment, and GitHub access
metadata:
author: uiautomator2-mcp-server team
version: 1.0.0
purpose: project-specific release automation
category: development-tool
Release Manager Skill
⚠️ CRITICAL: Git Tag Timing & Branch Management
MOST IMPORTANT: Git tagging MUST happen at the EXACT LAST MOMENT before pushing to remote, on the main/master branch ONLY.
The Absolute Rule
Git tag creation is the FINAL step before pushing - nothing comes after it except `git push`.
Tag Timing Rules
❌ WRONG: Tag during development/testing phase ❌ WRONG: Tag before final validation ❌ WRONG: Tag before merging to main/master ❌ WRONG: Tag on develop branch ❌ WRONG: Tag → then discover uncommitted files ❌ WRONG: Tag → then realize tests need to run ✅ CORRECT: All work complete → Merged to main/master → Tag (FINAL STEP) → Push
Branch Management Rules
- Development happens on:
develop branch - Release commits created on:
develop branch - Merge direction:
develop → main (or master) - Tag location:
main (or master) branch ONLY - Push order: Push main branch, then push tag
Why this matters:
- Premature tagging creates broken releases where the tag points to incomplete/untested code
- Tags on wrong branches cause version confusion and deployment issues
- Proper branch isolation ensures clean release history
- Tagging as the final step guarantees the tagged commit is exactly what gets published
Goals
- Automate the complete release workflow from evaluation to publication
- Ensure code quality and documentation completeness before release
- Provide interactive release management with human oversight
- Support both standard and emergency release scenarios
- CRITICALLY: Enforce proper git tag timing to prevent broken releases
Prerequisites
- Git repository with proper remote configuration
- Python development environment with required tools installed
- GitHub account with repository access permissions
- Proper version control setup (main/develop branches)
- Pre-commit hooks configured and working
Release Workflow Phases
Phase 1: Codebase Evaluation
- Assess current Git status and branch position
- Review recent commits and changes since last release
- Check version numbers and changelog entries
- CRITICAL: Verify all untracked files are handled (committed or .gitignore'd)
- Verify working directory is clean (no uncommitted changes)
- Evaluate overall project health and readiness
⚠️ NO git operations in this phase
Phase 2: Quality Assurance
- Run comprehensive test suite
- Execute pre-commit checks and linting
- Validate documentation completeness
- Check for breaking changes and migration guides
⚠️ NO git operations in this phase
Phase 3: Preparation
- Update version numbers if needed
- Finalize CHANGELOG entries
- Update README and other documentation
- Prepare release notes and announcements
⚠️ Changes made but NOT tagged yet
Phase 4: Execution (Critical Timing Phase)
DEVELOPMENT BRANCH: develop RELEASE BRANCH: main (or master)
- VERIFY all changes are committed (check
git status - clean working directory) - CREATE FINAL RELEASE COMMIT on develop branch
- SWITCH to main/master branch:
git checkout main (or master) - MERGE develop to main/master:
git merge develop - VERIFY merge is clean (fast-forward preferred, or clean merge)
- VERIFY on correct branch (main/master)
- VERIFY working directory is still clean
- CREATE GIT TAG on main/master ← THE FINAL STEP
- This is the LAST action before pushing
- NOTHING should happen after tagging except push
- PUSH main/master branch to remote
- PUSH tag to remote
- Monitor CI/CD pipeline status
Phase 5: Verification
- Confirm successful GitHub release creation
- Verify PyPI package publication
- Check documentation deployment
- Send release notifications
Critical Git Tag Timing & Branch Rules
✅ CORRECT SEQUENCE:
1. Make all necessary code/documentation changes (on develop)
2. Verify git status - ensure ALL files are committed
3. Run complete tests and validation
4. Get final approval for release
5. Create final release commit on develop
6. Switch to main/master branch
7. Merge develop to main/master
8. Verify on correct branch (main/master)
9. Verify working directory is clean
10. CREATE GIT TAG on main/master (FINAL STEP - NOTHING AFTER THIS)
11. Push everything to remote
❌ INCORRECT SEQUENCES TO AVOID:
❌ Test → Tag → Fix issues → Push (Tag points to broken code)
❌ Develop → Tag → Test → Push (Tag created too early)
❌ Tag → Test → Fix → Push (Backwards workflow)
❌ Tag → Find uncommitted files → Commit → Tag wrong commit (Version confusion)
❌ Tag → Realize need to merge → Merge → Tag wrong commit (Wrong branch)
❌ Merge → Push → Remember to tag → Tag → Push tag (Tag missed the release)
Interactive Decision Points
The skill will pause at key decision points to allow human review:
- ✅ Pre-flight Check: Confirm release readiness assessment
- ✅ Quality Gate: Approve test results and code quality
- ✅ Final Approval: CRITICAL - Authorize git tag creation
- ✅ Post-release Verification: Confirm successful deployment
Error Handling & Rollback
Common Issues Handled:
- Tag created on wrong branch: Delete and recreate on correct branch
- Uncommitted changes discovered: Commit and restart tag process
- Test failures during QA phase: Fix and re-run tests before tagging
- Git conflicts during merge: Resolve and verify clean merge
- Version numbering inconsistencies: Validate across all files
- Documentation validation errors: Fix before proceeding
- CI/CD pipeline failures: Monitor and handle appropriately
Rollback Procedures:
- Automatic stash/unstash for failed operations
- Branch restoration from backup references
- Tag deletion for failed releases
- Commit reversion with explanatory messages
Configuration Options
Release Types:
- Standard Release: Full workflow with all checks
- Hotfix Release: Accelerated workflow for critical fixes
- Pre-release: Alpha/beta/rc versions with limited distribution
- Dry Run: Simulation mode without actual publishing
Safety Levels:
- Conservative: Strict checks, manual approvals at every step
- Balanced: Reasonable automation with key checkpoints
- Aggressive: Maximum automation, minimal human intervention
Success Criteria
A release is considered successful when:
- ✅ All tests pass consistently
- ✅ Pre-commit checks complete without errors
- ✅ Documentation is complete and accurate
- ✅ GIT TAG CREATED AT CORRECT MOMENT
- ✅ Version tags are properly pushed
- ✅ GitHub release is published successfully
- ✅ CI/CD pipelines complete successfully
- ✅ Package is available on PyPI
Emergency Procedures
For urgent releases:
- Fast-track critical fixes through abbreviated workflow
- Bypass non-essential checks with proper justification
- Coordinate with team for expedited review
- STILL FOLLOW PROPER TAG TIMING
- Document emergency release rationale
- Follow up with proper post-release validation
This skill ensures professional, reliable release management while maintaining flexibility for different scenarios and urgency levels.