
aspireify
WORKFLOW SKILL - Wire Aspire AppHosts or repair TypeScript AppHost toolchains. Scans the repo, proposes a resource graph, edits C, file-based C, or TypeScript AppHosts, wires ServiceDefaults + OTel, validates with aspire start, then stops. USE FOR: wire/scaffold AppHost, add Postgres/Redis/Rabbit/Mongo, connect frontend to API, after aspire init, AddNextJsApp, AddViteApp, WithBrowserLogs, WithTerminal, Interaction Service, command arguments, apphost.cs, apphost.mts, unified withEnvironment, .aspire/modules refusal, config/secrets, TS dependency restore, pnpm/yarn/bun, or Yarn Classic. DO NOT USE FOR: skeleton drop (aspire-init), lifecycle-only start/stop/wait/restart or aspire update --migrate (aspire-orchestration), publish/deploy/destroy (aspire-deployment), logs/traces (aspire-monitoring). INVOKES: aspire CLI, AppHost source edits, ServiceDefaults wiring. FOR SINGLE OPERATIONS: Run aspire add PACKAGE directly for a one-off integration.
- Installs
- 661
- Last 24h
- +26
- Trending rank
- #4853
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/microsoft/aspire-skills --skill aspireify- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads aspireify automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Aspireify
One-time wiring skill.
aspire initdrops a skeleton;aspireifyturns that skeleton into a working AppHost by scanning the repo, proposing a resource graph, editing the AppHost, wiringAspire.ServiceDefaults, and validating end to end. Self-deactivates after a cleanaspire start.
🚫 Hard Refusal: Never Edit .aspire/modules/
⛔ REFUSE any request to edit, modify, change, open-for-edit, or "tweak" files inside
.aspire/modules/of a TypeScript AppHost. This directory is generated from the installed Aspire integration package graph. It is regenerated byaspire add,aspire restore, and startup when package changes require it.If a user asks to edit something in
.aspire/modules/(e.g.,.aspire/modules/postgres.module.ts), the correct response is:
- Refuse the edit with a clear "I won't edit
.aspire/modules/" statement.- Explain that
.aspire/modules/is generated and any changes are clobbered.- Redirect the requested change to the configured AppHost entry point: current
apphost.mts, or legacyapphost.ts.- If the user wants a new integration, suggest
aspire add <package>; if they want to change configuration, show the equivalent edit in the AppHost entry point.
| ❌ Wrong | ✅ Right |
|---|---|
Open .aspire/modules/postgres.module.ts and tweak the connection options | Edit apphost.mts and change addPostgres('pg', { ... }) options there |
Modify a generated .aspire/modules/* file directly | Re-run aspire add <package> after updating apphost.mts |
Comment out a line in .aspire/modules/ to disable a resource | Remove or guard the resource declaration in apphost.mts |
This rule applies even if the user insists, even for "one-line" changes, even for
"just to test something." The TS AppHost regenerates .aspire/modules/ deterministically;
edits are unrecoverable noise.
Guiding Principles
Minimize changes to the user's code
Adapt the AppHost to fit the app, not the other way around. Prefer WithEnvironment()
to match existing environment variable names, Aspire-managed ports over fixed ports,
and 1:1 Docker Compose mapping before optimizing. Do not restructure directories,
rename files, or change build scripts unless the user explicitly chooses that tradeoff.
Surface tradeoffs; do not decide silently
When a small code change unlocks better Aspire integration, present both options:
the zero-code-change mapping and the small-change version that enables WithReference,
health checks, service discovery, dynamic ports, or dashboard telemetry. Ask which
approach the user wants, then implement that choice without complaint.
Verify APIs before writing AppHost code
Use aspire docs search <topic> and aspire docs get <slug> for workflow guidance.
Use aspire docs api search <query> --language csharp|typescript and
aspire docs api get <id> for API shape. Use aspire integration list/search to
find integrations before aspire add. Do not invent packages, methods, overloads,
or command shapes; C# and TypeScript AppHost APIs differ.
Keep configuration visible in the AppHost
Scan .env, .env.local, .env.development, secrets.json.example,
<UserSecretsId>, and setup scripts. Propose migrating values into AppHost parameters:
connection strings become Aspire resources, API keys/tokens become secret parameters,
and non-secret config becomes plain parameters or WithEnvironment() values. Never
delete .env files or remove existing UserSecretsId entries without explicit user
approval because non-Aspire workflows may still depend on them.
Local development first
This skill optimizes local development, not production deployment. Prefer persistent container lifetimes and data volumes for databases/caches, use HTTPS endpoints by default, pass endpoint references instead of hardcoded URLs, and model external SaaS URLs/API keys as parameters so they are visible in the dashboard.
Redis TLS edge case
Aspire can automatically provision TLS certificates for container resources. If Redis
health checks fail with SSL/TLS handshake errors, do not fall back to AddContainer().
Use WithoutHttpsCertificate() on the Redis resource when the consuming app expects
plain Redis.
Project-Local Override
If .agents/skills/aspireify/SKILL.md exists (installed by aspire init or
aspire agent init --skills aspireify), warn the user that a project-local
copy is present and defer to it. The plugin version is the fallback.
⚠️ Project-local .agents/skills/aspireify/SKILL.md detected — deferring to it.
Prerequisites
| Requirement | Install |
|---|---|
| .NET 10.0 SDK (C# AppHost) | https://dotnet.microsoft.com/download |
Node.js ^20.19.0, ^22.13.0, or >=24 (TS AppHost) | https://nodejs.org |
| Aspire CLI | npm install -g @microsoft/aspire-cli, install script, or dotnet tool install -g Aspire.Cli |
| Skeleton already dropped | aspire init produced aspire.config.json + AppHost stub |
Detection — When to Activate
Activate when ANY signal is present AND the AppHost is unwired (no resources declared beyond the stub):
| Signal | How to Detect | Confidence |
|---|---|---|
| Skeleton just dropped | aspire init just ran in this session | ✅ Definitive |
| Empty AppHost stub | apphost.cs / Program.cs / current apphost.mts (or legacy apphost.ts) only contains Build().Run() | ✅ Definitive |
aspire.config.json without resources | Config present, AppHost has no AddProject/addProject | High |
| User asks to "wire" / "scaffold resource graph" | Verb match: wire, scaffold, integrate, hook up, add Postgres/Redis/etc. | High |
| User asks "what next after aspire init" | Direct handoff request | ✅ Definitive |
| Existing repo with services + new AppHost | Repo has .csproj/package.json projects but AppHost references none | High |
If the AppHost already has wired resources and the user wants to start/stop
the app → aspire-orchestration. If the user wants to deploy → aspire-deployment.
Language Support
| AppHost Style | Detection | Edit Target |
|---|---|---|
| C# SDK-style | .csproj containing <Sdk Name="Aspire.AppHost.Sdk" /> | Program.cs (top-level statements) |
| File-based C# | apphost.cs with #:sdk Aspire.AppHost.Sdk and #:package directives | apphost.cs itself |
| TypeScript | Current apphost.mts or legacy apphost.ts with generated .aspire/modules/ | Configured AppHost entry point only — never edit .aspire/modules/ |
See references/csharp-authoring.md and references/typescript-authoring.md.
aspire-orchestration owns the CLI-driven migration from legacy apphost.ts. After it
updates packages and migration artifacts, return to aspireify only when the user still
needs AppHost source wiring or authoring.
TypeScript AppHost package managers
Dependency and toolchain failures belong to this skill. Before recommending a command, inspect the AppHost directory and then its immediate eligible parent. Within each directory, the first recognized marker wins in this order:
packageManagerinpackage.json(npm,pnpm,yarn, orbun, optionally versioned)bun.lockbun.lockbpnpm-lock.yamlyarn.lock.yarnrc.ymlpackage-lock.json
An AppHost-local marker takes precedence over every parent marker. If neither directory has a recognized marker, Aspire defaults to npm. Report the selected manager and marker.
Use the selected manager only to repair dependencies or diagnose the toolchain. The resolver
commands are npm install, bun install, and yarn install; a generated brownfield pnpm
AppHost uses pnpm install --ignore-workspace, while other pnpm dependency installs use
pnpm install. Yarn Classic (yarn@1... or a v1 lockfile) is unsupported: stop and ask the
user to upgrade to Yarn 4+ or explicitly migrate to npm, pnpm, or Bun.
Do not change packageManager or create, replace, or regenerate a lockfile merely to
influence detection or switch managers. Preserve existing files until the user explicitly
chooses an upgrade or migration. Start the AppHost with aspire start --non-interactive,
not a raw package-manager launcher. See
references/typescript-authoring.md for the full
command matrix and resolver details.
Workflow Phases
1. SCAN → discover projects, services, dependencies, integration candidates
2. PROPOSE → resource graph + integration list, confirm with user
3. EDIT → wire AppHost, add ServiceDefaults + OTel + health checks
4. VALIDATE → aspire start --non-interactive → aspire wait <each resource>
5. DEACTIVATE → confirm clean start, hand off to aspire-orchestration
For the detailed, upstream-parity workflow, load these references before editing:
- apphost-wiring.md — full AppHost wiring workflow, API lookup, endpoint/parameter patterns, validation, solution updates, and cleanup.
- docker-compose.md — docker-compose migration, profiles, image mapping, ports, volumes, and
depends_on. - full-solution-apphosts.md — large solution triage, mixed SDK boundaries, solution membership, ServiceDefaults placement, and legacy host migration.
- javascript-apps.md — JavaScript resource selection, workspace/monorepo package-manager handling, ports, scripts, and TS AppHost package config.
- opentelemetry.md — optional Node.js, Python, and Go OpenTelemetry wiring for non-.NET services.
1. Scan
Walk the repo and inventory:
| What | How |
|---|---|
| .NET projects | find . -name '*.csproj' -not -path '*/bin/*' -not -path '*/obj/*' |
| Node services | find . -name 'package.json' -not -path '*/node_modules/*' |
| Python services | find . -name 'pyproject.toml' -o -name 'requirements.txt' |
| Container deps in compose | docker-compose.yml, compose.yaml (Postgres? Redis? Rabbit?) |
| Connection strings | grep appsettings*.json, .env*, config/* for Postgres, Redis, Mongo, RabbitMQ, Cosmos, ServiceBus |
| Integration packages | dotnet list package per project; package.json dependencies |
| Existing endpoints | hardcoded ports in launchSettings.json, next.config.js, vite.config.ts |
Full heuristics in references/scan-and-propose.md.
2. Propose
Present a resource graph before editing. Ask clarifying questions:
- "I see Postgres in
docker-compose.yml— should I model it asAddPostgres('db')or use Azure Database for PostgreSQL?" - "Your React app hardcodes
http://localhost:5000— replace with Aspire service discovery (endpoint.url)?" - "Your API has an
/adminendpoint — exclude it fromWithReference()so consumers don't see it?"
3. Edit
Apply the proposed graph. Use the right authoring style for the AppHost language.
4. Validate
aspire start --non-interactive --format Json
aspire wait <resource> # repeat for each declared resource
aspire describe --format Json # sanity check graph
Full validation flow + recovery in references/validation.md.
5. Self-Deactivate
After a clean aspire start, announce:
✅ AppHost wired and validated. Handing off to aspire-orchestration for
day-to-day start/stop/wait. Aspireify is done.
Integration Discovery Catalog
Map detected services → Aspire integrations. See references/scan-and-propose.md for the full catalog.
| Detected | C# | TS |
|---|---|---|
Postgres in compose / Npgsql package | AddPostgres("pg").AddDatabase("db") | addPostgres('pg').addDatabase('db') |
Redis in compose / StackExchange.Redis | AddRedis("cache") | addRedis('cache') |
| RabbitMQ | AddRabbitMQ("mq") (v7 client w/ pub-sub tracing) | addRabbitMQ('mq') |
| MongoDB | AddMongoDB("mongo") | addMongoDB('mongo') |
| Cosmos DB | AddAzureCosmosDB("cosmos") | addAzureCosmosDB('cosmos') |
| Azure Service Bus | AddAzureServiceBus("sb") | addAzureServiceBus('sb') |
| Azure Cache for Redis (Entra) | AddAzureRedis("cache") (now GA) | addAzureRedis('cache') |
| Next.js frontend | AddNextJsApp("web", "./web") | addNextJsApp('web', '../web') |
| Vite SPA | AddViteApp("web", "./web") | addViteApp('web', '../web') |
| Plain Node app | AddNodeApp("api", "server.js") | addNodeApp('api', 'server.js') |
Current Authoring Rules
| Rule | Why |
|---|---|
Use unified withEnvironment(name, value) in TS — never the deprecated per-kind helpers (withEnvironmentEndpoint, withEnvironmentParameter, etc.) | Single API handles all value kinds; per-kind helpers are deprecated |
Use AddNextJsApp / AddViteApp over hand-rolled Dockerfiles for JS frontends | First-class lifecycle + PublishAs* integration |
Use PublishAsStaticWebsite / PublishAsNodeServer / PublishAsPackageScript for JS publish | Replaces hand-rolled Dockerfiles; SPA → static, SSR Node → NodeServer, package-script SSR → PackageScript |
Add WithBrowserLogs() to frontend resources for browser console + screenshots in dashboard | Aspire.Hosting.Browsers surfaces browser telemetry in the dashboard |
Bind every resource to a compute environment with WithComputeEnvironment(env) when multiple environments exist | Multi-environment deploys require explicit binding |
Never edit .aspire/modules/ in TS AppHosts | Generated; edits get clobbered. Edit the configured apphost.mts (or legacy apphost.ts) only |
Use WithEndpoint("name", e => ...) to update endpoints | Endpoint callbacks update existing endpoints rather than throwing on duplicates |
Mark admin endpoints with ExcludeReferenceEndpoint = true | Prevents consumers from receiving admin URLs via WithReference() |
Look up unfamiliar API: aspire docs api search <query> --language csharp|typescript | Don't guess overloads or builder chains |
Use context .Services / await ctx.services().getInteractionService() | .ServiceProvider is obsolete, and ctx.services() alone returns a services accessor |
Use AddConnectionString for external connection strings | PublishAsConnectionString is obsolete |
Check IInteractionService.IsAvailable before prompting | CLI-invoked commands may be noninteractive; prefer command arguments for dashboard + CLI input |
Treat WithTerminal() as experimental | Suppress ASPIRETERMINAL001; do not generate removed TerminalOptions.Shell or TypeScript dimension options |
Keep all Aspire SDK and Aspire.Hosting.* packages on the same release family | Mixed release families can fail at startup |
| Migrate GitHub Models integrations to Azure AI Foundry | Aspire.Hosting.GitHub.Models is deprecated and absent from integration discovery |
Use WithModule(RedisModules.*) for Redis 8 modules | Prefer typed JSON, Search, Bloom Filter, and TimeSeries constants over raw module paths |
Use Foundry AsHostedAgent(...) for hosted executable/container agents | Current Azure AI Foundry path replaces deprecated GitHub Models |
C# vs TS Quick Reference
| Concept | C# | TypeScript |
|---|---|---|
| Builder | var builder = DistributedApplication.CreateBuilder(args); | const builder = await createBuilder(); |
| Add project | builder.AddProject<Projects.Api>("api") (SDK) or AddProject("api", "../Api/Api.csproj") | await builder.addProject('api', '../Api/Api.csproj') |
| Wire env var (any value type) | .WithEnvironment("KEY", value) | .withEnvironment('KEY', value) ← unified API |
| Wait for dependency | .WaitFor(db) | .waitFor(db) |
| Pass connection | .WithReference(db) | .withReference(db) |
| External HTTP | .WithExternalHttpEndpoints() | .withExternalHttpEndpoints() |
| Endpoint expression | api.GetEndpoint("http") | api.getEndpoint('http').url / .host / .port |
| Build + run | builder.Build().Run(); | await builder.build().run(); |
ServiceDefaults Wiring
Each project should call builder.AddServiceDefaults(); to opt into OpenTelemetry,
health checks, and service discovery. Add the Aspire.ServiceDefaults project
reference (or NuGet for non-monorepo). See
references/service-defaults.md.
Endpoint & Reference Conventions
// Public-facing API. Mark "admin" endpoint as not-for-consumers.
var api = builder.AddProject<Projects.Api>("api")
.WithExternalHttpEndpoints()
.WithEndpoint("admin", e => e.ExcludeReferenceEndpoint = true);
// Frontend wires the API via service discovery.
builder.AddNextJsApp("web", "./web")
.WithReference(api) // injects services__api__http and __https
.WaitFor(api)
.WithBrowserLogs(); // browser console + screenshots
Validation & Recovery
| Symptom | Action |
|---|---|
aspire start fails with build error | Fix code, re-run aspire start |
| File-lock errors during edit | Hand off to aspire-orchestration → aspire stop → retry |
Resource missing from aspire describe | Re-run aspire describe --include-hidden; aspire ps is AppHost-level |
| TS AppHost change ignored | Confirm you edited the configured apphost.mts (or legacy apphost.ts), not .aspire/modules/ |
Mixed JSON output from aspire start | Strip non-JSON lines before parsing (#15843) |
Full flow in references/validation.md.
Handoff Rules
| Scenario | Route To |
|---|---|
| AppHost skeleton not yet dropped | → aspire-init skill |
| Day-to-day start/stop/wait/restart | → aspire-orchestration skill |
| Publish, deploy, destroy, pipeline steps | → aspire-deployment skill |
| Logs, traces, metrics, dashboard, browser log inspection | → aspire-monitoring skill |
| Deployed (Azure/AKS) app diagnostics | → azure-diagnostics skill (azure-skills) |
Key Rules
- Never overwrite existing files — always augment or merge.
- Ask before modifying service code, especially OpenTelemetry and ServiceDefaults injection.
- Respect existing project structure — do not reorganize the repo.
- If stuck, use
aspire doctorto diagnose environment issues. - Never hardcode URLs in
WithEnvironment/withEnvironment— pass endpoint references such asapi.GetEndpoint("http")orapi.getEndpoint('http')instead of string literals. - Never use
WithUrlForEndpoint/withUrlForEndpointto setdev.localhostURLs — that API is only for dashboard display labels;dev.localhostbelongs in AppHost launch/profile configuration.
References
- apphost-wiring.md — Detailed AppHost wiring workflow and API lookup patterns
- docker-compose.md — Docker Compose migration patterns
- full-solution-apphosts.md — Large/full-solution AppHost guidance
- javascript-apps.md — JavaScript/TypeScript app and workspace handling
- opentelemetry.md — Non-.NET OpenTelemetry setup
- scan-and-propose.md — Repo scan heuristics + integration catalog
- csharp-authoring.md — C# AppHost patterns
- typescript-authoring.md — TS AppHost patterns + parity APIs
- service-defaults.md — Wire OTel, health checks, service discovery
- validation.md — End-to-end validation + recovery
- aspire-13-5-breaking-changes.md — Breaking changes introduced in 13.5 and fixes for affected releases
FAQ
What does the aspireify skill do?
WORKFLOW SKILL - Wire Aspire AppHosts or repair TypeScript AppHost toolchains. Scans the repo, proposes a resource graph, edits C, file-based C, or TypeScript AppHosts, wires ServiceDefaults + OTel, validates with aspire start, then stops. USE FOR: wire/scaffold AppHost, add Postgres/Redis/Rabbit/Mongo, connect frontend to API, after aspire init, AddNextJsApp, AddViteApp, WithBrowserLogs, WithTerminal, Interaction Service, command arguments, apphost.cs, apphost.mts, unified withEnvironment, .aspire/modules refusal, config/secrets, TS dependency restore, pnpm/yarn/bun, or Yarn Classic. DO NOT USE FOR: skeleton drop (aspire-init), lifecycle-only start/stop/wait/restart or aspire update --migrate (aspire-orchestration), publish/deploy/destroy (aspire-deployment), logs/traces (aspire-monitoring). INVOKES: aspire CLI, AppHost source edits, ServiceDefaults wiring. FOR SINGLE OPERATIONS: Run aspire add PACKAGE directly for a one-off integration.
How do I install aspireify?
Run npx skills add https://github.com/microsoft/aspire-skills --skill aspireify in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/aspireify/ (personal) or .claude/skills/aspireify/ (project).
Which AI agents can use aspireify?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is aspireify safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains aspireify?
It is published by microsoft in microsoft/aspire-skills, and it is an official skill from the maker of the technology it covers. It has 661 recorded installs.
More from microsoft/aspire-skills
aspire
microsoft/aspire-skills
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, 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. FOR SINGLE OPERATIONS: Route directly to the matching sub-skill.
aspire-orchestration
microsoft/aspire-skills
WORKFLOW SKILL — Manage Aspire lifecycle in VS Code or the CLI. WHEN: "start or stop my Aspire app", "aspireapphoststart", "aspireapphoststop", "notEditorOwned", "ambiguousSession", "aspire start", "aspire stop", "aspire wait", resource restart, file-lock errors (MSB3491 or CS2012), port conflicts, git worktrees, "--isolated", "aspire update --self", "aspire update --migrate", "aspire describe --include-hidden", "aspire stop --force", "aspire terminal", integration discovery, default watch, or hot reload. INVOKES: VS Code lifecycle tools first when exposed; Aspire CLI for readiness, inspection, resource operations, isolated worktree starts, and allowed fallbacks. DO NOT USE FOR: deploy/publish/destroy (aspire-deployment), logs/traces/metrics (aspire-monitoring), or AppHost code and resource wiring (aspireify). FOR SINGLE OPERATIONS: Load the matching editor tool first, then obey the exact-target, worktree-isolation, and stop-result rules below.
aspire-monitoring
microsoft/aspire-skills
ANALYSIS SKILL - Observe Aspire apps: logs, traces, metrics, resource state, telemetry export, browser telemetry, and the standalone dashboard. Routes between local Aspire CLI, AKS workload diagnostics, and deployed Azure resource health. USE FOR: aspire logs, aspire otel logs, aspire otel traces, aspire otel spans, aspire describe, aspire ps, aspire export, aspire dashboard run, describe --include-hidden, browser logs in dashboard, terminal view, DevTunnel URLs, WithBrowserLogs, App Insights query, AKS pod logs, container app logs. DO NOT USE FOR: start/stop/wait (use aspire-orchestration), deploy/publish/destroy (use aspire-deployment), AppHost code edits like WithBrowserLogs() (use aspireify), Azure provisioning (use azure-prepare). INVOKES: aspire CLI, azure-diagnostics (deployed Azure), kubectl + Container Insights. FOR SINGLE OPERATIONS: Run the aspire CLI command directly for quick log or describe lookups.
aspire-init
microsoft/aspire-skills
WORKFLOW SKILL - First-run flow for adding Aspire to a repo. Picks aspire new (greenfield) or aspire init (existing repo), drops the AppHost skeleton, then hands off to aspireify for resource wiring. USE FOR: aspire init, aspire new, aspire-starter, aspire-ts-starter, aspire-py-starter, add Aspire to existing repo, scaffold Aspire app, bootstrap Aspire, no AppHost detected, install aspireify, apphost.mts, generated .aspire/modules. DO NOT USE FOR: AppHost wiring on an existing AppHost (use aspireify), start/stop/wait (use aspire-orchestration), deploy/publish (use aspire-deployment), logs/traces (use aspire-monitoring), repo that already has an AppHost. INVOKES: aspire CLI (init, new, doctor), aspireify (handoff after skeleton drop). FOR SINGLE OPERATIONS: Run aspire init or aspire new TEMPLATE directly.
aspire-deployment
microsoft/aspire-skills
WORKFLOW SKILL — Deploy Aspire apps from AppHost models to Docker Compose, Kubernetes, Azure, AWS, or preview Radius. WHEN: "deploy Aspire app", "publish Aspire artifacts", "deploy to Azure Container Apps", "generate Kubernetes artifacts", "deploy to Radius", "tear down Aspire deployment". INVOKES: aspire CLI, Aspire docs, target cloud/container CLIs. FOR SINGLE OPERATIONS: use generic Azure, Kubernetes, Docker, AWS, or Radius tools only when no Aspire AppHost exists.
aspire-project-v2-migration
microsoft/aspire-skills
Open the skill to read its SKILL.md instructions.
Popular devops & cloud skills
microsoft-foundry
microsoft/azure-skills
Build, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and resources end to end. USE FOR: foundry, azd ai agent, azd provision/deploy, hosted agent scaffold/develop/run/deploy/troubleshoot, prompt agent create, managed harness agent create, GitHub Copilot harness agent, create agent, update agent, add tool to agent, invoke agent, agent insights, evaluate agent, batch eval, continuous eval, continuous monitoring, agent CI/CD, optimize prompt, improve prompt, optimize agent instructions, Agent Optimizer scaffold, dataset curation from traces, deploy model, model fine-tuning (SFT/DPO/RFT), Foundry project, RBAC, role assignment, permissions, quota, capacity, region, deployment failure, AI Services, create Foundry resource, knowledge index, customize deployment, onboard, availability, training-data, grader, distillation, large file upload. DO NOT USE FOR: Azure Functions, App Service, general Azure deploy (use azure-deploy), general Azure prep (use azure
azure-diagnostics
microsoft/azure-skills
Debug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe triage. WHEN: debug production issues, troubleshoot app service, app service high CPU, app service deployment failure, troubleshoot container apps, container app 503 or target port mismatch, troubleshoot functions, function telemetry missing or stopped after a config/connection-string change, troubleshoot AKS, VM RDP, Linux SSH, VM black screen, can't connect to VM, reset VM password, NSG or firewall blocking, kubectl cannot connect, kube-system/CoreDNS failures, pod pending, crashloop, node not ready, upgrade failures, analyze logs, KQL, insights, image pull failures, cold start issues, health probe failures, resource health, root cause of errors, troubleshoot event hubs, troubleshoot service bus, messaging SDK error, AMQP connection failure, message lock lost, lock renewal during long-running processing, service bus dead letter.
azure-prepare
microsoft/azure-skills
Prepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Terraform), and Dockerfiles for the Azure Developer CLI (azd) workflow. USE ONLY when the user explicitly wants to use azd as the deployment tool, or the project already has an azure.yaml file. DO NOT USE FOR: non-azd deployments, Python App Service code-only deploys (use python-appservice-deploy), or cross-cloud migration (use azure-cloud-migrate). WHEN: prepare app for azd, create azure.yaml, set up azd infrastructure, modernize app for Azure with azd, deploy with azd, function app, timer trigger, service bus trigger, event-driven function, managed identity, generate Bicep, generate Terraform, create and deploy to Azure.
azure-ai
microsoft/azure-skills
Use for Azure AI: Search, Speech, OpenAI, Document Intelligence. Helps with search, vector/hybrid search, speech-to-text, text-to-speech, transcription, OCR. WHEN: AI Search, query search, vector search, hybrid search, semantic search, speech-to-text, text-to-speech, transcribe, OCR, convert text to speech.
azure-deploy
microsoft/azure-skills
Execute Azure deployments for ALREADY-PREPARED applications that have existing .azure/deployment-plan.md and infrastructure files. DO NOT use this skill when the user asks to CREATE a new application — use azure-prepare instead. This skill runs azd up, azd deploy, terraform apply, and az deployment commands with built-in error recovery. Requires .azure/deployment-plan.md from azure-prepare and validated status from azure-validate. WHEN: "run azd up", "run azd deploy", "execute deployment", "push to production", "push to cloud", "go live", "ship it", "bicep deploy", "terraform apply", "publish to Azure", "launch on Azure". DO NOT USE WHEN: "create and deploy", "build and deploy", "create a new app", "set up infrastructure", "create and deploy to Azure using Terraform" — use azure-prepare for these.
azure-validate
microsoft/azure-skills
Pre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure (Bicep or Terraform), RBAC role assignments, managed identity permissions, and prerequisites before deploying. WHEN: validate my app, check deployment readiness, run preflight checks, verify configuration, check if ready to deploy, validate azure.yaml, validate Bicep, test before deploying, troubleshoot deployment errors, validate Azure Functions, validate function app, validate serverless deployment, verify RBAC roles, check role assignments, review managed identity permissions, what-if analysis, validate Container Apps deployment.