Use when (1) preparing a release for staging or production, (2) generating release notes and changelog, (3) verifying environment readiness before deployment. Prepares all artifacts needed for a release.
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: gmacko-release-prepare
description: Use when (1) preparing a release for staging or production, (2) generating release notes and changelog, (3) verifying environment readiness before deployment. Prepares all artifacts needed for a release.
license: MIT
compatibility: opencode
metadata:
phase: release
tier: workhorse
permission: allow
---
# Gmacko Release Preparation
Prepare release artifacts including changelog, release notes, and environment verification.
## When to Use
- QA verification is complete (APPROVED)
- Ready to deploy to staging or production
- Need to generate release notes
- Cutting a new version
## Prerequisites
- QA handoff exists and is APPROVED
- All related PRs are merged
- Branch is ready for deployment
## Workflow
```dot
digraph release_prepare {
rankdir=TB;
node [shape=box];
start [label="Start Preparation" shape=ellipse];
gather [label="1. Gather Changes"];
version [label="2. Determine Version"];
notes [label="3. Generate Release Notes"];
changelog [label="4. Update CHANGELOG"];
env [label="5. Verify Environment"];
migration [label="6. Check Migrations"];
checklist [label="7. Run Release Checklist"];
summary [label="8. Create Release Summary"];
done [label="Ready for Deploy" shape=ellipse];
start -> gather -> version -> notes;
notes -> changelog -> env -> migration;
migration -> checklist -> summary -> done;
}
```
## Execution Steps
### Step 1: Gather Changes
Collect all changes since last release:
```bash
# Get last release tag
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
# List commits since last release
if [ -n "$LAST_TAG" ]; then
git log ${LAST_TAG}..HEAD --oneline --no-merges
else
git log --oneline -20
fi
# List merged PRs
gh pr list --state merged --limit 20 --json number,title,labels
```
Categorize changes:
- **Features**: New functionality
- **Fixes**: Bug fixes
- **Improvements**: Enhancements
- **Breaking**: Breaking changes
- **Docs**: Documentation updates
- **Chores**: Maintenance/tooling
### Step 2: Determine Version
Follow semantic versioning:
```
MAJOR.MINOR.PATCH
MAJOR: Breaking changes
MINOR: New features (backwards compatible)
PATCH: Bug fixes (backwards compatible)
```
Ask user:
> Based on the changes, I recommend version **[X.Y.Z]**.
>
> Changes include:
> - [N] new features
> - [N] bug fixes
> - [N] breaking changes
>
> Is this version correct, or would you like to specify?
### Step 3: Generate Release Notes
Create release notes:
```markdown
# Release Notes: v[X.Y.Z]
**Release Date**: [YYYY-MM-DD]
**Environment**: [staging/production]
## Highlights
[1-2 sentence summary of the most important changes]
## What's New
### Features
- **[Feature Name]**: [Brief description] (#123)
- **[Feature Name]**: [Brief description] (#124)
### Improvements
- [Improvement description] (#125)
### Bug Fixes
- Fixed [issue description] (#126)
- Fixed [issue description] (#127)
## Breaking Changes
[If any, describe migration steps]
## Dependencies
- Updated [package] from X to Y
- Added [new package] for [purpose]
## Contributors
- @username
- @username
## Full Changelog
[Link to compare: previous...current]
```
### Step 4: Update CHANGELOG
Update `CHANGELOG.md` (if it exists) or `docs/ai/CHANGELOG.md`:
```markdown
## [X.Y.Z] - YYYY-MM-DD
### Added
- Feature description (#123)
### Changed
- Change description (#124)
### Fixed
- Fix description (#125)
### Removed
- Removal description (#126)
```
### Step 5: Verify Environment
Check target environment is ready:
```bash
# For Vercel (web)
vercel env ls --environment production
# Check required env vars are set
REQUIRED_VARS=(
"DATABASE_URL"
"CLERK_SECRET_KEY"
"NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY"
)
for var in "${REQUIRED_VARS[@]}"; do
vercel env ls --environment production | grep -q "$var" && \
echo "OK: $var" || echo "MISSING: $var"
done
```
For mobile (EAS):
```bash
# Check EAS configuration
eas config --platform ios
eas config --platform android
# Verify credentials
eas credentials --platform ios
eas credentials --platform android
```
### Step 6: Check Migrations
If database changes are included:
```markdown
## Migration Check
### Pending Migrations
- [ ] `20250105_add_feature_table.sql`
### Migration Plan
1. Backup production database
2. Apply migration in staging first
3. Verify data integrity
4. Apply to production during low-traffic window
### Rollback Plan
```sql
-- Rollback script
DROP TABLE IF EXISTS new_table;
ALTER TABLE existing_table DROP COLUMN new_column;
```
### Data Impact
- Rows affected: ~[N]
- Estimated duration: [X] seconds
- Downtime required: No
```
### Step 7: Run Release Checklist
Use the release checklist from `docs/ai/checklists/release-checklist.md`:
```markdown
## Pre-Release Checklist
### Code Quality
- [ ] All PRs merged
- [ ] `pnpm typecheck` passes
- [ ] `pnpm lint` passes
- [ ] `pnpm build` succeeds
### Testing
- [ ] QA verification complete
- [ ] No blocking issues
- [ ] Regression tests passed
### Documentation
- [ ] Release notes written
- [ ] CHANGELOG updated
- [ ] Migration guide ready (if needed)
### Environment
- [ ] Env vars configured
- [ ] Third-party services ready
- [ ] SSL certificates valid
```
### Step 8: Create Release Summary
Write `docs/ai/releases/[date]-v[version].md`:
```markdown
# Release: v[X.Y.Z]
## Metadata
- **Version**: X.Y.Z
- **Date**: YYYY-MM-DD
- **Tag**: v[X.Y.Z]
- **Prepared by**: AI Assistant
## Status
- [ ] Staging deployed
- [ ] Staging verified
- [ ] Production deployed
- [ ] Production verified
## Changes Summary
| Type | Count |
|------|-------|
| Features | X |
| Fixes | Y |
| Improvements | Z |
### Key Changes
1. [Most important change]
2. [Second most important]
3. [Third most important]
## PRs Included
- #123: [Title]
- #124: [Title]
- #125: [Title]
## Issues Closed
- #100: [Title]
- #101: [Title]
## Environment Verification
- [x] Production env vars set
- [x] Database migrations ready
- [x] Third-party services configured
## Deployment Commands
### Web (Vercel)
```bash
# Automatic via git push to main
git push origin main
# Or manual
vercel --prod
```
### Mobile (EAS)
```bash
# Build
eas build --platform all --profile production
# Submit
eas submit --platform ios
eas submit --platform android
```
## Rollback Plan
### Web
```bash
vercel rollback
```
### Database
```bash
# Run rollback migration
pnpm db:rollback
```
## Post-Deployment
- [ ] Smoke test production
- [ ] Monitor Sentry for errors
- [ ] Check analytics events
- [ ] Update status page
---
**Prepared by**: AI Assistant
**Approved by**: [Pending]
```
## Output
Present summary to user:
```
RELEASE PREPARATION COMPLETE
============================
Version: v[X.Y.Z]
Changes: [N] features, [N] fixes, [N] improvements
Breaking Changes: [Yes/No]
Artifacts Created:
- docs/ai/releases/[date]-v[version].md
- Release notes (ready for GitHub release)
- CHANGELOG updated
Environment Status:
- Web (Vercel): READY
- Mobile (EAS): READY
- Database: [N] pending migrations
Next Steps:
1. Review release summary
2. Run `gmacko-release-deploy-web` for Vercel deployment
3. Run `gmacko-release-deploy-mobile` for EAS builds (if applicable)
Proceed with deployment?
```
## Red Flags
| Rationalization | Correction |
|-----------------|------------|
| "Skip env verification, it worked before" | ALWAYS verify environment for each release |
| "No migrations, skip that section" | Document "no migrations" explicitly |
| "Changelog can be updated later" | Update changelog BEFORE deploying |
| "Just push to main, Vercel handles it" | Follow full preparation process |
## Integration
- **Input**: Version number (or auto-determine), target environment
- **References**: QA handoffs, merged PRs, git history
- **Output**: Release summary, changelog updates, release notes
- **Next**: `gmacko-release-deploy-web` or `gmacko-release-deploy-mobile`
No comments yet. Be the first to comment!