template-smart-defaults について
`dotnet new` プロジェクトの計画時に、未指定の関連パラメーターへ一貫した既定値を補うスキルです。明示された選択を維持し、既定値の記録と正確なコマンドを出力します。
主な機能
- 01未設定の関連パラメーターを補完
- 02明示された選択の維持
- 03既定値の理由を説明
- 04既定値の記録とコマンドを出力
活用シーン
- 01未指定オプションのあるプロジェクト計画
- 02選択済みパラメーターに応じた値の決定
- 03安全な助言用コマンドの準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dotnet/ skills --skill template-smart-defaultsインストール後、Claude Code で/template-smart-defaultsを入力して読み込まれたか確認します。
詳細
テンプレートのスマートな既定値
このスキルは、dotnet new プロジェクトを作成する際に、複数のパラメーターにまたがる既定値をエージェントが補完できるようにします。以下のルールは、関連するパラメーターの整合性を保つためのガイダンスとして機能します。未設定の項目だけを補完し、ユーザーが明示的に設定した値を上書きすることはありません。
使用する場合
- ユーザーがプロジェクトの作成を依頼したものの、関連するパラメーターを指定していない場合
- ユーザーが選んだパラメーターから、別のパラメーターに妥当な値を設定できる場合
- 特定の既定値を選んだ理由を説明する必要がある場合
使用しない場合
- ユーザーが実際にプロジェクトを作成したい場合 —
template-instantiationに案内してください - ユーザーがテンプレートを探したり比較したりしたい場合 —
template-discoveryまたはtemplate-comparisonに案内してください - ユーザーがカスタムテンプレートを作成または検証したい場合 —
template-authoringまたはtemplate-validationに案内してください
入力
| 入力 | 必須 | 説明 |
|---|---|---|
| テンプレートの短縮名 | はい | プロジェクトの作成元となるテンプレート(例:webapi) |
| すでに選択されているパラメーター | はい | ユーザーが明示的に設定したパラメーター値 |
| 選択可能な項目 | 推奨 | dotnet new <template> --help に表示されるパラメーター名と選択肢 |
ワークフロー
- ユーザーが明示的に設定したパラメーターを収集します。
- 以下の各ルールは、対応するパラメーターが未設定の場合に限って適用します。ユーザーが明示的に設定した値は上書きしないでください。
- ユーザーが正確なコマンドを求めている場合は、
dotnet new <template> --helpを使って選択したパラメーター名と選択肢を確認します。この確認ではファイルは作成されず、アドバイスのみを求められた場合でも実行する価値があります。正確なオプション名を示さない概念的な説明の場合に限り、省略してください。 - 必須の出力を2つ提示します(以下を参照)。これにより、このスキルは機能しないままではなく、確実に役立つものになります。
「ファイルを作成しないで」と指定されたアドバイスのみの依頼では、表示するコマンドの末尾に --dry-run を追加し、安全に実行できるようにします。シナリオで名前付きの例が必要なのにユーザーが名前を指定していない場合は、短く説明的なサンプル名を選び、Source = rule と記載します。ユーザーが明示的に指定した選択肢のみを含むコマンドを求めている場合や、名前を指定しなくてもテンプレートでその選択肢を安全に示せる場合は、名前を追加しないでください。
必須の出力
必ず、次の順序で両方を出力します。
A. 「適用したデフォルト」ログ — パラメーターごとに1行記載し、保持した明示値(Source = user)とルールに基づいて補った未指定値(Source = rule)の両方を含めます。ユーザーがすべての選択を確認し、変更できるようにします。
| パラメーター | 値 | ソース | 理由 |
|---|---|---|---|
--framework | net10.0 | rule | --aot による Native AOT には、AOT に対応する最新の TFM が必要です |
--auth | Individual | user | 明示的に要求されたため、変更せずに保持しました |
--name | AotWorker | rule | この名前付きサンプル用に、内容が分かる名前を追加しました |
明示値には Source = user(上書きはしません)、未指定値の補完には Source = rule を使用します。
B. 実行する正確な dotnet new コマンドラインを1つ — 実際に指定するフラグのみを含めます。指定しないと決めたフラグ(例:HTTPS を有効にする場合の --no-https や、コントローラーを使う場合の Minimal API フラグ)は記載しないでください。省略したフラグについて何も述べないことが、明確で適切な意思表示になります。
テンプレートのヘルプに明示的に要求されたフラグがある場合は、値がテンプレートのデフォルトと同じでも、必ずそのフラグを出力します。これにより、意図を明示し、再現できるようになります(例:--auth None)。省略するのは、実際には指定しない推定デフォルトに限ります。ブール型のスイッチは true を付けずに指定します。
作成時の AOT と公開時の AOT。
--aotは、対応するテンプレートでのみ使用できるdotnet newフラグです。特定のテンプレートで使用できるかどうかを推測せず、必ずdotnet new <template> --helpで確認してください。--publish-aotというテンプレートフラグはありません。公開時に Native AOT を有効にするには、dotnet publishで MSBuild プロパティPublishAot=trueを指定するか、.csprojに設定します。テンプレートが実際に--aotを提供している場合に限り、フレームワークのルールを適用します。
ルール
| ルール | 適用するデフォルト | 理由 |
|---|---|---|
--aot が設定されていて(--help で公開されるすべてのテンプレートが対象)、--framework が未設定 | テンプレートが提供する、AOT に対応した最新のフレームワークを --framework に設定します | Native AOT には、AOT に対応した新しいターゲットフレームワークが必要です。最新のものを使えば、ビルドエラーを避けられます。(ワークスペースまたは global.json で固定されているフレームワークは設定済みとみなします。AOT と互換性がない場合を除き、そのまま保持してください。) |
--auth が None 以外 | --no-https を指定しません | 認証フロー(Cookie、トークン、リダイレクト)には HTTPS が必要です。無効にすると認証が機能しなくなります。 |
--use-controllers が設定されている | Minimal API のフラグも指定することはしません | コントローラーと Minimal API は相互排他的なプログラムモデルです。両方を指定すると矛盾します。 |
| ユーザーが値を明示的に設定している | そのまま保持します | スマートデフォルトで補うのは未指定の項目だけです。明示されたユーザーの意図は常に優先されます。 |
| 助言のみを行うコマンドでファイルを作成してはならない | --dry-run を追加します | エージェントの動作だけでなく、コマンド自体がファイルを書き込まない制約を守る必要があります。 |
コントローラーが明示的に要求された場合、コマンドには --help に表示されるコントローラーオプションを含める必要があります。コントローラーの使用を説明するだけで、オプションを指定しないのは不完全です。
検証
- 行ごとにソース(user/rule)と理由を含む「適用したデフォルト」ログを出力した
- 実際に指定するフラグのみを記載した、正確な
dotnet newコマンドラインを1つ出力した - ユーザーが明示的に設定したパラメーターを上書きしていない
- 未指定のパラメーターのみを補完した
- 助言のみを行うコマンドの正確な内容も含め、正確なパラメーター名と選択肢を
dotnet new <template> --helpで確認した - ファイルを作成しない助言用コマンドに
--dry-runを含めた - ブール型のスイッチに末尾の
trueを付けずに出力した
よくある落とし穴
| 落とし穴 | 解決策 |
|---|---|
| ヒューリスティックを強制ルールとして扱う | これらはガイダンスであり、検証ではありません。パラメーター名はテンプレートによって異なるため、必ず dotnet new <template> --help で選択肢を確認してください。 |
| 明示されたユーザーの値を上書きする | 対象のパラメーターが未設定の場合にのみルールを適用してください。 |
| フラグ名を決めつける | 正確なフラグはテンプレートごとに異なります。必ず --help で確認してください(たとえば、--aot は --help に記載されている場合にのみ使用でき、コントローラーでは --use-controllers を使用します)。 |
| テンプレートがサポートしていないフレームワークを選ぶ | 任意の最新バージョンではなく、テンプレートの --framework の選択肢に含まれる最新のフレームワークを使用してください。 |
| 「ファイルを作成しない」と指定された後に通常の作成コマンドを表示する | 表示するコマンドを安全に実行できるよう、--dry-run を追加してください。 |
詳細情報
- dotnet new — CLI リファレンス
- Native AOT deployment — AOT のフレームワーク要件