5.8 KiB
aspire init Workflow
Reference for the aspire init flow on existing repositories. Source:
https://aspire.dev/reference/cli/commands/aspire-init/.
What aspire init Does
aspire init initializes Aspire support in an existing repo or workspace. It scaffolds a
minimal AppHost skeleton plus an aspire.config.json, then optionally installs the
aspireify agent skill so the AI coding agent can complete the wiring.
It does not:
- Wire resources, projects, or integrations into the AppHost
- Modify existing project files
- Change the repo's .NET SDK version (
global.jsonis left alone) - Trust the developer certificate (run
aspire certs trustseparately if needed)
Command and Options
aspire init [options]
| Option | Purpose |
|---|---|
--language |
csharp or typescript. Required in --non-interactive mode if both paths are available |
--channel |
stable (default), staging, daily |
--non-interactive |
Required for agent execution. Disables prompts and spinners |
--nologo |
Suppress startup banner / telemetry notice |
--banner |
Show the animated welcome banner |
-l, --log-level |
Critical, Debug, Error, Information, None, Trace, Warning |
--wait-for-debugger |
Pause until a debugger attaches |
-?, -h, --help |
Print help |
What Gets Dropped
C# Path (--language csharp)
apphost.cs— single-file AppHost using#:sdk Aspire.AppHost.Sdkand#:packagedirectives. No.csprojis created in the file-based mode.aspire.config.jsonat repo root.
TypeScript Path (--language typescript)
apphost.tsat repo root..aspire/modules/generated folder (do not edit by hand — regenerate withaspire add).aspire.config.jsonat repo root.
aspireify Skill
- A Markdown skill file is installed into the AI agent's skill directory — the same
directory chosen by
aspire agent init(e.g.,.agents/skills/aspireify/,.github/skills/aspireify/,.claude/skills/aspireify/, or.opencode/skill/aspireify/). - The skill instructs the agent to scan the repo, propose a resource graph, edit the
AppHost, and validate via
aspire start.
aspire.config.json Layout
| Field | Values | Meaning |
|---|---|---|
appHost.language |
"csharp" or "typescript/nodejs" |
Which AppHost syntax to use |
appHost.path |
Path to AppHost file or directory | Where the AppHost lives |
C# has two sub-modes the agent may encounter:
- Single-file —
appHost.pathpoints atapphost.cs(uses#:sdkdirective). - Full project —
appHost.pathpoints at a directory containing a.csprojplusProgram.cs. In solution-backed repos, full project mode lets the AppHost participate in IDE and solution workflows.
End-to-End Sequence
- Pre-flight — verify no AppHost already exists. If one does, stop and route to
aspireifyoraspire-orchestration. - Run init:
aspire init --language <csharp|typescript> --non-interactive - Confirm artifacts —
apphost.cs(orapphost.ts+.aspire/modules/) andaspire.config.jsonshould be in the repo root. - Confirm
aspireifyskill installed — the agent's skill directory containsaspireify/SKILL.md. If missing, runaspire agent initto install it. - Hand off to
aspireifyfor wiring:- Scan repo and discover existing projects, services, containers
- Ask the user clarifying questions (which services to orchestrate, hardcoded ports, whether to map env vars or switch to Aspire service discovery)
- Wire resources with
WithReference,WaitFor, endpoints, volumes - Optionally configure OpenTelemetry
- Validate with a smoke-test
aspire start
- Validate — once
aspireifyfinishes wiring, runaspire start(handled byaspire-orchestration) and confirm resources reach a healthy state.
Project-Local Skill Precedence
aspire init installs aspireify into the project's skill directory when an agent skill location is detected.
When a project-local .agents/skills/aspireify/SKILL.md (or equivalent location) is
present, defer to it and warn the user — the project-local copy may carry repo-specific
guidance.
The same precedence applies to a legacy .agents/skills/aspire-init/SKILL.md from older
aspire init runs: warn and defer.
Failure Modes and Recovery
| Symptom | Cause | Recovery |
|---|---|---|
aspire init reports an AppHost already exists |
Repo is already an Aspire app | Stop. Route to aspireify or aspire-orchestration |
aspire init fails without --language in --non-interactive |
CLI needs the language explicitly when prompts are disabled | Re-run with --language csharp or --language typescript |
Skeleton dropped but no aspireify skill |
Agent skill directory not detected during init | Run aspire agent init to install aspireify, then continue |
apphost.cs references a missing #:package |
Channel mismatch or transient feed issue | Re-run with --channel stable (or daily for pre-release) |
aspire start after wiring fails immediately |
Wiring incomplete or wrong AppHost path | Re-invoke aspireify; confirm aspire.config.json appHost.path is correct |
Don't Do This
- Don't run
aspire initif any AppHost signal already exists — it duplicates the skeleton and confuses subsequent tooling. - Don't edit
.aspire/modules/in TypeScript AppHosts. Useaspire addto regenerate APIs; useaspire restoreif files are missing. - Don't install the obsolete Aspire workload (
dotnet workload install aspire). Useaspire init,aspire new, oraspire addinstead. - Don't perform the resource wiring inside this skill. Hand off to
aspireify. This skill's job ends when the skeleton +aspire.config.json+aspireifyskill are in place.