返回 Skill 列表
extension
分类: 开发与工程无需 API Key

gmacko-release-close

在以下情况下使用:(1) 发布已部署并验证,(2) 关闭相关问题和PR,(3) 使用变更日志创建GitHub发布,(4) 完成发布文档。完成整个发布生命周期。

person作者: jakexiaohubgithub

Gmacko Release Closure

Finalize release by closing issues, creating GitHub release, and archiving documentation.

When to Use

  • Deployment is complete and verified
  • Ready to close related issues
  • Need to create GitHub release
  • Archiving release documentation

Prerequisites

  • Deployment verified (web and/or mobile)
  • Release summary exists
  • gh CLI authenticated

Workflow

digraph release_close {
    rankdir=TB;
    node [shape=box];
    
    start [label="Start Closure" shape=ellipse];
    verify [label="1. Verify Deployment"];
    issues [label="2. Close Issues"];
    prs [label="3. Annotate PRs"];
    tag [label="4. Create Git Tag"];
    release [label="5. Create GitHub Release"];
    cleanup [label="6. Cleanup Branches"];
    notify [label="7. Notify Stakeholders"];
    archive [label="8. Archive Documentation"];
    done [label="Release Closed" shape=ellipse];
    
    start -> verify -> issues -> prs -> tag;
    tag -> release -> cleanup -> notify -> archive -> done;
}

Execution Steps

Step 1: Verify Deployment

Confirm all deployments are successful:

## Deployment Verification

### Web (Vercel)
- [ ] Production URL accessible: https://app.example.com
- [ ] Smoke tests passed
- [ ] No error spikes in Sentry

### Mobile (if applicable)
- [ ] iOS build submitted/approved
- [ ] Android build submitted/approved
- [ ] OTA update published (if applicable)

Ask user:

Before closing the release, please confirm:

  1. Web production is stable? (yes/no)
  2. Mobile apps are approved/live? (yes/no/not-applicable)
  3. Any issues reported since deployment? (yes/no)

Step 2: Close Issues

Find and close related issues:

# List issues that should be closed
gh issue list --state open --label "status:in-progress"

# Get issues linked to merged PRs
gh pr list --state merged --json number,title,closingIssuesReferences

Close each issue with comment:

# Close issue with release reference
gh issue close [number] --comment "Released in v[X.Y.Z]. 

Deployment verified on [date].
- Web: https://app.example.com
- Mobile: v[X.Y.Z] on App Store/Play Store"

Track closures:

## Issues Closed

| Issue | Title | Closed |
|-------|-------|--------|
| #100 | [Title] | Yes |
| #101 | [Title] | Yes |
| #102 | [Title] | Deferred (partial) |

Step 3: Annotate PRs

Add release info to merged PRs:

# Add comment to PR
gh pr comment [number] --body "Released in v[X.Y.Z] :rocket:

Production: https://app.example.com
Release Notes: https://github.com/gmacko/project/releases/tag/v[X.Y.Z]"

Step 4: Create Git Tag

Create annotated tag for release:

# Create annotated tag
git tag -a "v[X.Y.Z]" -m "Release v[X.Y.Z]

Features:
- [Feature 1]
- [Feature 2]

Fixes:
- [Fix 1]
- [Fix 2]

See full changelog: docs/ai/releases/[date]-v[version].md"

# Push tag to remote
git push origin "v[X.Y.Z]"

Step 5: Create GitHub Release

Create release with notes:

# Create release from tag
gh release create "v[X.Y.Z]" \
  --title "v[X.Y.Z]" \
  --notes-file /tmp/release-notes.md

# Or with inline notes
gh release create "v[X.Y.Z]" \
  --title "Release v[X.Y.Z]" \
  --notes "## What's New

### Features
- **[Feature]**: Description (#123)

### Bug Fixes
- Fixed [issue] (#124)

### Full Changelog
https://github.com/gmacko/project/compare/v[prev]...v[X.Y.Z]"

For mobile releases, attach build artifacts (optional):

# Upload build artifacts
gh release upload "v[X.Y.Z]" ./app-release.apk

Step 6: Cleanup Branches

Clean up merged branches:

# List merged branches
git branch --merged main | grep -v "main\|staging\|dev"

# Delete local merged branches
git branch --merged main | grep -v "main\|staging\|dev" | xargs git branch -d

# Delete remote merged branches (with confirmation)
# gh api repos/gmacko/project/branches --jq '.[].name' | ...

Ask user before deleting:

The following branches are merged and can be deleted:

  • feature/dark-mode
  • fix/login-bug

Delete these branches? (yes/no/selective)

Step 7: Notify Stakeholders

Prepare notification:

## Release Notification

**Subject**: v[X.Y.Z] Released

**Body**:
Hi team,

We've just released v[X.Y.Z] to production!

### Highlights
- [Key feature 1]
- [Key feature 2]
- [Important fix]

### Links
- Production: https://app.example.com
- Release Notes: [GitHub Release URL]
- Mobile: Available on App Store / Play Store

### Metrics to Watch
- Error rate in Sentry
- Performance in Vercel Analytics
- User feedback

Let me know if you notice any issues!

[Your name]

Suggest notification channels:

  • Slack #releases channel
  • Email to stakeholders
  • Update status page

Step 8: Archive Documentation

Finalize release documentation:

# Update docs/ai/releases/[date]-v[version].md

## Final Status

- **Released**: [timestamp]
- **GitHub Release**: [URL]
- **Git Tag**: v[X.Y.Z]

## Deployment Summary

| Platform | Status | URL/Version |
|----------|--------|-------------|
| Web | Live | https://app.example.com |
| iOS | Live | v[X.Y.Z] on App Store |
| Android | Live | v[X.Y.Z] on Play Store |

## Issues Closed
[List of closed issues]

## PRs Included
[List of merged PRs]

## Post-Release Observations

### First 24 Hours
- Error rate: [Normal/Elevated]
- Performance: [Normal/Degraded]
- User feedback: [Summary]

### Issues Discovered
- [Any post-release issues and how they were handled]

---

**Release Closed By**: AI Assistant
**Closed At**: [timestamp]

Move handoff docs to archive (optional):

# Move feature handoffs to completed folder
mkdir -p docs/ai/handoffs/completed/v[X.Y.Z]
mv docs/ai/handoffs/[feature]*.md docs/ai/handoffs/completed/v[X.Y.Z]/

Final Summary

Present to user:

RELEASE CLOSED
==============

Version: v[X.Y.Z]
Released: [date]

Actions Completed:
- [x] Deployment verified
- [x] [N] issues closed
- [x] [N] PRs annotated
- [x] Git tag created
- [x] GitHub release published
- [x] [N] branches cleaned up
- [x] Notification prepared
- [x] Documentation archived

Links:
- GitHub Release: [URL]
- Production: [URL]
- Release Summary: docs/ai/releases/[date]-v[version].md

Release cycle complete! 🎉

Red Flags

| Rationalization | Correction | |-----------------|------------| | "Close issues without verifying deployment" | ALWAYS verify before closing | | "Skip GitHub release, tag is enough" | GitHub release enables release notes discovery | | "Don't need to notify anyone" | Stakeholders should know about releases | | "Documentation can be updated later" | Finalize docs while context is fresh | | "Delete branches without checking" | Confirm before deleting any branch |

Integration

  • Input: Version, deployment verification status
  • References: Release summary, merged PRs, closed issues
  • Output: GitHub release, closed issues, final documentation
  • Next: Monitor post-release, start next sprint