---
name: skill-evaluator
description: Evaluates Agent Skills across four dimensions (specification, trigger, content, maintainability) and outputs a scored report with prioritized fixes. Use when the user says "评测这个skill"、"审一下这个skill"、"skill质量检查"、"帮我看看这个skill写得怎么样"、"skill打分"、"evaluate skill"、"review skill"、"给这个skill打分", or whenever they want to assess the quality of a SKILL.md file, a skill directory, or a skill ZIP package.
---

# Skill Evaluator

## 用途

对一个 Agent Skill 做结构化评测，产出一份可直接用来改进的评分报告。
输入支持：Skill 目录绝对路径、单个 `SKILL.md` 文件路径、ZIP 包路径、直接粘贴的 SKILL.md 原文。

## 工作流程

严格按以下 6 步执行，不要跳步。

### Step 1：定位输入

根据用户给的内容识别输入类型：

| 输入形态 | 处理方式 |
|---|---|
| 目录路径 | `ls` 列出结构，读取 `SKILL.md`；同时检查 `reference.md`、`examples.md`、`scripts/` 是否存在 |
| `.md` 文件路径 | 直接读取 |
| `.zip` 文件路径 | `unzip -l` 看结构，解压到临时目录后读取 |
| 粘贴的原文 | 直接作为字符串分析 |

**如果找不到 SKILL.md，直接报错退出**，告诉用户文件缺失 —— 这是维度 ① 的硬伤。

### Step 2：解析 frontmatter

从文件开头提取 YAML frontmatter（`---` 包裹段）。
需要提取的字段：`name`、`description`、其他自定义字段。

记录以下事实：
- frontmatter 是否存在
- `name` 是否满足：非空、≤64 字符、只含小写字母/数字/连字符
- `description` 是否非空、是否 ≤1024 字符
- `description` 是否用第三人称写（出现 "I can" / "你可以用" / "我能" 视为违规）
- `description` 是否包含触发词列表（含 "当用户说" / "use when" / "triggers" / 引号包裹的短语 ≥3 个 视为合格）

### Step 3：逐维度评分

按 `rubric.md` 的评分细则逐条过一遍 4 个维度，每个维度记录：
- 得分（每个维度满分 25，总分 100）
- 命中的扣分项清单（带具体证据：哪一行、原文引用）

**不要只打分不说理由** —— 每一条扣分必须写清楚"扣在哪里、原文是什么"。

### Step 4：触发实测（维度 ② 核心）

构造 10 条"正例问法"和 5 条"反例问法"，逐条判定：
- 正例：一个真实用户会用这个 skill 时的问法。判 description 里的触发词是否能 cover。
- 反例：明显不该触发这个 skill 的场景。判 description 会不会误召回。

**给出命中率**（正例命中 / 10，反例误触发 / 5）。

触发词示例生成规则见 `rubric.md` 第 2 节。

### Step 5：输出报告

**严格使用下面的模板格式输出**，不得擅自调整结构：

```markdown
# Skill 评测报告：<skill-name>

**总分：XX / 100**　|　等级：<优秀 ≥85 / 合格 70-84 / 需改进 50-69 / 不合格 <50>

## 评分概览

| 维度 | 得分 | 判定 |
|---|---|---|
| ① 规范 | XX / 25 | <通过 / 有瑕疵 / 不通过> |
| ② 触发 | XX / 25 | <通过 / 有瑕疵 / 不通过> |
| ③ 内容 | XX / 25 | <通过 / 有瑕疵 / 不通过> |
| ④ 可维护 | XX / 25 | <通过 / 有瑕疵 / 不通过> |

## 触发实测

- 正例命中：X / 10
- 反例误触发：X / 5
- 问题问法举例：<列出未命中的正例与误触发的反例>

## 整改清单

### P0（必须修，不修直接不合格）
- [ ] <问题描述>
  - **位置**：<文件:行 或 frontmatter 的 xxx 字段>
  - **原文**：`<引用当前内容>`
  - **改成**：`<给出可直接复制的替换文本>`

### P1（强烈建议修，影响触发或效果）
- [ ] ...

### P2（锦上添花，有空再改）
- [ ] ...

## 修好后的关键片段参考

<如果 description 或 frontmatter 有问题，给出一份改造后可直接替换的完整片段>
```

### Step 6：保存报告（可选）

如果用户指定了输出路径就保存；没指定就直接在对话里输出 markdown。
默认文件名：`<skill-name>-评测报告-<YYYYMMDD>.md`。

## 四维度要点速查

| 维度 | 核心看什么 | 满分条件 |
|---|---|---|
| **① 规范（25）** | frontmatter 合法、SKILL.md 存在、命名规范、大小合理（≤500 行） | 无任何字段缺失或违规 |
| **② 触发（25）** | description 含明确触发词、第三人称、WHAT+WHEN 齐全 | 10 个正例全命中、0 个反例误触 |
| **③ 内容（25）** | WHEN / WHEN NOT 明确、有具体示例、失败场景有说明、术语一致 | 工作流清晰、示例可复现 |
| **④ 可维护（25）** | 命名清晰、进阶内容用 progressive disclosure 拆到外部文件、无时间敏感信息 | SKILL.md 主体精简、引用深度 ≤1 |

每项的具体打分细则见 [rubric.md](rubric.md)。
完整评测案例见 [examples.md](examples.md)。

## 执行约束

1. **证据优先**：每个扣分必须引用原文，禁止凭感觉打分。
2. **可执行优先**：整改清单里每一条都要给出"可直接复制替换"的改后文本，不要只说"建议优化"。
3. **不要修改原 skill**：评测是只读操作，除非用户明确说"帮我改"，否则只输出报告。
4. **语言**：默认用中文输出报告。如果被评测的 skill 是英文的，整改片段保持英文原味。
