release-note-generation

Original🇺🇸 English
Translated
6 scripts

Toolkit for generating PowerToys release notes from GitHub milestone PRs or commit ranges. Use when asked to create release notes, summarize milestone PRs, generate changelog, prepare release documentation, request Copilot reviews for PRs, update README for a new release, manage PR milestones, or collect PRs between commits/tags. Supports PR collection by milestone or commit range, milestone assignment, grouping by label, summarization with external contributor attribution, and README version bumping.

7installs
Added on

NPX Install

npx skill4agent add microsoft/powertoys release-note-generation

Release Note Generation Skill

Generate professional release notes for PowerToys milestones by collecting merged PRs, requesting Copilot code reviews, grouping by label, and producing user-facing summaries.

Output Directory

All generated artifacts are placed under
Generated Files/ReleaseNotes/
at the repository root (gitignored).
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

When to Use This 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

Prerequisites

  • GitHub CLI (
    gh
    ) installed and authenticated
  • MCP Server: github-mcp-server installed
  • GitHub Copilot code review enabled for the org/repo

Required Variables

⚠️ Before starting, confirm
{{ReleaseVersion}}
with the user. If not provided, ASK: "What release version are we generating notes for? (e.g., 0.98)"
VariableDescriptionExample
{{ReleaseVersion}}
Target release version
0.98

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) │
└────────────────────────────────┘
StepActionDetails
1.1Collect PRsFrom previous release tag on
stable
branch →
sorted_prs.csv
1.2Assign MilestonesEnsure all PRs have correct milestone
2.1–2.4Label PRsAuto-suggest + human label low-confidence
3.1–3.3Reviews & GroupingRequest Copilot reviews → refresh → group by label
4.1–4.2Summaries & FinalGenerate grouped summaries, then consolidate

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

Available Scripts

ScriptPurpose
dump-prs-since-commit.ps1Fetch PRs between commits/tags
group-prs-by-label.ps1Group PRs into CSVs
collect-or-apply-milestones.ps1Assign milestones
diff_prs.ps1Incremental PR diff

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
    sorted_prs.csv
    in all outputs
  • Label filtering: Keeps
    Product-*
    ,
    Area-*
    ,
    GitHub*
    ,
    *Plugin
    ,
    Issue-*

Troubleshooting

IssueSolution
gh
command not found
Install GitHub CLI and add to PATH
No PRs returnedVerify milestone title matches exactly
Empty CopilotSummaryRequest Copilot reviews first, then re-run dump
Many unlabeled PRsReturn to labeling step before grouping