aspnet-core
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging,…
Build, upgrade, and operate Aspire 13.5.x C# or TypeScript application hosts with the current CLI, AppHost, ServiceDefaults, integrations, dashboard, testing, MCP, and deployment patterns for distributed apps. USE FOR: Aspire.AppHost.Sdk, Aspire.Hosting.*,
Claude Code
$ npx -y skills add managedcode/dotnet-skills --skill aspire --agent claude-code
Codex
$ npx skills add managedcode/dotnet-skills --skill aspire -a codex -y
Cursor
$ npx skills add managedcode/dotnet-skills --skill aspire -a cursor -y
Gemini CLI
$ npx skills add managedcode/dotnet-skills --skill aspire -a gemini-cli -y
GitHub Copilot
$ npx skills add managedcode/dotnet-skills --skill aspire -a github-copilot -y
OpenCode
$ npx skills add managedcode/dotnet-skills --skill aspire -a opencode -y
Windsurf
$ npx skills add managedcode/dotnet-skills --skill aspire -a windsurf -y
name: aspire description: "Build, upgrade, and operate Aspire 13.5.x C# or TypeScript application hosts with the current CLI, AppHost, ServiceDefaults, integrations, dashboard, testing, MCP, and deployment patterns for distributed apps. USE FOR: Aspire.AppHost.Sdk, Aspire.Hosting.*, DistributedApplication.CreateBuilder, apphost.mts, createBuilder, WithReference, WaitFor, AddProject, AddRedis, AddPostgres, aspire run, aspire init, aspire. DO NOT USE FOR: unrelated stacks; generic tasks that do not need this specific guidance. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made."
1. Classify the task first: new AppHost creation, existing-solution enlistment, integration wiring, testing and observability, deployment, or version upgrade. 2. Prefer the current Aspire toolchain. Choose a C# AppHost for .NET-first repositories or a TypeScript `apphost.mts` for JavaScript/TypeScript-first repositories; both are first-class in 13.5. Use the Aspire CLI and current SDK-generated app model instead of writing new guidance around the deprecated legacy workload. 3. Treat 13.5.x releases as the current CLI-first app model. Keep the Aspire CLI, `Aspire.AppHost.Sdk`, and closely coupled hosting or testing packages on the same line, then rerun the AppHost and deployment checks after `aspire update`. 4. Keep the AppHost code-first and topology-focused. Model services, resources, dependencies, endpoints, lifetimes, and parameters there; keep business logic out. 5. Keep `ServiceDefaults` narrow. It exists for telemetry, health checks, resilience, and service discovery, not shared domain models or general utility code. 6. Prefer official first-party Aspire integrations when they cover the requirement. Use `CommunityToolkit/Aspire` only when the capability gap is real: unsupported language hosts, extra dev infrastructure, or extension packages the official project does not provide. 7. Validate the whole distributed system, not one project in isolation. Local success means the AppHost starts cleanly, dependencies resolve through `WithReference`, the dashboard shows the expected resource graph, and end-to-end tests can exercise the topology. 8. For integration tests, keep one shared AppHost fixture per test session. Use `Aspire.Hosting.Testing` to boot the distributed app, create `HttpClient` or SignalR clients from the AppHost, and layer `WebApplicationFactory` on top only when tests need direct Host DI, grains, or runtime services. Fixture sharing amortizes startup and must not serialize tests; keep consumers parallel and isolate their mutable state. 9. When publishing, switch from local containers or emulators to managed resources deliberately and verify which services truly need external endpoints.
For test diagnostics, follow the output budget in `references/testing.md`: retain native progress and ANSI, show Warning/Error only plus a final summary, cap diagnostic responses at 80 lines / 8 KiB, and link artifacts instead of dumping logs.
flowchart LR
A["Distributed-app task"] --> B{"Need code-first orchestration?"}
B -->|No| C["Stay in service-level skills such as ASP.NET Core, Worker, or Orleans"]
B -->|Yes| D["Create or update the AppHost"]
D --> E["Model resources and services with `WithReference` and `WaitFor`"]
E --> F{"Official Aspire integration exists?"}
F -->|Yes| G["Use first-party Aspire integration"]
F -->|No or gap remains| H["Evaluate `CommunityToolkit/Aspire`"]
G --> I["Apply `ServiceDefaults`, dashboard, and tests"]
H --> I
I --> J{"Publishing now?"}
J -->|No| K["Run locally with `aspire run` or the AppHost project"]
J -->|Yes| L["Choose `azd`, App Service, or the CLI deploy/publish pipeline"]Stop explaining .NET to your AI. Start building. We've all been there: asking Claude to use Entity Framework, only to get EF6 patterns in a .NET 8 project. Explaining to Copilot that Blazor Server and Blazor WebAssembly aren't the same thing.
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging,…
Build and debug Avalonia 11/12 .NET applications with XAML, compiled bindings, MVVM, custom controls, desktop lifetimes, and…
Build, review, or migrate Azure Functions in .NET with correct execution model, isolated worker setup, bindings, DI, and Durable…
Build and review Blazor applications across server, WebAssembly, web app, and hybrid scenarios with correct component design,…
Maintain or migrate EF6-based applications with realistic guidance on what to keep, what to modernize, and when EF Core is or is…
Design, tune, or review EF Core data access with proper modeling, migrations, query translation, performance, and lifetime…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.