Skip to content

AI Agent and SKILL for What's New gen from Release Notes#36863

Open
wadepickett wants to merge 13 commits intomainfrom
wadepickett/36862AiAgentWhatsNew
Open

AI Agent and SKILL for What's New gen from Release Notes#36863
wadepickett wants to merge 13 commits intomainfrom
wadepickett/36862AiAgentWhatsNew

Conversation

@wadepickett
Copy link
Contributor

@wadepickett wadepickett commented Mar 10, 2026

Fixes #36862

Overview for Reviewers

This PR adds two files that work together to automate generating the "What's New in ASP.NET Core" article content from .NET preview release notes:

  • Agent: whats-new-from-release-notes.agent.md

    • Orchestrates the full end-to-end workflow
    • Reads source release notes from dotnet/core
    • Compares them against what's already been processed in dotnet/AspNetCore.Docs
    • Creates new include files for unprocessed features
    • Wires [!INCLUDE] directives into the correct sections of the What's New article
    • Updates front matter and validates the result
    • Supports an incremental mode to handle only what changed since the last run
  • Skill: whats-new-include-content-rules/SKILL.md

    • Defines how each include file should be written
    • The agent delegates to this skill for all content-level decisions:
      • File naming conventions (-preview{N} suffix)
      • Heading levels (H3 only)
      • <xref:> API reference format
      • Link style (relative for Microsoft Learn, absolute for GitHub)
      • Phrasing rules (present tense, imperative voice, "For more information, see" pattern)
      • Exclusions (no Blazor, no bug fixes)
      • Preservation of Breaking Change labels and community contributor acknowledgments
    • Encodes corrections from past PR reviews so the same mistakes aren't repeated
File Status Description
.github/agents/whats-new-from-release-notes.agent.md ✨ Added Agent — orchestrates the workflow end-to-end
.github/skills/whats-new-include-content-rules/SKILL.md ✨ Added Skill — content rules and formatting standards

In short: The agent decides what to do and when. The skill decides how the content should look. They are separated so the content rules can be reused independently (e.g., by a human author or a different agent) without re-implementing the orchestration logic.


Agent workflow

Step What it does
Step 0: Gather context Reads source release notes from dotnet/core, reads the current What's New article, lists existing include files, compares source vs. existing, and reports the delta (new / updated / already covered).
Step 1: Create include files Generates one include file per feature, following all rules from the skill.
Step 2: Update the What's New article Adds [!INCLUDE] directives in the correct product-area sections, updates ms.date, preserves the Breaking Changes section.
Step 3: Validate Runs the skill's 12-point validation checklist plus article-level checks (date, include placement, section mapping).
Incremental mode Can be re-invoked after release notes are revised — detects and applies only the delta.

Key content rules encoded in the skill

  • Filenames must be lowercase, hyphenated, and end with -preview{N}
  • One file per feature (exception: performance improvements combined into one file)
  • No Blazor content (handled separately by the Blazor team)
  • <xref:fully.qualified.name> for API references — not backtick inline code
  • Relative paths for Microsoft Learn links; absolute URLs for GitHub/external
  • Present tense, imperative voice, "For more information, see" phrasing
  • Preserve Breaking Change designations and community contributor thank-yous
  • Include files have no YAML front matter

Internal previews

📄 File 🔗 Preview link
.github/agents/whats-new-from-release-notes.agent.md What's New Release Notes Agent for ASP.NET Core Documentation
.github/skills/whats-new-include-content-rules/SKILL.md .github/skills/whats-new-include-content-rules/SKILL

@wadepickett wadepickett self-assigned this Mar 10, 2026
@wadepickett wadepickett marked this pull request as ready for review March 11, 2026 18:49
@wadepickett wadepickett requested review from Copilot and tdykstra March 11, 2026 18:50
@wadepickett wadepickett changed the title AI agent for What's New gen from Release Notes AI Agent and SKILL for What's New gen from Release Notes Mar 11, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a GitHub Copilot agent + supporting skill to automate generating “What’s New in ASP.NET Core” include content from dotnet/core preview release notes, including incremental/delta updates.

Changes:

  • Added a new agent that orchestrates reading release notes, diffing against existing includes, generating new include files, and wiring [!INCLUDE] directives into the What’s New article.
  • Added a skill that defines standardized include-file content rules (headings, <xref:> usage, link formats, phrasing, exclusions) and a validation checklist.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
.github/agents/whats-new-from-release-notes.agent.md New agent prompt for end-to-end “What’s New” generation/update workflow.
.github/skills/whats-new-include-content-rules/SKILL.md New skill defining include-file formatting/content rules and validation checklist.

You can also share your feedback on Copilot code review. Take the survey.

wadepickett and others added 4 commits March 11, 2026 12:13
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Fix formatting of code block for OpenAPI version update.  Removed hidden character
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.


You can also share your feedback on Copilot code review. Take the survey.

wadepickett and others added 3 commits March 11, 2026 12:32
Copy link
Contributor

@tdykstra tdykstra left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, I'm anxious to see what it generates!

Before creating any files, you MUST:

1. **Read the source release notes** from `dotnet/core` at the specified branch:
`release-notes/{VERSION}/preview/{PREVIEW}/aspnetcore.md`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should version here be major version as in subsequent lines?

Comment on lines +71 to +75
* **Wrong**: `` `AddOpenApi()` ``
* **Correct**: `<xref:Microsoft.Extensions.DependencyInjection.OpenApiServiceCollectionExtensions.AddOpenApi%2A>`
* **Wrong**: `` `BadHttpRequestException` ``
* **Correct**: `<xref:Microsoft.AspNetCore.Http.BadHttpRequestException>`
* When referencing an API type or method, always use `<xref:fully.qualified.name>`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the Api is new, xref format won't work, You could have them link to the source code instead.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great point. I wonder if it is capable of testing first for the xref and if that does not work, fall back to the source code and make an comment to update to xref later as the api becomes available.

Copy link
Collaborator

@meaghanlewis meaghanlewis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great @wadepickett! I left a few suggestions and questions for you to consider.


### Links — use relative paths for Microsoft Learn

* **Wrong**: `[Breaking changes in .NET]([/dotnet/core/compatibility/breaking-changes](https://learn.microsoft.com/dotnet/core/compatibility/breaking-changes))`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* **Wrong**: `[Breaking changes in .NET]([/dotnet/core/compatibility/breaking-changes](https://learn.microsoft.com/dotnet/core/compatibility/breaking-changes))`
* **Wrong**: `[Breaking changes in .NET](https://learn.microsoft.com/dotnet/core/compatibility/breaking-changes)`

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this what you meant here instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I provided an example of what not to do , because it kept trying to do it that way during testing.


### Phrasing and style (lessons from reviewer feedback)

* Use **"For more information, see [link text](url)."** — not em-dash + "see … for details."
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Use **"For more information, see [link text](url)."**not em-dash + "see for details."
* Use **"For more information, see [link text](url)."**, not "see [link text](url) for details."

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This better follows the style of the other list items in this section. Also, I don't understand the em-dash part of this sentence. An example could help.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I goofed this up. Basically it was trying to say, don't use an em-dash. It should have had a wrong example using a em-dash and then a correct example not using it. Thanks for pointing it out. I need to fix.

Before reading any files, resolve the following parameters. If the invoker
provided explicit values, use them. Otherwise, auto-discover.

| Parameter | Required | Default | Description |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the same table from the inputs section be here as well?


- [ ] The What's New article `ms.date` is set to today's date
- [ ] All `[!INCLUDE]` directives are correctly placed with blank lines around them
- [ ] Section mapping matches the table above
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you specify or link to the section that has the table instead of using above.

wadepickett and others added 2 commits March 11, 2026 17:08
Adding suggestions from MeaghanLewis

Co-authored-by: Meaghan Osagie (Lewis) <moneikmarie@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AI agent for What's New updates gen from Release Notes

4 participants