Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 24 additions & 8 deletions .github/skills/whats-new-include-content-rules/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,25 @@ All include files go in:

### File naming convention

* Lowercase, hyphenated, descriptive names.
* Append the preview number suffix to each filename: `-preview{N}` (where `{N}` is the preview number, e.g., `-preview2`).
* Lowercase, hyphenated, descriptive names using whole words only.
* Each word and number must be separated by a hyphen. Do not combine words or abbreviate them, and do not combine numbers with words.
- **Wrong**: `infer-pk-display-name-preview2.md` (`pk` is an abbreviation, and `preview2` combines a word with a number)
- **Correct**: `infer-passkey-display-name-preview-2.md` (whole words, number separated by hyphen)
* Append the preview number suffix to each filename: `-preview-{N}` (where `{N}` is the preview number, e.g., `-preview-2`).
**CRITICAL**: Every new file MUST include the preview suffix. This was a mistake
in the initial automation β€” a file was created without the suffix and had to be
corrected.
* Examples:
- `native-otel-tracing-preview2.md`
- `openapi-3-2-support-preview2.md`
- `infer-passkey-display-name-preview2.md`
- `performance-improvements-preview2.md`
- `native-otel-tracing-preview-2.md`
- `openapi-3-2-support-preview-2.md`
- `infer-passkey-display-name-preview-2.md`
- `performance-improvements-preview-2.md`

### One file per feature

* Create one include file per feature or section.
* **Exception β€” Performance**: Combine all performance improvements into a
single `performance-improvements-preview{N}.md` file.
single `performance-improvements-preview-{N}.md` file.

### Exclusions β€” do NOT create include files for

Expand Down Expand Up @@ -133,7 +136,8 @@ All include files go in:

Before completing, verify:

- [ ] Every new include filename ends with `-preview{N}`.
- [ ] Every new include filename ends with `-preview-{N}`.
- [ ] Every word and number in filenames is separated by a hyphen (no abbreviations, no combined word-numbers).
- [ ] No Blazor content was included.
- [ ] No bug-fix-only content was included.
- [ ] All `<xref:>` IDs are verified (or explicitly flagged as needing verification).
Expand All @@ -148,6 +152,18 @@ Before completing, verify:

---

## PR description requirements

* The very first line of the PR description must be `Fixes dotnet/AspNetCore.Docs#{ISSUE NUMBER}` (where `{ISSUE NUMBER}` is the number of the issue this PR addresses), followed by a blank line before any other content.
* Example:
```
Fixes dotnet/AspNetCore.Docs#10000

Summary of changes...
```

---

## Example: Correctly formatted include file

```markdown
Expand Down
4 changes: 3 additions & 1 deletion aspnetcore/release-notes/aspnetcore-11.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ author: wadepickett
description: Learn about the new features in ASP.NET Core in .NET 11.
ms.author: wpickett
ms.custom: mvc
ms.date: 05/13/2026
ms.date: 05/14/2026
uid: aspnetcore-11
---
# What's new in ASP.NET Core in .NET 11
Expand Down Expand Up @@ -80,6 +80,8 @@ This section describes miscellaneous new features in .NET 11.

[!INCLUDE[](~/release-notes/aspnetcore-11/includes/runtime-async-shared-framework-preview4.md)]

[!INCLUDE[](~/release-notes/aspnetcore-11/includes/rate-limiting-retry-after-preview-4.md)]

## Breaking changes

Use the articles in [Breaking changes in .NET](/dotnet/core/compatibility/breaking-changes) to find breaking changes that might apply when upgrading an app to a newer version of .NET.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
### Rate-limiting middleware returns accurate `Retry-After` headers

The <xref:System.Threading.RateLimiting.FixedWindowRateLimiter> now reports a <xref:System.Threading.RateLimiting.MetadataName.RetryAfter> metadata value that accurately reflects the next window boundary. Apps that propagate this metadata to the `Retry-After` response header in their <xref:Microsoft.AspNetCore.RateLimiting.RateLimiterOptions.OnRejected> callback now produce correct retry intervals automatically, with no code changes required.

Additional fixes in `System.Threading.RateLimiting` resolve an issue where <xref:System.Threading.RateLimiting.TokenBucketRateLimiter> mishandled partial token refills during zero-permit acquisition, and improve the chained rate limiter returned by <xref:System.Threading.RateLimiting.RateLimiter.CreateChained*> to correctly forward idle-duration and replenishment behavior from its inner limiters.

For an overview of the rate limiting middleware, see [Rate limiting middleware in ASP.NET Core](/aspnet/core/performance/rate-limit).

Thank you [@asbjornvad](https://github.com/asbjornvad) and [@apoorvdarshan](https://github.com/apoorvdarshan) for these contributions!
Loading