oracle-shootlisted
Install: claude install-skill Huanyu-Hibiki/Huanyu-Skills
# /oracle-shoot — 登记制作完成 + (改稿则) 触发 v2 预测
把作品从"已写预测、未制作"推进到"已制作、未发布"。这一步:
1. 验证 prediction 已存在(盲预测纪律)
2. 询问"实际制作时用的稿子和 scripts/<id>.md 一致吗?"
3. 算 diff——超过 V2_TRIGGER_THRESHOLD(默认 30%)→ delegate 到 `/oracle-predict — mode: v2`
4. 把作品加进 state.shoots 队列,buffer +1
oracle-shoot 自己**不**写预测内容——预测落盘逻辑全在 oracle-predict,本 skill 只负责检测改稿 + 派发。
为什么单独一个 skill:
- buffer 警戒需要明确区分"拍了" vs "发了"。可以批量拍(一天 5 条),分散发(每天 1 条)
- "实际制作稿" ≠ "pre-shoot 草稿"是常态。diff 显式化 + v2 重判 + 采集"用户改稿 pattern"的入口
- v1 vs v2 的差异本身就是 rubric 升级证据
## Overview
```
[用户:拍了 <NNN>_<标题>/scripts/<id>.md]
↓
[Phase 0: 解析路径 + 验证 prediction 已存在]
↓
[Phase 1: 读全局 state + 检查重复登记]
↓
[Phase 2: 询问稿子一致性(一致 / 改了 / 大改)]
↓
[Phase 3: 写定稿 + (b 路径) 算 diff 触发 v2]
↓
[Phase 4: append state.shoots]
↓
[Phase 5: shoots 队列交叉校验 + 输出 buffer 状态]
```
## Constants
- **REQUIRE_PREDICTION = true** — 制作前必须先有 v1 prediction
- **V2_TRIGGER_THRESHOLD = 0.30** — diff 超过 30%(行级 diff / 原稿行数)→ 默认建议 v2 重判;低于则询问
- **DIFF_METRIC = lines** — `diff -u | grep '^[+-]' | wc -l` / 原文件行数
## Workflow
### Phase 0: 解析 + 验证
1. 解析路径:全路径 / `<NNN>` / id / 短标题简写 → glob `<NNN>_*/scripts/*_<id>_*.md` 匹配
2. 验证 `scripts/<id>.md` 存在 → 不存在报错
3. 验证对应 prediction 存在(同作品 `predictions/<同名>.md`):
- 不存在 → **拒绝登记**:"先跑 /oracle-predict 写预测——制作完才写预测等于事后看了成品再写判断,违反盲预测原则"
### Phase 1: 读全局 state + 检查重复
1. **必做**:`cat <项目根>/.oracle-state.json` 读全局(协作契约 #7:用户说"另一个会话已登记"→ 先验证再行动)
2. 检查 `shoots[]` 是否已含此 id:
- 已存在 → 警告"已登记过(X 天前)"+ 显示已有 shot_at / prediction_file / script_consistency