mcpField
T
template-discovery

template-discovery

github.com/dotnet開発5.8k3.4k 回インストール1 日前に更新
リポジトリ

template-discovery について

Template Discovery は、要件に合う `dotnet new` テンプレートを探し、確認して選ぶための開発者向けスキルです。意図のマッピングと CLI による検索、一覧表示、パラメーター確認を組み合わせ、作成前に選択肢や出力を把握できます。

主な機能

  1. 01自然言語の要件をテンプレートに対応付け
  2. 02NuGet とインストール済みテンプレートを検索
  3. 03パラメーターと既定値を確認
  4. 04生成ファイルをプレビュー
  5. 05テンプレートのワークロードとインストール要件を案内

活用シーン

  1. 01説明されたアプリに合うテンプレートを探す
  2. 02ローカルにインストール済みのテンプレートを確認
  3. 03テンプレートのパラメーターと既定値を確認
  4. 04プロジェクト作成前に生成ファイルを調べる

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dotnet/skills --skill template-discovery

インストール後、Claude Code で/template-discoveryを入力して読み込まれたか確認します。

詳細

テンプレートの検索

このスキルでは、dotnet new CLI コマンドを使って検索、一覧表示、パラメーターの確認を行い、特定のタスクに適した dotnet new テンプレートをエージェントが見つけ、調査し、選択できるようにします。

使用する場合

  • ユーザーが「X に利用できるテンプレートは何ですか?」と尋ねた場合
  • ユーザーがプロジェクトの内容を自然言語で説明した場合(例:「認証機能付きの Web API が必要です」)
  • ユーザーがプロジェクトの作成前に、テンプレートを比較したりパラメーターを把握したりしたい場合
  • ユーザーが作成を決める前に、テンプレートで生成される内容(ファイル、構成)を確認したい場合

使用しない場合

  • ユーザーがプロジェクトの作成を希望する場合 — template-instantiation スキルに案内します
  • ユーザーがカスタムテンプレートの作成または検証を希望する場合 — template-authoring スキルに案内します
  • ユーザーがテンプレートの詳細な比較を希望する場合 — template-comparison スキルに案内します
  • ユーザーが作成時のパラメーター間でスマートなデフォルト値を適用したい場合 — template-smart-defaults スキルに案内します
  • ユーザーがビルドの問題をトラブルシューティングしている場合 — dotnet-msbuild プラグインに案内します

おすすめを求められた場合は、まず回答し、その後で確認します。調査を求められた場合は、まず調査します。 一般的な「どのテンプレートがよいですか?」という質問には、CLI の一時的なエラーでユーザーに回答できなくなることを防ぐため、ステップ 1 の対応表を参考にします。インストール済みのテンプレート、正確なオプションやデフォルト値、ドライランの出力を明示的に尋ねられた場合は、最終回答を作成する前に該当する dotnet new コマンドを実行します。dotnet new の呼び出しや「確認します……」という予告で応答を終えてはいけません。

調査の依頼には実際の調査が必要です。 インストール済みの選択肢、正確なパラメーターやデフォルト値、互換性の制約、ドライランで生成されるファイルの正確な一覧をユーザーが尋ねた場合は、対応する dotnet new コマンドを実行します。実際に確認したデータを、記憶しているフラグで置き換えてはいけません。現在のテンプレートの --help 出力に含まれているフラグのみを報告します。

入力

入力必須説明
ユーザーの意図またはキーワードはい自然言語による説明またはキーワード(例:「Web API」、「コンソールアプリ」、「MAUI」)
言語の設定いいえC#、F#、または VB — デフォルトは C#
フレームワークの設定いいえ対象フレームワーク(例:net10.0、net9.0)

ワークフロー

おすすめを提示する場合は、ステップ 2〜4 より先にステップ 1 を使用します。明示的な調査を求められた場合は、依頼された調査を先に実行し、ステップ 1 は代替手段としてのみ使用します。

ステップ 1:意図をテンプレート候補に対応付ける

以下の対応表を使って、ユーザーの自然言語による説明をテンプレートの短縮名とパラメーターに対応付けます。

意図 → テンプレート短縮名:

意図/フレーズテンプレート短縮名
web api、web service、rest api、restful、api、minimal apiwebapi
web app、web applicationwebapp、blazorserver
mvcmvc
razor、razor pageswebapp
blazor、blazor web appblazor
blazor serverblazorserver
blazor wasm、blazor webassemblyblazorwasm
grpcgrpc
signalrwebapi、webapp
console、console app、command line、cliconsole
worker、background service、daemon、windows serviceworker
class library、library、lib、nuget packageclasslib
maui、mobile、cross-platform app、ios、androidmaui
desktopmaui、wpf、winforms
wpfwpf
winforms、windows formswinforms
winui、winui3winui3
test、unit testxunit、nunit、mstest
xunit/nunit/mstestxunit/nunit/mstest
solutionsln
aspire、.net aspireaspire-starter、aspire
azure functions、function app、serverlessfunc
orleansorleans
razor component、web componentrazorcomponent
razor class libraryrazorclasslib
gitignore/editorconfig/nuget config/global jsongitignore/editorconfig/nugetconfig/globaljson

キーワード → パラメーター:

キーワード/フレーズパラメーター値
authentication、auth、individual auth、individual accounts--authIndividual
windows auth--authWindows
azure ad、entra id--authSingleOrg
no auth、no authentication--authNone
controllers、with controllers--use-controllers(フラグ)
minimal api(デフォルト)—
aot、native aot--aot(フラグ)
docker、containerテンプレートの Docker/コンテナーオプションテンプレートによって異なります。--help で確認してください(オプションを公開していないテンプレートもあります)
net8/.net 8/dotnet 8--frameworknet8.0
net9/.net 9/dotnet 9--frameworknet9.0
net10/.net 10/dotnet 10--frameworknet10.0

これらは初期推測です。テンプレートによってパラメーター名は異なるため(例:--auth と --Authentication)、必ず dotnet new <template> --help で実際のパラメーター名と選択肢を確認してください。

対応表にある短縮名の一部は、標準の SDK インストールには含まれていません。maui、winui3、aspire-starter/aspire、func、orleans などのテンプレートでは、通常、ワークロード(dotnet workload install <id>)や追加のテンプレートパッケージ(dotnet new install <package>)が必要です。対応する短縮名が dotnet new list に表示されない場合は、推奨する前に dotnet new list/dotnet new search を使って適切なテンプレートと、それを提供するパッケージ/ワークロードを見つけてください。

回復性 — CLI が失敗しても必ず回答してください。 上記の意図の対応表だけでも回答として利用できます。dotnet new コマンドは一つずつ順番に実行してください。テンプレートエンジンはグローバルミューテックスを使用するため、複数の dotnet new <template> --help/--dry-run 呼び出しを同時に実行すると、一時的な「mutex」/「persistence」エラーが発生し、出力が空になる場合があります。コマンドが失敗した場合は一度再試行してください。それでも失敗する場合は、意図/パラメーターの対応表を使い、具体的な推奨を提示してください。正確なパラメーター名や選択肢を CLI で確認できなかったことを伝えてください。CLI 呼び出しのエラーを理由に、回答を提示せずにターンを終えてはいけません。

ステップ 2:テンプレートを検索する

dotnet new search を使うと、ローカルにインストール済みのテンプレートと NuGet.org の両方から、キーワードでテンプレートを検索できます。

dotnet new search blazor

dotnet new list を使うと、インストール済みのテンプレートのみを表示できます。必要に応じてフィルターを指定できます。

dotnet new list --language C# --type project
dotnet new list web

ユーザーからインストール済みのテンプレートと NuGet.org の両方を確認するよう明示的に依頼された場合、SDK に適切なテンプレートが含まれていても、両方を検索して結果を報告してください。組み込みの選択肢とインストール可能な代替案を区別してください。

  • SDK に付属するテンプレートの場合は、**「インストール不要 — SDK に付属」**と記載し、パッケージが必要だと作り上げないでください。
  • 推奨する関連 NuGet 検索結果ごとに、実際の検索出力からパッケージ ID をコピーし、dotnet new install <package-id> を提示してください。
  • NuGet の検索で信頼できる代替案が見つからない場合は、その旨を明記してください。ローカルの一致候補で依頼には回答できます。
ステップ 3:テンプレートの詳細を確認する

dotnet new <template> --help を使うと、特定のテンプレートのパラメーター名、型、既定値、許可される値など、パラメーターの詳細を確認できます。

dotnet new webapi --help

確認できたオプション名、選択肢、既定値、互換性に関する注意事項を回答に記載してください。 たとえば、Windows Service のサポートは、すべての worker テンプレートで利用できるフラグではありません。インストール済みの worker --help に該当するオプションが表示されない場合は、その旨を伝え、テンプレートの作成と作成後のホスティング設定を区別してください。--windows や --use-windows-service を決して作り上げないでください。

ステップ 4:出力をプレビューする

dotnet new <template> --dry-run を使うと、ディスクに書き込まずに、テンプレートが作成するファイルとディレクトリを確認できます。

dotnet new webapi --name MyApi --auth Individual --dry-run

ドライランが一時的な「mutex」/「persistence」エラーで失敗した場合は、1 回だけ再試行してください。それでも失敗する場合は、代表的な構成(テンプレートのファミリーと一般的なファイルの種類)を提示し、CLI で確認できていないことを記載してください。具体的な値、選択肢、ファイルパスを作り上げないでください。ドライランが成功した場合は、出力に含まれる実際のパスをすべて保持してください。長い一覧は、パスを省略したり作り上げたりせず、フルパスの羅列ではなくディレクトリツリーとして表示してください。ツリーの後に、主要なエントリーポイント(たとえば Program.cs、App.razor、プロジェクトファイル)の役割をそれぞれ 1 行で説明してください。説明のないファイル一覧では不十分です。

コマンドを実行できない場合、「自分で実行してください」で終わらせないでください。既知のテンプレートファミリーに基づく代表的なツリーと主要ファイルの説明を、未確認であることを明示して提示し、ユーザーが有用なプレビューを得られるようにしてください。

ユーザーがファイルを作成しないよう指示した場合、コピーして実行できる作成コマンドにはすべて --dry-run を含めてください。自分で実行していない場合でも、通常の dotnet new ... コマンドを提示するのはその指示に反します。

ステップ 5:調査結果を提示する

回答の冒頭に、すぐ実行できるコマンドを提示してから、その理由を説明してください。 必須の形式は次のとおりです。

<template> を使用してください — 理由を 1 行で説明します。

dotnet new <template> --name <Name> [--key params]

次に、補足情報を追加してください。

  • 主要なパラメーターと推奨値(例:--auth:None | Individual | SingleOrg | Windows などの選択肢)
  • 生成されるファイルとプロジェクト構造
  • 前提条件 — 正確なパッケージ名(dotnet new install <id>)を示すか、組み込みテンプレートの場合は**「インストール不要 — SDK に付属」**と記載してください。

具体的でコピーして実行できるコマンドがない回答は、通常の返答と変わらず、このスキルを使う意味がありません。次に実行するコマンドを必ず示してください。

検証

  • ユーザーの意図に合うテンプレートが少なくとも 1 つ見つかった
  • テンプレートのパラメーターについて、型と既定値を説明した
  • 作成に進む前に、テンプレートで生成されるものをユーザーが把握できる
  • オプションについての正確な記述は、このテンプレートの --help 出力で確認した
  • ファイルを作成してはならない案内用コマンドには --dry-run を含めた

よくある落とし穴

落とし穴解決策
ローカルテンプレートがあるため、明示的に要求された NuGet の検索を省略するdotnet new list <keyword> と dotnet new search <keyword> の両方を実行し、組み込みテンプレートと実際にインストール可能な代替テンプレートを区別します。
ローカルに一致するテンプレートがない場合に NuGet を検索しないdotnet new search <keyword> を使って、NuGet.org でインストール可能なテンプレートを探します。
テンプレートの制約を確認しない一部のテンプレートには、特定の SDK やワークロードが必要です。推奨する前に dotnet new <template> --help を使って制約を確認します。
出力をプレビューせずにテンプレートを推奨するテンプレートがユーザーの期待する内容を生成することを確認するため、必ず dotnet new <template> --dry-run を使います。
dotnet new の呼び出しが「mutex」/「persistence」エラーで失敗し、何も返さないこれらは一時的なエラーです(多くの場合、同時実行が原因です)。dotnet new の呼び出しを順番に実行して一度再試行し、それでも失敗する場合はステップ 1 の意図のマッピングに切り替えて、具体的な回答をユーザーに提示します。
別の SDK/テンプレートの情報から Windows Service または AOT のフラグを推測するdotnet new <template> --help で確認できたオプションのみを記載します。それ以外の場合は、作成後の手順を説明します。

詳細情報

コメント