Use when user says "/release-prep", "prepare release", "release readiness", or needs to verify a milestone is ready for release.
Comprehensive release preparation for a GitHub milestone.
$ARGUMENTS: The milestone version (e.g., "v0.4.0" or "0.4.0")--deploy-aws: Deploy a test stack to AWS to verify features (optional)--skip-docs: Skip documentation review (optional)Execute these steps in order, providing progress updates to the user.
Use the /milestone skill to get the current status:
/milestone <version>
Then fetch the full narrative issue body for success criteria:
gh issue view <epic-number> --json number,title,body
Report: milestone progress, open vs closed issues, narrative theme and success criteria.
Compare changes between the previous version tag and current branch:
# List commits since previous version
git log v<prev>..<current> --oneline
# Show changed files
git diff v<prev>..<current> --stat
# For public API changes, examine:
# - src/zae_limiter/__init__.py (exports)
# - src/zae_limiter/limiter.py (RateLimiter methods)
# - src/zae_limiter/models.py (data models)
# - src/zae_limiter/cli.py (CLI commands)
Report: Summary of changes organized by area (API, CLI, infra, docs).
Check that changes are backwards compatible:
Look for:
__init__.pyReport: Compatibility assessment with specific findings.
If --deploy-aws is specified OR if success criteria require runtime verification:
Deploy a test stack:
AWS_PROFILE=zeroae-code/AWSPowerUserAccess uv run zae-limiter deploy \
--name test-release-prep \
--region us-east-1 \
--permission-boundary "arn:aws:iam::aws:policy/PowerUserAccess" \
--role-name-format "PowerUserPB-{}"
Write and run verification script based on success criteria from narrative
Clean up:
AWS_PROFILE=zeroae-code/AWSPowerUserAccess uv run zae-limiter delete \
--name test-release-prep --yes
Report: Success criteria verification results (pass/fail for each).
Find and tag any commits/PRs between versions that aren't in the milestone:
# Find PRs merged since previous version
gh pr list --state merged --json number,title,mergedAt,milestone \
--jq '.[] | select(.milestone == null or .milestone.title != "vX.Y.Z")'
# Find closed issues that may be missing milestone
gh issue list --state closed --json number,title,closedAt,milestone \
--jq '.[] | select(.milestone == null)'
For each untracked item:
Review documentation for completeness:
CLAUDE.md - developer referencedocs/ - user-facing documentationReport: Documentation status (up-to-date / needs updates).
Update the epic issue with:
gh issue edit <epic-number> --body "<updated-body>"
Provide a release readiness summary:
## Release Readiness: vX.Y.Z
**Status:** Ready / Needs Work
### Checklist
- [ ] All success criteria verified
- [ ] Backwards compatible
- [ ] All work tagged to milestone
- [ ] Documentation up-to-date
- [ ] Open issues: N remaining
### Open Items (if any)
- Issue #X: <title>
### Next Steps
1. Close remaining issues (if any)
2. Close narrative epic #X
3. Create release tag: `git tag vX.Y.Z && git push origin vX.Y.Z`
AWS_PROFILE=zeroae-code/AWSPowerUserAccess for AWS operations.claude/rules/aws-testing.md)