cheat-scorelisted
Install: claude install-skill LiHongwei-cn/lihongwei-cn
# /cheat-score — 单稿打分
打分但**不预测**。用户用它快速看稿子的 composite,决定是否值得进入正式预测流程。
## Overview
```
[用户:打分这篇 draft.md]
↓
[读 draft.md + rubric_notes.md]
↓
[逐维度打 0-5 + 写一行理由 + 算 composite]
↓
[控制台输出:评分 + composite + 推荐下一步]
↓
[结束 — 不写任何文件]
```
## Constants
- **RUBRIC_PATH = rubric_notes.md** — 当前 rubric 来源
- **OUTPUT_DETAIL = full** — full: 含每维度理由;compact: 仅分数表
> 💡 调用时覆盖:`/cheat-score draft.md — OUTPUT_DETAIL: compact`
## Inputs
| 必填 | 来源 |
|---|---|
| `<draft-path>` | 用户作为参数传入;如缺失则在对话里询问 |
| `rubric_notes.md` | 用户项目根 |
| `.cheat-state.json` | 用户项目根(用于读当前 `rubric_version` 与 mode) |
## Workflow
### Step 1:前置检查
1. 读 `.cheat-state.json` → 不存在则提示用户先跑 `/cheat-init`,停止
2. 读 `<draft-path>` → 不存在或无内容 → 报错并停止
3. 读 `rubric_notes.md` 找到当前生效的公式段(一般在"当前评分维度"或"综合分公式"位置)
### Step 2:识别公式与维度
从 `rubric_notes.md` 解析出:
- 当前 rubric_version
- 维度列表与权重(如 `ER×1.5 + SR×1.5 + HP×1.5 + QL + NA + AB + SAT`)
- 归一化常数(如 `/ 8.5 × 2.0`)
- 每个维度的 0-5 含义(从"当前评分维度"段表格读)
如果 `rubric_notes.md` 格式与预期不符(用户手改过结构)→ 询问用户当前公式是哪一行,**不要自己猜**。
### Step 3:**delegate 到 blind sub-agent**(不再 inline 打分)
主对话已经被用户对话 / 已发数据 / 历史 retro 段污染——inline 打分等于带着后视镜判分。
改成**通过 Task tool 调 `/cheat-score-blind` sub-agent**,主 Claude 只做调度 + review。详见 [skills/cheat-score-blind/SKILL.md](../cheat-score-blind/SKILL.md)。
**Task prompt 模板**(**只能含**下面这些):
```
Spawn cheat-score-blind sub-agent.
Input:
script_path: <用户给的 draft path>
rubric_notes_path: rubric_notes.md
Task: 按 rubric_notes 当前公式给上面 script 打分。返回严格 JSON(见 cheat-score-blind SKIL