create-skill-test
作者 dotnetcreate-skill-test 用于为 dotnet/skills 中的 agent 技能搭建 eval.yaml 测试文件骨架。可用它来创建技能测试、定义场景、fixtures、断言和 rubric,并降低评测设计中的过拟合风险。它不适合用于运行现有测试、排查 validator 报错或编写 SKILL.md 文件。
该技能得分为 62/100,说明它可以上架,但建议谨慎使用:它为目录用户提供了一个真实、聚焦的 eval.yaml 测试文件搭建流程,不过适用范围较窄,而且更偏向特定仓库,不如通用型技能那样可复用。
- 触发条件清晰:前言明确说明它用于创建 eval.yaml 测试文件、添加场景、设置 fixtures,以及检查过拟合风险。
- 流程足够具体:正文包含明确的输入、适用/不适用场景说明,以及带约束条件的多步骤流程。
- 对 dotnet/skills 贡献者的安装决策价值较高:它引用了 validator 检查和仓库约定,减少了通用提示带来的猜测成本。
- 它属于实验性、测试导向内容,并且只针对 dotnet/skills 的约定,离开该仓库后可能不太通用。
- 没有附带脚本、参考资料或支持文件,用户只能依赖文档本身来完成实现细节。
create-skill-test 技能概览
create-skill-test 是一个用于构建 dotnet/skills 仓库中 agent skills 的 eval.yaml 测试文件的脚手架与校验辅助工具。它面向的是那些需要一个可靠起点来编写 skill 测试的人,而不是泛泛地用来“写一个测试”的通用提示词。它的主要作用,是把目标 skill、plugin 名称和场景想法,转化成符合仓库规范的测试结构,并附带 fixtures、断言和 rubric,尽量降低过拟合风险。
create-skill-test 更适合已经明确知道要评估哪个 skill、并且需要快速产出一个符合仓库规则的测试文件的作者。如果你只是想运行测试、排查 validator 失败,或者从零开始写 skill instructions,它就不太合适。
create-skill-test 的用途
当你要创建新的 eval 文件、为现有文件补充更多场景,或者检查自己的 rubric 是否过于依赖某一种精确输出时,就可以使用 create-skill-test。对于 create-skill-test for Skill Testing 这类流程来说,它尤其有用,因为测试设计的质量和 YAML 结构本身同样重要。
它能帮你避开什么问题
它最大的价值,是帮你避开脆弱的 eval:缺少必填字段、skill 路径不匹配、fixture 组织混乱,以及 rubric 文案不小心把某种措辞当成了正确答案,而不是去衡量真实行为。如果你希望测试在目标 skill 演进后依然有用,这一点就很关键。
它不能替代什么
它不能替代 skill-validator,也不能帮你编辑 SKILL.md 文件。如果你的目标是诊断一个坏掉的测试运行,或者调试 validator 输出,那就不是它的使用场景。
如何使用 create-skill-test 技能
安装并打开源 skill
使用 npx skills add dotnet/skills --skill create-skill-test 安装 create-skill-test。然后先阅读 SKILL.md,因为里面写明了工作流、输入要求,以及在你向模型请求生成内容之前,先判断请求是否有效的边界条件。
给这个 skill 准确的测试需求
一份好的 create-skill-test install 请求,不只是说“做一个测试”而已。你需要提供 skill 名称、plugin 名称、要验证的行为,以及任何场景约束。这个 skill 期望的输入,类似于 plugins/<plugin>/skills/ 下的目标 skill,所以命名要足够精确。
更好的需求描述可以像这样:
- Skill:
foo-bar - Plugin:
dotnet-msbuild - Goal: 验证 agent 能生成有效摘要,并拒绝不受支持的路径
- Scenario: 第一次使用、只提供了部分上下文
- Fixture need: 一个最小输入文件和一个边界情况文件
这样一来,create-skill-test usage 流程就有足够结构去生成一个有用的 eval,而不是一个泛泛的版本。
阅读真正相关的仓库部分
先看 SKILL.md,然后如果仓库里有,再检查 README.md、AGENTS.md、metadata.json,以及附近的 rules/、resources/、references/ 或 scripts/ 文件夹。在这个仓库快照里,只有 SKILL.md 被展示出来,所以 skill 定义本身就是最主要的事实来源。
迭代场景和 rubric
用第一版结果来检查测试是否真的在衡量你想要的行为。如果 rubric 奖励的是措辞而不是结果,就把它收紧;如果场景太宽泛,就拆分;如果这个 skill 只需要一条 happy path,就保持 eval 尽量小,不要为了“完整”硬加额外案例。
create-skill-test 技能常见问题
create-skill-test 只适用于 dotnet/skills 吗?
是的,它是围绕 dotnet/skills 仓库的约定,以及 plugins/<plugin>/skills/ 的目录结构来设计的。你当然可以把这个思路迁移到别处,但当你的仓库遵循相同的结构和验证预期时,create-skill-test 指南才最有价值。
我应该用它代替普通提示词吗?
当你想要一个可重复、结构更稳的 eval 脚手架,并且尽量减少结构性错误时,用 create-skill-test。普通提示词也能描述测试,但在仓库特定约定、fixture 放置位置,以及过拟合检查这些方面,通常会更弱。
它对新手友好吗?
如果你能识别目标 skill,并用自然语言讲清楚场景,那它是友好的。若你说不出 plugin 名称、skill 路径,或者被测行为是什么,那就不太友好,因为这些输入会直接决定生成结果。
什么时候不该用它?
不要把 create-skill-test 用在运行测试、排查 validator 错误,或者编写新 skill 上。这些都是相邻但不同的工作流,工具和成功标准也不一样。
如何改进 create-skill-test 技能
提供更窄、更明确的输入
create-skill-test 的最佳结果来自具体场景,而不是宽泛意图。比如“测试 skill 在缺少上下文时能否返回安全回退结果”就比“做一个全面的 eval”更强,因为它清楚地告诉 skill:什么行为重要,什么内容不应该被过度加分。
要求 rubric 质量,而不只是 YAML
如果你只要求结构,最后可能得到一个技术上有效、但仍然容易过拟合的文件。你要明确说明什么算成功、什么算失败、哪些细节只是附带信息。这样通常是提升 create-skill-test for Skill Testing 结果最快的方式。
生成后检查是否过拟合
检查断言是否在奖励某一种固定措辞、固定顺序,或者某个完全一致的示例字符串——除非这种精确度确实是必要的。好的 eval 衡量的是 skill 应该保持的行为,而不是某次运行里碰巧生成的字面表述。
根据 validator 反馈继续收敛
如果第一次输出没有通过 validation,把具体错误和对应的 YAML 片段一起反馈回去。通常这样比把整个需求重新说一遍,更容易得到更好的第二轮结果。
