aspire
Skill93 starsChanged 27 days agoMITView on GitHub
**WORKFLOW SKILL** - Aspire router. Detects AppHosts, enforces guardrails, and selects the right sub-skill. USE FOR: Aspire AppHost, Aspire CLI, distributed app, cloud-native .NET, aspire start/stop/resource/deploy/destroy/publish/init/new/add/wait/describe/ps/logs/otel, aspire agent init, WithBrowserLogs, WithTerminal, TerminalService, terminal prompts, WithRepl, tapes, Interaction Service, apphost.mts, TS package managers, Yarn Classic, custom resource commands, .aspire/modules recovery, ProjectResource to DotnetProjectResource migration, or Playwright URL discovery. DO NOT USE FOR: non-Aspire projects or ordinary build/test tasks. INVOKES: aspire-init, aspireify, aspire-project-v2-migration, aspire-orchestration, aspire-deployment, aspire-monitoring, aspire-terminals. FOR SINGLE OPERATIONS: Route directly to the matching sub-skill.
- Pipes a download into a shell
- Installs packages
17 other projects use a version of this, 3 of them edited.
Adopted by
Most recently taken up by
- codewithmukesh/dotnet-claude-kittheir own version, first seen Nov 8, 2026
- github/awesome-copilottheir own version, first seen Oct 25, 2026
- NikiforovAll/keycloak-authorization-services-dotnettheir own version, first seen Oct 9, 2026
- Azure-Samples/interview-coach-agent-frameworktheir own version, first seen Oct 9, 2026
- EmeaAppGbb/spec2cloudtheir own version, first seen Oct 9, 2026
- Resgrid/Coretheir own version, first seen Oct 8, 2026
Used with
Projects with it also use scalar, error-handling and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
Sorcha-PlatformSkillscalar
Generates and configures Scalar OpenAPI UI for API documentation. Use when: Adding API documentation to services, configuring OpenAPI endpoints, customizing documentation themes
Also in 3 projects that use this
MicrosoftSkillerror-handling
统一错误处理系统。在添加 API 端点、修改错误处理、添加前端 API 调用、编写错误相关测试时使用。
Also in 4 projects that use this
wrsmith108Skilldocker
Container-based development for isolated, reproducible environments. Use when running npm commands, installing packages, executing code, or managing project dependencies. Trigger phrases include "npm install", "run the build", "start the server", "install package", or any code execution request.
Also in 3 projects that use this
Other versions17 projects use a version of this.
Word for word · 0
None found.
Edited · 3
- dotnet/eShop★ 11k73% same
- foxminchan/BookWorm★ 50897% same
- BlakeHastings/claude-code-artifacts★ 173% same
Wrote their own version · 14
- github/awesome-copilot★ 41ksame name
- NuGet/NuGetGallery★ 1.6ksame name
- codewithmukesh/dotnet-claude-kit★ 808same name
- cmu-sei/GHOSTS★ 744same name
- NikiforovAll/keycloak-authorization-services-dotnet★ 673same name
- Resgrid/Core★ 238same name
- microsoft/aspire.dev★ 202same name
- mitchdenny/hex1b★ 182same name
- Azure-Samples/interview-coach-agent-framework★ 179same name
- nightscout/nocturne★ 163same name
4 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository16 other files it gives its agents.
- pr-reviewSkill
- aspire-deploymentSkill
- aspireifySkill
- aspire-initSkill
- aspire-monitoringSkill
- aspire-orchestrationSkill
- aspire-project-v2-migrationSkill
- aspire-terminalsSkill
- aspire-deploymentSkill
- aspireifySkill
- aspire-initSkill
- aspire-monitoringSkill
- aspire-orchestrationSkill
- aspire-project-v2-migrationSkill
- aspireSkill
- aspire-terminalsSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
20 rules. 0 are common, 5 are distinctive, and 15 are very specific to this project.
0
Common
Most of the 15 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
15
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 24
Use this skill when the task involves an Aspire distributed application — operating the AppHost or its resources through the Aspire CLI …
- Distinctive: line 72
Only continue with the steps below once a wired AppHost is present.
- Very specific: line 77
Before adding integrations, use aspire integration search <query> when the package is unknown, then aspire add <package> when ready to …
- Very specific: line 78
When code changes, decide whether the AppHost model changed or only one resource changed.
- Very specific: line 89
When VS Code exposes aspire_apphost_start or aspire_apphost_stop, load deferred contracts and prefer the matching tool, subject to the …
- Distinctive: line 90
If several AppHosts are discovered and the target is unclear, ask which one before taking any lifecycle action
- Very specific: line 92
Use aspire ps for running AppHost processes and aspire describe for resource state/endpoints.
- Very specific: line 95
Use aspire resource <resource-name> <command> for resource operations such as stop, start, or rebuild when available
- Very specific: line 96
Treat aspire stop --force as data-destructive: it permanently removes persistent resources without another prompt, but preserves persistent …
- Distinctive: line 102
Do not stop or restart the whole AppHost just because one resource changed
- Very specific: line 103
Use features.defaultWatchEnabled only for Aspire default watch.
- Distinctive: line 104
Prefer a resource's own framework/runtime hot reload, HMR, or watch workflow when it already handles the change
- Very specific: line 108
Use aspire integration list --format Json and aspire integration search <query> --format Json for read-only integration discovery
- Very specific: line 111
Always: use aspire start for an AppHost's lifecycle.
- Very specific: line 142
When the user asks for better AI agent support for their Aspire project (or to set up / refresh project-local agent guidance), recommend …
- Distinctive: line 155
If MCP config is missing after a successful init or skill refresh where MCP was not explicitly requested, that is expected.
- Very specific: line 162
Keep any --skills / --skill-locations values the user already chose.
- Very specific: line 166
Never add --mcp when you run aspire new, aspire init, a skill refresh, or missing-skill recovery.
- Very specific: line 225
If any of the following exist project-locally (from aspire agent init or Aspire aspire init), warn the user and defer to the project-local …
- Very specific: line 249
Use the installation method owned by the user's environment.
“Common” is measured: kept by at least 6 in 10 of the 15 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Aspire
Use this skill when the task involves an Aspire distributed application — operating the
AppHost or its resources through the Aspire CLI rather than falling back to ad-hoc dotnet,
docker, or shell workflows.
Triage first
Three intents are commonly misread — resolve them before doing anything else:
- "Better / improve AI agent support", "set up agent skills", "make Copilot smarter about
my Aspire app" → recommend running
aspire agent init, which generates project-local Aspire agent skills with richer, scenario-based guidance (deeper coverage for C# AppHost editing, TypeScript AppHosts, and investigation workflows). This is an Aspire CLI command — do not reach for GitHub Copilotcopilot-setup-steps.ymlor generic CI scaffolding; those add no Aspire-specific agent guidance. - "Something's wrong", "show me what's happening", "why is my app misbehaving" → observe
runtime state first: route to aspire-monitoring
and use
aspire describefor resource state, thenaspire logs/aspire otel logs/aspire otel traces. Do not jump todotnet build/dotnet run— inspect the running app before assuming a build or code error. - "My old TypeScript AppHost uses apphost.ts; how do I migrate?" → route to
aspire-orchestrationforaspire update --migrate. This entry-point/package migration is not Project v2 resource migration. Its package, config, tsconfig, generated-import, and entry-point changes require approval beforeaspire update --migrate --yes --non-interactive; useaspireifyonly if separate source authoring remains afterward.
Detection
Activate when ANY signal is present. Use the Scope column to decide whether to route to
the bootstrap skills (aspire-init / aspireify) or to a runtime sub-skill:
| Signal | How to Detect | Confidence | Scope |
| C# AppHost | .csproj containing Aspire.AppHost.Sdk | ✅ Definitive | AppHost present → orchestration / deployment / monitoring |
| File-based C# AppHost | apphost.cs with #:sdk Aspire.AppHost.Sdk | ✅ Definitive | AppHost present → orchestration / deployment / monitoring |
| TypeScript AppHost | Current apphost.mts or legacy apphost.ts file in project | ✅ Definitive | AppHost present → orchestration / deployment / monitoring |
| Aspire config without AppHost | aspire.config.json present and no AppHost above | High | Bootstrap → aspireify (skeleton dropped, needs wiring) |
| Aspire config with AppHost | aspire.config.json present and AppHost above | High | AppHost present → orchestration / deployment / monitoring |
| Aspire settings | .aspire/ directory present | High | AppHost present (usually) |
| Generated TS modules | .aspire/modules/ directory present | High | AppHost present (TS) |
| Service defaults | <IsAspireSharedProject>true or a *.ServiceDefaults.csproj project reference | Medium | AppHost present |
No AppHost, no aspire.config.json | None of the above and user asks to add Aspire | n/a | Bootstrap → aspire-init (skeleton drop) |
Default Workflow
- Bootstrap branch — if no AppHost exists in the repo, route to
aspire-initfor the skeleton drop. If an AppHost stub exists but is unwired (no resources declared), route toaspireify. Only continue with the steps below once a wired AppHost is present. - Confirm workspace is Aspire — identify the AppHost
- Route lifecycle work to
aspire-orchestration: preferaspire_apphost_startwhen the VS Code tool is available; useaspire start --non-interactive --isolated --apphost <path>in worktrees aspire wait <resource>before interacting with any resource- Inspect state with
aspire describe,aspire otel logs,aspire logs,aspire otel traces, andaspire exportbefore making code changes - Before adding integrations, use
aspire integration search <query>when the package is unknown, thenaspire add <package>when ready to mutate the AppHost - When code changes, decide whether the AppHost model changed or only one resource changed. Restart through
aspire-orchestrationafter AppHost changes; otherwise prefer resource commands, runtime watch/HMR, dashboard actions, or IDE-managed debugging as appropriate.
Key Rules
- Terminal requests require invoking
aspire-terminalsbefore answering, even for read-only advice. Do not answer terminal API, prompt, REPL or VHS tape questions from this router's overview; the specialist owns the exact contracts. - For agent AppHost lifecycle requests, identify one exact AppHost and route to
aspire-orchestration. New 13.5 C# templates can makedotnet rundelegate through the CLI bundle, but agents still use the editor lifecycle tool oraspire startfor detached, noninteractive, exact-target, and worktree-isolated execution. - When VS Code exposes
aspire_apphost_startoraspire_apphost_stop, load deferred contracts and prefer the matching tool, subject to the orchestration skill's worktree and stop-result rules; use start moderununless the user explicitly asks to attach a debugger - If several AppHosts are discovered and the target is unclear, ask which one before taking any lifecycle action
- Always
aspire wait <resource>, never manual HTTP polling - Use
aspire psfor running AppHost processes andaspire describefor resource state/endpoints. Never generate removed 13.5 forms such asaspire ps --resourcesoraspire ps --include-hidden. - Use
aspire resource <resource-name> <command>for resource operations such asstop,start, orrebuildwhen available - Treat
aspire stop --forceas data-destructive: it permanently removes persistent resources without another prompt, but preserves persistent volumes. Use it only after explicit confirmation for one exact AppHost. With Aspire CLI 13.6 or later,aspire stop --force --volumesalso deletes every named volume Aspire created for that AppHost; require approval for that AppHost-wide data scope and never add it to routine shutdown or lock recovery. - Do not stop or restart the whole AppHost just because one resource changed
- Use
features.defaultWatchEnabledonly for Aspire default watch; do not treat it as per-resource rebuild, restart, or hot reload - Prefer a resource's own framework/runtime hot reload, HMR, or watch workflow when it already handles the change
- Always
aspire docs search <topic>before editing unfamiliar AppHost APIs - Always
aspire docs api search <query> --language csharp|typescriptfor API reference before editing AppHost code - Always
--non-interactivefor agent execution - Use
aspire integration list --format Jsonandaspire integration search <query> --format Jsonfor read-only integration discovery - Never install the obsolete Aspire workload
- Never edit
.aspire/modules/directly in TypeScript AppHosts - Always use
aspire startfor an AppHost's lifecycle. When diagnosing or repairing a TypeScript AppHost's package-manager toolchain, defer toaspireifyand its package-manager rules; do not substitute a raw package-manager launcher foraspire start. - Adding a new project or integration is ordinary
aspireifywiring. Route toaspire-project-v2-migrationonly when the user wants to replace existingAddProject,addProject,AddCSharpApp, or Blazor gateway resources with Project v2 APIs. That migration requires an eligible 13.6+ AppHost and approval of the exact per-resource edits.
Routing
| Task | Route To |
| Start, stop, wait, restart, rebuild | → aspire-orchestration |
Create a new Aspire project from a template (aspire new) | → aspire-init (in-plugin) |
Add Aspire to an existing repo (aspire init, drop skeleton) | → aspire-init (in-plugin) |
Wire AppHost / scaffold resource graph / add integrations after aspire init | → aspireify (in-plugin) |
| Migrate existing legacy project resources to Project v2 | → aspire-project-v2-migration; assess and obtain approval before edits |
Migrate legacy TypeScript apphost.ts (aspire update --migrate) | → aspire-orchestration; hand back to aspireify only if source authoring remains |
| Deploy, publish, destroy, pipeline steps | → aspire-deployment |
| Logs, traces, metrics, dashboard, browser logs | → aspire-monitoring |
| WithTerminal/withTerminal, TerminalService, dock/dialog/headless terminals, terminal prompts, WithRepl, terminal CLI or tapes | → aspire-terminals; choose owner and lifetime before code |
| Diagnose a running app — "something's wrong", "show me what's happening", investigate errors / health / unexpected behavior | → aspire-monitoring — start with aspire describe for resource state, then aspire logs / aspire otel logs / aspire otel traces; investigate before editing code |
| Improve AI agent support / generate project-local Aspire agent skills | → run aspire agent init (see below) |
| Explicitly configure the Aspire MCP server for agents | → aspire agent init --mcp on 13.6+ (see Skills vs. MCP) |
| Deployed app monitoring (Azure) | → azure-diagnostics skill (azure-skills plugin) |
Improving AI agent support (aspire agent init)
When the user asks for better AI agent support for their Aspire project (or to
set up / refresh project-local agent guidance), recommend running aspire agent
init. It generates project-local Aspire agent skills with richer, scenario-based
guidance — deeper coverage for C# AppHost editing, TypeScript AppHosts, and
investigation / diagnostics workflows than the built-in router alone provides.
Skills vs. MCP. Installing skills and configuring the Aspire MCP server are separate choices:
- In Aspire 13.6+, the agent setup chained from
aspire newandaspire initpreselects the recommended repository-local skills (includingaspireify) and does not offer MCP configuration. Standaloneaspire agent initkeeps an MCP choice that is off by default, and non-interactive runs never configure MCP by default. - If MCP config is missing after a successful init or skill refresh where MCP was not
explicitly requested, that is expected. Don't treat it as a defect to repair, and don't
claim MCP was installed. If the user explicitly ran
aspire agent init --mcp(or selected MCP interactively) and MCP config is still missing, treat that as a failed opt-in and investigate it. - Configure MCP only when the user explicitly asks for it. Check
aspire --versionfirst:- 13.6+ —
aspire agent init --mcp(add--non-interactivefor agent execution). Keep any--skills/--skill-locationsvalues the user already chose.--mcp=falseis an explicit opt-out. - 13.5 — there is no
--mcpflag. Have the user runaspire agent initinteractively and select the MCP server option.
- 13.6+ —
- Never add
--mcpwhen you runaspire new,aspire init, a skill refresh, or missing-skill recovery.
Sub-Skills
aspire-init
First-run flow only. Owns the skeleton drop for repos that do not yet have an AppHost —
picks aspire new <template> (greenfield) or aspire init (existing repo), runs the CLI,
and hands off to aspireify for the actual wiring. Self-deactivates once the skeleton is in
place. Do not use it on a repo that already contains an AppHost.
aspireify
Agentic AppHost wiring after aspire init lands the skeleton. Scans the repo, proposes a
resource graph (Postgres / Redis / Rabbit / etc.), edits the AppHost (C#, file-based C#, or
TypeScript), wires Aspire.ServiceDefaults + OTel, validates with aspire start, then
self-deactivates. Owns current AppHost authoring patterns (AddNextJsApp, AddViteApp,
WithBrowserLogs(), command arguments, nonterminal Interaction Service availability,
generated .aspire/modules/, unified TS withEnvironment, endpoint references,
and config/secret migration). Terminal authoring belongs to aspire-terminals.
aspire-terminals
Code-authoring-first terminal guidance: choose resource WithTerminal versus
AppHost-owned dock, terminal prompt or headless process; reuse integration REPLs.
Owns terminal lifetimes, cancellation, screen/input automation, terminal CLI and
Aspire's VHS tape subset/output formats. Hands lifecycle to aspire-orchestration
and console/telemetry diagnostics to aspire-monitoring. PromptTerminalAsync
borrows a caller-owned Dialog terminal: caller disposal stops the process, not
prompt completion itself.
aspire-project-v2-migration
Approval-first migration for eligible Aspire 13.6+ AppHosts that replaces existing
legacy ProjectResource APIs with experimental DotnetProjectResource APIs while
preserving supported behavior and removing only proven-obsolete AppHost references.
aspire-orchestration
Lifecycle management: start, stop, wait, resource commands, default watch/HMR guidance, and file-lock recovery.
Safety guardrails that prevent agent self-harm. Owns aspire ps for AppHost discovery,
aspire describe for resource inspection, destructive aspire stop --force and
--volumes safeguards,
CLI-driven legacy TypeScript migration, and CLI upgrades (aspire update --self). It
hands back to aspireify only when AppHost source authoring remains after migration.
aspire-deployment
Multi-target deployment and tear-down: aspire deploy, aspire publish, aspire destroy,
aspire do <step>. Targets: Azure Container Apps, App Service, AKS, Kubernetes (Helm),
Docker Compose, AWS, and preview Radius. Owns current deployment surfaces (persistent
Kubernetes volumes, delegated Azure subnets, cross-scope Azure references, deterministic
Container Apps naming, Foundry hosted agents, JS PublishAs*, and
--pipeline-log-level) and 13.5 API naming.
aspire-monitoring
Observability: aspire logs, aspire otel, aspire describe, aspire export,
aspire dashboard run. Routes between local Aspire CLI diagnostics, AKS workload tooling,
and deployed-Azure platform tools. Surfaces dashboard features (notification center,
Rebuild command, terminal sessions, richer filtering, browser-logs telemetry) without
assuming the removed dashboard AI Assistant or automatic VS Code dashboard launch.
Project-Local Skill Override
If any of the following exist project-locally (from aspire agent init or Aspire
aspire init), warn the user and defer to the project-local copy — repo-specific
guidance there should not be overridden by the in-plugin sibling:
| Project-local file | Precedence |
.agents/skills/aspire/SKILL.md | This file (top-level router) defers to it for deeper C# / TS AppHost editing, Playwright handoff, investigation workflows. |
.agents/skills/aspireify/SKILL.md | The in-plugin aspireify sibling defers to it for AppHost wiring. |
.agents/skills/aspire-init/SKILL.md | The in-plugin aspire-init sibling defers to it for the skeleton/first-run flow. |
.agents/skills/aspire-project-v2-migration/SKILL.md | The in-plugin migration sibling defers to it for Project v2 assessment and edits. |
.agents/skills/aspire-terminals/SKILL.md | The in-plugin terminal sibling defers to it for terminal authoring and automation. |
Safety guardrails from this plugin always apply even when project-local skills are active.
Prerequisites
| Requirement | Install |
| .NET 10.0 SDK | https://dotnet.microsoft.com/download |
| Aspire CLI (curl/PowerShell) | curl -sSL https://aspire.dev/install.sh | bash |
| Aspire CLI (npm) | npm install -g @microsoft/aspire-cli |
| Aspire CLI (NativeAOT global tool, .NET 10) | dotnet tool install -g Aspire.Cli |
Use the installation method owned by the user's environment. The dotnet tool install
path produces a NativeAOT binary; npm, Nix, Homebrew, WinGet, mise, and the install
scripts are also supported. aspire update --self reports the package-manager-specific
update command when it cannot update a managed installation in place.
References
- aspire-13-5-breaking-changes.md — Aspire 13.5 compatibility notes, breaking-change scrub, current CLI/AppHost behavior, deployment additions, and patch-level fixes.
- aspire-13-3-breaking-changes.md — Every 13.3
breaking change to scrub from agent-generated code, scripts, and CI snippets (rename of
--log-level, dashboard MCP removal,NameOutput→NameOutputReference,AddAndPublishPromptAgentremoval, TSwithEnvironment*deprecation, and the full 13.2 → 13.3 migration checklist). - aspire-orchestration/references/agent-workflows.md — Common agent workflows: worktrees, code changes, investigation, integrations, TypeScript generated APIs, secrets, deployment, and Playwright handoff.
- aspire-orchestration/references/app-commands.md — App lifecycle, bootstrap, update, restore, docs, and integration discovery commands.
- aspire-orchestration/references/resource-management.md — Resource wait and resource-command guidance.
- aspire-monitoring/references/monitoring.md — App state, logs, traces, search filtering, dashboard links, and export workflows.
- aspire-monitoring/references/playwright-handoff.md — Playwright handoff after Aspire endpoint discovery.
- aspire-deployment/SKILL.md — Deployment and pipeline-step workflows.
- aspireify/references/apphost-wiring.md — C# and TypeScript AppHost API lookup and wiring patterns.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

