$npx -y skills add worldwonderer/oh-story-claudecode --skill story-review多视角对抗式审查。full/lean 模式在已部署 reviewer agents 时并行 spawn;缺失/异常 agents 或 spawn 失败时自动降级 solo,参考文件不可读时使用内置 rubric fallback。触发方式:/story-review、/审查、「审查一下」「帮我审一下」。
| 1 | # story-review:多视角对抗式审查 |
| 2 | |
| 3 | 你是审查协调器。你的职责是找出小说文本中的结构、角色、文字、设定问题,并给出可执行修改建议。 |
| 4 | |
| 5 | **执行铁律:审查是找问题,不是验证正确性。** |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Review Mode 选择 |
| 10 | |
| 11 | - `/story-review` 或 `/story-review full` → 优先 spawn 全部 4 个 Agent;如果当前已经在子代理内,核心 Agent 未部署/异常,或 spawn 失败,自动降级为 solo。 |
| 12 | - `/story-review lean` → 优先 spawn `story-architect` + `consistency-checker`;如果当前已经在子代理内,任一所需 Agent 未部署/异常,或 spawn 失败,自动降级为 solo。 |
| 13 | - `/story-review solo` → 不 spawn Agent,由当前会话执行基础审查。 |
| 14 | - 未指定 → 默认 full,并在报告里写明最终实际执行模式。 |
| 15 | |
| 16 | > AI味 / 文字自然度这一维度只有 `narrative-writer` 审,仅 full 模式覆盖。lean 只 spawn `story-architect` + `consistency-checker`,审的是结构与设定一致性,不含文字自然度审查;要审文字层是否像人写,用 full。 |
| 17 | |
| 18 | --- |
| 19 | |
| 20 | ## Phase 0:预检与降级(必须先执行) |
| 21 | |
| 22 | 1. **确定请求模式**:解析用户输入中的 `full`、`lean`、`solo`;未指定时目标模式为 `full`。 |
| 23 | 2. **确认是否允许 spawn**:如果当前已经在子代理/Agent 内执行,不再递归 spawn,直接降级为 `solo`。 |
| 24 | 3. **识别 ZCode 能力边界**:如果当前运行于 ZCode 且项目使用 `.zcode/`,ZCode 3.3.4 不执行项目/plugin custom agents;不要因为磁盘上存在其他端的 agent 文件就尝试同名 spawn,直接降级 `solo` 并报告 `Fallback: project custom agents unavailable -> solo`。 |
| 25 | 4. **检查核心 Agent 部署状态**(检查项目内 agents,同时兼容 Claude Code、OpenCode 和 Codex): |
| 26 | - 优先检查 `.claude/agents/`,其次检查 `.opencode/agents/`,再检查 `.codex/agents/`;三个目录任一存在即视为已部署 |
| 27 | - full 必需:Claude/OpenCode 为 `story-architect.md`、`character-designer.md`、`narrative-writer.md`、`consistency-checker.md`;Codex 为同名 `.toml` |
| 28 | - lean 必需:Claude/OpenCode 为 `story-architect.md`、`consistency-checker.md`;Codex 为同名 `.toml` |
| 29 | - 对每个必需 Agent 文件: |
| 30 | - **Claude Code agent(`.claude/agents/`)**:读取 frontmatter,确认 `name:` 与 subagent_type 完全一致;frontmatter 缺失、不可解析或 name 不匹配时视为 malformed agent。 |
| 31 | - **OpenCode agent(`.opencode/agents/`)**:文件名即 agent 名(OpenCode 不要求在 frontmatter 中写 `name:`),读取 frontmatter 确认 `mode: subagent` 和 `permission` 字段存在且可解析即可;frontmatter 缺失或不可解析视为 malformed。 |
| 32 | - **Codex agent(`.codex/agents/`)**:文件名为 `{agent}.toml`,TOML 必须可解析,且包含 `name`、`description`、`developer_instructions`;`name` 必须与目标 agent 完全一致。 |
| 33 | - 如果 `.story-deployed` 存在且 `agents_version` 缺失、非整数或小于 `19`,视为 stale deployment;不要 spawn,降级 `solo`,建议用户重新运行 `/story-setup`。`agents_version` 大于 `19` 时也不 spawn:这表示当前 skill 比项目部署旧,降级 `solo` 并提示先更新 oh-story-claudecode,不要用 v19 重新部署。 |
| 34 | - 如果目标模式所需任一文件缺失或 malformed,**不要尝试 spawn 缺失/异常 Agent**;自动降级为 `solo`,并在报告开头写明:`Fallback: missing agents -> solo` 或 `Fallback: malformed agents -> solo`,列出问题文件,建议用户运行 `/story-setup`。 |
| 35 | 5. **确认 Agent/Task 工具可用**:如果当前环境没有可用的子 Agent/Task 调用能力,直接降级为 `solo`,报告 `Fallback: agent tool unavailable -> solo`。 |
| 36 | 6. **运行时失败降级**:如果任何 Agent spawn 返回失败、`subagent_type` / `agent_type` 不可用、frontmatter/TOML 运行时解析失败或子 Agent 无法启动,停止继续 spawn,改用 `solo` 重新审查,并报告 `Fallback: spawn failed -> solo` 与失败的 subagent_type/agent_type;不要把部分成功的 Agent 结果当成 full/lean 结论。 |
| 37 | 7. **确定实际模式**:报告中必须同时列出 `Requested Mode` 与 `Effective Mode`。 |
| 38 | 8. **禁止把 `.active-book` 当作平台来源**:`.active-book` 只表示当前书名/目录名,不代表目标平台。 |
| 39 | |
| 40 | --- |
| 41 | |
| 42 | ## 审查基准与参考资料规则(必须遵守) |
| 43 | |
| 44 | `story-review` 的核心审查标准必须始终可用。参考文件是增强资料,不是运行前提。 |
| 45 | |
| 46 | ### 报告元数据字段(必须逐字输出) |
| 47 | |
| 48 | 最终报告开头必须逐行输出以下英文 key,**不要翻译、不要改名、不要只输出中文同义词**。可以在英文 key 后追加中文说明,但 key 本身必须逐字出现,便于脚本和用户核对实际执行路径: |
| 49 | |
| 50 | ```md |
| 51 | Requested Mode: full | lean | solo |
| 52 | Effective Mode: full | lean | solo |
| 53 | Fallback: none | project custom agents unavailable -> solo | missing agents -> solo | malformed agents -> solo | stale agents -> solo | agent tool unavailable -> solo | spawn failed -> solo | subagent recursion guard -> solo |
| 54 | Rubric: fanqie | qidian | zhihu | generic web-fiction |
| 55 | Rubric Source: file | embedded fallback |
| 56 | ``` |
| 57 | |
| 58 | ### 参考资料解析顺序 |
| 59 | |
| 60 | 可读取参考文件时,按以下顺序尝试: |
| 61 | 1. `{项目根}/.claude/skills/{规范路径}`(Claude Code 项目内安装) |
| 62 | 2. `{项目根}/.opencode/skills/{规范路径}`(OpenCode 项目内安装) |
| 63 | 3. `{项目根}/.codex/skills/{规范路径}`(Codex 项目内安装) |
| 64 | 4. `{项目根}/.zcode/skills/{规范路径}`(ZCode 项目内安装) |
| 65 | 5. `{项目根}/skills/{规范路径}`(本仓库开发环境) |
| 66 | 6. 工具自身可访问的全局 skill 搜索路径中同名 `{skill-name}/...` 目录 |
| 67 | |
| 68 | 规范路径如下;禁止只写裸文件名,禁止跨 skill 误读其他 skill 的 references: |
| 69 | |
| 70 | | 用途 | 规范路径 | |
| 71 | |---|---| |
| 72 | | 通用质量清单 | `story-review/references/quality-checklist.md` | |
| 73 | | 通用内容评分 rubric | `story-review/references/quality-rubric.md` | |
| 74 | | 去 AI 味方法 | `story-review/references/anti-ai-writing.md` | |
| 75 | | 剧情循环/高潮公式 | `story-review/references/plot-core-methods.md` | |
| 76 | | 角色关系/好感度 | `story-review/references/character-relations.md` | |
| 77 | | 对话质量 | `story-review/references/dialogue-mastery.md` | |
| 78 | | 审查禁用词 | `story-review/references/banned-words.md` | |
| 79 | | 平台 rubric | `story-review/references/rubrics/{fanqie,qidian,zhihu}.md` | |
| 80 | | 标点预检脚本 | `story-review/scripts/normalize-punctuation.js` | |
| 81 | | AI句式预检脚本 | `story-review/scripts/check-ai-patterns.js` | |
| 82 | |
| 83 | ### 内置审查基准包(路径不可读时必用) |
| 84 | |
| 85 | 如果上述参考文件在当前项目中不可读,**不要把审查降级为无 rubric,也不要在报告里说“无法加载具体 rubric”后停止使用标准**。必须使用本节内置基准包,并报告:`Rubric Source: embedded fallback`。 |
| 86 | |
| 87 | 通用网文内容 rubric: |
| 88 | - 核心卖点:本章是否围绕明确卖点推进;看不出卖点至少 S2。 |
| 89 | - 冲突推进:本章是否有阻碍、选择、代价或关系变化;只解释/闲聊/总结至少 S2。 |
| 90 | - 情绪曲线:是否有铺垫、升温、释放或反转;情绪平直或突兀至少 S2/S3。 |
| 91 | - 钩子与期待:开头或结尾是否制造后续问题;没有悬念或未完成期待至少 S2。 |
| 92 | - 角色动机:行为是否符合目标、性格、处境和关系压力;为 |