mcpField
S
skill-eval-builder

skill-eval-builder

github.com/devclarityai测试与质量339 次安装1 周前更新
代码仓库

关于 skill-eval-builder

Skill Eval Builder 为 Skill 搭建小型评测,用真实案例衡量触发情况、输出有效性和运行时间。它面向希望生成可运行评测目录与评分表,而非大型框架的 Skill 作者。

主要功能

  1. 01在 Skill 旁创建评测文件
  2. 02测试应触发与不应触发的案例
  3. 03验证输出并检查时间预算
  4. 04评估分类门控

适用场景

  1. 01检查 Skill 是否按预期触发
  2. 02用命令验证 Skill 输出
  3. 03对照基准测量 Skill 运行时间
  4. 04评估 Skill 的分类门控

安装

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

$npx skills add https://github.com/devclarityai/devclarity-marketplace --skill skill-eval-builder

安装后在 Claude Code 中输入/skill-eval-builder确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
eval-anatomy.md
eval-dimensions.md
scripts/
classify-evals.py
run-evals.py
scaffold-evals.py

详细介绍

技能评估构建器

概述

为一项技能设置一个小型、真实的评估:在技能旁边创建一个 evals/ 文件夹,其中包含几个真实案例、一个可运行的脚本和一张评分卡。它衡量脚本无法确定的内容——该技能是否会在该触发时触发(并在不该触发时保持安静)、其输出是否有效,以及是否符合时间预算。

**核心原则:**评估是一个文件夹,而不是一个框架。保持小巧即可。

输入

  • 目标技能——路径或名称(包含其 SKILL.md 的目录)。
  • 几个真实案例——应该触发和不应该触发的提示词及真实输入;如有需要,帮助用户找到这些案例。
  • 需要关注的维度——默认使用触发和验证;如果合适,也可以加入耗时等维度。

步骤

  1. 阅读目标技能——查看其 SKILL.md、参考资料和脚本,以了解它的作用及产出。
  2. 从 references/eval-dimensions.md 中选择适用的维度。工作流技能 → 触发 + 耗时;能力型技能 → 以验证为主。
  3. 收集 3–5 个真实案例——应该触发和不应该触发的提示词,以及真实输入。务必至少包含一个保持安静的案例。
  4. 为每个案例定义“良好”标准——一个 fired_when 副作用检查、一条 validate 命令,以及基于真实基线的 budget_s(见 references/eval-anatomy.md)。
  5. 在技能旁边搭建评估文件:
    python3 "${CLAUDE_SKILL_DIR}/scripts/scaffold-evals.py" <target-skill-dir>
    
    然后用步骤 3–4 中的案例填充 evals/cases.md。
  6. 检查,然后运行基线:
    python3 <target-skill-dir>/evals/run.py --dry-run   # cases parse?
    python3 <target-skill-dir>/evals/run.py             # real run (calls claude -p)
    
  7. 报告评分卡及其保存位置。

测试分类门控

如果技能以分类器开头(例如,将功能请求分流到功能或缺陷,或决定是否继续),请测试该门控:

  1. python3 "${CLAUDE_SKILL_DIR}/scripts/scaffold-evals.py" <target> --classify
  2. 在 evals/classify-cases.md 中填写标签、门控自身的指令,以及真实的已标注示例(例如,最近 10 个跟踪器工单及其现有标签,作为真实基准)。参见 references/eval-anatomy.md。
  3. python3 <target>/evals/classify.py → 输出准确率 + 混淆情况评分卡。

输出格式

评分卡(维度 × 案例)以及保存的文件路径:

┌───────────────────────────────┬──────────┬────────┬────────────────────┐
│ Case                          │ Fires?   │ Valid? │ Duration vs budget │
├───────────────────────────────┼──────────┼────────┼────────────────────┤
│ "add tests for X"             │ ✅       │ ✅     │ 40s / 60s ✅       │
│ "refactor Y" (shouldn't fire) │ ✅ quiet │ –      │ –                  │
└───────────────────────────────┴──────────┴────────┴────────────────────┘

保存到 <target-skill>/evals/(cases.md、run.py、results.md)。

指南

  • 优先使用可观察的副作用来判断是否触发(例如技能生成的文件),而不是搜索文本内容。
  • 多次运行的结果不会逐字节完全相同——技能评估会运行模型,这种差异正是你要衡量的内容。不要伪造确定性,也不要评估确定性脚本已经保证的内容(应改为对脚本进行单元检查)。
  • 保持在 3–5 个真实案例,并至少包含一个保持安静的案例。参见 references/eval-anatomy.md。

文件

  • scripts/scaffold-evals.py — 创建 evals/{cases.md, run.py, results.md},或使用 --classify 创建 classify-* 文件集。
  • scripts/run-evals.py — 通过 claude -p 运行案例,为每个案例计时,检查触发和验证情况,并打印/保存评分卡。--dry-run 会解析内容而不消耗令牌。
  • scripts/classify-evals.py — 通过 claude -p 对已标注示例进行分类,并报告准确率 + 混淆情况。--dry-run 会解析内容而不消耗令牌。
  • references/eval-dimensions.md — 维度选项及各维度的适用场景。
  • references/eval-anatomy.md — 案例格式、副作用模式和反模式。

如果脚本无法在此运行(需要 python3 和 claude CLI,或需要其他操作系统):不要放弃任务——评估只不过是一个 cases.md 加上一个小型运行器,因此可以使用任何可用工具运行案例并汇总评分卡。

评论

支持 Markdown