From sci-paper
最终审阅编排器。完整使用 5 个 skill 作为框架——paper(写作标准基线,主代理本进程加载)/ paper-review(A–R 全维度 checklist 审查,传 `--no-isolated-mpr` 由父级接管 MPR)/ figure-review(图表 150-DPI 关)/ mainline(结构 spine)/ paper-attack-tree(adversarial radial critique),并在 §3.6 由 final-review 主代理在隔离 worktree 中直接调一次 user-level modern-physics-review 作为独立 5th 子代理(修复嵌套 sub-agent bug)。**每个子代理都在 isolation=worktree 中独立运行**,cold-read 论文消除框架偏见。每轮 merge 所有 issue 后修复,循环直至**连续 2 轮 5 个 isolated skill (paper-review/figure/mainline/attack/mpr) 均 0 issue**(稳态收敛)。**严禁** "基本干净 / 大致收敛 / 剩下都是 minor / 用户没时间提前结束"。ITER_BUDGET 默认 10 轮,触顶 BREAK_WITH_USER_DECISION(不允许偷偷宣布完成)。Use when 用户说 "final-review" / "投稿前最终审" / "总审" / "运行所有审查 skill" / submission readiness check。
How this skill is triggered — by the user, by Claude, or both
Slash command
/sci-paper:final-review <file_path> [--max-rounds N] [--skip <skill>[,<skill>...]] [--field <name>] [--out <dir>] [--require-consecutive N] — 指定论文 (.tex/.md),可选最大轮次(默认 10)/ 跳过某子 skill(如 --skip figure-review)/ 显式 field / 输出目录 / 稳态连续 N 轮(默认 2)<file_path> [--max-rounds N] [--skip <skill>[,<skill>...]] [--field <name>] [--out <dir>] [--require-consecutive N] — 指定论文 (.tex/.md),可选最大轮次(默认 10)/ 跳过某子 skill(如 --skip figure-review)/ 显式 field / 输出目录 / 稳态连续 N 轮(默认 2)The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **v1 — 5-skill orchestrator with per-skill isolated context + iterate-to-perfect-convergence.**
v1 — 5-skill orchestrator with per-skill isolated context + iterate-to-perfect-convergence. 用户原话:"加一个"最终审阅"功能,完整使用:1.paper 技能作为框架。2.paper review 技能。3.figure-review 技能。4.mainline 技能。5.paper attack tree 技能。并且循环多次使用,每次都隔离上下文,修改至完美,直至完全收敛。" 本 skill 是上述需求的逐字落地:5 个 skill 全用、每次隔离上下文、循环至完全收敛。
本 skill 不审任何内容本身——它编排已有的 5 个审查 skill 在隔离上下文中循环运行直至全部收敛。 适用场景:论文已经过 paper-review / mainline / paper-attack-tree 单独打磨多轮后,准备投稿前的最终关。
禁止用记忆 / 缓存 / 历史对话替代任何子 skill 的实际调用。
每轮必须真的调用 Agent tool 启动 5 个隔离子代理(除非 --skip <skill> 显式跳过);不允许"我记得上轮 paper-review 已经收敛了,跳过本轮"。
禁止在主代理本进程内直接跑 5 个 skill。
每个子 skill 必须通过 Agent tool isolation: worktree 启动隔离子代理;主代理本进程只做编排 + 合并 issue + 应用修复,不亲自审。这是用户"每次都隔离上下文"的硬性要求。
禁止主代理覆盖子代理判断。 子代理报 🔴/🟡/CONFIRMED critique → 必须注入修复队列;不允许主代理判"这条不重要丢弃"。子代理之间 disagreement 视为更多 issue(合集,不是交集)。
完全收敛硬约束。
合法终止 = 连续 --require-consecutive 轮(默认 2)所有 5 个 skill(未 skip 的)都返回 0 issue。
"1 轮干净就完成" / "4 个 skill 干净 + 1 个还有 1 个 🟡" 一律未收敛。
不允许偷偷扩 ITER_BUDGET。
--max-rounds 触顶 → BREAK_WITH_USER_DECISION,向用户报未收敛清单;不允许内部自行从 10 改 20 继续跑。
修改必须最小有效化(minimum effective change)。 主代理应用修复时禁止顺手重构、禁止"我看不顺眼也改";每条修改必须可追溯到某子代理报的某条 issue。
每轮独立。 round k+1 不允许带 round k 的"印象"。子代理用 isolation=worktree 已经隔离;主代理在 round 间也要清空缓存——每轮重读论文当前版本,重新启动所有未 skip 的子代理。
禁止子代理嵌套 sub-agent。
final-review 主代理是唯一有权启动 isolated Agent 子代理的层级。paper-review SKILL.md §4.4 自己包含一段"isolated MPR sub-agent" 调用——但 Claude Code Agent isolation=worktree 不支持 sub-agent 内再起 sub-agent;强行触发会让子代理报错并整轮 SUBAGENT_FAILURE。
修复架构:
paper-review 子代理时强制传 --no-isolated-mpr,让 paper-review 跳过它自身的 §4.4final-review 主代理在 §3.6 由自己直接 isolated 调一次 user-level modern-physics-review,作为父级 orchestrator 层的统一 MPR 终验--no-isolated-mpr 是 bug,必须在 §3.2 模板里硬写出来/sci-paper:final-review <file_path> [flags]
file_path:要审的论文(.tex / .md),必须为绝对路径或项目内相对路径。缺省 → 报错退出。
flags:
| flag | 默认 | 含义 |
|---|---|---|
--max-rounds N | 10 | 最大循环轮次;触顶 = BREAK_WITH_USER_DECISION |
--require-consecutive N | 2 | 连续 N 轮全 skill 0 issue 才算 CONVERGED;提高 N 增强稳态保证 |
--skip <skill>[,<skill>...] | 无 | 跳过某子 skill(合法值: paper-review / figure-review / mainline / paper-attack-tree / mpr;--skip figure-review 适合纯 .md 草稿;--skip mpr 跳过 §3.6 主代理层 isolated MPR 终验);默认不允许 skip——只在用户显式传入时才跳过 |
--field <name> | 自动 | 与其它 sci-paper skill 一致的 field;会透传给子代理 |
--out <dir> | final-review-out/<UTCdate>__<filename-slug>/ | 输出目录 |
style-profile/<field>/style_dossier.md(若存在) —— 同其它 sci-paper skill 单 field 自动选;多 field 要求 --field。r=1 和 consecutive_clean_rounds=0。<out>/round-001/ 子目录 —— 每轮的所有子代理报告与 merged issue 列表都进这里。清空主代理对论文的"假设记忆"——主动 Re-Read 当前版本(处理上轮可能已修改的版本),刷新所有引用位置。
/sci-paper:paper 加载写作标准(主代理本进程;非 isolated)用户原话:"paper 技能作为框架。" paper 不是审查器,是标准基线。每轮开始主代理本进程 invoke 一次
/sci-paper:paper加载写作标准(含 Anti-AI-isms tier 表 / 公式约定 / 引用规则 / 关键参考)。 这一步不进 Agent isolation——它是给主代理本进程的"评估基线"。
操作:主代理执行 Skill paper(无 args),把标准加载到 working context;记录此基线版本 ID(<out>/round-<NNN>/paper-baseline.md)。
/sci-paper:paper-review 隔离子代理(Agent worktree)主代理调用 Agent tool:
subagent_type: general-purposeisolation: worktreedescription: "Round <r> isolated paper-review"prompt(自包含):
Target file:
<absolute path>Cold-read context: You are running in an isolated worktree. You have NEVER seen this paper before. Do NOT rely on prior context, summaries, or "I think I remember". Re-Read every file, re-run every script, re-grep every pattern. cc-enslaver rules apply.
Task: Invoke the sibling skill
/sci-paper:paper-reviewon the target file with--max-iter 5 --no-isolated-mprand default flags (do NOT pass--no-fix; allow the skill's own auto-fix loop). Run the skill's full A–Q dimension protocol + zero-issue convergence hard loop. DO NOT run paper-review §4.4 isolated MPR yourself —--no-isolated-mprmakes paper-review skip it; the parent orchestrator (final-review main agent) will run isolated MPR independently in §3.6 to avoid Claude Code's nested-sub-agent limitation. cc-enslaver rules from/sci-paper:paper-reviewSKILL.md apply.Forbidden in this isolated worktree: do NOT call the
Agenttool to spawn another sub-agent (you are already a sub-agent; nesting is unsupported). If the paper-review skill instructs an isolated MPR call, the--no-isolated-mprflag should make it skip; if it still tries to spawn an agent, abort withSTATUS=NESTED_AGENT_REJECTEDso the parent can fix the prompt.Report format: Return the skill's §4.5 final convergence report verbatim, plus a one-line summary:
STATUS=CONVERGED|NOT_CONVERGED; RED=<n>; YELLOW=<n>; UNDER_SCRUTINY=<n>; ISOLATED_MPR=SKIPPED_FOR_ORCHESTRATOR. Do NOT abbreviate the report. Each unresolved issue must include file:line + current text + suggested fix. TheISOLATED_MPRslot must readSKIPPED_FOR_ORCHESTRATORbecause we passed--no-isolated-mpr; if it shows anything else, the prompt was not honored and the parent should re-issue.
回传处理:把子代理报告保存到 <out>/round-<NNN>/paper-review.md;提取 STATUS + issue 计数。
/sci-paper:figure-review 隔离子代理同 §3.2 模板,prompt 改为调用 /sci-paper:figure-review。
特例处理:若 <file> 是 .md 草稿无 figure 文件 → 子代理自然返回 "no figures present, PASS"。若用户传 --skip figure-review → 跳过本 step 但仍在 round counter 里记录"skipped"(不当作"通过",但不阻塞收敛判据)。
/sci-paper:mainline 隔离子代理同 §3.2 模板,prompt 调用 /sci-paper:mainline,传 --max-iter 5。子代理会自己跑 mainline 的 §3 cold-read 7-Q questionnaire(mainline 内部已是 isolated cold-read pattern;这里是双重隔离,可接受)。
/sci-paper:paper-attack-tree 隔离子代理同 §3.2 模板,prompt 调用 /sci-paper:paper-attack-tree,建议传:
--from-paper-review <out>/round-<NNN>/paper-review.md — 让 attack-tree 在 paper-review 已找出的 CONFIRMED 基础上继续发散 sub-critique--width 30 --depth 3 --rounds conv — 第一轮探索性放宽;后续轮次可缩窄回传期望:CONFIRMED critique 数 + 节点分布 + 完整 critique 树。CONFIRMED 全部注入主修复队列。
这一步是修复 嵌套 sub-agent bug 的核心:原本 paper-review §4.4 在自己进程内启 isolated MPR——但 paper-review 已经被 final-review 装进 worktree,再起 sub-agent 会触发 Claude Code 嵌套限制。 解决方案:把 isolated MPR 提升到 final-review 主代理层 调用,作为父级 orchestrator 统一终验。 这等价于"独立上下文消除框架偏见"的原始用意——MPR 仍在隔离 worktree 中跑,仍 cold-read 所有源材料;只是发起者从 paper-review 子代理改为 final-review 主代理。
触发条件:
STATUS=CONVERGED 或 STATUS=NOT_CONVERGED(无论哪种,本步都跑——MPR 是独立验证)--skip mpr主代理调用 Agent tool(直接,不嵌套):
subagent_type: general-purpose(modern-physics-review 是 user-level skill,不是 sci-paper 插件 skill;子代理需 general-purpose 然后显式 Read 加载 SKILL.md)isolation: worktree(与 §3.2 / §3.3 / §3.4 / §3.5 同级——主代理 → 子代理是 1 层,不嵌套)description: "Round <r> isolated MPR final verification (orchestrator level)"prompt(自包含):
Target file:
<absolute path>Cold-read context: You are running in an isolated worktree. You have NEVER seen this paper before. Re-Read every file, re-run every script, re-grep every pattern. Do NOT rely on prior conversation, summaries, or any "this was already verified" claim from another agent. cc-enslaver rules apply.
Task: Read
C:/Users/skyma/.claude/skills/modern-physics-review/SKILL.mdand follow its full protocol (§0–§5) end-to-end on the target paper. Run modern-physics-review's own automatic fix loop to convergence (its §3 / §4). Do NOT skip phases.Forbidden in this isolated worktree: do NOT call the
Agenttool to spawn another sub-agent.Report format: Return: (a) final status
CONVERGED | NOT_CONVERGED; (b) any 🔴/🟡 still present with file:line + current text + suggested fix; (c) any disagreements with prior reviews — issues that other agents (paper-review, mainline, attack-tree) marked OK but you find suspicious, with reasoning + file:line.
回传处理:保存到 <out>/round-<NNN>/mpr.md;提取 STATUS + 🔴/🟡 计数 + disagreement 计数。所有 mpr 报的 disagreement 视为 issue(与其它 skill issue 同级),全部进 §3.7 merge 队列。
特例:
--skip mpr → 跳过本 step,但 round counter 记录 mpr=skipped,并在 §4.2 final report 显示 MPR=SKIPPED_BY_USER。这条路径降级为弱收敛,要用户显式接受。MPR_AGENT_FAILED → SUBAGENT_FAILURE 状态,向用户报告。主代理合并 5 个子代理(review / figure / mainline / attack / mpr)的 issue:
all_issues = []
all_issues += parse_issues(round-NNN/paper-review.md) # 🔴/🟡 (paper-review 自身报告,§4.4 由本 orchestrator 接管)
all_issues += parse_issues(round-NNN/figure-review.md) # FAIL items
all_issues += parse_issues(round-NNN/mainline.md) # 🔴/🟡 + Q6 confusion
all_issues += parse_issues(round-NNN/paper-attack-tree.md) # CONFIRMED
all_issues += parse_issues(round-NNN/mpr.md) # 🔴/🟡 + disagreements (来自 §3.6 主代理层 isolated MPR)
deduplicate_overlapping_issues(all_issues) # 同一 file:line 不同 skill 报的算一条
应用修复:按优先级(CONFIRMED > 🔴 > 🟡 > MPR disagreement)逐条 Edit;每条修改后 re-Read 改动区域;不允许"批量修改不验证"。
修复完成后保存 <out>/round-<NNN>/fixes-applied.md:每条 fix 标 applied | skipped (with reason) | needs-author(用户裁决项)。
n_issues_this_round = sum of all_issues counts
if n_issues_this_round == 0 AND all 5 skill STATUSes == CONVERGED (mpr 计入):
consecutive_clean_rounds += 1
if consecutive_clean_rounds >= --require-consecutive (默认 2):
return CONVERGED # 最终终态
else:
consecutive_clean_rounds = 0 # 重置;不允许"基本干净就算稳态"
r += 1
if r > --max-rounds:
return BREAK_WITH_USER_DECISION # 不允许偷偷宣布完成
| 触发条件 | 状态 |
|---|---|
连续 --require-consecutive 轮 5 个 skill (paper-review / figure / mainline / attack / mpr) 全部 0 issue + 全部 CONVERGED | CONVERGED |
| 5 个 skill 单轮 0 issue 但稳态轮数未达 N → 继续下一轮 | IN_PROGRESS |
--max-rounds 触顶 | BREAK_WITH_USER_DECISION — 列残留 issue 给用户裁决 |
| 任一子代理调用失败 / 超时(连续 2 轮失败同一 skill) | SUBAGENT_FAILURE,要求用户手工诊断 |
paper-review 子代理回执 ISOLATED_MPR ≠ SKIPPED_FOR_ORCHESTRATOR | PROMPT_VIOLATION — --no-isolated-mpr 未生效;重发 prompt(不当作收敛) |
任一子代理回执 STATUS=NESTED_AGENT_REJECTED | PROMPT_VIOLATION — 子代理试图嵌套;按 §0.8 修 prompt 后重发 |
| 用户中断 | USER_INTERRUPTED,保留中间状态 |
# Final Review — Convergence Report
**Target**: <file_path>
**Total rounds**: K
**Consecutive clean rounds**: <--require-consecutive 默认 2>
**Final state**: ✅ CONVERGED
## Per-skill final status (last round)
| Skill | Status | 🔴 | 🟡 | CONFIRMED | Disagree | Compile |
|---|---|---|---|---|---|---|
| paper-review (with `--no-isolated-mpr`) | CONVERGED | 0 | 0 | — | — | 0 errors |
| figure-review | PASS | — | — | — | — | — |
| mainline | CONVERGED | 0 | 0 | — | — | — |
| paper-attack-tree | CONVERGED | — | — | 0 | — | — |
| mpr (orchestrator-level isolated) | CONVERGED | 0 | 0 | — | 0 | — |
## All fixes applied across K rounds
### Round 1
[逐条 file:line + 来自哪个 skill + 修改前/后 diff 摘要]
### Round 2 ...
## Per-skill final convergence reports (verbatim, 不允许摘要)
### paper-review §4.5 report
[完整贴入;末行 `Isolated MPR status: SKIPPED_FOR_ORCHESTRATOR`]
### mainline §4.5 report
[完整贴入]
### paper-attack-tree §7.4 report
[完整贴入]
### figure-review report
[完整贴入]
### mpr (orchestrator-level isolated) report
[完整贴入;包含 disagreements 段]
## Convergence verification (cc-enslaver rule 06 + rule 07 自答)
1. 是不是真的解决了问题?✓ (5 个 skill — paper-review/figure/mainline/attack/mpr — 全部 0 issue 连续 2 轮 + 各自隔离 cold-read)
2. 有没有更好的方法?✓ (chosen orchestration + per-skill isolation + 主代理层 MPR 而非嵌套 MPR;min-effective-change at each fix)
3. 改动是否经过验证?✓ (每轮重 Read + 子代理 cold-read + 稳态 N 轮)
4. 验证是否合理?✓ (覆盖 per-claim correctness / 结构 spine / adversarial critique / figure / writing standards / 物理优先 MPR)
5. (rule 07 覆盖性) 用户原始 5 skill + 隔离上下文 + 循环至完全收敛 全部落实?✓ (MPR 由主代理层承接 paper-review §4.4 的职责,等价不削弱)
6. (rule 07 标准性) "完整使用 / 每次都隔离 / 修改至完美 / 直至完全收敛" 全部硬动作?✓
7. (rule 07 忠实性) 无静默 skip / 无 ITER_BUDGET 偷偷扩容 / 无"基本干净宣布完成"?✓
输出:当前残留 issue 全列表 + 每条建议(继续追加预算 / 接受残留 / 修改 --skip 跳过特定 skill),让用户决定。不允许主代理单方面宣布"已完成"。
--skip,否则必须报 SUBAGENT_FAILURE 给用户。--no-isolated-mpr,由主代理在 §3.6 统一跑 MPR。ISOLATED_MPR=PASS 我就当 MPR 已经跑过了,§3.6 跳过。" — --no-isolated-mpr 应让 paper-review 跳过 §4.4 → 子代理回执必须 SKIPPED_FOR_ORCHESTRATOR;若回 PASS 则 prompt 没生效或 paper-review SKILL.md 实现有 bug,按 §4.1 PROMPT_VIOLATION 处理。--skip mpr 时才跳,且降级为弱收敛。paper-review / mainline / paper-attack-tree 把大问题清掉final-review 做交叉 + 稳态确认npx claudepluginhub skymanbp/sci-paper --plugin sci-paperCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.