Migrate Dotnet8 To Dotnet9
dotnet/skills
Migrate a .NET 8 project to .NET 9 and resolve all breaking changes.
WORKFLOW SKILL - Safely migrates eligible Aspire 13.6+ AppHosts from legacy ProjectResource APIs to experimental DotnetProjectResource APIs after a per-resource assessment and explicit approval of…
$ npx skills add CommunityToolkit/Aspire --skill aspire-project-v2-migration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install CommunityToolkit/Aspire aspire-project-v2-migration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/CommunityToolkit/Aspire.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/aspire-project-v2-migration .claude/skills/aspire-project-v2-migration && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "aspire-project-v2-migration" agent skill from https://github.com/CommunityToolkit/Aspire/tree/main/.agents/skills/aspire-project-v2-migration into .claude/skills/aspire-project-v2-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aspire-project-v2-migration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/CommunityToolkit/Aspire/tree/main/.agents/skills/aspire-project-v2-migrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add CommunityToolkit/Aspire --skill aspire-project-v2-migration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install CommunityToolkit/Aspire aspire-project-v2-migration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CommunityToolkit/Aspire.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/aspire-project-v2-migration .agents/skills/aspire-project-v2-migration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "aspire-project-v2-migration" agent skill from https://github.com/CommunityToolkit/Aspire/tree/main/.agents/skills/aspire-project-v2-migration into .agents/skills/aspire-project-v2-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aspire-project-v2-migration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add CommunityToolkit/Aspire --skill aspire-project-v2-migration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install CommunityToolkit/Aspire aspire-project-v2-migration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CommunityToolkit/Aspire.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/aspire-project-v2-migration .cursor/skills/aspire-project-v2-migration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "aspire-project-v2-migration" agent skill from https://github.com/CommunityToolkit/Aspire/tree/main/.agents/skills/aspire-project-v2-migration into .cursor/skills/aspire-project-v2-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aspire-project-v2-migration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/CommunityToolkit/Aspire.git --path .agents/skills/aspire-project-v2-migration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add CommunityToolkit/Aspire --skill aspire-project-v2-migration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install CommunityToolkit/Aspire aspire-project-v2-migration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CommunityToolkit/Aspire.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/aspire-project-v2-migration .gemini/skills/aspire-project-v2-migration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "aspire-project-v2-migration" agent skill from https://github.com/CommunityToolkit/Aspire/tree/main/.agents/skills/aspire-project-v2-migration into .gemini/skills/aspire-project-v2-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aspire-project-v2-migration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install CommunityToolkit/Aspire aspire-project-v2-migrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add CommunityToolkit/Aspire --skill aspire-project-v2-migration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/CommunityToolkit/Aspire.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/aspire-project-v2-migration .github/skills/aspire-project-v2-migration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "aspire-project-v2-migration" agent skill from https://github.com/CommunityToolkit/Aspire/tree/main/.agents/skills/aspire-project-v2-migration into .github/skills/aspire-project-v2-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aspire-project-v2-migration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add CommunityToolkit/Aspire --skill aspire-project-v2-migration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install CommunityToolkit/Aspire aspire-project-v2-migration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CommunityToolkit/Aspire.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/aspire-project-v2-migration .opencode/skills/aspire-project-v2-migration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "aspire-project-v2-migration" agent skill from https://github.com/CommunityToolkit/Aspire/tree/main/.agents/skills/aspire-project-v2-migration into .opencode/skills/aspire-project-v2-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aspire-project-v2-migration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
aspire-project-v2-migrationWORKFLOW SKILL - Safely migrates eligible Aspire 13.6+ AppHosts from legacy ProjectResource APIs to experimental DotnetProjectResource APIs after a per-resource assessment and explicit approval of…
Aspire Project V2 Migration is an agent skill from CommunityToolkit/Aspire. WORKFLOW SKILL - Safely migrates eligible Aspire 13.6+ AppHosts from legacy ProjectResource APIs to experimental DotnetProjectResource APIs after a per-resource assessment and explicit approval of exact edits. USE FOR: assess or migrate existing AddProject, addProject, AddCSharpApp, addCSharpApp, or AddBlazorGateway resources to Project v2; migrate ProjectResource to DotnetProjectResource; clean up the resulting obsolete AppHost ProjectReference edges. DO NOT USE FOR: upgrading Aspire versions, creating/wiring a…
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/compatibility-and-validation.md` and `references/migration-patterns.md`).
It sits in Development, covering Legacy modernization. It works with C#, Azure Functions, .NET and TypeScript. The repository describes itself as: A community project with additional components and extensions for Aspire. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 853823c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Aspire Project V2 Migration loads about 3.4k tokens when it runs, and up to ~8.4k if it reads all its reference files. Until then it costs about 231 tokens; SKILL.md has 1,535 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from CommunityToolkit/Aspire at commit 853823c, republished under its MIT licence (© CommunityToolkit). 1,535 words, ~3,406 tokens.
.claude/skills/aspire-project-v2-migration/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Migrate supported legacy .NET project resources to the experimental
DotnetProjectResource model without silently changing application behavior.
This skill first applies to AppHosts targeting Aspire 13.6 or newer.
Approval boundary: A request such as "migrate to Project v2" authorizes an assessment, not unseen edits. Present the exact per-resource and per-file plan, then obtain approval before changing AppHost, package, project-reference, or application files. Apply only explicitly approved subsets.
TargetFramework, and do not upgrade Aspire implicitly.AddDotnetProject, publishing, EF, and Blazor capabilities used by the app.
Development packages are development-build evidence, not released-package evidence..aspire/modules/ files.aspire docs search and aspire docs api search ... --language csharp|typescript before relying on unfamiliar or preview API shapes.addDotnetProject(name, path, options?: DotnetProjectOptions) API with a flat DTO. Older handle-only target
builds are a capability stop, not a second supported migration path.
Legacy source ProjectResourceOptions values remain RPC handles.The publishing and TypeScript options changes are merged upstream, but a 13.6 version label alone does not prove that a consumer's packages contain them. See compatibility-and-validation.md for the merged API baseline and publishing boundaries.
If .agents/skills/aspire-project-v2-migration/SKILL.md exists, warn the user and
defer to that project-local skill while retaining these safety gates.
Keep the assessment read-only in the application workspace. Inspect source and already-resolved metadata; do not restore, build, run, or regenerate SDK files before approval, even for capability discovery. If preparation is necessary to verify eligibility or APIs, describe that prerequisite and request approval for it rather than silently modifying the workspace.
Inspect the selected AppHost and every legacy candidate:
AddProject<Projects.T>, path/directory AddProject, AddCSharpApp, and
polyglot equivalents.ProjectReference / file-based #:project edges and every consumer of
generated project metadata. Resolve Projects.* through real
IProjectMetadata, project-reference metadata, and
AspireProjectMetadataTypeName; never guess a path from a type name.ProjectResource, including casts, constraints,
GetProjectResources(), publishers, image managers, direct constructors, or
specialized subclasses.An already migrated app or an app with no matching resources is a no-op.
Present a table before editing:
| Resource | Current API and source | Proposed replacement | Behavior retained / intentional change | Package and reference edits | Classification |
|---|---|---|---|---|---|
api | AddProject<Projects.Api> → resolved path | AddDotnetProject("api", path) | args, profiles, endpoints, env, refs, waits, replicas, publishing | add Aspire.Hosting.Dotnet; remove only proven-exclusive edge | supported / decision / unsupported |
Explain:
ASPIREDOTNETPROJECT001 is an experimental API diagnostic.Ask for approval of that exact plan. Do not migrate a "safe-looking" subset until the subset and retained resources are explicitly approved.
For a Blazor gateway, approval of the API replacement or "Dockerfile to SDK" switch alone is not approval of an implicit framework, base-image, or process-user change. List the resolved deployment differences and obtain explicit approval for them before editing. Briefly explain runtime/OS compatibility and non-root file/volume-permission implications; a list of changed values alone is not informed approval. If those values cannot be established read-only, classify the gateway as decision-required and request approval for the preparation needed to resolve them. Do not invent defaults or assume deployment equivalence. End that assessment with the gateway decision: request approval for specific bounded discovery, or ask whether to retain the gateway/review an owned publishing policy. Asking only about API edits does not resolve the gateway approval boundary.
Before sending an assessment with an unresolved gateway, check the final question: it must explicitly ask the user to choose gateway bounded discovery or gateway retention plus owned publishing-policy review. Never end with only API-edit approval while the gateway is still decision-required.
End the assessment with an actual approval request, not just a description of what approval would mean. Use the host's user-question tool when available; otherwise ask explicitly whether the user approves the listed resource and file changes. Wait for the answer before editing. An unavailable user is not approval.
After approval, capture the legacy behavior in a disposable copy when validation is authorized and feasible. Use the same qualified toolchain before and after; report pre-existing failures rather than attributing them to the migration.
Load migration-patterns.md and follow its exact language-specific mappings.
Aspire.Hosting.Dotnet at a version compatible with the already-targeted
AppHost, preserving central package management and repository conventions.DotnetProjectOptions object. Preserve the
established values from legacy source; do not redesign addProject,
addCSharpApp, or the shared ProjectResourceOptions handle.IResourceBuilder<ProjectResource> annotations
tied to approved resources. Do not broadly rewrite public/custom contracts.ASPIREDOTNETPROJECT001 narrowly so the edited
AppHost compiles. Prefer paired #pragma warning disable ASPIREDOTNETPROJECT001 / #pragma warning restore ASPIREDOTNETPROJECT001 immediately around the approved Project v2 declarations.
Use a project-level NoWarn only when repository convention and the approved
migration scope make that equally narrow. Never suppress unrelated diagnostics
or leave an unbounded disable.
The AddEFMigrations overload selected for IDotnetProgramResource also requires
a paired ASPIREPROJECTS001 suppression around that EF declaration; the legacy
overload did not. Include this compilation-required edit in the approval scope.
Preserve existing ASPIREBLAZOR001 scopes where the client/gateway calls need them.Remove an AppHost ProjectReference or #:project only when it is proven to exist
exclusively for approved migrated resources and no generated metadata consumer
remains. Retain:
Projects.* consumers;ReferenceOutputAssembly="false" does not prevent an AppHost reference from
participating in the build and is not a substitute for safe cleanup.
Keep runtime WithEnvironment values at runtime. Add WithBuildEnvironment only
for an established, approved MSBuild input; never move environment configuration
wholesale or treat runtime working directory as build context.
Use WithContainerBuildOptions for supported image identity, destination, format,
and target-platform settings. Do not translate those settings into prohibited
build-environment properties.
After approved edits:
aspire start --non-interactive --isolated --apphost <path> when isolation is needed.aspire wait <resource> --apphost <path> --non-interactive and structured
Aspire inspection, not manual polling.aspire publish is not proof that an image was built. Run only the
authorized validation stages; never push images or deploy as an implicit check.
Do not claim unexecuted, skipped, or unavailable checks passed.
For approved gateway image changes, verify the exact accepted target contract
and unchanged behavior separately. Report the intentional differences, not
"image parity"; a smoke-test pass does not authorize new framework/user changes.Report migrated, intentionally retained, and blocked resources, plus actual validation and manual follow-up. Preserve the user's edits if validation fails.
Load compatibility-and-validation.md for the full decision matrix. Never automatically replace:
ProjectResource subtypes;new ProjectResource(...);GetProjectResources() consumers without a user decision;IDotnetProgramResource is an identity marker. It does not by itself configure
publishing; SupportsDotnetProgramPublishing() is a capability check, not a reason
to rewrite every ProjectResource constraint.
For every file-based .cs candidate, the assessment must explicitly state that
it requires .NET 10+, does not support WithBuildEnvironment or EF CLI
operations, keeps runtime WithEnvironment values unchanged, and preserves
Native AOT unless the user separately approves PublishAot=false or chooses a
target-OS publishing environment.
Do not disable file-app Native AOT, replace a custom publishing model, or promise unfinished watch/hot-reload/partial-run behavior without explicit evidence and approval.
| Request | Route |
|---|---|
| Migrate legacy project resources to Project v2 | This skill |
| Upgrade Aspire packages or CLI only | aspire-orchestration |
| Create or wire an AppHost | aspire-init / aspireify |
| Start, stop, wait, or rebuild only | aspire-orchestration |
| Deploy or publish after migration | aspire-deployment |
| Diagnose runtime behavior | aspire-monitoring |
© CommunityToolkit, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in .agents/skills/aspire-project-v2-migration of CommunityToolkit/Aspire.
Open the folder on GitHubat commit 853823c
Aspire Project V2 Migration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Aspire Project V2 Migration this skillCommunityToolkit/Aspire | 629 | — | ~3.4k | Automated safety check: Pass | MIT | |
| Migrate Dotnet8 To Dotnet9dotnet/skills | 5.6k | 2 repos | ~3.9k | Automated safety check: Pass | MIT | |
| Git HooksProrise-cool/Claude-Code-Multi-Agent | 305 | — | ~3.6k | Automated safety check: Notes | None | |
| Dynamo Dotnet JanitorDynamoDS/Dynamo | 2k | — | ~682 | Automated safety check: Pass | Apache-2.0 | |
| Modern Csharpcodewithmukesh/dotnet-claude-kit | 755 | 1 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Corvus Go Evaluatorcorvus-dotnet/Corvus.JsonSchema | 199 | — | ~2.2k | Automated safety check: Pass | Apache-2.0 |
dotnet/skills
Migrate a .NET 8 project to .NET 9 and resolve all breaking changes.
Prorise-cool/Claude-Code-Multi-Agent
Central authority on git hook implementations, modern best practices, and tooling for .NET/C, JavaScript/TypeScript, Python, and polyglot repositories.
DynamoDS/Dynamo
Perform janitorial tasks on C/.NET code including cleanup, modernization, and tech debt remediation.
codewithmukesh/dotnet-claude-kit
Modern C language features for .NET 10 and C 14. An agent skill from codewithmukesh/dotnet-claude-kit.
corvus-dotnet/Corvus.JsonSchema
Work on the Go port of the V5 standalone schema evaluator (src-go/corvus-json-schema, module github.com/corvus-dotnet/Corvus.JsonSchema/src-go/corvus-json-schema, package jsonschema): loader…
corvus-dotnet/Corvus.JsonSchema
Work on the TypeScript port of the V5 standalone schema evaluator (src-ts/corvus-json-schema, npm package @corvus-dotnet/json-schema): loader, compiler, JavaScript code generator, results collector…
CommunityToolkit/Aspire
Query .NET APIs across NuGet packages, platform libraries, and local files.
CommunityToolkit/Aspire
ANALYSIS SKILL - Observe Aspire apps: logs, traces, metrics, resource state, telemetry export, browser telemetry, and the standalone dashboard.
CommunityToolkit/Aspire
WORKFLOW SKILL - Wire Aspire AppHosts or repair TypeScript AppHost toolchains.
CommunityToolkit/Aspire
WORKFLOW SKILL — Deploy Aspire apps from AppHost models to Docker Compose, Kubernetes, Azure, AWS, or preview Radius.
CommunityToolkit/Aspire
Generate a TypeScript AppHost from an existing C example AppHost, then add a TypeScriptAppHostTest-based integration test.
CommunityToolkit/Aspire
Update the Aspire version in the repository to the latest nightly build.
Works with
Categories
WORKFLOW SKILL - Safely migrates eligible Aspire 13.6+ AppHosts from legacy ProjectResource APIs to experimental DotnetProjectResource APIs after a per-resource assessment and explicit approval of…. Aspire Project V2 Migration is an agent skill from CommunityToolkit/Aspire.6+ AppHosts from legacy ProjectResource APIs to experimental DotnetProjectResource APIs after a per-resource assessment and explicit approval of exact edits.
Aspire Project V2 Migration fits situations like: migrate existing AddProject; addBlazorGateway resources to Project v2; migrate ProjectResource to DotnetProjectResource; clean up the resulting obsolete AppHost ProjectReference edges.
Run `npx skills add CommunityToolkit/Aspire --skill aspire-project-v2-migration -a claude-code`. Or copy the skill folder (.agents/skills/aspire-project-v2-migration in CommunityToolkit/Aspire) into .claude/skills/aspire-project-v2-migration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add CommunityToolkit/Aspire --skill aspire-project-v2-migration -a codex`. Or copy the skill folder (.agents/skills/aspire-project-v2-migration in CommunityToolkit/Aspire) into .agents/skills/aspire-project-v2-migration in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add CommunityToolkit/Aspire --skill aspire-project-v2-migration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aspire-project-v2-migration, .gemini/skills/aspire-project-v2-migration, .github/skills/aspire-project-v2-migration and .opencode/skills/aspire-project-v2-migration in your project.
SKILL.md names no scripts, command-line tools or credentials: Aspire Project V2 Migration is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Aspire Project V2 Migration is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Aspire Project V2 Migration: Migrate Dotnet8 To Dotnet9 (dotnet/skills, 5.6k stars), Git Hooks (Prorise-cool/Claude-Code-Multi-Agent, 305 stars), Dynamo Dotnet Janitor (DynamoDS/Dynamo, 2k stars) and Modern Csharp (codewithmukesh/dotnet-claude-kit, 755 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
CommunityToolkit (a GitHub organization) maintains it in CommunityToolkit/Aspire, which has 629 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 9, 2026.
Source: CommunityToolkit/Aspire on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.