{"id":"1bd9e5d1-5fcd-4ee6-bd44-cf4a778dcf9b","shortId":"TVPjUq","kind":"skill","title":"Aspire","tagline":"Awesome Copilot skill by Github","description":"# Aspire — Polyglot Distributed-App Orchestration\n\nAspire is a **code-first, polyglot toolchain** for building observable, production-ready distributed applications. It orchestrates containers, executables, and cloud resources from a single AppHost project — regardless of whether the workloads are C#, Python, JavaScript/TypeScript, Go, Java, Rust, Bun, Deno, or PowerShell.\n\n> **Mental model:** The AppHost is a *conductor* — it doesn't play the instruments, it tells every service when to start, how to find each other, and watches for problems.\n\nDetailed reference material lives in the `references/` folder — load on demand.\n\n---\n\n## References\n\n| Reference | When to load |\n|---|---|\n| [CLI Reference](references/cli-reference.md) | Command flags, options, or detailed usage |\n| [MCP Server](references/mcp-server.md) | Setting up MCP for AI assistants, available tools |\n| [Integrations Catalog](references/integrations-catalog.md) | Discovering integrations via MCP tools, wiring patterns |\n| [Polyglot APIs](references/polyglot-apis.md) | Method signatures, chaining options, language-specific patterns |\n| [Architecture](references/architecture.md) | DCP internals, resource model, service discovery, networking, telemetry |\n| [Dashboard](references/dashboard.md) | Dashboard features, standalone mode, GenAI Visualizer |\n| [Deployment](references/deployment.md) | Docker, Kubernetes, Azure Container Apps, App Service |\n| [Testing](references/testing.md) | Integration tests against the AppHost |\n| [Troubleshooting](references/troubleshooting.md) | Diagnostic codes, common errors, and fixes |\n\n---\n\n## 1. Researching Aspire Documentation\n\nThe Aspire team ships an **MCP server** that provides documentation tools directly inside your AI assistant. See [MCP Server](references/mcp-server.md) for setup details.\n\n### Aspire CLI 13.2+ (recommended — has built-in docs search)\n\nIf running Aspire CLI **13.2 or later** (`aspire --version`), the MCP server includes docs search tools:\n\n| Tool | Description |\n|---|---|\n| `list_docs` | Lists all available documentation from aspire.dev |\n| `search_docs` | Performs weighted lexical search across indexed documentation |\n| `get_doc` | Retrieves a specific document by its slug |\n\nThese tools were added in [PR #14028](https://github.com/dotnet/aspire/pull/14028). To update: `aspire update --self --channel daily`.\n\nFor more on this approach, see David Pine's post: https://davidpine.dev/posts/aspire-docs-mcp-tools/\n\n### Aspire CLI 13.1 (integration tools only)\n\nOn 13.1, the MCP server provides integration lookup but **not** docs search:\n\n| Tool | Description |\n|---|---|\n| `list_integrations` | Lists available Aspire hosting integrations |\n| `get_integration_docs` | Gets documentation for a specific integration package |\n\nFor general docs queries on 13.1, use **Context7** as your primary source (see below).\n\n### Fallback: Context7\n\nUse **Context7** (`mcp_context7`) when the Aspire MCP docs tools are unavailable (13.1) or the MCP server isn't running:\n\n**Step 1 — Resolve the library ID** (one-time per session):\n\nCall `mcp_context7_resolve-library-id` with `libraryName: \".NET Aspire\"`.\n\n| Rank | Library ID | Use when |\n|---|---|---|\n| 1 | `/microsoft/aspire.dev` | Primary source. Guides, integrations, CLI reference, deployment. |\n| 2 | `/dotnet/aspire` | API internals, source-level implementation details. |\n| 3 | `/communitytoolkit/aspire` | Non-Microsoft polyglot integrations (Go, Java, Node.js, Ollama). |\n\n**Step 2 — Query docs:**\n\n```\nlibraryId: \"/microsoft/aspire.dev\", query: \"Python integration AddPythonApp service discovery\"\nlibraryId: \"/communitytoolkit/aspire\", query: \"Golang Java Node.js community integrations\"\n```\n\n### Fallback: GitHub search (when Context7 is also unavailable)\n\nSearch the official docs repo on GitHub:\n- **Docs repo:** `microsoft/aspire.dev` — path: `src/frontend/src/content/docs/`\n- **Source repo:** `dotnet/aspire`\n- **Samples repo:** `dotnet/aspire-samples`\n- **Community integrations:** `CommunityToolkit/Aspire`\n\n---\n\n## 2. Prerequisites & Install\n\n| Requirement | Details |\n|---|---|\n| **.NET SDK** | 10.0+ (required even for non-.NET workloads — the AppHost is .NET) |\n| **Container runtime** | Docker Desktop, Podman, or Rancher Desktop |\n| **IDE (optional)** | VS Code + C# Dev Kit, Visual Studio 2022, JetBrains Rider |\n\n```bash\n# Linux / macOS\ncurl -sSL https://aspire.dev/install.sh | bash\n\n# Windows PowerShell\nirm https://aspire.dev/install.ps1 | iex\n\n# Verify\naspire --version\n\n# Install templates\ndotnet new install Aspire.ProjectTemplates\n```\n\n---\n\n## 3. Project Templates\n\n| Template | Command | Description |\n|---|---|---|\n| **aspire-starter** | `aspire new aspire-starter` | ASP.NET Core/Blazor starter + AppHost + tests |\n| **aspire-ts-cs-starter** | `aspire new aspire-ts-cs-starter` | ASP.NET Core/React starter + AppHost |\n| **aspire-py-starter** | `aspire new aspire-py-starter` | FastAPI/React starter + AppHost |\n| **aspire-apphost-singlefile** | `aspire new aspire-apphost-singlefile` | Empty single-file AppHost |\n\n---\n\n## 4. AppHost Quick Start (Polyglot)\n\nThe AppHost orchestrates all services. Non-.NET workloads run as containers or executables.\n\n```csharp\nvar builder = DistributedApplication.CreateBuilder(args);\n\n// Infrastructure\nvar redis = builder.AddRedis(\"cache\");\nvar postgres = builder.AddPostgres(\"pg\").AddDatabase(\"catalog\");\n\n// .NET API\nvar api = builder.AddProject<Projects.CatalogApi>(\"api\")\n    .WithReference(postgres).WithReference(redis);\n\n// Python ML service\nvar ml = builder.AddPythonApp(\"ml-service\", \"../ml-service\", \"main.py\")\n    .WithHttpEndpoint(targetPort: 8000).WithReference(redis);\n\n// React frontend (Vite)\nvar web = builder.AddViteApp(\"web\", \"../frontend\")\n    .WithHttpEndpoint(targetPort: 5173).WithReference(api);\n\n// Go worker\nvar worker = builder.AddGolangApp(\"worker\", \"../go-worker\")\n    .WithReference(redis);\n\nbuilder.Build().Run();\n```\n\nFor complete API signatures, see [Polyglot APIs](references/polyglot-apis.md).\n\n---\n\n## 5. Core Concepts (Summary)\n\n| Concept | Key point |\n|---|---|\n| **Run vs Publish** | `aspire run` = local dev (DCP engine). `aspire publish` = generate deployment manifests. |\n| **Service discovery** | Automatic via env vars: `ConnectionStrings__<name>`, `services__<name>__http__0` |\n| **Resource lifecycle** | DAG ordering — dependencies start first. `.WaitFor()` gates on health checks. |\n| **Resource types** | `ProjectResource`, `ContainerResource`, `ExecutableResource`, `ParameterResource` |\n| **Integrations** | 144+ across 13 categories. Hosting package (AppHost) + Client package (service). |\n| **Dashboard** | Real-time logs, traces, metrics, GenAI visualizer. Runs automatically with `aspire run`. |\n| **MCP Server** | AI assistants can query running apps and search docs via CLI (STDIO). |\n| **Testing** | `Aspire.Hosting.Testing` — spin up full AppHost in xUnit/MSTest/NUnit. |\n| **Deployment** | Docker, Kubernetes, Azure Container Apps, Azure App Service. |\n\n---\n\n## 6. CLI Quick Reference\n\nValid commands in Aspire CLI 13.1:\n\n| Command | Description | Status |\n|---|---|---|\n| `aspire new <template>` | Create from template | Stable |\n| `aspire init` | Initialize in existing project | Stable |\n| `aspire run` | Start all resources locally | Stable |\n| `aspire add <integration>` | Add an integration | Stable |\n| `aspire publish` | Generate deployment manifests | Preview |\n| `aspire config` | Manage configuration settings | Stable |\n| `aspire cache` | Manage disk cache | Stable |\n| `aspire deploy` | Deploy to defined targets | Preview |\n| `aspire do <step>` | Execute a pipeline step | Preview |\n| `aspire update` | Update integrations (or `--self` for CLI) | Preview |\n| `aspire mcp init` | Configure MCP for AI assistants | Stable |\n| `aspire mcp start` | Start the MCP server | Stable |\n\nFull command reference with flags: [CLI Reference](references/cli-reference.md).\n\n---\n\n## 7. Common Patterns\n\n### Adding a new service\n\n1. Create your service directory (any language)\n2. Add to AppHost: `Add*App()` or `AddProject<T>()`\n3. Wire dependencies: `.WithReference()`\n4. Gate on health: `.WaitFor()` if needed\n5. Run: `aspire run`\n\n### Migrating from Docker Compose\n\n1. `aspire new aspire-apphost-singlefile` (empty AppHost)\n2. Replace each `docker-compose` service with an Aspire resource\n3. `depends_on` → `.WithReference()` + `.WaitFor()`\n4. `ports` → `.WithHttpEndpoint()`\n5. `environment` → `.WithEnvironment()` or `.WithReference()`\n\n---\n\n## 8. Key URLs\n\n| Resource | URL |\n|---|---|\n| **Documentation** | https://aspire.dev |\n| **Runtime repo** | https://github.com/dotnet/aspire |\n| **Docs repo** | https://github.com/microsoft/aspire.dev |\n| **Samples** | https://github.com/dotnet/aspire-samples |\n| **Community Toolkit** | https://github.com/CommunityToolkit/Aspire |\n| **Dashboard image** | `mcr.microsoft.com/dotnet/aspire-dashboard` |\n| **Discord** | https://aka.ms/aspire/discord |\n| **Reddit** | https://www.reddit.com/r/aspiredotdev/ |","tags":["aspire","awesome","copilot","github"],"capabilities":["skill","source-github","category-awesome-copilot"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/aspire","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under github/awesome-copilot","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T13:40:15.277Z","embedding":null,"createdAt":"2026-04-18T20:25:55.307Z","updatedAt":"2026-04-22T13:40:15.277Z","lastSeenAt":"2026-04-22T13:40:15.277Z","tsv":"'/aspire/discord':1010 '/communitytoolkit/aspire':415,438,1001 '/dotnet/aspire':406,987 '/dotnet/aspire-dashboard':1006 '/dotnet/aspire-samples':996 '/dotnet/aspire/pull/14028).':275 '/frontend':667 '/go-worker':679 '/install.ps1':526 '/install.sh':519 '/microsoft/aspire.dev':397,430,992 '/ml-service':653 '/posts/aspire-docs-mcp-tools/':295 '/r/aspiredotdev/':1014 '0':722 '1':185,370,396,909,943 '10.0':481 '13':744 '13.1':298,303,338,361,806 '13.2':214,226 '14028':272 '144':742 '2':405,426,474,916,952 '2022':509 '3':414,537,924,963 '4':600,928,968 '5':692,935,971 '5173':670 '6':797 '7':902 '8':976 '8000':657 'across':254,743 'ad':269,905 'add':831,832,917,920 'adddatabas':632 'addproject':923 'addpythonapp':434 'ai':118,203,768,883 'aka.ms':1009 'aka.ms/aspire/discord':1008 'also':451 'api':133,407,635,637,639,672,686,690 'app':11,167,168,773,793,795,921 'apphost':39,60,176,489,554,571,584,587,593,599,601,606,748,785,919,948,951 'applic':28 'approach':287 'architectur':143 'arg':622 'asp.net':551,568 'aspir':1,7,13,187,190,212,224,229,278,296,320,355,390,529,544,546,549,557,561,564,573,576,579,586,589,592,702,708,764,804,810,816,823,830,836,842,848,854,861,868,877,886,937,944,947,961 'aspire-apphost-singlefil':585,591,946 'aspire-py-start':572,578 'aspire-start':543,548 'aspire-ts-cs-start':556,563 'aspire.dev':247,518,525,982 'aspire.dev/install.ps1':524 'aspire.dev/install.sh':517 'aspire.hosting.testing':781 'aspire.projecttemplates':536 'assist':119,204,769,884 'automat':715,762 'avail':120,244,319 'awesom':2 'azur':165,791,794 'bash':512,520 'build':22 'builder':620 'builder.addgolangapp':677 'builder.addpostgres':630 'builder.addproject':638 'builder.addpythonapp':649 'builder.addredis':626 'builder.addviteapp':665 'builder.build':682 'built':218 'built-in':217 'bun':53 'c':47,504 'cach':627,849,852 'call':380 'catalog':123,633 'categori':745 'category-awesome-copilot' 'chain':137 'channel':281 'check':734 'cli':102,213,225,297,402,778,798,805,875,899 'client':749 'cloud':34 'code':17,180,503 'code-first':16 'command':105,541,802,807,895 'common':181,903 'communiti':443,471,997 'communitytoolkit/aspire':473 'complet':685 'compos':942,957 'concept':694,696 'conductor':63 'config':843 'configur':845,880 'connectionstr':719 'contain':31,166,492,615,792 'containerresourc':738 'context7':340,348,350,352,382,449 'copilot':3 'core':693 'core/blazor':552 'core/react':569 'creat':812,910 'cs':559,566 'csharp':618 'curl':515 'dag':725 'daili':282 'dashboard':153,155,752,1002 'david':289 'davidpine.dev':294 'davidpine.dev/posts/aspire-docs-mcp-tools/':293 'dcp':145,706 'defin':858 'demand':96 'deno':54 'depend':727,926,964 'deploy':161,404,711,788,839,855,856 'descript':239,315,542,808 'desktop':495,499 'detail':86,109,211,413,478 'dev':505,705 'diagnost':179 'direct':200 'directori':913 'discord':1007 'discov':125 'discoveri':150,436,714 'disk':851 'distribut':10,27 'distributed-app':9 'distributedapplication.createbuilder':621 'doc':220,235,241,249,258,312,325,335,357,428,456,460,776,988 'docker':163,494,789,941,956 'docker-compos':955 'document':188,198,245,256,262,327,981 'doesn':65 'dotnet':533 'dotnet/aspire':467 'dotnet/aspire-samples':470 'empti':595,950 'engin':707 'env':717 'environ':972 'error':182 'even':483 'everi':72 'execut':32,617,863 'executableresourc':739 'exist':820 'fallback':347,445 'fastapi/react':582 'featur':156 'file':598 'find':79 'first':18,729 'fix':184 'flag':106,898 'folder':93 'frontend':661 'full':784,894 'gate':731,929 'genai':159,759 'general':334 'generat':710,838 'get':257,323,326 'github':6,446,459 'github.com':274,986,991,995,1000 'github.com/communitytoolkit/aspire':999 'github.com/dotnet/aspire':985 'github.com/dotnet/aspire-samples':994 'github.com/dotnet/aspire/pull/14028).':273 'github.com/microsoft/aspire.dev':990 'go':50,421,673 'golang':440 'guid':400 'health':733,931 'host':321,746 'http':721 'id':374,386,393 'ide':500 'iex':527 'imag':1003 'implement':412 'includ':234 'index':255 'infrastructur':623 'init':817,879 'initi':818 'insid':201 'instal':476,531,535 'instrument':69 'integr':122,126,172,299,308,317,322,324,331,401,420,433,444,472,741,834,871 'intern':146,408 'irm':523 'isn':366 'java':51,422,441 'javascript/typescript':49 'jetbrain':510 'key':697,977 'kit':506 'kubernet':164,790 'languag':140,915 'language-specif':139 'later':228 'level':411 'lexic':252 'librari':373,385,392 'libraryid':429,437 'librarynam':388 'lifecycl':724 'linux':513 'list':240,242,316,318 'live':89 'load':94,101 'local':704,828 'log':756 'lookup':309 'maco':514 'main.py':654 'manag':844,850 'manifest':712,840 'materi':88 'mcp':111,116,128,194,206,232,305,351,356,364,381,766,878,881,887,891 'mcr.microsoft.com':1005 'mcr.microsoft.com/dotnet/aspire-dashboard':1004 'mental':57 'method':135 'metric':758 'microsoft':418 'microsoft/aspire.dev':462 'migrat':939 'ml':645,648,651 'ml-servic':650 'mode':158 'model':58,148 'need':934 'net':389,479,486,491,611,634 'network':151 'new':534,547,562,577,590,811,907,945 'node.js':423,442 'non':417,485,610 'non-microsoft':416 'observ':23 'offici':455 'ollama':424 'one':376 'one-tim':375 'option':107,138,501 'orchestr':12,30,607 'order':726 'packag':332,747,750 'parameterresourc':740 'path':463 'pattern':131,142,904 'per':378 'perform':250 'pg':631 'pine':290 'pipelin':865 'play':67 'podman':496 'point':698 'polyglot':8,19,132,419,604,689 'port':969 'post':292 'postgr':629,641 'powershel':56,522 'pr':271 'prerequisit':475 'preview':841,860,867,876 'primari':343,398 'problem':85 'product':25 'production-readi':24 'project':40,538,821 'projectresourc':737 'provid':197,307 'publish':701,709,837 'py':574,580 'python':48,432,644 'queri':336,427,431,439,771 'quick':602,799 'rancher':498 'rank':391 'react':660 'readi':26 'real':754 'real-tim':753 'recommend':215 'reddit':1011 'redi':625,643,659,681 'refer':87,92,97,98,103,403,800,896,900 'references/architecture.md':144 'references/cli-reference.md':104,901 'references/dashboard.md':154 'references/deployment.md':162 'references/integrations-catalog.md':124 'references/mcp-server.md':113,208 'references/polyglot-apis.md':134,691 'references/testing.md':171 'references/troubleshooting.md':178 'regardless':41 'replac':953 'repo':457,461,466,469,984,989 'requir':477,482 'research':186 'resolv':371,384 'resolve-library-id':383 'resourc':35,147,723,735,827,962,979 'retriev':259 'rider':511 'run':223,368,613,683,699,703,761,765,772,824,936,938 'runtim':493,983 'rust':52 'sampl':468,993 'sdk':480 'search':221,236,248,253,313,447,453,775 'see':205,288,345,688 'self':280,873 'server':112,195,207,233,306,365,767,892 'servic':73,149,169,435,609,646,652,713,720,751,796,908,912,958 'session':379 'set':114,846 'setup':210 'ship':192 'signatur':136,687 'singl':38,597 'single-fil':596 'singlefil':588,594,949 'skill':4 'slug':265 'sourc':344,399,410,465 'source-github' 'source-level':409 'specif':141,261,330 'spin':782 'src/frontend/src/content/docs':464 'ssl':516 'stabl':815,822,829,835,847,853,885,893 'standalon':157 'start':76,603,728,825,888,889 'starter':545,550,553,560,567,570,575,581,583 'status':809 'stdio':779 'step':369,425,866 'studio':508 'summari':695 'target':859 'targetport':656,669 'team':191 'telemetri':152 'tell':71 'templat':532,539,540,814 'test':170,173,555,780 'time':377,755 'tool':121,129,199,237,238,267,300,314,358 'toolchain':20 'toolkit':998 'trace':757 'troubleshoot':177 'ts':558,565 'type':736 'unavail':360,452 'updat':277,279,869,870 'url':978,980 'usag':110 'use':339,349,394 'valid':801 'var':619,624,628,636,647,663,675,718 'verifi':528 'version':230,530 'via':127,716,777 'visual':160,507,760 'vite':662 'vs':502,700 'waitfor':730,932,967 'watch':83 'web':664,666 'weight':251 'whether':43 'window':521 'wire':130,925 'withenviron':973 'withhttpendpoint':655,668,970 'withrefer':640,642,658,671,680,927,966,975 'worker':674,676,678 'workload':45,487,612 'www.reddit.com':1013 'www.reddit.com/r/aspiredotdev/':1012 'xunit/mstest/nunit':787","prices":[{"id":"552f5c13-cee4-47f2-b802-a36509f17bf9","listingId":"1bd9e5d1-5fcd-4ee6-bd44-cf4a778dcf9b","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:25:55.307Z"}],"sources":[{"listingId":"1bd9e5d1-5fcd-4ee6-bd44-cf4a778dcf9b","source":"github","sourceId":"github/awesome-copilot/aspire","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/aspire","isPrimary":false,"firstSeenAt":"2026-04-18T21:48:18.656Z","lastSeenAt":"2026-04-22T12:52:05.880Z"},{"listingId":"1bd9e5d1-5fcd-4ee6-bd44-cf4a778dcf9b","source":"skills_sh","sourceId":"github/awesome-copilot/aspire","sourceUrl":"https://skills.sh/github/awesome-copilot/aspire","isPrimary":true,"firstSeenAt":"2026-04-18T20:25:55.307Z","lastSeenAt":"2026-04-22T13:40:15.277Z"}],"details":{"listingId":"1bd9e5d1-5fcd-4ee6-bd44-cf4a778dcf9b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"aspire","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/aspire"},"updatedAt":"2026-04-22T13:40:15.277Z"}}