# 评分细则 Rubric

每个维度满分 25。扣分项能叠加，但该维度不低于 0。

---

## 维度 ① 规范（25 分）

| 检查项 | 扣分 | 判定条件 |
|---|---|---|
| 缺失 SKILL.md | **直接 0 分** | 根目录或压缩包里没有 `SKILL.md` |
| frontmatter 缺失 | **-15** | 文件开头没有 `---` 包裹的 YAML 头 |
| `name` 字段缺失或为空 | -8 | YAML 无 `name` 或 name: "" |
| `name` 违规字符 | -5 | 含大写、空格、下划线、中文 |
| `name` 超长 | -3 | > 64 字符 |
| `description` 缺失或为空 | **-15** | 无 `description` 字段 |
| `description` 超长 | -5 | > 1024 字符 |
| 含 Windows 风格路径 `\` | -2 | 正文出现 `scripts\foo.py` 这种写法 |
| SKILL.md 超长 | -3（每超 100 行 -1，最多 -5） | 正文 > 500 行 |
| 无 `# 标题` | -2 | markdown 正文没有一级标题 |

**P0 判定**：维度 ① 得分 < 10 分直接整体不合格，其他维度不再给加分机会。

---

## 维度 ② 触发（25 分）

### 2.1 打分项（满分 15）

| 检查项 | 扣分 | 判定条件 |
|---|---|---|
| description 用第一人称 | -5 | 出现 "I can"、"I'll"、"我能"、"我可以" |
| description 用第二人称指令 | -3 | 出现 "You can use this" / "你可以" |
| description 只写 WHAT 不写 WHEN | -5 | 无"use when" / "当用户说" / "triggers on" / "when working with" 等引导触发场景的措辞 |
| 触发词短语 < 3 个 | -3 | 引号包裹或逗号分隔的触发短语少于 3 个 |
| 触发词只有单个泛词 | -2 | 如 "helps with documents" 这种没有具体触发信号 |
| 技术术语不一致 | -2 | 同一概念混用多个词（如 "field"/"box"/"element"） |

### 2.2 触发实测（满分 10）

生成 10 个正例、5 个反例，实测 description 能否正确召回。

**正例生成规则**：用 skill 声称能解决的核心任务，编 10 条真实用户问法，覆盖以下句式各至少 1 条：
1. 口语化直球（"帮我 XX 一下"）
2. 动词开头的指令（"生成 XX"）
3. 名词开头（"XX 报告怎么写"）
4. 带场景的询问（"我想做 XX"）
5. 英文问法（if description 有英文触发词）

**反例生成规则**：编 5 条跟本 skill 高度无关、但用词相近的问法，检测是否误召回。例如评测的是 pdf skill，反例可以是 "帮我打开百度" / "查一下天气"。

| 实测得分 | 命中标准 |
|---|---|
| 10 分 | 正例 ≥9/10 命中 且 反例 ≤1/5 误触 |
| 7-9 分 | 正例 7-8/10 命中 且 反例 ≤2/5 误触 |
| 4-6 分 | 正例 5-6/10 命中 或 反例 3/5 误触 |
| 0-3 分 | 正例 <5/10 命中 或 反例 ≥4/5 误触 |

---

## 维度 ③ 内容（25 分）

| 检查项 | 扣分 | 判定条件 |
|---|---|---|
| 无"工作流 / 使用步骤"章节 | -5 | 找不到 Instructions / Workflow / 步骤 / Process 类标题 |
| 步骤含糊不具体 | -4 | 只说 "分析输入" "生成结果" 这种抽象动词，缺少具体指令 |
| 完全没有示例 | -5 | 没有 Example / 示例 / Examples 区块 |
| 示例只有输入没有输出 | -2 | 给了用户提问没给模型回答 |
| 无 "WHEN NOT" 说明 | -3 | 没说明什么场景不该用这个 skill（`Do NOT use`/`不要用于`） |
| 无失败场景处理 | -2 | 没说遇到哪类输入会出错或怎么降级 |
| 输出格式无模板 | -3 | 没给"报告用这个结构"之类的输出框架 |
| 混用多个备选方案 | -2 | "你可以用 A 或 B 或 C" 无默认推荐 |
| 含时间敏感信息 | -2 | "在 2025 年之前请使用旧 API" 这种 |
| 术语不一致 | -2 | 同一概念正文里用 ≥2 个不同说法 |

---

## 维度 ④ 可维护（25 分）

| 检查项 | 扣分 | 判定条件 |
|---|---|---|
| skill 名命名模糊 | -4 | 叫 `helper` / `utils` / `tools` / `my-skill` |
| 全部塞在 SKILL.md 没拆文件 | -3 | 正文 > 300 行且没有 reference.md / examples.md 等附件 |
| 引用深度 > 1 | -3 | `reference.md` 里又链到 `deep/other.md` 这种 |
| scripts/ 里的脚本无说明 | -3 | 有脚本但 SKILL.md 没写"要不要执行 / 怎么用" |
| 用 Windows 路径分隔符 | -3 | `scripts\foo.py` 这种反斜杠 |
| 没有版本或变更记录（可选） | -2 | frontmatter 或正文都没 `version` / `updated` 字段 |
| 目录/文件名含空格或非 ASCII | -3 | 如 `my skill/` 或 `技能.md` |
| 外部依赖没列清楚 | -3 | 用到 pdfplumber / playwright 等三方库但没说装什么 |
| 引用文件实际不存在 | -5 | 正文写了 "see [foo.md](foo.md)" 但文件没有 |

---

## 综合判定

| 总分段 | 判定 | 含义 |
|---|---|---|
| 85-100 | 优秀 | 可直接进生产，触发和执行质量都过关 |
| 70-84 | 合格 | 能用，但有若干 P1/P2 可以优化 |
| 50-69 | 需改进 | 至少有一个维度存在明显缺陷，必须修完 P0/P1 再用 |
| 0-49 | 不合格 | 结构或描述严重缺失，不建议上线 |

**硬否决规则**（以下任一命中，总分一律封顶 49）：
- 缺失 SKILL.md
- 缺失 frontmatter
- description 为空或 < 20 字符
- 正例命中率 < 50%
