diff --git a/.agents/skills/aspire-init/SKILL.md b/.agents/skills/aspire-init/SKILL.md new file mode 100644 index 0000000..75a894b --- /dev/null +++ b/.agents/skills/aspire-init/SKILL.md @@ -0,0 +1,146 @@ +--- +name: aspire-init +description: >- + **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, 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. +license: MIT +metadata: + author: Microsoft + version: "0.0.1" +--- + +# Aspire Init + +> **First-run only.** This skill owns the skeleton drop and template choice for repositories +> that do not yet have an Aspire AppHost. Once the skeleton is in place, hand off to +> [`aspireify`](../aspireify/SKILL.md) for the actual resource wiring. + +## Prerequisites + +| Requirement | Install | +|-------------|---------| +| .NET 10.0 SDK | https://dotnet.microsoft.com/download | +| Aspire CLI (curl installer) | `curl -sSL https://aspire.dev/install.sh \| bash` | +| Aspire CLI (NativeAOT global tool) | `dotnet tool install -g Aspire.Cli` (.NET 10 required) | +| Diagnose missing prerequisites | `aspire doctor` | + +> Aspire ships the CLI as a NativeAOT .NET global tool — instant startup, no JIT warmup. +> The curl/PowerShell installer remains supported for environments without .NET 10. + +## Detection + +Activate **only** when adding Aspire to a workspace that does not yet have one. Confirm ALL +of the following before running `aspire init`: + +| Signal | How to Detect | Meaning | +|--------|---------------|---------| +| No C# AppHost | No `.csproj` containing `Aspire.AppHost.Sdk` | OK to init | +| No file-based AppHost | No `apphost.cs` with `#:sdk Aspire.AppHost.Sdk` | OK to init | +| No TypeScript AppHost | No `apphost.ts` in repo root | OK to init | +| No Aspire config | No `aspire.config.json` in repo root | OK to init | +| User intent | Explicit "add Aspire", "scaffold Aspire", "aspire init" | OK to init | + +If **any** AppHost signal is already present, **do not run `aspire init`**. Route to +[`aspireify`](../aspireify/SKILL.md) (re-wire) or +[`aspire-orchestration`](../aspire-orchestration/SKILL.md) (lifecycle). + +## Decision: `aspire new` vs `aspire init` + +| Situation | Command | Why | +|-----------|---------|-----| +| Empty directory or brand-new project | `aspire new