Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
178 commits
Select commit Hold shift + click to select a range
dc23355
docs: note secret redaction in aspire describe output
aspire-repo-bot[bot] Aug 14, 2026
b67404e
Apply suggestions from code review
IEvangelist Aug 18, 2026
5d0e93a
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 19, 2026
991d095
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
d1b391b
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
29946e7
[docs] Update interaction file upload docs for GetFiles() and upload …
aspire-repo-bot[bot] Aug 20, 2026
3eed1c4
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
c5ca6ed
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
150b137
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
0c23201
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
3187319
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
64af635
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
255e09f
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
3288fd0
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
501c4a7
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 20, 2026
5318fb2
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 21, 2026
d033638
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 21, 2026
6bd5ddf
docs: document DotnetProjectResource-backed Blazor gateway APIs
aspire-repo-bot[bot] Aug 21, 2026
ade01a0
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 24, 2026
4c323bb
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 24, 2026
0e00cb5
Merge remote-tracking branch 'origin/main' into release/17.0
github-actions[bot] Aug 24, 2026
438ec77
docs: add troubleshooting note for DevTunnel URL publication fix
aspire-repo-bot[bot] Aug 24, 2026
d64a91c
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 24, 2026
5721c5e
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 24, 2026
4c639c8
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 25, 2026
0113d99
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 26, 2026
d38c668
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 26, 2026
d728f8d
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 26, 2026
b0ebffd
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 26, 2026
e8f07ba
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 26, 2026
6ce3cd9
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 26, 2026
13f408c
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 27, 2026
e9b4f75
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 27, 2026
aee08ea
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 27, 2026
abf6852
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Aug 31, 2026
1af8fbb
docs: mention copilot-app coding agent detection in CLI telemetry (#1…
aspire-repo-bot[bot] Sep 1, 2026
bea8c5f
docs: scaffold Aspire 13.6 release notes
IEvangelist Sep 1, 2026
4507a42
docs: draft Aspire 13.6 release notes
IEvangelist Sep 1, 2026
37c3436
docs: note Aspire view no longer steals sidebar focus on reload (#1598)
aspire-repo-bot[bot] Sep 1, 2026
ba1b9fd
docs: update aspire wait/describe for reusable resource observation (…
aspire-repo-bot[bot] Sep 1, 2026
be0e603
[docs] Add portable volume path environment variables (#1593)
aspire-repo-bot[bot] Sep 1, 2026
0eec552
[docs] Document appsettings.json support for TypeScript AppHosts (#1597)
aspire-repo-bot[bot] Sep 1, 2026
4f7459f
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Sep 1, 2026
bd9f690
docs: document consolidated VS Code AppHost build failure notificatio…
aspire-repo-bot[bot] Sep 1, 2026
16fbf23
Merge remote-tracking branch 'origin/main' into release/13.6
github-actions[bot] Sep 2, 2026
0928406
[docs] Document Show tunnel URLs command for Dev Tunnels integration …
aspire-repo-bot[bot] Sep 3, 2026
f88c6fd
Document GitHub Models retirement (#1606)
eerhardt Sep 10, 2026
1b26490
Document dashboard data persistence (#1649)
JamesNK Sep 11, 2026
6ece777
[docs] Document Azure Front Door origin naming change (#1646)
aspire-repo-bot[bot] Sep 14, 2026
5d770f2
[docs] Document CLI-default agent asset preselection in VS Code (#1660)
aspire-repo-bot[bot] Sep 14, 2026
88c4cd4
Update dashboard data persistence documentation (#1665)
JamesNK Sep 15, 2026
e31aded
Repair release/13.6 sync with main and published package constants (#…
IEvangelist Sep 15, 2026
df84313
Add Aspire Dev Hub, resource browser, and glossary (#1653)
IEvangelist Sep 16, 2026
3ea7a59
Document dashboard dialog and disabled-control styling fixes in 13.6 …
aspire-repo-bot[bot] Sep 16, 2026
5cc939d
Merge pull request #1682 from microsoft/docs/pr-20170-35124822987-1-a…
ellahathaway Sep 16, 2026
4bc9c94
Merge main into release136 (#1680)
eerhardt Sep 16, 2026
ca89b74
[docs] Update GitHub Models docs to reflect integration removal (#1672)
aspire-repo-bot[bot] Sep 16, 2026
de85064
Merge main into release/13.6 preserving ancestry and release intent
IEvangelist Sep 17, 2026
732f999
docs: align Aspire 13.6 release date and community credits (#1690)
IEvangelist Sep 17, 2026
5cf4aef
Merge latest release/13.6 credits into ancestry repair
IEvangelist Sep 18, 2026
3117d42
Merge corrected canonical main into release ancestry repair
IEvangelist Sep 18, 2026
16b9718
Merge pull request #1697: repair release/13.6 ancestry
IEvangelist Sep 18, 2026
4e1915a
Merge pull request #1677 from microsoft/docs/dashboard-data-retention…
JamesNK Sep 18, 2026
84c3906
Merge commit 'cbf213c2843deb5998ea32b5dfb6eb11476d1f83' into release/…
github-actions[bot] Sep 18, 2026
fa15ea7
Merge commit '2dfde29119172caa2f3b192fc0cc1b7d40888457' into release/…
github-actions[bot] Sep 18, 2026
fd6a066
Fix release hub navigation and unify search recovery UX (#1699)
IEvangelist Sep 19, 2026
9f6e0bd
[docs] Document Azure Container Apps Express environments (#1694)
eerhardt Sep 19, 2026
edb423b
Polish search empty states and release navigation UX (#1706)
IEvangelist Sep 21, 2026
3177438
Merge commit 'ee949021a802b2fa36de8c88d6167d4003db93ff' into release/…
github-actions[bot] Sep 22, 2026
2b34961
Merge commit 'd64fc09c5bb48f3dd7f05360673f62b21f05c4ef' into release/…
github-actions[bot] Sep 22, 2026
887d584
[docs] Clarify ResourceStoppedEvent fires once per stop, not per rest…
aspire-repo-bot[bot] Sep 23, 2026
ee4058e
[docs] Document PKCS#12/PFX requirement for resource service client c…
aspire-repo-bot[bot] Sep 23, 2026
ca72b9b
Create an API Reference component (#1588)
alistairmatthews Sep 23, 2026
4e12135
docs: update Radius recommended version to v0.60.2
aspire-repo-bot[bot] Sep 23, 2026
f819b1c
Refactor API Reference into a language provider registry (#1724)
IEvangelist Sep 23, 2026
2257ced
Merge release/13.6 into Blazor gateway documentation
IEvangelist Sep 23, 2026
63ac499
docs: replace paired Blazor API names with reference links
IEvangelist Sep 23, 2026
52465ad
Replace search empty-state artwork (#1712)
IEvangelist Sep 23, 2026
3822113
Merge pull request #1727 from microsoft/docs/pr-20148-35859678571-2-3…
nellshamrell Sep 23, 2026
0327396
docs: document aspire stop --volumes opt-in cleanup (#1729)
aspire-repo-bot[bot] Sep 23, 2026
0a593e7
[docs] Document certificates.nssDbPaths CLI config setting (#1716)
aspire-repo-bot[bot] Sep 23, 2026
021fc2c
[docs] Document Aspire CLI debug log location in VS Code extension (#…
aspire-repo-bot[bot] Sep 23, 2026
ccd2c70
Document Visual Studio IDE debugging behavior for file-based C# apps …
aspire-repo-bot[bot] Sep 23, 2026
1937410
[docs] Document single-member MongoDB replica set for transactions an…
aspire-repo-bot[bot] Sep 23, 2026
3ccc080
docs: note that dimension filter popover stays open during live metri…
aspire-repo-bot[bot] Sep 23, 2026
70762aa
docs: document terminal APIs namespace move (microsoft/aspire#20261) …
aspire-repo-bot[bot] Sep 23, 2026
339cfe8
Merge commit '2be00aeccb49f1c041ec1db8f5127c0c86744f17' into release/…
github-actions[bot] Sep 23, 2026
1d3a14f
[docs] Clarify log streaming for terminal-backed executables (#1717)
aspire-repo-bot[bot] Sep 23, 2026
0f267c2
Fix FileTree icon layout on release/13.6 (#1733)
IEvangelist Sep 23, 2026
7d461ec
Merge pull request #1619 from microsoft/docs/pr-19478-33887017276-1-6…
aspire-repo-bot[bot] Sep 23, 2026
f95ba99
Document that terminal-host telemetry is now opt-in via ShowTerminalH…
aspire-repo-bot[bot] Sep 23, 2026
dd8b148
docs: document aspire init --file-based option (#1648)
aspire-repo-bot[bot] Sep 23, 2026
8329b17
docs: hide azure-environment resource when all resources use emulator…
aspire-repo-bot[bot] Sep 23, 2026
8f6be37
docs: document resource graph hover cog for context menu access (#1617)
aspire-repo-bot[bot] Sep 23, 2026
4d558aa
docs: document Firefox WebGL2 terminal renderer workaround (#1703)
aspire-repo-bot[bot] Sep 23, 2026
a428bf6
[docs] Document Foundry Local remote endpoint mode (#1621)
aspire-repo-bot[bot] Sep 23, 2026
a7b376c
[docs] Document Firefox NSS certificate trust support in Aspire CLI (…
aspire-repo-bot[bot] Sep 23, 2026
fb227cc
[docs] Document executable references to container-network endpoints …
aspire-repo-bot[bot] Sep 23, 2026
7f76f2c
[docs] Document Cosmos DB emulator default changes (#1563)
aspire-repo-bot[bot] Sep 23, 2026
f3d0e9e
Document explicit Kestrel certificate configuration preservation (#1669)
aspire-repo-bot[bot] Sep 24, 2026
5212066
docs: document DotnetProjectOptions for polyglot addDotnetProject (#1…
aspire-repo-bot[bot] Sep 24, 2026
be54ddb
docs: document unified restore for coordinated project builds (#1722)
aspire-repo-bot[bot] Sep 24, 2026
71a4f1b
docs: reconcile Aspire 13.6 release notes with release branch
IEvangelist Sep 24, 2026
f3d5d20
Use shared Aspire version placeholders in current docs (#1739)
danegsta Sep 24, 2026
830bac1
Correct context-based endpoint resolution guidance (#1736)
danegsta Sep 24, 2026
94b5f0c
docs: close Aspire 13.6 integration and agent workflow gaps
IEvangelist Sep 24, 2026
27e2db7
fix: validate pinned release API ingestion end to end
IEvangelist Sep 24, 2026
0b64558
docs: reconcile Aspire 13.6 contributor credits
IEvangelist Sep 24, 2026
62a897e
docs: document multithreaded .NET project builds (-mt)
aspire-repo-bot[bot] Sep 24, 2026
b819876
Merge commit '87a1262608e04804002bba6c187a5477e0493077' into release/…
github-actions[bot] Sep 24, 2026
c0c6ceb
Document Aspire agent lifecycle options (#1745)
IEvangelist Sep 24, 2026
2696e22
fix: preserve release enums in shared Twoslash declarations
IEvangelist Sep 24, 2026
23535e7
Merge concurrent agent lifecycle documentation into release work
IEvangelist Sep 24, 2026
7ab5f74
fix: retain Radius exports with exact Dotnet scan context
IEvangelist Sep 24, 2026
44b9819
docs: ingest the complete pinned Aspire 13.6 API snapshot
IEvangelist Sep 24, 2026
201a9af
ci: give the complete API build an 8 GiB Node heap
IEvangelist Sep 24, 2026
5ef19a2
[docs] Document VS Code outdated Aspire CLI warning (#1608)
aspire-repo-bot[bot] Sep 24, 2026
87fb82d
[docs] Document new Set up Aspire entry point in the Aspire view (#1749)
aspire-repo-bot[bot] Sep 25, 2026
9ed5f1f
[docs] Document deploy, publish, and pipeline actions in the VS Code …
ellahathaway Sep 25, 2026
91190e0
[docs] Document aspire update repository CLI manifest support (#1715)
aspire-repo-bot[bot] Sep 25, 2026
4df2a14
Clarify Aspire resource discovery and add sample language filtering (…
IEvangelist Sep 25, 2026
c62e040
chore: remove unused release and search assets
IEvangelist Sep 25, 2026
d5c0ef2
docs: add release resource artwork and require it in whatsnew
IEvangelist Sep 25, 2026
e20e81f
ci: batch forbidden-word searches across release data
IEvangelist Sep 25, 2026
50f29e8
docs: capture actual Aspire 13.6 run-history artwork
IEvangelist Sep 25, 2026
7ce5037
fix: avoid repeated TypeScript API sidebar catalogs (#1757)
IEvangelist Sep 25, 2026
ffdfc31
Document Azure Container Apps Sandboxes deployment target (13.6) (#1752)
eerhardt Sep 25, 2026
0fd28fa
Refresh Aspire 13.6 dashboard screenshots and animations (#1765)
IEvangelist Sep 26, 2026
2c12da4
Document dashboard runs in dashboard explorer (#1764)
JamesNK Sep 26, 2026
81571c9
Refresh 404 and search artwork and collapse Foundations sidebar group…
IEvangelist Sep 28, 2026
5e1af2e
Improve release build performance and cache contributor requests (#1774)
IEvangelist Sep 28, 2026
6f5948a
Document MongoDB automatic TLS migration in Aspire 13.6 (#1775)
eerhardt Sep 28, 2026
717442f
[docs] Reference Bicep helpers and their Azure SDK mappings (#1756)
sebastienros Sep 28, 2026
cb8eb1e
Address build credential and timing review feedback (#1776)
IEvangelist Sep 28, 2026
8edf89c
Document macOS developer mode for Rust debugging in VS Code (#1779)
sebastienros Sep 28, 2026
2ff06f7
[docs] Close Aspire 13.6 canonical guide and release-note coverage ga…
IEvangelist Sep 28, 2026
11c4bf2
[docs] Correct connection-string alias guidance for Aspire 13.6 (#1778)
sebastienros Sep 28, 2026
fc035d3
Shorten multithreaded builds aside per review feedback
Copilot Sep 28, 2026
9ca28f5
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
212a9ea
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
f8872ac
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
dd53957
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
7b1f335
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
9b23080
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
00b8418
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
3a25aae
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
5de5126
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
34b0bbf
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
065695d
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
fe756e5
Apply suggestion from @alistairmatthews
karolz-ms Sep 28, 2026
83d599e
Merge remote-tracking branch 'origin/release/13.6' into docs/pr-19590…
Copilot Sep 28, 2026
ada680f
Merge remote-tracking branch 'origin/release/13.6' into docs/pr-20337…
Copilot Sep 28, 2026
52c873b
docs: correct Blazor gateway publish note
Copilot Sep 28, 2026
c0bcfe3
Merge remote-tracking branch 'origin/release/13.6' into docs/pr-19026…
Copilot Sep 28, 2026
ad3558a
docs: expose DotnetProject Blazor gateway endpoints in examples
Copilot Sep 28, 2026
cd4fcfa
chore: restore generated icon cache after twoslash test
Copilot Sep 28, 2026
e0f3495
[docs] Document multithreaded .NET project builds (-mt) (#1744)
karolz-ms Sep 28, 2026
fe34a54
[docs] Add troubleshooting note for DevTunnel URL publication fix (#1…
karolz-ms Sep 28, 2026
e8888e0
docs: select ProjectResource Blazor client overload
Copilot Sep 28, 2026
688faef
[docs] Document DotnetProjectResource-backed Blazor gateway APIs for …
karolz-ms Sep 29, 2026
5589ce6
fix: API filter chip dots and collapsed sidebar link names
IEvangelist Sep 29, 2026
3cda4cf
Merge branch 'release/13.6' into docs/pr-19248-31822977011-1-805faa75…
mitchdenny Sep 29, 2026
25af260
[docs] Note secret redaction behavior in `aspire describe` (#1499)
mitchdenny Sep 29, 2026
4e836c1
[docs] Document AKS destroy cleanup ordering fix (#1620)
aspire-repo-bot[bot] Sep 29, 2026
89e0903
Document dashboard and AppHost terminals for Aspire 13.6 (#1684)
mitchdenny Sep 29, 2026
b9b7bc7
Regenerate API data from Aspire 13.6.0 staging build f4c27f2d (#1787)
IEvangelist Sep 29, 2026
54dc9a0
[docs] Clarify anonymous-volume behavior for `aspire stop --force` (#…
ellahathaway Sep 29, 2026
7fb0ce0
Fill in the Aspire 13.6 what's new (#1783)
joperezr Sep 29, 2026
a300d47
[docs] Document Azure provisioning service coverage and limits (#1748)
sebastienros Sep 29, 2026
752fdf2
[docs] Clarify connection property names and alias fallback examples …
sebastienros Sep 29, 2026
330e392
[docs] Document terminal dock backtick shortcut (#1784)
aspire-repo-bot[bot] Sep 29, 2026
95d6c7c
[docs] Update CLI/SDK version skew warning docs (#1786)
aspire-repo-bot[bot] Sep 29, 2026
341397a
Onboard first-party Java and Rust integrations (#1794)
IEvangelist Sep 29, 2026
b588fc2
[docs] Note CloudCube icon for azure-environment resource in 13.6 rel…
aspire-repo-bot[bot] Sep 29, 2026
d259654
[docs] Document ASPIREDOTNETPROJECT001 removal in Aspire 13.6 (#1761)
aspire-repo-bot[bot] Sep 29, 2026
1a23daf
[docs] Document Azure Sandbox default compute environment inference (…
aspire-repo-bot[bot] Sep 29, 2026
88f287a
[docs] Document hostname inheritance for Ingress paths and Gateway ro…
aspire-repo-bot[bot] Sep 29, 2026
1a28f73
[docs] Document Helm values for embedded environment parameters on Ku…
aspire-repo-bot[bot] Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 5 additions & 2 deletions .agents/skills/doc-pr-reviewer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,16 @@ copy/paste guidance that should track the active release, including:
version.
- Getting started, installation, or "use this today" examples that should move
with the release branch.
- Generic `--version`, `-Version`, or package-installation examples where the
exact version is not material to the scenario.

Do **not** require placeholders for intentionally fixed versions, including:

- What's-new or release-note pages that describe a specific historical release.
- Upgrade examples that deliberately compare old and new versions.
- CLI examples where the point is pinning a specific version with `--version`,
`-Version`, or `Aspire.ProjectTemplates::...`.
- Compatibility, reproduction, or migration examples where pinning the exact
version with `--version`, `-Version`, or `Aspire.ProjectTemplates::...` is
material to the scenario.
- Versioned schema URLs, package compatibility notes, minimum-version
requirements, third-party dependency versions, container image tags, or issue
reproduction snippets.
Expand Down
11 changes: 11 additions & 0 deletions .agents/skills/doc-tester/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,17 @@ For each documentation page:
2. **Take a snapshot** to read the page content
3. **Evaluate the content** - Is it clear? Complete? Accurate?
4. **Note any confusion** - What would a new user struggle with?
5. **Inspect current-version references in the source MDX** - Rendered pages
show the replaced value, so confirm that current guidance uses the shared
placeholders rather than a hard-coded Aspire version:
- `%ASPIRE_VERSION%` for the full current stable version
- `%ASPIRE_VERSION_MAJOR_MINOR%` for the current major/minor version

Flag hard-coded Aspire versions in current installation instructions, package
references, AppHost SDK declarations, CLI output, and copy/paste examples.
Keep fixed versions when the exact version is intentional, such as release
notes, upgrade comparisons, minimum-version requirements, compatibility notes,
or issue reproduction steps.

### Phase 2: Test CLI Commands

Expand Down
70 changes: 70 additions & 0 deletions .agents/skills/doc-writer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -1003,6 +1003,59 @@ Use standard Markdown links with absolute paths from the docs root:
For more information, see [Service Defaults](/fundamentals/service-defaults/).
```

### Inline API references

Use `ApiReference` selectively to connect an explanation to API reference documentation, not to turn every API mention into a link.

- In ordinary prose, use `<ApiReference />` only on the **first named mention of a given API in an article**, when naming that API helps explain the behavior or accompanying example. Do not introduce an API name just to add a reference link.
- After that first mention, do **not** repeat the component or API reference link in ordinary prose, including prose in callouts and later sections. Prefer descriptive prose such as "this method" or "the dependency configuration." If repeating the name is necessary for clarity, use unlinked inline code appropriate to the AppHost language being discussed.
- Apply the ordinary-prose limit **per API, per article**, not per section or language tab. A different API can have its own first reference.
- In **bulleted or numbered lists**, including language-specific API explanation lists, repeated `<ApiReference />` components are allowed. Treat equivalent API entries consistently, regardless of earlier mentions, rather than mixing linked components and unlinked API names.
- An optional API reference link in **See also** is also allowed.
- Keep API names in code samples as code; do not add reference markup inside code fences.
- Match the reference to the API actually used in the example. A PostgreSQL example calling `withPostgresMcp()` / `WithPostgresMcp()` must be introduced with `Aspire.Hosting.PostgresBuilderExtensions.WithPostgresMcp`, not the generic `WithMcpServer` API.

For example, introduce an API once:

```mdx
import ApiReference from '@components/ApiReference.astro';

For PostgreSQL, use <ApiReference name="Aspire.Hosting.PostgresBuilderExtensions.WithPostgresMcp" /> to expose MCP tools for a database.
```

Later in the same article's ordinary prose, refer to "the PostgreSQL MCP helper" rather than repeating the linked API name. In an API explanation list, repeat the component for consistent entries:

```mdx
- <ApiReference name="Aspire.Hosting.PostgresBuilderExtensions.WithPostgresMcp" /> exposes MCP tools for a database.
- <ApiReference name="Aspire.Hosting.ResourceBuilderExtensions.WithReference" /> connects resources.
```

#### Selecting an overload

Author `name`, `package`, and `parameterTypes` as explicit static props. The authoring validator does not evaluate spread objects: it reports `unsupported-spread` when a spread could supply or override any of these props, including optional ones. Remove the spread, or explicitly set all three props after the last spread so their values are known.

By default, `ApiReference` shows the method name **without `()`** and links to the method group. To discuss a specific overload, supply `parameterTypes` as a static array of its **complete declared C# parameter types**, in declaration order. Copy the types from the generated C# catalog, preserving namespaces, generic arguments, and nullability. Include the `this` receiver's type for an extension method, but not the `this` keyword. Use `[]` only for a declaration with no parameters.

```mdx
<ApiReference
name="Aspire.Hosting.ResourceBuilderExtensions.WithEnvironment"
parameterTypes={[
'Aspire.Hosting.ApplicationModel.IResourceBuilder<T>',
'string',
'string?',
]}
/>
```

This links to the exact C# overload and displays `WithEnvironment(string name, string? value)`. The extension receiver is used for selection but omitted from the visible call signature. In TypeScript mode, the component uses the generated TypeScript export's own name and parameters; several C# overloads may share one TypeScript dispatcher. Do not copy C# parameter types into a TypeScript signature or select overloads by ordinal position. A missing or ambiguous match is an authoring error, not permission to link to the first overload. Use `package` when the same API is declared in multiple packages.

Linked references reuse the code-block headers' C# and TypeScript icons from `material-icon-theme`, centered inside the code background. Do not add a separate icon or empty parentheses manually. `()` is shown only when an explicitly selected API genuinely has no call parameters.

The component derives its top-positioned tooltip from the resolved API's generated summary or description, including the selected overload when specified. Do not duplicate that description in an authored `title` prop. When no description exists, the tooltip identifies the API and language instead. Tooltip titles are capped at 160 characters, including an ASCII `...` suffix when shortened, preferably at a word boundary. This presentation limit also applies to diagnostic titles; full source descriptions, diagnostics, and visible API labels remain unchanged.

Title-based tooltips use the shared `src/frontend/src/scripts/tooltips.ts` lifecycle on initial load and after ClientRouter navigation. Keep API descriptions text-only with `data-tippy-allowhtml="false"`; do not add a competing per-component initializer.
The lifecycle is installed once per document; HMR disposal removes its listeners, restores titles, and destroys tooltip instances before the replacement module initializes.

### Reference NuGet Packages

Use the 📦 emoji with links:
Expand Down Expand Up @@ -1042,6 +1095,23 @@ The aspire.dev site supports multiple languages. When creating new content:

### Version-Specific Information

Use the shared build-time placeholders whenever current guidance needs to show
the active Aspire release:

| Placeholder | Use for |
| ----------- | ------- |
| `%ASPIRE_VERSION%` | Full current stable version, including patch |
| `%ASPIRE_VERSION_MAJOR_MINOR%` | Current major/minor display or installer version |

Use these placeholders in package references, `Aspire.AppHost.Sdk`
declarations, file-based app directives, CLI/AppHost output, and generic
installation examples that should advance with the release branch. This
applies to localized documentation as well as English documentation.

Keep a literal version when the exact version is part of the information being
documented, such as a what's-new page, upgrade comparison, minimum-version
requirement, compatibility note, historical package pin, or issue reproduction.

```mdx
<Aside type="caution">This feature requires Aspire version 9.0 or later.</Aside>
```
Expand Down
53 changes: 53 additions & 0 deletions .agents/skills/update-integrations/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,26 @@ The scripts use this precedence on `release/*` branches:

If the Aspire release branch is not publicly reachable yet, set one of the override environment variables above. The scripts intentionally fail on `release/*` if the official release feed cannot be resolved, to avoid accidentally ingesting stale nuget.org packages.

When the commit-specific feed is unavailable but a shared feed contains the required
build, set `ASPIRE_RELEASE_FEED_URL` and `ASPIRE_RELEASE_VERSION` together. The
version must be an exact package version matching the release branch, not a range.
Official packages select only that version; Toolkit packages keep their normal
nuget.org selection. Packages absent from that build retain an existing catalog
entry, if any, rather than importing a different release. An unavailable pin for
the entire integration set, an unlisted/deprecated pinned version, or a pinned
registration lookup failure stops the update before the catalog is written.
Selected-version registration metadata supplies release descriptions and tags.
Where no published nuget.org icon metadata exists, the updater reports use of the
public Aspire site icon instead of embedding an unpublished or authenticated-feed
image URL.

For an app-managed worktree whose branch name is not `release/*`, set
`BUILD_SOURCEBRANCH=refs/heads/release/N.N` in the update process alongside those
overrides. This supplies the existing branch-resolution context without renaming
or switching the worktree. Do not set these variables globally. Review the
resolved source and version before regeneration; C# and TypeScript generators
consume the resulting catalog's exact versions.

## Step-by-Step Process

### 1. Run the update script
Expand Down Expand Up @@ -138,10 +158,20 @@ The script performs the following for every package listed in `aspire-integratio
1. Resolves the correct package source per package: official Aspire packages use the branch-specific release feed on `release/*`, while Community Toolkit packages continue to use nuget.org.
2. Queries that package source for the latest stable version (falls back to latest preview if no stable exists).
3. Downloads the package into the local NuGet cache via `dotnet restore` if not already cached.
Provisioning SDK overlays restore with the same-version `Aspire.Hosting`
reference to model their AppHost context; other packages retain standalone
per-package restore graphs. Dependency errors remain fatal.
4. Selects the best-matching target framework folder (prefers `net10.0`, then `net9.0`, etc.).
5. Uses Roslyn to analyze the assembly and extract all public types, members, XML docs, and attributes.
6. Writes a `{Package}.{Version}.json` file to `src/frontend/src/data/pkgs/`.

An assembly that opts into an `AspireExportProvider` can expose generated ATS
APIs without public C# types. For those assemblies, the generator retains package
identity and provenance with `types: []` and `package.hasGeneratedExports: true`.
This record feeds TypeScript generation and requires a corresponding TypeScript
module at semantic validation. It does not add an empty C# package to API navigation.
Build-only packages without public types or generated-export opt-ins remain explicit skips.

The generated JSON follows this schema:

```json
Expand Down Expand Up @@ -205,6 +235,29 @@ pnpm --filter ./src/frontend run update:ts-api

The companion `generate-ts-api-json.ps1` script reads the generated C# package JSON files in `src/frontend/src/data/pkgs/`, selects `Aspire.Hosting`, `Aspire.Hosting.*`, and `CommunityToolkit.Aspire.Hosting.*` packages, and passes each package/version through to `aspire sdk dump`. This keeps `src/frontend/src/data/ts-modules/` aligned with the same package set and versions that already flowed through C# API generation.

Radius versions exporting the generic `IDotnetProgramResource` overload are
scanned with `Aspire.Hosting.Dotnet` as supporting context. Its exact version
comes from the generated C# metadata, so the scanner can retain the export on
`DotnetProjectResource` while the concrete overload serves legacy project
resources. Generate the Dotnet module first when regenerating Radius selectively.
The transformer excludes core and supporting APIs using their generated modules;
it preserves Radius's real capability IDs and expanded receiver targets.
A scanner collision that removes the generic export must be fixed upstream,
not hidden by changing the C# metadata or weakening API-reference validation.

For generated-export overlays, the script also obtains the matching
`aspire sdk export --language typescript` document. Referenced SDK enum definitions
missing from the raw dump are taken from that canonical export, with package identity
and unambiguous ownership checks. Union members are preserved during transformation;
missing or unsupported enum definitions fail generation rather than becoming empty
interface stubs. Semantic validation checks enum members in the final Twoslash bundle.
The bundle represents enums as string unions with companion constant objects.
When independent packages export the same enum short name, the shared bundle
combines their literals; each package's API JSON retains its exact enum surface.
Use the package-specific SDK to validate behavior that depends on those differences.
The generator rejects nonzero SDK dump exits and error diagnostics even when a JSON
file was produced. An incomplete dump isn't a successful API-generation result.

When a TypeScript module is regenerated for a new package version, stale `ts-modules` JSON files for older versions of that same package are deleted automatically. Regenerated modules with no functions or types are omitted from `src/frontend/src/data/ts-modules/`.

After the JSON is refreshed, `update-ts-api` automatically chains `generate-twoslash-types.ts` to rebuild `src/frontend/src/data/twoslash/aspire.d.ts`. This bundle is source-controlled and its diff must be committed alongside the `ts-modules` JSON changes — without it, docs hover tooltips fall back to `any`. If you only need to refresh the bundle (e.g. after a generator script change) without running the full SDK dump, use:
Expand Down
9 changes: 9 additions & 0 deletions .agents/skills/whatsnew/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,15 @@ infer from context — e.g. a fresh release with no page → `draft`).
distinct **"New integrations"** section for brand-new ones; a **"Default container
image updates"** section for tag bumps. The release-date badge + GitHub release-notes
link render **automatically** from `publishDate` + slug — never hand-place them.
- **Resource artwork:** Every new release page must set `resourceImage` to newly
captured screenshots demonstrating a feature introduced in that release, with
matching `light`/`dark` variants. Verify the running product version and capture
its actual UI; do not substitute generic dashboard artwork, an older release's
screenshots, or fabricated UI. Store the files in the release's assets folder
before adding their paths, and show them beside the feature in the article. The
resource directory discovers release pages and consumes this frontmatter
automatically; do not add a duplicate catalog entry. Verify the card's image
and release metadata in the resource-catalog tests and browser preview.

### Safety / mechanics
- **Never run `pnpm build` locally** — validate build-readiness by inspection.
Expand Down
18 changes: 16 additions & 2 deletions .agents/skills/whatsnew/references/01-draft-scaffold.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ duplicating.
the **content-standards taxonomy**: Deployment and Integrations **separate**, plus
dedicated **"New integrations"** and **"Default container image updates"** sections.
If the file already exists, reconcile structure without clobbering existing content.
The template's `{{RESOURCE_IMAGE_LIGHT}}` and `{{RESOURCE_IMAGE_DARK}}` tokens
must resolve to newly captured screenshots of a feature introduced in this
release. Verify the running product version, exercise the feature, and capture
the same UI state in both themes. Store the files under the release assets folder
and then set `resourceImage` to their `~/assets/whats-new/...` paths. Never use
generic or older-release artwork, fabricate UI, or point at nonexistent files.
If capture isn't possible during scaffolding, omit `resourceImage` temporarily
and track it as a required research/polish task; do not consider validation complete.
The resource directory automatically includes the page as `release-notes` and
reads its image and `publishDate`; no separate catalog entry is needed.
3. **Version constants.** Update `src/frontend/config/aspire-versions.mjs`:
`currentAspireMajorMinorVersion = 'N.N'`, `currentAspireVersion` to the latest
stable `N.N.PATCH`, and `currentAspirePreviewVersion` to the matching full
Expand All @@ -55,8 +65,9 @@ duplicating.
`{ label: 'Aspire N.N', slug: 'whats-new/{SLUG}' }` at the **top** of the What's-new
`items`. Roll the now-older version into the "Previous versions" group per the
existing pattern.
6. **Assets folder.** Create `src/frontend/src/assets/whats-new/aspire-{VERSION_FULL}/`
(empty) for screenshots to land later.
6. **Assets.** Create `src/frontend/src/assets/whats-new/aspire-{VERSION_FULL}/`
only when adding actual screenshots. Do not create an empty directory or
`.gitkeep`; reused shared artwork needs no release-specific folder.
7. **Commit the scaffold.** Stage and commit all of the above on `release/{N.N}` so the
branch has a diff against the default branch (nothing to PR otherwise).
8. **Draft PR.** *Now* open a **draft** PR from `release/{N.N}` into the repository's
Expand All @@ -72,5 +83,8 @@ duplicating.

- Page exists and is structurally sound (frontmatter + imports + section skeleton).
- Sidebar resolves the new slug; banner points at the new article across locales.
- Release-specific screenshots exist and `resourceImage` resolves to them, or
their capture is explicitly tracked as incomplete. The resource directory
discovers one release-notes entry with the expected metadata.
- Version constants updated; draft PR is open.
- **No researched prose yet** — only structure and placeholders.
8 changes: 8 additions & 0 deletions .agents/skills/whatsnew/references/04-validate.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,14 @@ then **fix → re-review → repeat** until it converges clean:
targets.
- **Banner + version wiring:** banner points at the new article across locales; version
constants in `aspire-versions.mjs` are correct.
- **Resource directory:** `resourceImage` is present and every configured image
resolves to a newly captured screenshot of a feature introduced in this release.
Verify capture provenance (product version, scenario, and actual UI state);
generic artwork or older-release screenshots fail this gate even if they exist.
Show the screenshots beside the feature in the article with descriptive alt text.
Run `dev-resource-catalog.vitest.test.ts` and preview the release card
under `/hub/browse/` in both themes. Confirm one `release-notes` entry with the
correct link, title, date, and artwork; do not hand-maintain a duplicate catalog.

## Editorial guardrails enforced here

Expand Down
Loading
Loading