release-note-generation
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseRelease Note Generation Skill
发布说明生成Skill
Generate professional release notes for PowerToys milestones by collecting merged PRs, requesting Copilot code reviews, grouping by label, and producing user-facing summaries.
通过收集已合并的PR、请求Copilot代码评审、按标签分组并生成面向用户的摘要,为PowerToys里程碑生成专业的发布说明。
Output Directory
输出目录
All generated artifacts are placed under at the repository root (gitignored).
Generated Files/ReleaseNotes/Generated Files/ReleaseNotes/
├── milestone_prs.json # Raw PR data from GitHub
├── sorted_prs.csv # Sorted PR list with Copilot summaries
├── prs_with_milestone.csv # Milestone assignment tracking
├── grouped_csv/ # PRs grouped by label (one CSV per label)
├── grouped_md/ # Generated markdown summaries per label
└── v{VERSION}-release-notes.md # Final consolidated release notes所有生成的工件都将放置在仓库根目录下的中(已加入git忽略)。
Generated Files/ReleaseNotes/Generated Files/ReleaseNotes/
├── milestone_prs.json # Raw PR data from GitHub
├── sorted_prs.csv # Sorted PR list with Copilot summaries
├── prs_with_milestone.csv # Milestone assignment tracking
├── grouped_csv/ # PRs grouped by label (one CSV per label)
├── grouped_md/ # Generated markdown summaries per label
└── v{VERSION}-release-notes.md # Final consolidated release notesWhen to Use This Skill
何时使用此Skill
- Generate release notes for a milestone
- Summarize PRs merged in a release
- Request Copilot reviews for milestone PRs
- Assign milestones to PRs missing them
- Collect PRs between two commits/tags
- Update README.md for a new version
- 为里程碑生成发布说明
- 汇总版本中已合并的PR
- 请求Copilot对里程碑PR进行评审
- 为缺失里程碑的PR分配里程碑
- 收集两次提交/标签之间的PR
- 为新版本更新README.md
Prerequisites
前置条件
- GitHub CLI () installed and authenticated
gh - MCP Server: github-mcp-server installed
- GitHub Copilot code review enabled for the org/repo
- 已安装并完成身份验证的GitHub CLI ()
gh - 已安装MCP Server:github-mcp-server
- 组织/仓库已启用GitHub Copilot代码评审
Required Variables
必填变量
⚠️ Before starting, confirm with the user. If not provided, ASK: "What release version are we generating notes for? (e.g., 0.98)"
{{ReleaseVersion}}| Variable | Description | Example |
|---|---|---|
| Target release version | |
⚠️ 开始前,请与用户确认。如果未提供,请询问:“我们要为哪个版本生成发布说明?(例如:0.98)”
{{ReleaseVersion}}| 变量 | 说明 | 示例 |
|---|---|---|
| 目标发布版本 | |
Workflow Overview
工作流概述
┌────────────────────────────────┐
│ 1.1 Collect PRs (stable range) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 1.2 Assign Milestones │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 2.1–2.4 Label PRs (auto+human) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 3.1 Request Reviews (Copilot) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 3.2 Refresh PR data │
│ (CopilotSummary) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 3.3 Group by label │
│ (grouped_csv) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 4.1 Summarize (grouped_md) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 4.2 Final notes (v{VERSION}.md) │
└────────────────────────────────┘| Step | Action | Details |
|---|---|---|
| 1.1 | Collect PRs | From previous release tag on |
| 1.2 | Assign Milestones | Ensure all PRs have correct milestone |
| 2.1–2.4 | Label PRs | Auto-suggest + human label low-confidence |
| 3.1–3.3 | Reviews & Grouping | Request Copilot reviews → refresh → group by label |
| 4.1–4.2 | Summaries & Final | Generate grouped summaries, then consolidate |
┌────────────────────────────────┐
│ 1.1 Collect PRs (stable range) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 1.2 Assign Milestones │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 2.1–2.4 Label PRs (auto+human) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 3.1 Request Reviews (Copilot) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 3.2 Refresh PR data │
│ (CopilotSummary) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 3.3 Group by label │
│ (grouped_csv) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 4.1 Summarize (grouped_md) │
└────────────────────────────────┘
↓
┌────────────────────────────────┐
│ 4.2 Final notes (v{VERSION}.md) │
└────────────────────────────────┘| 步骤 | 操作 | 详情 |
|---|---|---|
| 1.1 | 收集PR | 从 |
| 1.2 | 分配里程碑 | 确保所有PR都有正确的里程碑 |
| 2.1–2.4 | 标注PR标签 | 自动建议 + 人工标注低置信度PR |
| 3.1–3.3 | 评审与分组 | 请求Copilot评审 → 刷新数据 → 按标签分组 |
| 4.1–4.2 | 摘要与最终输出 | 生成分组摘要,然后合并为最终版本 |
Detailed workflow docs
详细工作流文档
Do not read all steps at once—only read the step you are executing.
- Step 1: Collection & Milestones
- Step 2: Labeling PRs
- Step 3: Reviews & Grouping
- Step 4: Summarization
不要一次性阅读所有步骤——只阅读当前正在执行的步骤。
- 步骤1:收集与里程碑分配
- 步骤2:PR标签标注
- 步骤3:评审与分组
- 步骤4:摘要生成
Available Scripts
可用脚本
| Script | Purpose |
|---|---|
| dump-prs-since-commit.ps1 | Fetch PRs between commits/tags |
| group-prs-by-label.ps1 | Group PRs into CSVs |
| collect-or-apply-milestones.ps1 | Assign milestones |
| diff_prs.ps1 | Incremental PR diff |
| 脚本 | 用途 |
|---|---|
| dump-prs-since-commit.ps1 | 获取两次提交/标签之间的PR |
| group-prs-by-label.ps1 | 将PR分组为CSV文件 |
| collect-or-apply-milestones.ps1 | 分配里程碑 |
| diff_prs.ps1 | 增量PR差异对比 |
References
参考资料
- Sample Output - Example summary formatting
- Detailed Instructions - Legacy full documentation
- 示例输出 - 示例摘要格式
- 详细说明 - 完整旧版文档
Conventions
约定规范
- Terminal usage: Disabled by default; only run scripts when user explicitly requests
- Batch generation: Generate ALL grouped_md files in one pass, then human reviews
- PR order: Preserve order from in all outputs
sorted_prs.csv - Label filtering: Keeps ,
Product-*,Area-*,GitHub*,*PluginIssue-*
- 终端使用:默认禁用;仅在用户明确要求时运行脚本
- 批量生成:一次性生成所有grouped_md文件,再由人工评审
- PR顺序:在所有输出中保留中的PR顺序
sorted_prs.csv - 标签过滤:保留、
Product-*、Area-*、GitHub*、*Plugin标签Issue-*
Troubleshooting
故障排除
| Issue | Solution |
|---|---|
| Install GitHub CLI and add to PATH |
| No PRs returned | Verify milestone title matches exactly |
| Empty CopilotSummary | Request Copilot reviews first, then re-run dump |
| Many unlabeled PRs | Return to labeling step before grouping |
| 问题 | 解决方案 |
|---|---|
| 安装GitHub CLI并添加到PATH |
| 未返回任何PR | 确认里程碑标题完全匹配 |
| CopilotSummary为空 | 先请求Copilot评审,然后重新运行dump脚本 |
| 大量未标注标签的PR | 在分组前返回标签标注步骤 |