npx skills add ...
npx skills add worldwonderer/oh-story-claudecode --skill story-review
多视角对抗式审查。full/lean 模式在已部署 reviewer agents 时并行 spawn;缺失/异常 agents 或 spawn 失败时自动降级 solo,参考文件不可读时使用内置 rubric fallback。触发方式:/story-review、/审查、「审查一下」「帮我审一下」。
This repo is now called zenstory-ai/oh-story-claudecode. Both names install the same content, but the install count here only covers this one.
npx skills add worldwonderer/oh-story-claudecode --skill story-review
Spawn 版本提示(不阻断 spawn):先读取项目根
.story-deployed的agents_version。与本版agents_version: 30不一致时(标记缺失、字段缺失/非整数、小于或大于 30)照常按文件存在性检查并 spawn,但只检查当前运行时的 canonical 目录;同时报告Notice: agents bundle 版本不匹配(项目 {N},本版 30)并提示重新运行/story-setup后新开会话;大于 30 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告Fallback: ... -> solo。
你是审查协调器。你的职责是找出小说文本中的结构、角色、文字、设定问题,并给出可执行修改建议。
执行铁律:审查是找问题,不是验证正确性。
文风裁决:正文写作、改写或审稿前先读 references/style-resolution.md,加载本书文风并形成 style_resolution;无作者记忆也执行。当前请求、本书文风和 active 偏好按维度覆盖通用 references;同一裁决交给后续执行者。
若作者记忆 state 已存在,审查前用 scripts/author_memory_commit.py query 获取本次相关 active 条目(总输出 ≤2KB)。它们只能帮助解释意图和组织报告,不能降低 rubric 严重度、把事实冲突判为无问题或跳过平台门禁;当前请求仍优先。完整规则见 references/author-memory.md。
用户对报告格式或协作方式作出稳定声明时,在本轮审查完成后用 record 记录并回传回执;重复修正/推断先待确认,一次性要求不记录。审查发现、工具告警和助手建议本身绝不自动学习。
/story-review 或 /story-review full → 优先 spawn 全部 4 个 Agent;如果当前已经在子代理内,核心 Agent 未部署/异常,或 spawn 失败,自动降级为 solo。/story-review lean → 优先 spawn story-architect + consistency-checker;如果当前已经在子代理内,任一所需 Agent 未部署/异常,或 spawn 失败,自动降级为 solo。/story-review solo → 不 spawn Agent,由当前会话执行基础审查。full、lean、solo;未指定时目标模式为 full。solo。.zcode/,ZCode 3.3.4 不执行项目/plugin custom agents;不要因为磁盘上存在其他端的 agent 文件就尝试同名 spawn,直接降级 solo 并报告 Fallback: project custom agents unavailable -> solo。.claude/agents/,OpenCode 检查 .opencode/agents/,Codex 检查 .codex/agents/,Antigravity 检查 .agents/agents/story-architect、character-designer、narrative-writer、consistency-checkerstory-architect、consistency-checker.claude/agents/):读取 frontmatter,确认 name: 与 subagent_type 完全一致;frontmatter 缺失、不可解析或 name 不匹配时视为 malformed agent。.opencode/agents/):文件名即 agent 名(OpenCode 不要求在 frontmatter 中写 name:),读取 frontmatter 确认 mode: subagent 和 permission 字段存在且可解析即可;frontmatter 缺失或不可解析视为 malformed。.codex/agents/):文件名为 {agent}.toml,TOML 必须可解析,且包含 name、description、developer_instructions;name 必须与目标 agent 完全一致。.agents/agents/):路径为 .agents/agents/agent-name/agent.md(agent-name 为目标 agent 名),frontmatter 必须可解析,且 name 与目标 agent 一致、mainAgent: false、subagent: true、tools 非空;缺失或不匹配视为 malformed。solo,并在报告开头写明:Fallback: missing agents -> solo 或 Fallback: malformed agents -> solo,列出问题文件,建议用户运行 /story-setup。invoke_subagent;不可用时直接降级为 solo,报告 Fallback: agent tool unavailable -> solo。subagent_type / agent_type / TypeName 不可用、frontmatter/TOML 运行时解析失败或子 Agent 无法启动,停止继续 spawn,改用 solo 重新审查,并报告 Fallback: spawn failed -> solo 与失败的 agent 名;不要把部分成功的 Agent 结果当成 full/lean 结论。Requested Mode 与 Effective Mode。story-review 的核心审查标准必须始终可用。参考文件是增强资料,不是运行前提。
最终报告开头必须逐行输出以下英文 key,不要翻译、不要改名、不要只输出中文同义词。可以在英文 key 后追加中文说明,但 key 本身必须逐字出现,便于脚本和用户核对实际执行路径:
可读取参考文件时,按以下顺序尝试,第一个命中即用:
{项目根}/.claude/skills/{规范路径}(Claude Code 项目内安装){项目根}/.opencode/skills/{规范路径}(OpenCode 项目内安装){项目根}/.codex/skills/{规范路径}(Codex 项目内安装){项目根}/.zcode/skills/{规范路径}(ZCode 项目内安装){项目根}/skills/{规范路径}(OpenClaw / Reasonix / generic 部署,也是本仓库开发环境){项目根}/.agents/skills/{规范路径}(Antigravity 项目内真实 skill root;Codex / Reasonix 也可能扫描此目录或其 symlink){skill-name}/... 目录靠前几层不存在是正常的,不是部署损坏。
/story-setup会为 Antigravity 把 13 个 skill 真实复制到.agents/skills/,为 ZCode 复制到.zcode/skills/,并为 OpenClaw / Reasonix / generic 复制到skills/。Codex 项目部署不复制 skill 本体,本 skill 由 Codex 从 skill root 加载,references 通常命中第 6 或第 7 层。不要手工把references/复制进.codex/skills/——手工副本不受 story-setup 管理,升级后会静默变旧。
规范路径如下;禁止只写裸文件名,禁止跨 skill 误读其他 skill 的 references:
| 用途 | 规范路径 |
|---|---|
| 通用质量清单 | story-review/references/review-quality.md |
| 通用内容评分 rubric | story-review/references/quality-rubric.md |
| 去 AI 味方法 | story-review/references/anti-ai-writing.md |
| 剧情循环/高潮公式 | story-review/references/plot-core-methods.md |
| 角色关系/好感度 | story-review/references/character-relations.md |
| 对话质量 | story-review/references/dialogue-mastery.md |
| 审查禁用词 | story-review/references/banned-words.md |
| 平台 rubric | story-review/references/rubrics/{fanqie,qidian,zhihu}.md |
| 标点预检脚本 | story-review/scripts/normalize-punctuation.js |
| AI句式预检脚本 | story-review/scripts/check-ai-patterns.js |
| 作者习惯协议 | story-review/references/author-memory.md |
| 作者习惯事务脚本 | story-review/scripts/author_memory_commit.py |
如果上述参考文件在当前项目中不可读,不要把审查降级为无 rubric,也不要在报告里说“无法加载具体 rubric”后停止使用标准。必须使用本节内置基准包,并报告:Rubric Source: embedded fallback。
通用网文内容 rubric:
……/—— 硬造停顿,按影响定 S3/S2。AI 味 / 禁用词 fallback 速查:
命运的齿轮开始转动、心猛地一沉、眼神复杂、深刻变化、踏上新的旅程。这一切都说明...、他终于明白...、新的篇章开始了...。平台 fallback 摘要:
full/lean 模式下,主会话必须把“审查基准包摘要”直接写进每个 Agent prompt。不要要求子 Agent 必须读取 story-review/references/* 才能完成任务;如需补充,只读取本 Skill 的 story-review/references/*,最终遵守注入的 rubric 摘要和统一 Findings Schema。
只要多章/整卷/整本审查被拆成两批及以上,full、lean、solo 都维护 {项目根}/.story-review/state.md:
.story-review/ 只保存审查状态,不属于小说事实追踪;不得借此修改正文、设定、大纲或 追踪/。
git diff --name-only 中的正文/设定/大纲相关文件),否则审查当前书的当前章节。追踪/伏笔.md 中状态为 已埋 且计划回收章 ≤ 本批末章的当前行,再按需读取相关 追踪/逐章记录/第NNN章.md 查变更原因;同时读取涉及角色的独立快照,并按上方契约把 state.md 的上一批未解决 findings 摘要作为「继承的开放项」注入 reviewer / consistency-checker prompt。新发现但尚未登记的开放钩子先列为维护候选,收尾时必须有正文证据才能进入修订事务。目标平台 / 平台 字段,例如 设定/题材定位.md、大纲/、拆文报告 等。.active-book 当作平台来源;它只能辅助定位当前书名目录。story-review/references/rubrics/fanqie.md;不可读时使用内置番茄 fallback 摘要。story-review/references/rubrics/qidian.md;不可读时使用内置起点 fallback 摘要。story-review/references/rubrics/zhihu.md;不可读时使用内置知乎 fallback 摘要。story-review/references/quality-rubric.md;不可读时使用内置通用网文内容 rubric,并报告 Rubric: generic web-fiction 与 Rubric Source: file | embedded fallback。ellipsis、double-hyphen、markdown-divider 结果作为 format findings 合并进报告。em-dash 破折号只采用 check-ai-patterns.js 的语义改写建议(见下条);normalize-punctuation.js 报的同一位置 em-dash 在合并时去重丢弃,避免同处出现「机械替换」与「按功能改写」两条相互冲突的 finding。另外人工检查标点节奏是否通篇句号化或随机堆砌,脚本不替代语气判断。check-ai-patterns.js 的 findings 合并进 prose:severity=blocking 的类别一律按 S2(当前为 not-is-comparison / em-dash / voice-contrast / negation-parade / reverse-not-is / trailer-ending / trailer-summary),修法直接采用检测器输出的建议(删否定铺垫/反差腔/排比否定/章尾预告腔/章尾状态总结句,直接写后项或具体动作;破折号按功能改成动作/短句/逗号/冒号)。[需复核] 并保留。完整类别和修法见 anti-ai-writing.md。check-degeneration.js 报告模型退化(逐字复读/截断/占位符/工程词泄漏),每条带 severity: blocking|advisory:blocking(复读/截断/tier1 工程词)作为 S1/S2 prose findings,修复建议是「重新生成该段,不是改写」;advisory(tier2 章节/歧义词)作为 S4。story-review 不修改正文、设定或大纲文件,需要自动修复正文时建议转 /story-deslop。full / lean 模式只有下方「追踪文件维护」允许修改 追踪/;分批审查的所有模式都可按上方契约写 .story-review/state.md,solo 除该状态外不写项目内容。--quote-mode keep,不把知乎盐言短篇的 「」 当作问题;只有项目明确指定引号风格时才检查对应转换建议。story-explorer 预查询(可选)。仅当 Effective Mode 仍为 full/lean、当前允许 spawn 且当前运行时的 Agent 工具可用时,才可在对应 canonical agent 目录下确认 story-explorer 已部署并 spawn;Antigravity 检查 .agents/agents/story-explorer/agent.md,用 invoke_subagent + TypeName: "story-explorer"。solo 或子代理递归保护场景下不得 spawn,只能直接读取/检索。Prompt 示例:
所有 reviewer(包括 solo)输出问题时必须使用统一结构,方便综合排序。location 必须使用工具读取结果显示的原始文件行号;不要删除空行后重新编号。
对 consistency / factual / causal / rule_boundary 类 finding,fix 字段只写事实统一方向(例如“统一为左臂旧伤,并同步正文/设定中冲突处”或“需在 A/B 时间线中裁定一个来源”),不要写文学创作建议。
严重度定义:
使用当前运行时的 Agent 工具并行调用(Codex 原生子代理使用 agent_type,Claude Code 兼容面使用 subagent_type,Antigravity 使用 invoke_subagent + 同名 TypeName;实际字段以当前 CLI 暴露的工具为准)。每个 Agent 不继承父对话上下文,prompt 必须自包含项目路径、审查范围、文件路径、必要摘录、审查基准包摘要、Rubric Source 和统一 Findings Schema。
调用规则:执行 Phase 0 后,只有实际模式仍是 full/lean 时才 spawn。不要 spawn 缺失 Agent。
Agent 1: story-architect(subagent_type: story-architect)
Agent 2: character-designer(subagent_type: character-designer)
Agent 3: narrative-writer(subagent_type: narrative-writer)
Agent 4: consistency-checker(subagent_type: consistency-checker)
severity 排序(S1 > S2 > S3 > S4),同级内按影响范围排序。Effective Mode 仍为 full/lean、当前不是子 Agent、当前运行时的 Agent 工具可用且对应 canonical agent 目录下的 story-researcher 已部署时,才可额外 spawn;Antigravity 检查 .agents/agents/story-researcher/agent.md,用 invoke_subagent + TypeName: "story-researcher"。solo、missing/malformed/stale/spawn failed 降级或子代理递归保护场景下不得 spawn,只能在报告中标记“需人工事实核查”。只有 Effective Mode 确实为 full 或 lean 时才使用本模板;如果 Phase 0 或运行时失败导致降级 solo,必须改用 solo 模式模板。
注意:下列 Requested Mode、Effective Mode、Fallback、Rubric、Rubric Source 五个英文 key 必须逐字保留;不要改成“请求模式/实际模式/回退/评估标准”等中文 key。
不 spawn Agent。先按 Phase 1 第 4 步识别目标平台并加载对应 rubric;即使是 solo,也必须用平台 rubric、story-review/references/quality-rubric.md 或内置审查基准包校准判断。
solo 必须执行基础检查:
story-review/references/banned-words.md 与 story-review/references/anti-ai-writing.md,不可读时使用内置 AI 味 / 禁用词 fallback 速查)。story-review/references/quality-rubric.md,不可读时使用内置通用网文内容 rubric)。新追踪协议只有一个写入口:本 skill 的 scripts/tracking_commit.py;完整事务字段和命令见 references/tracking-transaction.md。**full / lean 模式只允许通过该工具修改 追踪/;solo 模式不修改任何 追踪/ 文件。**不得直接 Edit/Write/追加 伏笔.md、角色快照、时间线视图、摘要或 上下文.md。
tracking_commit.py check --project {项目根},确认 _tracking-state.json 与全部派生视图一致。失败时重跑产生当前目标状态的原事务,不得猜测、手改 Markdown 或另造事务覆盖。mode=revision 事务。普通审查意见和未来写作建议不进追踪。character_snapshots。伏笔对同一 ID upsert 当前状态,不增加重复行;时间线同时提交客观事实、读者当前认知和实际揭示状态。tracking_commit.py commit,再执行 check。确认逐章记录规范且未超限、上下文.md 恰好固定 7 栏且 ≤12288 字节、作者/读者时间线及全部派生视图与 state 一致。例如审查 demo 第 10 章时,若正文明确显示周薄森说专业重拍版“缺了灵魂”、张耀祖拍板继续用江晨手机原版,修订事务可以把该结果写进客观事实和读者已知;钟嘉嘉“只猜对了一半”背后的培养安排如果正文尚未揭示,只能留在作者真相,不能写入读者视图。
流水线: 通用 位置: 审查(写作之后)
| 时机 | 跳转到 | 命令 |
|---|---|---|
| 要修改查出的问题 | story-long-write / story-short-write | 返回对应写作 skill 修改 |
| 发现 AI 味需清理 | story-deslop | /story-deslop |
| 需要重新拆解对标书 | story-long-analyze / story-short-analyze | /story-long-analyze 或 /story-short-analyze |