Generate VS Code release notes for the features you worked on in a milestone. ALWAYS use this skill when the user asks to "write release notes for my features", "document my milestone features", or "generate release notes from my issues". It gathers the milestone features you own from GitHub, analyzes each feature and its related issues, and writes user-focused feature sections into the milestone release notes file.
73
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
This skill turns the features you worked on in a VS Code milestone into polished, user-focused release note sections. It gathers the features you own from GitHub using the gh CLI, then documents every one of them in the milestone's release notes file.
Use this skill when the user wants to draft or update the feature sections of a milestone's release notes based on the issues and test plan items they worked on.
gh CLI only when the GitHub MCP server is not available. In that case, ensure it is authenticated (gh auth status); the gh commands below implement the same queries.@me, so results are scoped to the authenticated user./release-notes folder. The file name does not match the milestone name, so search the folder contents for the text TOCTitle: <milestone name> (for example, TOCTitle: April 2016)./templates and a filename of the form v<version>.md (for example, v1_109.md).Gather the features the user owns by running the following GitHub search queries. Use the GitHub MCP server if available; otherwise use the gh CLI commands shown below. Substitute <milestone> with the milestone name (keep the surrounding quotes). Collect each issue's number, title, body, url, labels, and comments.
If you have persistent memory, notes, or prior context about this milestone (coverage decisions, features you own that the label queries won't surface, work intentionally excluded), review it before the GitHub queries and reconcile against the results. Skip if you have none.
gh search issues 'org:microsoft milestone:"<milestone>" label:feature-request assignee:@me' \
--limit 100 --json number,title,body,url,labels,repositoryProcess the results:
*duplicate or *out-of-scope.on-testplan, set it aside — do not document it directly. It will be attached as a related issue to its test plan item in Step 2.gh search issues 'repo:microsoft/vscode milestone:"<milestone>" label:testplan-item author:@me' \
--limit 100 --json number,title,body,url,labelsEach test plan item is also a release feature to document. List the test plan item features first, before the feature-request features from Step 1. For each test plan item, collect related issues that provide the real feature detail:
Issues filed against the test plan item — closed issues that reference it during testing:
gh search issues 'repo:microsoft/vscode is:closed Testing <testplan-item-number>' \
--limit 100 --json number,title,body,url,labelsSet-aside on-testplan issues from Step 1 whose issue number appears in the test plan item's body — attach these as related issues too.
The label queries in Steps 1 and 2 only find issues labeled feature-request or testplan-item. Real features are often tracked under other labels during the endgame — for example a feature that shipped a fix may carry bug, verification-needed, or polish instead. Do not trust the label queries to be exhaustive. Run these broader queries and reconcile the results against what Steps 1 and 2 already surfaced:
gh search issues --owner microsoft --assignee @me --milestone "<milestone>" \
--limit 100 --json number,title,url,labels,state
gh search issues --owner microsoft --author @me --milestone "<milestone>" \
--limit 100 --json number,title,url,labels,stateFor every issue these return that is not already covered by Steps 1 and 2, judge it on its content, not its label:
bug, verification-needed, polish, or something else. A "bug" that adds or restores a capability users will notice is a release feature.If you have persistent memory or prior context about this milestone (Step 0), cross-check each remembered feature you own against the combined results here — a feature noted in memory but missing from the query output is exactly the kind of item that slips through mislabeling.
The search queries above may not return comments (the gh search issues --json output does not include them). For every feature and related issue you plan to use, read the full body and comments for context — use the GitHub MCP server's issue read capability if available, otherwise the gh CLI:
gh issue view <number> --repo <owner/repo> --json number,title,body,url,labels,commentsDocument every feature gathered from Steps 1, 2, and 2.5 — none should be skipped. Most features are identified by one of these labels:
feature-request — a standard feature request issue. Its description and comments contain the feature details.testplan-item — a structured test plan for the feature. Its description contains in-depth details plus setup and test steps.Some features surface only through Step 2.5 under other labels (for example bug, verification-needed, or polish). Treat those as features too when they describe a user-facing capability — the label does not disqualify them.
Use the related issues (from Step 2) to pull in additional context (their summary, description, and comments).
Gather and analyze all relevant details before writing:
Then write a comprehensive, user-focused section for each feature:
testplan-item, because that title is written for testing.### New JavaScript debugging experience (Preview).Follow the release notes writing instructions first, then the VS Code documentation writing guidelines. Key rules:
https://code.visualstudio.com/docs/ and omit the .md suffix. Use descriptive link text — never "click here", "this link", or "here".<video> tag: <video src="[URL]" title="[description]." autoplay loop controls muted></video>.setting(setting.name) format and keyboard shortcuts with the kb(command.commandId) format.### feature headings.66977a9
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.