# Cheat Score Blind

INTERNAL sub-agent for blind 7-dim rubric scoring.

- Repository: https://github.com/XBuilderLAB/cheat-on-content (7435 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-10-26
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add XBuilderLAB/cheat-on-content --skill cheat-score-blind -g -a claude-code -y`
Codex: `npx skills add XBuilderLAB/cheat-on-content --skill cheat-score-blind -g -a codex -y`
Cursor: `npx skills add XBuilderLAB/cheat-on-content --skill cheat-score-blind -g -a cursor -y`
Gemini CLI: `npx skills add XBuilderLAB/cheat-on-content --skill cheat-score-blind -g -a gemini-cli -y`

## Description

INTERNAL sub-agent for blind 7-dim rubric scoring. **NOT a user-facing skill, do NOT invoke from main conversation.** Called via Task tool by cheat-score / cheat-predict / cheat-bump to get a context-isolated score on a script. Receives ONLY script_path + rubric_notes_path; refuses any other input. Outputs strict JSON: 9 dimensions × {score 0-5, confidence enum, one-line reason}. **Hard refuses to Read** .cheat-state.json, predictions/*, retro 段, or anything that could leak post-publish data. This is channel B in the 3-channel calibration model (A=main, B=blind sub, C=cross-model).

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# /cheat-score-blind, Channel B (blind scorer sub-agent)

> ⚠️ **这是子 agent，不是用户 skill**。只能由 `cheat-score` / `cheat-predict` / `cheat-bump` 通过 Task tool spawn。用户直接 trigger 没有意义, , 主对话已经被污染，调用 blind sub-agent 在主 context 里跑不构成隔离。

---

## Why this exists（绝不可省的背景）

cheat-on-content 的 7/9 维打分原本 inline 在主对话, , 但主 Claude 已经看过：
- 用户对话历史（含偶然提到的播放数 / 评论 / 情绪）
- 已发布作品的实绩数据
- 历史 `predictions/*.md` 含复盘段（**严重污染**）
- 用户的赞美 / 抱怨 / 期待

inline 打分 = **被污染的"盲"预测**。问题在 `cheat-bump` Phase 2 校准池重打时最严重：Claude 知道每条实绩才回追 TN/CC 分，rank 一致性可能 overfit 不是真信号。

**channel B 的角色**：用 Task tool 把打分动作丢进一个**全新 context**, , 这个 sub-agent 没看过主对话、没读过 state、没碰过 predictions/。它只看 script 全文 + rubric_notes.md，按 rubric 打分。

输出回传主对话后，主 Claude 自己对比、做最终决策。隔离的是**打分这个动作的输入**，不是决策权。

## 三 channel 模型

| Channel | 输入 | 用途 | 风险 |
|---|---|---|---|
| **A** = 主对话 | 全部上下文 | 跟用户交互、写 retro、决策 | 被实绩 / 用户态度污染 |
| **B** = blind sub-agent (this) | **只** script + rubric_notes.md | 给一份未受污染的打分作为 anchor | 仍是 Claude，RLHF prior 共享 |
| **C** = 跨模型 audit (`mcp__llm-chat__chat` to qwen-max) | 校准池数据 + 新公式 | bump 终局 sanity check | RPM 限制、模型差异、单点 |

A 决策时把 B 当对照看 disagreement，**不当真理**。C 只在 bump 终局调一次。

---

## Inputs（**唯一被允许的输入**）

| 必填 | 来源 | 说明 |
|---|---|---|
| `<script-path>` | 主 Claude 通过 Task prompt 显式传入 | `scripts/<id>.md` 全文 |
| `<rubric-notes-path>` | 同上 | 用户项目根 `rubric_notes.md` 当前 rubric 公式 + 维度定义 |

**仅此两个文件可读**。其他一切**硬拒绝**, , 见下方 "Hard refusals" 段。

## 禁止读取（hard list）

下面这些路径 / 模式 sub-agent **绝不能 Read**, , 即使主 Claude 在 Task prompt 里手滑塞进来，也要拒绝并在 JSON 输出标对应 `refusal` 码：

The rest: https://github.com/XBuilderLAB/cheat-on-content/blob/HEAD/skills/cheat-score-blind/SKILL.md
