RE

release-note-generation

Generates professional release notes by collecting and summarizing merged GitHub PRs.

Install

mkdir -p .claude/skills/release-note-generation && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/577" && unzip -o skill.zip -d .claude/skills/release-note-generation && rm skill.zip

Installs to .claude/skills/release-note-generation

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

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, generate PR review summaries locally for release notes, update README for a new release, manage PR milestones, collect PRs between commits/tags, or prepare release assets (download installers and compute installer hashes).
429 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Aggregates PR data from GitHub using CLI
  • Assigns missing milestones to PRs
  • Downloads binary release assets
  • Computes installer SHA hashes
  • Updates project README.md versions

How it works

Executes shell scripts to call the GitHub API for data collection and uses a local CLI agent to summarize PR contents.

Inputs & outputs

You give it
GitHub milestone identifier or git commit/tag range
You get back
Markdown file at Generated Files/ReleaseNotes/v{VERSION}-release-notes.md

When to use release-note-generation

  • Generate release notes for a milestone
  • Summarize merged pull requests
  • Prepare release documentation
  • Update README for new version

About this skill

Release Note Generation Skill

Generate professional release notes for PowerToys milestones by collecting merged PRs, summarizing each PR with the local CLI agent, 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
  • Generate per-PR review summaries locally for release-notes copy
  • Assign milestones to PRs missing them
  • Collect PRs between two commits/tags
  • Update README.md for a new version
  • Prepare GitHub release assets (download installers/symbols + compute hashes)

Prerequisites

  • GitHub CLI (gh) installed and authenticated — The collection script uses gh pr view and gh api graphql to fetch PR metadata and co-author information. Run gh auth status to verify; if not logged in, run gh auth login first. See Step 1.0.0 for details.
  • MCP Server: github-mcp-server installed (used to fetch PR diffs/files for the local-agent review step)
  • For prepare-release-assets.ps1 only: Azure CLI authenticated against the Microsoft tenant (az login) with the azure-devops extension; access to the microsoft/Dart ADO project

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 version0.98

Workflow Overview

┌────────────────────────────────┐
│ 1.0 Verify gh auth + MemberList │
└────────────────────────────────┘
              ↓
┌────────────────────────────────┐
│ 1.1 Collect PRs (stable range) │
└────────────────────────────────┘
              ↓
┌────────────────────────────────┐
│ 1.2 Assign Milestones           │
└────────────────────────────────┘
              ↓
┌────────────────────────────────┐
│ 2.1–2.4 Label PRs (auto+human)  │
└────────────────────────────────┘
              ↓
┌────────────────────────────────┐
│ 3.1 Local-agent PR summaries    │
│ (writes CopilotSummary)         │
└────────────────────────────────┘
              ↓
┌────────────────────────────────┐
│ 3.2 (Optional) Refresh PR data  │
└────────────────────────────────┘
              ↓
┌────────────────────────────────┐
│ 3.3 Group by label              │
│ (grouped_csv)                   │
└────────────────────────────────┘
              ↓
┌────────────────────────────────┐
│ 4.1 Summarize (grouped_md)      │
└────────────────────────────────┘
              ↓
┌────────────────────────────────┐
│ 4.2 Final notes (v{VERSION}.md) │
└────────────────────────────────┘
StepActionDetails
1.0Verify prerequisitesgh auth status must pass; generate MemberList.md
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 & GroupingLocal agent summarizes each PR diff into CopilotSummary → (optional 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.

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
prepare-release-assets.ps1Download installers + symbols from an ADO build, compute SHA256, emit the "Installer Hashes" markdown table for the GitHub release page

References

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 foundInstall GitHub CLI and add to PATH
No PRs returnedVerify milestone title matches exactly
Empty CopilotSummary for many PRsRun Step 3.1 (local-agent summaries). Do not use mcp_github_request_copilot_review from a CLI/coding agent — the GitHub API rejects bot-initiated review requests, so the column will stay empty.
Many unlabeled PRsReturn to labeling step before grouping
prepare-release-assets.ps1 fails with "Failed to acquire ADO access token"Run az login and ensure you have access to the microsoft/Dart ADO project

When not to use it

  • When you lack GitHub CLI authentication
  • When the repository does not use GitHub milestones

Prerequisites

GitHub CLI (gh)github-mcp-server

Limitations

  • Only supports repository structures configured for GitHub PR workflows
  • Requires local installation of specific helper scripts

How it compares

Automates the manual assembly of PR lists and binary verification, ensuring consistent formatting that manual drafting often misses.

Compared to similar skills

release-note-generation side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
release-note-generation (this skill)53moReviewIntermediate
generate-release-notes78moReviewIntermediate
oss-dist02moReviewAdvanced
icn-shipping06moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

More by microsoft

View all by microsoft

Search skills

Search the agent skills registry