# Skill Tester Yashu

> 对指定 Skill 进行真实运行测试（正常场景），输出测试报告。激活条件：用户消息必须包含以下关键词之一--`skill真实测试`、`跑一下这个skill`、`测试这个skill`、`真实测试skill`、`skill功能测试`。

- Skill: `steelan9199/skill-tester-yashu` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds add steelan9199/skill-tester-yashu`
- Raw SKILL.md: https://api.skillmd.com/api/skills/steelan9199/skill-tester-yashu/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: steelan9199 (https://skillmd.com/u/steelan9199)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/steelan9199/skill-tester-yashu

---


# 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`
- 详细流程参考 [测试执行指南]($SKILL_DIR/references/test-execution.md)
- 报告格式参考 [报告模板]($SKILL_DIR/references/report-template.md)

## 全局前置条件

| 前置条件   | 说明                                                |
| ---------- | --------------------------------------------------- |
| 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" | 启动分阶段测试：先静态检查与凭证预检，再执行正常场景并输出第一阶段报告 |

## 文档索引

| 文档                                                          | 内容                                |
| ------------------------------------------------------------- | ----------------------------------- |
| [检查脚本说明]($SKILL_DIR/references/check-script.md)         | check.js 参数、输出结构与功能解析   |
| [依赖检测指南]($SKILL_DIR/references/dependency-detection.md) | 外部依赖识别、索要话术、凭证预检    |
| [测试执行指南]($SKILL_DIR/references/test-execution.md)       | 分阶段执行、子 agent 协议、熔断机制 |
| [评判标准指南]($SKILL_DIR/references/evaluation-criteria.md)  | 契约验证与通用维度评分              |
| [报告模板]($SKILL_DIR/references/report-template.md)          | 各阶段报告格式与模板变量            |

## 分阶段测试工作流程

| 阶段  | 名称     | 执行内容                                                               | 输出报告                                               |
| ----- | -------- | ---------------------------------------------------------------------- | ------------------------------------------------------ |
| 阶段0 | 预检     | 确认目标目录、运行静态检查、检测外部依赖、索要缺失凭证、预检凭证有效性 | 预检摘要（直接输出，不写入文件）                       |
| 阶段1 | 正常场景 | 为每个功能生成并执行 NORMAL 场景                                       | `$TARGET_SKILL_DIR/{skill-name}-test-report-normal.md` |

> **核心原则**：测试是真实运行，不是静态分析。但用户可见的产出必须分阶段交付，禁止长时间无输出。

## 功能识别规则（全量覆盖）

阶段0 必须从目标 skill 的 `SKILL.md` 中提取完整的可测试功能列表，作为后续测试的基准。

### 识别优先级

```
AI 从文档内容自主推断  >  全脚本索引清单（表格）  >  触发映射表（表格）
```

### 识别步骤

1. **AI 自主分析**：完整阅读 `SKILL.md` 全文，从功能概述、使用方式、脚本文档索引等所有章节中提取可测试的功能点
2. **表格补漏**：对照「全脚本索引清单」表和「触发映射」表，检查是否有未被步骤 1 覆盖的脚本/触发词，补充到功能列表
3. **去重合并**：将步骤 1 和步骤 2 的结果去重合并，形成最终功能列表
4. **标注来源**：每个功能标注识别来源（AI 分析 / 脚本清单 / 触发映射），便于报告追溯
5. **提取预期输出**：为每个功能确定"预期输出"--优先从目标 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 或关键字段       |

### 匹配判定

| 判定     | 条件                                                     |
| -------- | -------------------------------------------------------- |
| 一致     | 实际输出的类型、核心内容与预期吻合                       |
| 部分一致 | 方向一致但存在偏差（格式略不同、部分字段缺失）           |
| 不一致   | 明显不符（预期返回数据但返回错误、预期生成文件但未生成） |

> **从宽判定**：只有明显不符才标"不一致"，模糊地带标"部分一致"。判定须附简要说明。

详细判定标准参考 [评判标准指南]($SKILL_DIR/references/evaluation-criteria.md) 第四节"产出物匹配判定"。

## 阶段0：预检

1. 确认 `$TARGET_SKILL_DIR` 存在且包含 `SKILL.md`
2. 读取 [检查脚本说明]($SKILL_DIR/references/check-script.md)
3. 运行 `cd "$SKILL_DIR/scripts"; node check.js "$TARGET_SKILL_DIR"`
4. **识别功能列表**：完整阅读目标 skill 的 `SKILL.md`，按照「[功能识别规则](#功能识别规则全量覆盖)」提取所有可测试功能，输出功能列表
5. 扫描目标 skill，识别外部依赖并一次性向用户索要缺失凭证
6. 使用目标 skill 内置凭证脚本预检凭证有效性
7. 输出预检摘要（结构检查结果、**完整功能列表**、依赖状态、凭证状态）

预检摘要输出后，立即进入阶段1。

## 阶段1：正常场景测试

1. **硬性规则**：基于阶段0的功能列表，**必须为每一个功能**生成至少 1 个 NORMAL 场景，禁止遗漏任何功能
2. 每个场景必须携带阶段0提取的"预期输出"信息
3. 严格串行执行所有 NORMAL 场景
4. 每个场景执行完毕后进行凭证失效熔断检查
5. 采集每个场景的实际产出物（文本/链接/路径），与预期输出对比并给出匹配判定（一致/部分一致/不一致）
6. 汇总结果并生成第一阶段报告（报告中须包含每个功能的"产出物对比"区块）
7. 告知用户报告路径，测试结束

**结束话术**：

```
第一阶段「正常场景」测试已完成，报告已保存至：{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
     -> 测试结束
```

