<required_reading> @~/.maestro/workflows/milestone-release.md </required_reading>
Flags:
<version>— Explicit version (e.g.1.2.0). If omitted, derived from--bump.--bump patch|minor|major— Semver bump (default:minor)--dry-run— Compute version + changelog without writing--no-tag— Skip git tag creation--no-push— Skipgit push --follow-tags
Preconditions:
- Current milestone completed (audit PASS + milestone-complete run)
- Working tree clean (no uncommitted changes) unless
--dry-run
Flow: Validate preconditions → Resolve version → Collect changes → Generate CHANGELOG → Confirmation gate → Bump manifest → Commit → Tag → Push
Default behavior: Without explicit --no-dry-run or user confirmation, the skill runs in dry-run mode (preview only). This prevents accidental commits, tags, and pushes.
Confirmation gate (before any git write operations):
Unless -y flag is set, display a summary and ask user via request_user_input:
Release preview:
Version: v{previous} → v{new}
Milestone: {name}
Changelog: {N} entries
Actions: commit + tag{" + push" unless --no-push}
Options: "Confirm release" / "Dry-run only (preview)" / "Cancel"
- "Confirm release" → proceed with commit, tag, push
- "Dry-run only" → display report without writing
- "Cancel" → abort
Report:
=== RELEASE COMPLETE ===
Version: v{previous} → v{new}
Milestone: {name}
Tag: v{new} {pushed|local-only}
Changelog: {N} entries
<error_codes>
| Code | Severity | Condition | Recovery |
|---|---|---|---|
| E001 | error | Milestone not completed | Run $maestro-milestone-complete first |
| E002 | error | Audit verdict not PASS | Re-run $maestro-milestone-audit |
| E003 | error | Working tree not clean | Commit or stash changes |
| E004 | error | Version manifest not found | Add manifest or pass explicit version |
| E005 | error | Version not greater than current | Choose higher version |
| W001 | warning | No changes since last tag | Confirm release is desired |
| W002 | warning | Remote push failed | Retry git push --follow-tags |
| </error_codes> |
<success_criteria>
- Preconditions validated
- Confirmation gate passed (user confirmed or
-yset) before any git write operations - Target version computed and greater than previous
- Version manifest(s) updated
- CHANGELOG.md entry with milestone summary + grouped changes
- Release commit created
- Annotated git tag created (unless --no-tag)
- Pushed to remote (unless --no-push)
- state.json updated with last_release_version </success_criteria>