| name | skill-tester-yashu |
| description | 对指定 Skill 进行真实运行测试(正常场景),输出测试报告。激活条件:用户消息必须包含以下关键词之一--`skill真实测试`、`跑一下这个skill`、`测试这个skill`、`真实测试skill`、`skill功能测试`。 |
| metadata | {"author":"Trae AI","updated":"2026-07-19","version":"0.4.0"} |
Skill Tester - Skill 真实测试器
功能概述
对任意 Skill 进行真实运行测试,按"正常"单阶段执行(阶段0预检 + 阶段1正常场景)。
每完成一个阶段立即输出一份可见报告,避免用户长时间等待无产出。
环境说明
| 变量 | 含义 |
|---|
$SKILL_DIR | 本 skill(skill-tester)所在目录 |
$TARGET_SKILL_DIR | 用户指定的被测试 skill 目录 |
- Shell 类型:PowerShell 5(命令分隔符统一使用
;,禁止使用 && 或 &)
- 静态结构检查脚本:
$SKILL_DIR/scripts/check.js
- 报告输出目录:
$TARGET_SKILL_DIR
- 详细流程参考 测试执行指南
- 报告格式参考 报告模板
全局前置条件
| 前置条件 | 说明 |
|---|
| Node.js | >=18.20.8,用于运行 $SKILL_DIR/scripts/check.js |
| 目标 Skill | $TARGET_SKILL_DIR/SKILL.md 必须存在且可读 |
全脚本索引清单
| 脚本 | 功能 |
|---|
$SKILL_DIR/scripts/check.js | 校验目标 skill 结构与 frontmatter 合法性(功能清单由主 AI 在阶段 0 自行分析) |
跨功能公共规则
| 规则 | 说明 |
|---|
| 全量覆盖 | 必须为阶段0识别出的每一个功能生成并执行测试场景,任何功能不得跳过(无适用场景需在报告中标注原因) |
| 分阶段交付 | 每阶段结束后必须立即输出报告,禁止连续执行多个阶段而不向用户汇报 |
| 严格串行 | 同一阶段内的所有场景必须逐个执行,禁止并发 |
| 真实执行 | 子 agent 必须真实调用目标 skill 的工具/API/脚本,禁止模拟 |
| 凭证失效即熔断 | 预检或执行中出现凭证失效,立即终止依赖该凭证的后续场景 |
| 脱敏显示 | 报告中的 token、secret 等敏感字段仅保留前后各 4 个字符 |
| 产出物对比 | 仅阶段1(正常场景),对每个功能采集"预期输出"与"实际输出"并做匹配判定,详见产出物对比规则 |
触发映射:用户说 -> AI 做
| 用户输入触发词 | AI 执行动作 |
|---|
| "skill真实测试" / "跑一下这个skill" | 启动分阶段测试:先静态检查与凭证预检,再执行正常场景并输出第一阶段报告 |
文档索引
分阶段测试工作流程
| 阶段 | 名称 | 执行内容 | 输出报告 |
|---|
| 阶段0 | 预检 | 确认目标目录、运行静态检查、检测外部依赖、索要缺失凭证、预检凭证有效性 | 预检摘要(直接输出,不写入文件) |
| 阶段1 | 正常场景 | 为每个功能生成并执行 NORMAL 场景 | $TARGET_SKILL_DIR/{skill-name}-test-report-normal.md |
核心原则:测试是真实运行,不是静态分析。但用户可见的产出必须分阶段交付,禁止长时间无输出。
功能识别规则(全量覆盖)
阶段0 必须从目标 skill 的 SKILL.md 中提取完整的可测试功能列表,作为后续测试的基准。
识别优先级
AI 从文档内容自主推断 > 全脚本索引清单(表格) > 触发映射表(表格)
识别步骤
- AI 自主分析:完整阅读
SKILL.md 全文,从功能概述、使用方式、脚本文档索引等所有章节中提取可测试的功能点
- 表格补漏:对照「全脚本索引清单」表和「触发映射」表,检查是否有未被步骤 1 覆盖的脚本/触发词,补充到功能列表
- 去重合并:将步骤 1 和步骤 2 的结果去重合并,形成最终功能列表
- 标注来源:每个功能标注识别来源(AI 分析 / 脚本清单 / 触发映射),便于报告追溯
- 提取预期输出:为每个功能确定"预期输出"--优先从目标 SKILL.md 中提取 skill 明确声明的产出(标注"SKILL.md声明");若 SKILL.md 未明确声明,由 AI 基于功能描述推断应有的产出(标注"AI推断")。预期输出用于阶段1报告中与实际输出做对比
输出要求
预检摘要中必须列出完整的功能列表,格式:
功能列表:
1. 功能名称A - 来源: AI分析, 脚本清单 - 对应脚本: xx.js - 预期输出: {产出描述}(来源: SKILL.md声明/AI推断)
2. 功能名称B - 来源: 触发映射 - 对应脚本: yy.js - 预期输出: {产出描述}(来源: SKILL.md声明/AI推断)
...
产出物对比规则
仅适用于阶段1(正常场景)。对每个功能的产出物进行"预期输出 vs 实际输出"对比,让用户一眼看到 skill 的真实产出效果。
预期输出
| 优先级 | 来源 | 标注 |
|---|
| 1 | 目标 SKILL.md 明确声明 | (SKILL.md声明) |
| 2 | AI 基于功能描述推断 | (AI推断) |
- 预期输出在阶段0功能识别时一并提取
- 始终标注来源,帮助用户判断不一致时是 skill 问题还是 AI 推断偏差
实际输出记录方式
| 产出类型 | 记录方式 |
|---|
| 文本类 | 直接记录文本内容 |
| 链接类 | 记录完整 URL(不下载) |
| 文件类 | 记录本地绝对路径(不复制) |
| 结构化数据 | 记录 JSON 或关键字段 |
匹配判定
| 判定 | 条件 |
|---|
| 一致 | 实际输出的类型、核心内容与预期吻合 |
| 部分一致 | 方向一致但存在偏差(格式略不同、部分字段缺失) |
| 不一致 | 明显不符(预期返回数据但返回错误、预期生成文件但未生成) |
从宽判定:只有明显不符才标"不一致",模糊地带标"部分一致"。判定须附简要说明。
详细判定标准参考 评判标准指南 第四节"产出物匹配判定"。
阶段0:预检
- 确认
$TARGET_SKILL_DIR 存在且包含 SKILL.md
- 读取 检查脚本说明
- 运行
cd "$SKILL_DIR/scripts"; node check.js "$TARGET_SKILL_DIR"
- 识别功能列表:完整阅读目标 skill 的
SKILL.md,按照「功能识别规则」提取所有可测试功能,输出功能列表
- 扫描目标 skill,识别外部依赖并一次性向用户索要缺失凭证
- 使用目标 skill 内置凭证脚本预检凭证有效性
- 输出预检摘要(结构检查结果、完整功能列表、依赖状态、凭证状态)
预检摘要输出后,立即进入阶段1。
阶段1:正常场景测试
- 硬性规则:基于阶段0的功能列表,必须为每一个功能生成至少 1 个 NORMAL 场景,禁止遗漏任何功能
- 每个场景必须携带阶段0提取的"预期输出"信息
- 严格串行执行所有 NORMAL 场景
- 每个场景执行完毕后进行凭证失效熔断检查
- 采集每个场景的实际产出物(文本/链接/路径),与预期输出对比并给出匹配判定(一致/部分一致/不一致)
- 汇总结果并生成第一阶段报告(报告中须包含每个功能的"产出物对比"区块)
- 告知用户报告路径,测试结束
结束话术:
第一阶段「正常场景」测试已完成,报告已保存至:{report-path}
测试结束。
全局错误处理
| 场景 | 处理方式 |
|---|
$TARGET_SKILL_DIR 不存在 | 提示用户路径无效,要求重新输入 |
$TARGET_SKILL_DIR 无 SKILL.md | 提示该目录不是有效的 skill,终止测试 |
$SKILL_DIR/scripts/check.js 不存在 | 提示 skill-tester 自身安装不完整,请重新安装 |
check.js 执行失败(非零退出码) | 检查 Node.js 是否可用,报告错误 |
check.js 返回内容不是合法 JSON | 输出原始 stderr 到报告,标注脚本异常 |
| AI 阶段0未识别到任何功能 | 在阶段1报告中标注"无可测试功能",终止测试 |
| 用户拒绝提供必需凭证 | 依赖该凭证的场景标记为"跳过(缺凭证)",其余场景正常测试 |
| 凭证预检:所有必需凭证均失效 | 直接终止测试,生成预检报告,标注"因基础凭证失效,测试终止" |
| 凭证预检:部分凭证失效 | 失效凭证相关的场景标记"跳过(凭证失效)",有效凭证覆盖的场景正常测试 |
| 执行中凭证失效(熔断触发) | 当前场景若已完成执行标记为"失败(凭证失效)",若尚未执行标记为"跳过(凭证失效)";后续依赖该凭证的场景标记"跳过(凭证失效)",已执行场景证据保留,生成报告 |
| 子 agent 执行超时或无响应 | 标记该场景为"失败(执行异常)",记录已采集的部分证据,继续下一个场景 |
| 子 agent 返回内容无法解析 | 将原始返回作为证据保留,判定为"失败(输出不可解析)" |
| 检测到授权保护信号 | 立即终止测试,记录触发输出到报告,标注"因授权保护,测试终止" |
使用示例
示例1:完整测试
用户:测试 feishu-docx 这个 skill
AI:
1. 阶段0:预检通过,功能列表 [上传Markdown, 下载Markdown, 解析链接, 获取token]
2. 阶段1:执行 4 个 NORMAL 场景 -> 生成 feishu-docx-test-report-normal.md
-> 测试结束