---
name: fair-score
description: Evaluates judge scoring fairness in competitions by detecting systematic bias (leniency/strictness) and contestant-specific anomalies (favoritism/prejudice) using statistical methods. Triggered when the user needs to analyze judge scoring data from a CSV file for fairness assessment.
allowed-tools: Bash
argument-hint: "<csv-path> [--threshold 2.0]"
---

# fair-score

## Instructions

该 skill 调用评委公平性评估脚本（`${CLAUDE_SKILL_DIR}/start.py`）。

### 运行前确认

在执行前，向用户确认以下信息（若未提供）：

1. **CSV 文件路径**（必须）
2. **偏见检测阈值**（可选，默认 `2.0`；评委人数较少时建议用 `1.5`）

### 输入数据格式要求

CSV 文件必须满足：
- **无表头**，三列：`评委ID, 选手ID, 分数`
- 每个评委必须对**所有选手**都有打分（不允许缺失值）
- 分数为数值型

示例：
```
A,1,85
A,2,90
B,1,80
B,2,88
```

若用户提供的文件格式不符，直接告知错误原因，不要尝试运行。

### 环境准备

首次运行前，执行以下命令安装依赖（幂等，可重复执行）：

```bash
bash ${CLAUDE_SKILL_DIR}/setup.sh
```

---

### 执行命令

**基础分析（默认阈值 2.0）：**
```bash
${CLAUDE_SKILL_DIR}/.venv/bin/python ${CLAUDE_SKILL_DIR}/start.py --input {csv_path}
```

**自定义阈值：**
```bash
${CLAUDE_SKILL_DIR}/.venv/bin/python ${CLAUDE_SKILL_DIR}/start.py --input {csv_path} --threshold {threshold}
```

**仅看综合报告（跳过偏见检测）：**
```bash
${CLAUDE_SKILL_DIR}/.venv/bin/python ${CLAUDE_SKILL_DIR}/start.py --input {csv_path} --no-bias-check
```

**导出报告为 CSV：**
```bash
${CLAUDE_SKILL_DIR}/.venv/bin/python ${CLAUDE_SKILL_DIR}/start.py --input {csv_path} --output {output_path}
```

---

### 输出解读

拿到命令执行结果后，用中文向用户解读，不要直接粘贴原始表格。

#### 1. 综合公平性排名（Final_Fairness_Score）

列出所有评委排名，对最高和最低分的评委重点说明原因。

| 分数区间 | 解读 |
|---|---|
| 0.85 ~ 1.0 | 非常公平，打分高度一致 |
| 0.70 ~ 0.85 | 整体公平，存在轻微偏差 |
| 0.55 ~ 0.70 | 中等，需关注其打分规律 |
| < 0.55 | 与整体共识差异显著，建议复核 |

#### 2. 系统性偏差（Bias_Score）

- 正值：该评委整体打分偏高（宽松）
- 负值：该评委整体打分偏低（严格）
- `|Bias| < 2`：正常范围；`2~5`：中等偏差；`> 5`：显著偏差
- 注意：系统性偏差不等于不公平，若 Consistency_Correlation 高，仅代表打分风格差异

#### 3. 一致性（Consistency_Correlation）

Pearson 相关系数，以中位数共识为基准：

| 范围 | 解读 |
|---|---|
| 0.9 ~ 1.0 | 与共识高度一致 |
| 0.7 ~ 0.9 | 基本一致 |
| 0.5 ~ 0.7 | 一致性一般，存在明显分歧 |
| < 0.5 | 与共识相关性弱，需重点关注 |

负值表示排名判断方向与整体共识相反。

#### 4. 偏差度（Deviation_MSE）

行 Z-score 标准化后的均方误差，已排除严厉度影响。越接近 0 越好。
若 Correlation 高但 MSE 也较高：说明排序判断正确，但打分幅度差异较大。

#### 5. 特异性偏见检测

**有异常记录时：**
- 逐条说明哪位评委对哪位选手打分异常
- `Favoritism (+)`：该评委打分显著高于其他评委（偏袒）
- `Prejudice (-)`：该评委打分显著低于其他评委（针对）
- 对比 `Score` vs `Contestant_Avg` 量化异常程度
- 同一评委出现多条异常时，建议组委会复核其打分过程

**无异常记录时：**
- 告知用户在当前阈值下未检测到明显偏见
- 若评委人数 < 5，说明统计功效有限，结果仅供参考

#### 6. 综合结论与建议

3~5 句话总结：
- 整体公平性水平
- 最需关注的评委及原因
- 若发现特异性偏见，给出处理建议
- 数据局限性提示（评委/选手数量少时）

---

### 错误处理

| 错误信息 | 说明与建议 |
|---|---|
| `CSV文件为空` | 文件路径正确但内容为空 |
| `缺少完整的评委/选手评分组合` | 存在缺失打分，需补全矩阵 |
| `FileNotFoundError` | 文件路径错误，请确认绝对路径 |
| `pearsonr` 相关报错 | 某评委对所有选手打分完全相同（方差为零） |
