2026 年走到现在,Agent Skill 已经成了 AI 领域的标配。
把个人经验沉淀成 SKILL.md,把团队最佳实践封装成可复用的技能包,这些都已经是很常规的操作了。最近在社区上看到有篇文章问了一个特别扎心的问题。
「一个 Skill 的『好坏』,到底由谁定义?评判它的标准又是什么?」
这个问题我是真的感同身受。
我自己陆陆续续沉淀了 上百 个自研的 Agent Skill,光 AI 测试领域的 skill,都沉淀了好几十个,从需求拆解、用例生成,到接口解析、脚本生成、失败诊断、报告产出,流水线编排,串起了接口和 UI 自动化的完整流程。
但每次迭代更新一个 Skill,我心里都在打鼓。
改了几行提示词,行为有没有变?跑一遍 demo 没报错,就敢发出去吗?下个版本还会好吗?
在测试领域,有一项铁规,绝不会允许一个没有用例、没有回归、没有质量门禁的系统直接上线。但到了 Skill 这件事上,几乎所有人都在裸奔。写完跑两下,感觉没问题,发布。
原因也不复杂。Skill 的本质是提示词工程,SKILL.md 改一个字,行为就可能漂移。而官方的评测指南(agentskills.io 上的 evaluating-skills)虽然描述了正确的循环,写真实用例、带着和不带 Skill 各跑一遍、给输出评分、汇总结果、迭代改进,但整套流程全靠手工,没有工具化,坚持不了几轮。
直到我看到了阿里开源的这个项目。
skill-up,阿里开源,用一句话来概括就是:The evaluation and evolution tool for Agent Skills,一款 Agent Skill 的评测工具。Go 语言写的,开源两个月,更新的很活跃。

它干的事,用测试人的话说,就是把软件测试那套方法论,完整地平移到了 Skill 上。
你可以用它验证 Skill 在真实 Agent Engine(如 Claude Code、Codex、Qoder CLI)中的功能 正确性,把失败转化为有针对性的修复,并在本地或 CI 中持续回归。
先看它给一个 Skill 项目规定的标准结构。
my-skill/
SKILL.md # Skill 定义文档,被测对象
evals/
eval.yaml # 评测入口配置(必须)
cases/ # 用例目录
basic-success.yaml # 每个文件是一个用例
edge-case-null.yaml
regression-001.yaml
fixtures/ # 测试资源(可选)
repos/ # 仓库模板
sample-project/
diffs/ # 补丁文件
null-check.patch
scripts/ # 评估脚本
check-output.sh
mcp/ # MCP 工具配置
github.json
眼熟吗?这就是一个标准的测试工程目录。
cases/ 是你的测试用例集,fixtures/ 是你的测试数据和脚手架,
eval.yaml 是评测的全局配置,定义了「在什么环境中、用什么 Engine、怎么评估」。
比如:
schema_version: v1alpha1
environment:
type: none
engine:
name: claude_code
model:
provider: anthropic
name: claude-sonnet-4-8
cases:
files:
- evals/cases/my-test.yaml
skill-up 将 Agent Skill 的评测与演进合为一个闭环:通过声明式 YAML 评测、隔离的多引擎运行、灵活的 Judge 和结构化报告,让质量可度量;再由 skill-upper 把失败转化为改进,自动修复或补充 eval 用例,并与你持续重跑和迭代。

同一套流程既可在本地运行,也可接入 CI;同时兼容 Anthropic evals.json 导入,并输出 JSON、JUnit 和 HTML 报告。
评测一个 Skill 的输出对不对,skill-up 支持三种 judge(判定器)。
| 判定方式 | 说明 | 测试人对应的概念 |
|---|---|---|
| rule_based | 规则匹配,文件是否存在、内容是否包含关键字 | 精确断言 |
| script | 跑自定义脚本,校验产物结构、跑语法检查 | 脚本校验 |
| agent_judge | 用另一个模型当裁判,按标准给输出打分 | LLM-as-a-Judge |
注意第三个。agent_judge 就是我们在大模型评测里反复讲的 LLM-as-a-Judge,用模型评模型的输出,这在 Agent 评测体系里已经是标配手段了,现在直接内置到了 Skill 测试工具里。
在 cases 中,每个 .yaml 文件定义一个评测用例,包含「发什么 prompt」和「怎么验证结果」。
大多数场景使用单轮 prompt 即可:
id: find-null-bug
title: 应该识别出空指针 bug
description: 验证 Skill 能在代码审查中发现 null 解引用问题
input:
prompt: |
Review the current diff and report findings.
context:
repo_fixture: evals/fixtures/repos/null-check-bug # 加载仓库模板
git:
init: true
checkout: main
apply_diff: evals/fixtures/diffs/null-check.patch # 应用补丁
constraints:
timeout_seconds: 180
max_turns: 8
expect: # 基本门槛检查
must_contain:
- "null"
- "bug"
must_not_contain:
- "LGTM"
exit_code: 0
judge: # 质量评估
type: rule_based
success:
- output_contains:
all: ["null", "bug"]
- exit_code: 0
当评测需要多次顺序交互时(例如迭代优化、阶段门控工作流、澄清循环),使用 input.turns 代替 input.prompt。
input:
turns:
- role: user
content: "用 Go 实现一个二分查找函数。"
post_condition:
must_contain_all: ["func", "binary"]
on_fail: fail
- role: user
content: "为刚才写的函数添加单元测试。"
post_condition:
must_contain_any: ["Test", "t.Run", "testing"]
on_fail: fail
看完文档我列了张翻译表,你会发现这门工具几乎没有学习成本。
| skill-up 里的概念 | 软件测试里的概念 |
|---|---|
| eval case | 测试用例 |
| fixtures | 测试夹具 / 测试数据 |
| judge | 断言体系 |
| --baseline | 基线对比 |
| regression case | 回归用例 |
| --iteration 多轮运行 | 多轮次测试 |
| JUnit XML / HTML 报告 | 测试报告 |
| CI 支持 | 持续集成 |
这不是巧合。Skill 评测面对的问题,非确定性输出怎么断言、怎么防止改动引入退化、怎么让质量评估可重复,就是我们在大模型测试里趟过的路。skill-up 只是把这些答案工程化成了 CLI。
所以我想说一句可能有点武断的判断。
Agent Skill 的质量保障,天生就该是测试人的主场。
写 Skill 的人很多是开发和算法背景,他们擅长把功能做出来。但「怎么证明它是对的、怎么保证它下次还对」,这是测试工程师吃了几十年饭的本事。
skill-up 仓库里自带了一个叫 skill-upper 的 Agent Skill,装完之后你用自然语言对话就能驱动整个评测流程。
# Claude Code 全局安装
npx skills add https://github.com/alibaba/skill-up/tree/main/skills/skill-upper -g -a claude-code -y
# Codex 全局安装
npx skills add https://github.com/alibaba/skill-up/tree/main/skills/skill-upper -g -a codex -y
安装这个 Skill 前不需要先安装 skill-up。skill-upper 在运行时会检查 skill-up 命令是否可用;如果缺失,它会引导 Agent 完成安装。
装好后在 Claude Code 里打开你的 Skill 项目,直接说。
Use skill-upper to evaluate this Skill.
Read SKILL.md, identify its most important behaviors, create realistic eval
cases with appropriate judges, validate the configuration, and run skill-up.
它会自己读你的 SKILL.md、识别核心行为、生成评测用例、跑完评测、给你一份失败分析。
curl -fsSL https://raw.githubusercontent.com/alibaba/skill-up/main/install.sh | bash
常用的几个命令。
skill-up run # 跑全部用例
skill-up run --engine codex # 指定引擎和模型
skill-up run --baseline # 开基线对比
skill-up run --parallelism 4 # 控制并行数
skill-up run --auto # 自动识别 Anthropic 的 evals.json
skill-up report --format html # 生成 HTML 报告
报告产物很齐全,grading.json、benchmark 对比、JUnit XML、HTML,直接可以挂进 CI 当质量门禁。
整个项目里我觉得最妙的是 skill-upper 这个套娃结构。
skill-upper 本身就是一个 Agent Skill,它的职责是给别的 Skill 做测试。
完整的循环是这样的。
对话生成评测用例
↓
skill-up 运行评测,产出结构化报告
↓
skill-upper 逐条读失败用例
↓
判断是 Skill 错了还是用例错了
├─ Skill 错 → 修 SKILL.md 和配套文件
└─ 用例错 → 修 eval case 和判定器
↓
把修好的 bug 沉淀成回归用例
↓
再跑,再迭代,直到重要行为全部通过
官方管这个叫 Eval-to-Evolution Loop,评测到进化的循环。翻译过来就是测试左移加上持续回归的 Agent 版本。报告变成修复,修复变成回归用例,每一轮迭代都让 Skill 和它的评测集一起变强。
这个思路跟我在《AI 测试实战系列》里反复强调的「bad case 回流」完全是一回事,只不过它把整个循环自动化了。
在 AI Agent 中打开目标 Skill 项目。目标项目至少应包含:
my-skill/
SKILL.md
然后直接给 Agent 一个明确任务:
使用 skill-upper 给这个 Skill 添加评测。
添加这个评测用例:
- 输入:写一个 hello world 的程序。
- 评测:是否包含 hello 和 world 打印。
然后运行 skill-up 完成校验和评测。
Agent 应该会生成类似结构:
my-skill/
SKILL.md
evals/
eval.yaml
cases/
basic.yaml
my-skill-workspace/
iteration-1/
result.json
当 evals/eval.yaml 位于包含 SKILL.md 的目录下时,skill-up 会在运行时 自动安装这个本地 Skill,通常不需要在 eval.yaml 里手动写 Skill 路径。
首次运行后,不必手工逐条解读报告,可以继续与 Agent 对话:
使用 skill-upper 检查最近一次 skill-up 的评测结果。
逐项诊断失败,修复 SKILL.md 或配套文件;如果评测覆盖不足,
补充或改进 eval 用例,然后重新运行 skill-up。
持续迭代直到评测通过,或说明仍然受阻的原因。
skill-upper 会根据 skill-up 的结构化结果驱动下一次修改。每轮迭代都会让 Skill 实现和 eval 评测集保持同步,使修复沉淀为回归保障,而不是一次性补丁。
最后讲讲我对这事的判断,给三类同学三个具体的动作。
1、有自己的 Skill 的,立刻建评测集
如果你像我一样囤了一堆自研 Skill,别再靠「跑一遍 demo 没报错」的玄学发布。给核心 Skill 配上 10-20 条真实场景的 eval case,接进 CI,每次改动自动回归。
2、团队里有 Skill 资产的,把质量门禁立起来
很多团队现在把内部规范、运维流程都封装成 Skill 分发。这些 Skill 一旦出错,影响的是整个团队的效率。谁来做质量把关?这事不该由写 Skill 的人自己说了算,既当运动员又当裁判,是测试里的大忌。测试同学主动把 Skill 评测体系搭起来,这就是新阵地。
3、还没写 Skill 的,评测思路照样值钱
就算你不写 Skill,skill-up 的整套评测设计,从用例怎么设计、非确定性输出怎么判定,到多引擎怎么对比、报告怎么结构化,就是一份现成的 Agent 评测方法论参考。做 AI 测试的同学把它拆开看一遍,比读十篇概念文章有用。
我一直有个观点,AI 时代测试岗的价值不会消失,只会换地方。
以前我们测函数、测接口、测页面,现在多了测模型、测 Agent、测 Skill。被测对象一直在变,「怎么证明它是对的」这个问题永远在。
工具在变,方法论是通的。你在软件测试里攒下的每一分功力,在 Agent Skill 这个新战场上都作数。
skill-up 的地址放这了。
👉 GitHub,https://github.com/alibaba/skill-up
👉 用户手册(中文),https://alibaba.github.io/skill-up/zh/
觉得有用帮忙点个 Star,也欢迎转给团队里管 Skill 资产的同学。
我是狂师,公众号长期分享 AI 测试提效实战。最近我做了一个重大决定,将 AI 测试开发学习路线开源了:https://github.com/zhoujinjian/ai-testing-guide

并且与开源项目同步配套上线了一款免费在线学习网站👉:https://ai.testfather.cn/

放心食用,觉得有用,就帮忙点个 Star 吧 ⭐