agentleFS
MicrosoftKnown publishermicrosoft/aspire-skills/opencode/v1/aspire/SKILL.md

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

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-PlatformSkill

    scalar

    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

  • MicrosoftSkill

    error-handling

    统一错误处理系统。在添加 API 端点、修改错误处理、添加前端 API 调用、编写错误相关测试时使用。

    Also in 4 projects that use this

  • wrsmith108Skill

    docker

    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

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
  1. Very specific:

    Use this skill when the task involves an Aspire distributed application — operating the AppHost or its resources through the Aspire CLI …

    line 24
  2. Distinctive:

    Only continue with the steps below once a wired AppHost is present.

    line 72
  3. Very specific:

    Before adding integrations, use aspire integration search <query> when the package is unknown, then aspire add <package> when ready to …

    line 77
  4. Very specific:

    When code changes, decide whether the AppHost model changed or only one resource changed.

    line 78
  5. Very specific:

    When VS Code exposes aspire_apphost_start or aspire_apphost_stop, load deferred contracts and prefer the matching tool, subject to the …

    line 89
  6. Distinctive:

    If several AppHosts are discovered and the target is unclear, ask which one before taking any lifecycle action

    line 90
  7. Very specific:

    Use aspire ps for running AppHost processes and aspire describe for resource state/endpoints.

    line 92
  8. Very specific:

    Use aspire resource <resource-name> <command> for resource operations such as stop, start, or rebuild when available

    line 95
  9. Very specific:

    Treat aspire stop --force as data-destructive: it permanently removes persistent resources without another prompt, but preserves persistent …

    line 96
  10. Distinctive:

    Do not stop or restart the whole AppHost just because one resource changed

    line 102
  11. Very specific:

    Use features.defaultWatchEnabled only for Aspire default watch.

    line 103
  12. Distinctive:

    Prefer a resource's own framework/runtime hot reload, HMR, or watch workflow when it already handles the change

    line 104
  13. Very specific:

    Use aspire integration list --format Json and aspire integration search <query> --format Json for read-only integration discovery

    line 108
  14. Very specific:

    Always: use aspire start for an AppHost's lifecycle.

    line 111
  15. Very specific:

    When the user asks for better AI agent support for their Aspire project (or to set up / refresh project-local agent guidance), recommend …

    line 142
  16. Distinctive:

    If MCP config is missing after a successful init or skill refresh where MCP was not explicitly requested, that is expected.

    line 155
  17. Very specific:

    Keep any --skills / --skill-locations values the user already chose.

    line 162
  18. Very specific:

    Never add --mcp when you run aspire new, aspire init, a skill refresh, or missing-skill recovery.

    line 166
  19. Very specific:

    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 …

    line 225
  20. Very specific:

    Use the installation method owned by the user's environment.

    line 249

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 Copilot copilot-setup-steps.yml or 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 describe for resource state, then aspire logs / aspire otel logs / aspire otel traces. Do not jump to dotnet 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-orchestration for aspire 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 before aspire update --migrate --yes --non-interactive; use aspireify only 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:

SignalHow to DetectConfidenceScope
C# AppHost.csproj containing Aspire.AppHost.Sdk✅ DefinitiveAppHost present → orchestration / deployment / monitoring
File-based C# AppHostapphost.cs with #:sdk Aspire.AppHost.Sdk✅ DefinitiveAppHost present → orchestration / deployment / monitoring
TypeScript AppHostCurrent apphost.mts or legacy apphost.ts file in project✅ DefinitiveAppHost present → orchestration / deployment / monitoring
Aspire config without AppHostaspire.config.json present and no AppHost aboveHighBootstrap → aspireify (skeleton dropped, needs wiring)
Aspire config with AppHostaspire.config.json present and AppHost aboveHighAppHost present → orchestration / deployment / monitoring
Aspire settings.aspire/ directory presentHighAppHost present (usually)
Generated TS modules.aspire/modules/ directory presentHighAppHost present (TS)
Service defaults<IsAspireSharedProject>true or a *.ServiceDefaults.csproj project referenceMediumAppHost present
No AppHost, no aspire.config.jsonNone of the above and user asks to add Aspiren/aBootstrap → aspire-init (skeleton drop)

Default Workflow

  1. Bootstrap branch — if no AppHost exists in the repo, route to aspire-init for the skeleton drop. If an AppHost stub exists but is unwired (no resources declared), route to aspireify. Only continue with the steps below once a wired AppHost is present.
  2. Confirm workspace is Aspire — identify the AppHost
  3. Route lifecycle work to aspire-orchestration: prefer aspire_apphost_start when the VS Code tool is available; use aspire start --non-interactive --isolated --apphost <path> in worktrees
  4. aspire wait <resource> before interacting with any resource
  5. Inspect state with aspire describe, aspire otel logs, aspire logs, aspire otel traces, and aspire export before making code changes
  6. Before adding integrations, use aspire integration search <query> when the package is unknown, then aspire add <package> when ready to mutate the AppHost
  7. When code changes, decide whether the AppHost model changed or only one resource changed. Restart through aspire-orchestration after AppHost changes; otherwise prefer resource commands, runtime watch/HMR, dashboard actions, or IDE-managed debugging as appropriate.

Key Rules

  • Terminal requests require invoking aspire-terminals before 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 make dotnet run delegate through the CLI bundle, but agents still use the editor lifecycle tool or aspire start for detached, noninteractive, exact-target, and worktree-isolated execution.
  • When VS Code exposes aspire_apphost_start or aspire_apphost_stop, load deferred contracts and prefer the matching tool, subject to the orchestration skill's worktree and stop-result rules; use start mode run unless 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 ps for running AppHost processes and aspire describe for resource state/endpoints. Never generate removed 13.5 forms such as aspire ps --resources or aspire ps --include-hidden.
  • Use aspire resource <resource-name> <command> for resource operations such as stop, start, or rebuild when available
  • Treat aspire stop --force as 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 --volumes also 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.defaultWatchEnabled only 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|typescript for API reference before editing AppHost code
  • Always --non-interactive for agent execution
  • Use aspire integration list --format Json and aspire integration search <query> --format Json for read-only integration discovery
  • Never install the obsolete Aspire workload
  • Never edit .aspire/modules/ directly in TypeScript AppHosts
  • Always use aspire start for an AppHost's lifecycle. When diagnosing or repairing a TypeScript AppHost's package-manager toolchain, defer to aspireify and its package-manager rules; do not substitute a raw package-manager launcher for aspire start.
  • Adding a new project or integration is ordinary aspireify wiring. Route to aspire-project-v2-migration only when the user wants to replace existing AddProject, 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

TaskRoute 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 new and aspire init preselects the recommended repository-local skills (including aspireify) and does not offer MCP configuration. Standalone aspire agent init keeps 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 --version first:
    • 13.6+ — aspire agent init --mcp (add --non-interactive for agent execution). Keep any --skills / --skill-locations values the user already chose. --mcp=false is an explicit opt-out.
    • 13.5 — there is no --mcp flag. Have the user run aspire agent init interactively and select the MCP server option.
  • Never add --mcp when you run aspire 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 filePrecedence
.agents/skills/aspire/SKILL.mdThis file (top-level router) defers to it for deeper C# / TS AppHost editing, Playwright handoff, investigation workflows.
.agents/skills/aspireify/SKILL.mdThe in-plugin aspireify sibling defers to it for AppHost wiring.
.agents/skills/aspire-init/SKILL.mdThe in-plugin aspire-init sibling defers to it for the skeleton/first-run flow.
.agents/skills/aspire-project-v2-migration/SKILL.mdThe in-plugin migration sibling defers to it for Project v2 assessment and edits.
.agents/skills/aspire-terminals/SKILL.mdThe 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

RequirementInstall
.NET 10.0 SDKhttps://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

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.