mcpField
T
template-smart-defaults

template-smart-defaults

github.com/dotnet开发5.8k3.0k 次安装1 天前更新
代码仓库

关于 template-smart-defaults

此 Skill 帮助 Agent 规划 `dotnet new` 项目时,为未指定的相关参数补充一致默认值。它保留用户明确选择,并要求输出默认值记录和准确命令。

主要功能

  1. 01补充相关的未设参数
  2. 02保留用户明确选择
  3. 03说明默认值的依据
  4. 04输出默认值记录和命令

适用场景

  1. 01规划选项未指定的项目
  2. 02根据已选参数确定关联值
  3. 03准备安全的建议命令

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/template-smart-defaults确认已加载。

详细介绍

模板智能默认值

此技能可帮助 Agent 在创建 dotnet new 项目时补全跨参数默认值。以下规则是用于保持相关参数一致的指导性启发式规则——它们只补全缺失项,不会覆盖用户明确设置的值。

适用场景

  • 用户要求创建项目,但未指定相关参数
  • 用户选择的某个参数意味着另一个参数应采用合理的值
  • 需要解释为何选择了某个特定默认值

不适用场景

  • 用户想要实际创建项目——转到 template-instantiation
  • 用户想要查找或比较模板——转到 template-discovery 或 template-comparison
  • 用户想要编写或验证自定义模板——转到 template-authoring 或 template-validation

输入

输入必填说明
模板简称是将用于创建项目的模板(例如,webapi)
已选择的参数是用户已明确设置的参数值
可用选项推荐dotnet new <template> --help 提供的参数名和选项

工作流

  1. 收集用户已明确设置的参数。
  2. 仅在相应参数尚未设置时应用以下规则——绝不覆盖用户明确设置的值。
  3. 只要用户要求提供精确命令,就根据 dotnet new <template> --help 确认所选参数名和选项。此项检查不会创建文件;即使只是提供建议,也值得进行。只有在概念性说明不涉及精确选项名时,才可跳过。
  4. 输出两个必需结果(见下文)——这正是该技能能发挥决定性作用而非形同虚设的关键。

对于要求“不要创建文件”的仅提供建议类提示,在显示的命令末尾追加 --dry-run,确保命令可以安全运行。如果某个场景需要使用命名示例,而用户未提供名称,请选择简短且能描述用途的示例名称,并将其标记为 Source = rule。如果用户要求的命令只能包含明确指定的选项,或者模板无需名称即可安全演示这些选项,则不要添加名称。

必需输出

始终按以下顺序输出两项:

A.「已应用的默认值」日志——每个参数占一行,既包含你保留的显式值(Source = user),也包含你按规则填补的缺省值(Source = rule),以便用户查看并调整每项选择:

ParameterValueSourceWhy
--frameworknet10.0ruleNative AOT(来自 --aot)需要最新的、支持 AOT 的 TFM
--authIndividualuser用户明确要求——保持不变
--nameAotWorkerrule为这个命名示例添加描述性名称

显式值使用 Source = user(绝不覆盖),按规则填补缺省值使用 Source = rule。

B. 要运行的唯一一条、完整的 dotnet new 命令行——只包含实际传入的标志。不要列出你决定不传入的标志(例如,保留 HTTPS 时不要提及 --no-https;使用控制器时不要提及 minimal-API 标志)。不提及省略的标志,正是明确无误的信号。

如果用户明确要求了某个标志,且实际查看到的模板帮助中提供了该标志,则始终输出该标志,即使其值与模板默认值相同;这样可以明确展示用户意图,并确保结果可复现(例如 --auth None)。只有未实际传入的推断默认值才省略。像 --no-https 这样的布尔开关直接传入,不带 true。

创建时启用 AOT 与发布时启用 AOT。 --aot 仅是提供该选项的模板上的 dotnet new 标志——务必查看 dotnet new <template> --help 进行确认,不要假设某个模板提供或不提供该选项。模板没有 --publish-aot 标志——发布时的 Native AOT 通过 MSBuild 属性 PublishAot=true 启用(通过 dotnet publish 或在 .csproj 中设置),而不是通过 dotnet new 启用。只有当模板确实提供 --aot 时,才应用框架规则。

规则
RuleDefault appliedRationale
已设置 --aot(仅限 --help 提供该选项的模板),且未设置 --framework将 --framework 设为模板提供的最新 AOT 兼容框架Native AOT 需要近期推出且支持 AOT 的目标框架;使用最新版本可避免构建失败。(工作区或 global.json 已固定的框架也视为已设置——除非与 AOT 不兼容,否则保留。)
--auth 不为 None不要传入 --no-https身份验证流程(Cookie、令牌、重定向)需要 HTTPS;禁用它会导致身份验证失效。
已设置 --use-controllers不要同时传入 minimal-API 标志控制器与 minimal API 是互斥的程序模型;同时传入会造成矛盾。
用户已明确设置某个值保持不变智能默认值只填补缺省项;始终以用户明确意图为准。
仅提供建议的命令不得创建文件添加 --dry-run命令本身必须遵守不写入文件的约束,不能只依赖 Agent 的行为。

用户明确要求使用控制器时,命令必须包含 --help 中显示的控制器选项;只说明使用控制器,却不传入该选项,并不完整。

验证

  • 已生成「已应用的默认值」日志,每行均包含 Source(user/rule)和理由
  • 已输出唯一一条完整的 dotnet new 命令行,且仅列出实际传入的标志
  • 未覆盖用户明确设置的任何参数
  • 仅填补了未设置的参数
  • 已根据 dotnet new <template> --help 确认准确的参数名称和可选值,包括仅提供建议的准确命令
  • 不创建文件的建议命令包含 --dry-run
  • 布尔开关未在末尾带上 true

常见问题

问题解决方案
将启发式规则当作强制规则这些是指导规则,而非验证规则。务必根据 dotnet new <template> --help 中的选项进行确认,因为参数名称因模板而异。
覆盖用户明确指定的值仅在目标参数未设置时应用规则。
假定标志名称标志名称因模板而异——务必通过 --help 确认(例如,只有在 --help 列出 --aot 时才有此标志;控制器使用 --use-controllers)。
选择模板不支持的框架使用模板的 --framework 选项中列出的最新框架,而不是随意选择最新版本。
在“不要创建文件”后仍显示普通创建命令添加 --dry-run,确保所显示的命令可以安全执行。

更多信息

评论

支持 Markdown