aspire-init について
aspire-init は、リポジトリへの Aspire 導入や新規 Aspire プロジェクト作成を支援するエージェントスキルです。適切なテンプレートを選ぶか最小限の AppHost を追加し、既存リポジトリのリソース配線は aspireify に引き継ぎます。
主な機能
- 01既存 AppHost ファイルの確認
- 02aspire new と aspire init の選択
- 03テンプレートからのプロジェクト作成
- 04既存リポジトリへのスケルトン追加
- 05リソース配線を aspireify に引き継ぎ
活用シーン
- 01テンプレートから新しい Aspire プロジェクトを開始
- 02既存サービスと並べて AppHost スケルトンを追加
- 03既存ワークスペースの初期化可否を判断
MCP 対応
MCP サーバーの設定は個別に選択する必要があり、Aspire 13.6 以降の連続したエージェント設定では作成されないと説明しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ microsoft/ aspire-skills --skill aspire-initインストール後、Claude Code で/aspire-initを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/eval.yamlreferences/init-workflow.mdtemplates.md詳細
Aspire Init
初回実行時のみ。 このスキルは、まだ Aspire AppHost が存在しないリポジトリにスケルトンを追加し、テンプレートを選択します。スケルトンを配置したら、実際のリソース接続設定を行うために
aspireifyに引き継ぎます。
前提条件
| 要件 | インストール |
|---|---|
| .NET 10.0 SDK | https://dotnet.microsoft.com/download |
Node.js ^20.19.0、^22.13.0、または >=24(TypeScript AppHost) | https://nodejs.org |
| Aspire CLI(curl インストーラー) | curl -sSL https://aspire.dev/install.sh | bash |
| Aspire CLI(npm) | npm install -g @microsoft/aspire-cli |
| Aspire CLI(NativeAOT グローバルツール) | dotnet tool install -g Aspire.Cli(.NET 10 が必要です) |
| 不足している前提条件の診断 | aspire doctor |
Aspire は Nix、Homebrew、WinGet、mise、curl/PowerShell インストーラーにも対応しています。 ユーザーの環境ですでに使用されているインストール方法を使ってください。
検出
Aspire AppHost がまだ存在しないワークスペースに Aspire を追加する場合のみ有効にします。aspire init を実行する前に、以下のすべてを確認してください。
| シグナル | 検出方法 | 意味 |
|---|---|---|
| C# AppHost がない | Aspire.AppHost.Sdk を含む .csproj がない | init して問題ありません |
| ファイルベースの AppHost がない | #:sdk Aspire.AppHost.Sdk を含む apphost.cs がない | init して問題ありません |
| TypeScript AppHost がない | リポジトリに現行の apphost.mts または旧式の apphost.ts がない | init して問題ありません |
| Aspire の設定がない | リポジトリのルートに aspire.config.json がない | init して問題ありません |
| ユーザーの意図 | 「Aspire を追加」「Aspire をスキャフォールド」「aspire init」が明示されている | init して問題ありません |
AppHost のシグナルがいずれかすでに存在する場合は、aspire init を実行しないでください。aspireify(接続設定のやり直し)または
aspire-orchestration(ライフサイクル)に案内してください。
選択:aspire new と aspire init
| 状況 | コマンド | 理由 |
|---|---|---|
| 空のディレクトリまたは新規プロジェクト | aspire new <template> | 完全なスターターソリューションを生成します |
| モデル化するサービスがある既存のリポジトリ | aspire init | 既存コードの隣に最小限のスケルトンと aspire.config.json を追加します |
| 学習用のサンプルが必要な場合 | aspire new aspire-starter | ApiService、Web、ServiceDefaults が含まれます |
| 可能な限り小さなスキャフォールドが必要な場合 | aspire new aspire-empty(C#)または aspire new aspire-ts-empty(TS) | リソースは事前接続されません |
| Python サービスを使用する場合 | aspire new aspire-py-starter(TypeScript AppHost が Python を制御) | dotnet new ではありません — このテンプレートは 13.3 で削除されました |
テンプレートの一覧とオプションについては、references/templates.md を参照してください。
ワークフロー A — aspire new <template>(新規プロジェクト)
空またはまだ存在しないディレクトリに新規プロジェクトを作成する場合:
- CLI のインストール状況が不確かな場合は、
aspire doctorで前提条件を確認します。 - references/templates.md からテンプレートを選択します。
- テンプレートを実行します。エージェントのフローでは
--non-interactiveを追加します:aspire new aspire-starter --name MyApp --output ./MyApp --non-interactive - 新しいディレクトリはテンプレートによって完全に接続設定されるため、aspireify への引き継ぎは不要です。
- 初回実行(
aspire start)のためにaspire-orchestrationに案内します。
ワークフロー B — aspire init(既存のリポジトリ)
すでにサービス(Express API、.NET API、Python サービスなど)が含まれており、 それらと並べて AppHost を追加する必要があるリポジトリの場合:
- 検出の表を確認し、AppHost が存在しないことを確認します。
- 非対話型のフローでは言語を明示的に選択して、
aspire initを実行します:aspire init --language csharp --non-interactive # or aspire init --language typescript --non-interactive aspire initによって、以下が追加されます:- AppHost のひな形(
#:sdkディレクティブを含むapphost.cs、または生成された.aspire/modules/フォルダーを含むapphost.mts) - 言語と AppHost のパスを記述する AppHost 構成
- プロジェクトのスキルディレクトリに
aspireifyエージェントスキル(aspire agent initが使用するものと同じディレクトリ)。13.6 以降では、連続したエージェントのセットアップで、aspireifyを含む推奨スキルが事前に選択されます。また、Aspire MCP サーバーの構成は提示されません。正常に初期化された後に MCP 構成がない場合、それは想定どおりであり、不具合ではありません。MCP は別途、明示的に有効化する機能です。aspireルーターの スキルと MCP に関するガイダンスを参照してください。
- AppHost のひな形(
aspireifyに引き継ぎます —aspire initでは、リソース、プロジェクト、インテグレーションは自動的に接続されません。aspireifyによる接続が完了したら、aspire startで検証します (aspire-orchestration)。
13.5 では、ルートに package.json がすでにあるリポジトリ内で TypeScript の初期化を行うと、
ネストされた aspire-apphost/ パッケージが作成され、ルートの aspire.config.json は
aspire-apphost/apphost.mts を参照します。ソリューションベースの C# リポジトリには、
プロジェクトベースの AppHost を追加できます。新しい C# AppHost では、デフォルトで
AspireUseCliBundle=true が有効になります。これらの生成された設定はそのまま維持してください。
aspire.config.json の内容や、aspire init が途中で失敗した場合の対処方法を含む手順全体については、
references/init-workflow.md を参照してください。
引き継ぎのルール
aspire init / aspire new の完了後... | 引き継ぎ先 |
|---|---|
| ひな形は追加されたが、リソースの接続が必要 | → aspireify スキル(プラグイン内またはプロジェクトローカル) |
| ひな形は追加されたが、起動することの検証が必要 | → aspire-orchestration(aspire start を実行) |
| テンプレートから作成した新しいプロジェクトで、実行準備が完了している | → aspire-orchestration |
| 初期化後にデプロイを求められた | → aspire-deployment |
| 初期化後にログ/トレースを求められた | → aspire-monitoring |
| 既存の AppHost が検出された — init を実行しない | → aspireify(再接続)または aspire-orchestration(ライフサイクル) |
プロジェクトローカルのスキルによる上書き
プロジェクトローカルに .agents/skills/aspire-init/SKILL.md が存在する場合(以前の
aspire init 実行によるレガシーインストール)、ユーザーに警告し、その内容を優先してください。
レガシーなプロジェクトローカルのスキルには、そのリポジトリ固有のガイダンスが含まれている可能性があり、
このプラグイン内のスキルで上書きすべきではありません。
同じ理由から、プロジェクトローカルの aspireify スキル(aspire init によってインストールされたもの)は、
このプラグイン内の aspireify より優先されます。プロジェクトローカルのコピーを優先し、警告してください。
エラー処理
| 症状 | 原因 | 対応 |
|---|---|---|
aspire init で AppHost がすでに存在すると報告される | リポジトリに AppHost がすでにある | 中止してください。aspireify(再配線)または aspire-orchestration(ライフサイクル)に引き継ぎます |
aspire init が --language なしの非対話モードで失敗する | 複数の言語パスが利用可能 | --language csharp または --language typescript を指定して再実行します |
aspire new が --output パスを拒否する | パスが存在し、空ではない | 別の --output を使うか、ディレクトリを空にします |
aspire コマンドが見つからない | CLI がインストールされていない | .NET 10 の場合は dotnet tool install -g Aspire.Cli、または curl -sSL https://aspire.dev/install.sh | bash を実行します |
aspire doctor で .NET 10 がないと報告される | SDK がない | 再試行する前に .NET 10 SDK をインストールします |
aspire init は成功したが、aspireify スキルがインストールされていない | エージェントのスキルディレクトリが検出されなかった、または aspireify が選択されなかった(13.5 では事前選択されません) | aspire agent init --non-interactive --skills aspireify を実行します(明示的な --skills リストがある場合は aspireify を追加し、--skill-locations はそのままにして、--mcp は追加しないでください)。その後、配線を続けます |
aspire init は成功したが、MCP 設定が書き込まれていない | 13.6 以降では想定どおりです — 連続したエージェント設定では MCP は提示されません | 修復しないでください。ユーザーが明示的に求めた場合にのみ MCP を設定します(13.6 以降では aspire agent init --mcp) |
| スケルトンは生成されたが、リソースが配線されていない | 想定どおりです — aspire init は配線を行いません | aspireify に引き継ぎます |
既存の TypeScript AppHost が引き続き apphost.ts を使用している | レガシーのエントリーポイントとパッケージグラフ | 承認と aspire update --migrate --yes --non-interactive を担当する aspire-orchestration に引き継ぎます。後続のソース作成のみ aspireify に戻します |
参考資料
- templates.md —
aspire newのテンプレートとオプション - init-workflow.md —
aspire initのフロー、aspire.config.jsonの レイアウト、およびaspireifyへの引き継ぎ - aspire-13-5-breaking-changes.md — 13.5 の移行、CLI バンドルの動作、および影響を受けるリリース向けの修正