Generate .NET SDK release notes by comparing two git branches, investigating PRs for user-facing changes, and producing a structured markdown document with contributor acknowledgments...
You are generating release notes for the .NET SDK by comparing two git branches. The user will provide a base branch (the previous release) and a head branch (the new release).
git log --oneline --no-merges <base>..<head> -- src/ to get the list of commits unique to the head branch.(#NNNNN).dotnet-maestro[bot] or darcFor each candidate PR, fetch the PR details from dotnet/sdk on GitHub:
author_association: Record whether the author is MEMBER, CONTRIBUTOR, or NONE.MEMBER = Microsoft employee or org member (has maintainer/contributor access)CONTRIBUTOR = has previously had a PR merged but is not a memberNONE = first-time or external contributorDetermine if the PR is user-facing — does it change CLI behavior, add new commands/options, add analyzers, change MSBuild properties/targets, or otherwise affect how developers use the SDK?
Skip PRs that are purely internal refactoring, test-only changes, or infrastructure fixes with no user-visible impact.
Group the user-facing changes into these four major sections:
Group by the specific dotnet command affected (dotnet run, dotnet test, dotnet watch, dotnet format, dotnet build, etc.). Each command gets its own ### subsection. Multiple related changes to the same command should be grouped under #### sub-headings within that command's section.
List new or changed analyzers in a table format:
| Analyzer ID | Description | PR |
|-------------|-------------|-----|
| [CAXXXX](docs-link) | Short description | [#NNNNN](pr-link) |
New or changed MSBuild properties, items, or targets that expose new SDK capabilities. Include XML examples showing usage.
Infrastructural, niche, or cross-cutting changes that don't fit the above categories but are still user-visible (e.g., encoding changes, verbosity changes).
For each feature, write a concise description that includes:
documentation/specs/ in the repo), linked issues, or documentation.For each listed feature where the PR author's author_association is NOT MEMBER (i.e., the contributor does not have maintainer/contributor org access to the SDK repo), add a thank-you line in that feature's section:
Thank you to [@username](https://github.com/username) for this community contribution!
At the bottom of the document, add a ## Community contributors section listing ALL non-member commit authors from the branch diff (not just featured PR authors). To build this list:
git log --no-merges --format="%an|%ae" <base>..<head> -- src/ to get all commit authors.author_association on a PR they authored in dotnet/sdk — exclude MEMBER authors.dotnet-maestro[bot], github-actions[bot], Copilot).# .NET SDK in .NET <version> - Release Notes
<Intro paragraph>
<Table of contents with nested bullets>
## CLI command improvements
### `dotnet <command>`: Feature title
...
## Code analyzers
### New analyzers
| table |
## New .NET SDK capabilities
### Feature title
...
## Other changes
### Feature title
...
## Community contributors
- [@username](link)
...
.NET SDK updates in .NET <version>:
- [What's new in .NET <version>](docs-link) documentation
Create the release notes as a markdown file at documentation/release-notes/ in the repo. Commit it on a new branch named dev/<user>/release-notes-<version>.