Generates the authoritative manifest for .NET release changes.
Install
mkdir -p .claude/skills/generate-changes && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/10394" && unzip -o skill.zip -d .claude/skills/generate-changes && rm skill.zipInstalls to .claude/skills/generate-changes
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.
Generate `changes.json` for a .NET release milestone by selecting the correct VMR base/head refs and running `release-notes generate changes`. Handles preview-only multi-branch targeting (`main` vs release branches vs tags) and emits the authoritative manifest of what shipped. DO NOT USE FOR: API verification/diffs (use api-diff), feature scoring (use generate-features), or writing markdown release notes (use release-notes).Key capabilities
- →Determine active release milestones
- →Resolve Git base and head refs
- →Run release notes generation process
- →Emit authoritative changes.json manifest
How it works
The skill determines active milestones and resolves Git refs to run the release-notes generation process, producing a manifest of shipped changes.
Inputs & outputs
When to use generate-changes
- →Creating release milestone manifests
- →Updating release notes after VMR moves
- →Syncing multi-branch release data
About this skill
Generate changes.json
Produce the authoritative changes.json input for a preview, RC, or GA release milestone.
This is the VMR-aware data acquisition stage of the release notes pipeline:
- Determine which milestone(s) are active
- Resolve the correct
--baseand--headrefs - Run
release-notes generate changes - Write
changes.jsoninto the correctrelease-notes/folder
When to use
- A new preview, RC, or GA milestone needs fresh shipped-change data
- The user wants to know whether multiple preview milestones are active at once
- The release notes branch should be refreshed after the VMR moved forward
changes.jsonis missing, stale, or suspected to have the wrong ref selection
Preview-only branch targeting
This is the subtle part, and it mostly matters for previews.
Multiple preview milestones can be active simultaneously:
Latest shipped in this repo: Preview 3
VMR main: Preview 5
VMR release branch exists: Preview 4
→ Generate one `changes.json` for Preview 4
→ Generate one `changes.json` for Preview 5
For each target milestone N:
| Milestone state | Base ref | Head ref |
|---|---|---|
| Tag exists for N | Tag for N-1 | Tag for N |
| Release branch exists for N, no tag yet | Tag for N-1 | Release branch tip |
Only on main | Tag for N-1 | main |
Critical rule: never use main for milestone N if main has already moved to N+1.
Inputs
The user should provide as much of this as they know:
- Target release — e.g.
.NET 11 Preview 4,.NET 10 RC 2,.NET 10 GA - VMR clone path — defaults to a local clone of
dotnet/dotnet - Optionally, the exact refs if they already know them
If the user does not specify the milestone, infer it from:
release-notes/{version}/releases.jsonin this repoeng/Versions.propsonmainin the VMR- Matching preview tags and release branches in the VMR
Process
1. Determine the floor from releases.json
Find the latest shipped milestone in this repo. That tells you the lowest in-flight milestone that may need work.
2. Inspect the VMR
- Read
eng/Versions.propsonmainto determine the current prerelease iteration - List matching VMR tags for finalized milestones
- List matching VMR release branches for stabilizing milestones
Use the VMR structure reference for naming conventions and branch patterns.
3. Resolve --base and --head
For each active milestone:
--baseis the previous shipped milestone tag--headis the milestone tag, release branch tip, ormain, depending on what exists
4. Generate the file
release-notes generate changes <vmr-clone-path> \
--base <previous-release-tag> \
--head <current-release-ref> \
--version "<release-version>" \
--date "<yyyy-mm-dd>" \
--labels \
--output release-notes/<major.minor>/<milestone-path>/changes.json
Examples:
# Preview milestone
release-notes generate changes ~/git/dotnet \
--base v11.0.0-preview.3.26210.100 \
--head origin/release/11.0.1xx-preview4 \
--version "11.0.0-preview.4" \
--labels \
--output release-notes/11.0/preview/preview4/changes.json
# GA/patch milestone
release-notes generate changes ~/git/dotnet \
--base v10.0.7 \
--head v10.0.8 \
--version "10.0.8" \
--output release-notes/10.0/10.0.8/changes.json
Output contract
The output file must follow the shared schema documented in changes-schema.md:
- top-level
release_version,release_date,changes,commits - stable
idvalues inrepo@shortcommitformat - same authoritative source of truth used by later skills
Once changes.json exists, the next step is usually generate-features.
When not to use it
- →API verification or diffs
- →Feature scoring
- →Writing markdown release notes
Limitations
- →Requires VMR-aware data acquisition
- →Follows specific preview-only branch targeting rules
How it compares
This skill automates the VMR-aware data acquisition stage of the release notes pipeline, whereas manual generation requires manual ref resolution and command execution.
Compared to similar skills
generate-changes side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| generate-changes (this skill) | 0 | 4mo | Review | Intermediate |
| dotnet-cli-packaging | 0 | 5mo | Review | Advanced |
| dotnet-github-releases | 0 | 5mo | Review | Intermediate |
| build-zfall | 0 | 3mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by dotnet
View all by dotnet →You might also like
dotnet-cli-packaging
rudironsoni
>-
dotnet-github-releases
rudironsoni
>-
build-zfall
qwerty084
>-
update-roslyn-version
dotnet
Guide for updating the Roslyn language server version in the vscode-csharp repository. Use this when asked to update Roslyn, bump the Roslyn version, or upgrade the language server version.
azure-resource-manager-mysql-dotnet
microsoft
Azure MySQL Flexible Server SDK for .NET. Database management for MySQL Flexible Server deployments. Use for creating servers, databases, firewall rules, configurations, backups, and high availability. Triggers: "MySQL", "MySqlFlexibleServer", "MySQL Flexible Server", "Azure Database for MySQL", "MySQL database management", "MySQL firewall", "MySQL backup".
dependency-update
dotnet
Guides dependency version updates by checking nuget.org for latest versions, triggering the dotnet-migrate-package Azure DevOps pipeline, and monitoring runs. Use this when asked to update external NuGet dependencies.