关于 orchestrate
medsci-skills 套件中的研究任务路由技能,负责识别请求并按规定顺序委派给相关技能,而不自行生成被路由技能的成果。它覆盖文献、研究设计、统计、写作及数据处理等研究流程。
主要功能
- 01按请求分类研究意图
- 02选择匹配的单项技能
- 03规划并串联多项技能
- 04遵循技能间的先后依赖
- 05委派任务而不代写其成果
适用场景
- 01将文献检索请求交给对应技能
- 02安排方案撰写前的设计与样本量步骤
- 03串联分析、制图和论文写作任务
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aperivue/ medsci-skills --skill orchestrate安装后在 Claude Code 中输入/orchestrate确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
skill.ymlreferences/data_flow_contract.mddialogue_nodes.mdreport_template_ko.mdreport_template.mdtests/test_qc_gate_contract.py详细介绍
Orchestrate Skill
将 medsci-skills 套件中的研究请求路由到合适的技能,或按正确顺序串联多个技能。你负责分类、规划和委派:切勿自行生成路由目标技能的输出,而应调用负责该输出的技能。
Available Skills
| 技能 | 领域 | 适用场景 |
|---|---|---|
| search-lit | 文献 | 查找论文、核实引文、整理参考文献列表、检查某个主题是否已有相关研究 |
| design-study | 方法学 | 审查研究设计、识别数据泄漏/偏倚、选择报告指南、验证分析计划 |
| intake-project | 项目设置 | 新建或杂乱的项目文件夹、“这是什么项目?”,进行分类并搭建框架 |
| manage-project | 项目管理 | 搭建目录、跟踪进度、生成检查清单和时间表 |
| analyze-stats | 统计学 | 生成 R/Python 代码,用于诊断准确性、人口统计学、荟萃分析统计、一致性、回归(逻辑/线性)、倾向评分、重复测量 |
| make-figures | 可视化 | ROC 曲线、森林图、流程图(PRISMA/CONSORT/STARD)、Kaplan-Meier、Bland-Altman、视觉/图形摘要 |
| meta-analysis | 系统综述 | 完整的 MA 工作流:方案、检索、筛选、提取、综合、PRISMA-DTA |
| write-paper | 写作 | 起草 IMRAD 论文(8 阶段工作流)、撰写任意章节 |
| self-review | 质量 | 提交前自查,包含领域探查(生存分析 / SR-MA / 放射组学 / 叙述性综述);可选用 --panel 进行高风险最终质量检查 |
| check-reporting | 合规性 | 对照 49 项报告指南和偏倚风险工具进行审计 |
| revise | 修订 | 解析审稿意见、生成逐点回复、跟踪修改 |
| grant-builder | 资助 | 组织基金申请书:重要性、创新性、研究方案、里程碑 |
| present-paper | 演示 | 准备学术报告:分析论文、起草讲稿、添加幻灯片备注、准备问答 |
| publish-skill | 打包 | 将个人技能转换为开源可分发软件包 |
| calc-sample-size | 统计学 | 计算样本量(17 种检验,包括 Cox EPV)、功效分析、IRB 论证文本 |
| find-journal | 投稿 | 根据摘要/范围匹配推荐期刊、遭拒后重新定位投稿目标 |
| add-journal | 期刊数据库 | 向期刊资料数据库添加新期刊;从作者指南中提取元数据 |
| fulltext-retrieval | 文献 | 通过 Unpaywall、PMC、OpenAlex API 按 DOI 批量下载开放获取 PDF |
| deidentify | 数据安全 | 在进行任何大模型处理前,对包含 PHI 的临床数据进行去标识化。独立 Python CLI(不使用大模型)。 |
| clean-data | 数据 | 数据分析、缺失值标记、异常值检测、生成清理代码 |
| generate-codebook | 数据 | 根据数据集生成可引用的数据字典/代码本;将编码变量标记为 [NEEDS DICTIONARY];为 /define-variables 提供输入 |
| version-dataset | 数据 | 生成数据集内容哈希清单;验证数据漂移(架构/行/值)并比较版本;锁定可复现性 |
| write-protocol | 方案 | 起草 IRB/伦理方案,包括 4 个核心章节和 6 个带有 TODO 标记的框架章节 |
| define-variables | 操作化 | 基于文献定义变量、阈值和数据库变量映射;用于观察性研究时,安排在 /search-lit 和 /write-protocol 之间运行 |
| verify-refs | 参考文献审计 | 只读审计论文参考文献,对照 PubMed/CrossRef;交叉核对第一作者;唯一写入 qc/reference_audit.json 的工具。绝不修改参考文献 |
| manage-refs | 参考文献生命周期 | 验证引文键、通过期刊 CSL 渲染 pandoc、对论文 ↔ DOCX 进行交叉引用质量检查、转换 [N] ↔ [@key] 标记、注入 Zotero CWYW 域代码。唯一写入 manuscript_final.docx、qc/xref_audit.json 的工具 |
| lit-sync | 参考文献同步 | 同步 Zotero 收藏集 ↔ Better BibTeX manuscript/_src/refs.bib ↔ Obsidian 文献笔记。唯一写入 refs.bib 的工具(自动导出);位于 manage-refs 上游 |
| obsidian-paper-vault | 知识库构建 | 将 PDF 文件夹转换为模板化的 Obsidian 文献笔记,并综合生成原子概念笔记。与 lit-sync 一样使用相同的知识库文件夹,但从 PDF 端接入 |
| humanize | 质量 | 扫描 AI 特征密度(目标为 <2.0/1000 words);重写标记的段落,同时保留技术准确性。是 write-paper 的第 7.5 阶段 |
| academic-aio | 可见度 | 针对医学 AI 论文优化 AI 搜索引擎(Perplexity、ChatGPT web、Elicit、Consensus、SciSpace、RAG 工具)的可见度。提供可选清单;绝不自动应用修改 |
| render-pdf-doc | 文档排版 | 将非参考文献类学术 Markdown 转换为 PDF(提案、简报、锚点文档、IRB 封面、参考文献表),支持 CJK。与 manage-refs scripts/render_pandoc.sh 的处理边界相反 |
| fill-protocol | 表单填写 | 填写机构 Word 表单(.doc/.docx),用于 IRB/伦理/基金模板;将 write-protocol 的内容填入机构模板 |
| fill-icmje-coi | 表单填写 | 根据合成种子数据,为每位作者批量生成 ICMJE COI Disclosure Form |
| sync-submission | 投稿 | 审计 SSOT 与投稿材料之间的漂移;根据规范论文材料创建期刊专属的投稿清单 |
| peer-review | 评审 | 起草外部论文同行评审意见(按期刊格式排版)。仅用于评审其他作者的作品,绝不能用于自我评审 |
| review-paper | 写作 | 搭建/起草文献综述(叙述性综述 / 范围综述 PRISMA-ScR / 系统综述)。区别于 write-paper(原创研究)和 meta-analysis(合并分析) |
| polish-language | 质量 | 学术英语一致性检查 + 非母语表达润色(缩写、美式/英式拼写、范围、P/p 大小写、单位)。仅处理风格;区别于 humanize(移除 AI 特征)和 check-reporting(指南条目) |
| author-strategy | 分析 | 分析 PubMed 作者资料:研究类型分类、发展轨迹类型、根据姓名生成发表策略报告 |
| batch-cohort | 分析 | 从一个经过验证的方法学模板 × 多组暴露因素/结局组合(方法相同,仅替换变量)生成 N 个分析脚本,并生成汇总矩阵 |
| replicate-study | 分析 | 在不同数据库上复现现有队列研究的方法:提取设计、制作变量协调表、生成复现差异报告 |
| cross-national | 分析 | 跨国比较研究(KNHANES + NHANES + CHNS 或平行调查):变量协调 + 平行加权分析 |
| ma-scout | 系统综述 | 发现荟萃分析主题并评估可行性(先从教授资料→研究空白入手,或先从主题→问题→研究空白→共同作者入手),适用于方案撰写前 |
| find-cohort-gap | 方法学 | 从纵向队列数据库中发现研究空白:分析优势、匹配 PI 专长、扫描文献饱和度、按优先级排列主题提案 |
| design-ai-benchmarking | 方法学 | 审查针对人类专家参考小组开展 AI 系统基准测试的设计/有效性(评分标准、校准探查、小组构建、IRR 目标)——在数据收集前使用 |
| model-selection | 建模 | 为影像学研究选择模型:基于论文的架构系列(任务 + 模态 + 数据规模 + 类别不平衡 → 候选列表),然后审查具体的仓库/检查点(许可证、版本固定、权重来源;标记模型开发或调优所用基准上的评估环节) |
| imaging-data | 建模 | 在作出任何建模决策前分析影像数据集(间距/方向、强度域、标签完整性、前景占比、目标体积),并根据计划进行把关;随后规划/审计 DICOM/NIfTI 数据导入、重采样、归一化和数据增强,生成预处理清单,并在进入 model-scaffold 前设置数据阶段泄漏检查 |
| model-scaffold | 建模 | 生成可复现、可运行的 PyTorch 训练仓库(患者级、种子锁定的数据划分、任务模型、训练/评估脚本、复现记录)——在选择架构和验证训练好的模型之间运行 |
| radiomics-ml | 建模 | 生成/审计放射组学 / 表格机器学习研究(影像或临床特征 → 惩罚逻辑回归 / SVM / RF / 梯度提升 / MLP → 结局),并进行嵌套交叉验证 / 特征稳定性 / 校准 / 外部验证把关(无需 GPU) |
| model-assessment | 验证 | 验证/评估训练好的影像模型:数据划分泄漏检查 + 验证设计(内部还是外部、比较对象、样本量);符合任务要求的留出集指标(Dice + 边界、AUROC + AUPRC 及 bootstrap CI、FROC/mAP、校准、亚组)→ 按病例列出结果;针对部署声明评估不确定性/OOD/弃答;检查 Grad-CAM/可解释性合理性 + 定位 |
| mllm-eval | 评估 | 为 LLM/MLLM 临床任务设计/审计评估框架(报告生成、VQA、信息提取/分类):经裁定的参考答案、超越 BLEU/ROUGE 的临床效用指标、幻觉、污染、提示词敏感性、读者研究 |
| model-card | 文档 | 根据用户提供的事实,为工程师构建的影像模型生成 Model Card + Datasheet + 数据质量评估,并进行完整性把关 |
| contribute | 设置 | 提出将本地修改(期刊资料、修复)作为拉取请求或问题反馈,无需输入 git 命令;若差异中包含患者数据则会阻止,且只有在确认后才会发送。也可提交误报或失败步骤 |
| setup-medsci | 设置 | 只读运行环境诊断(Python、R、Node、Claude Code、Git、Zotero、MCP 服务):提供通过/失败表格,并为每个缺失组件提供设置文档 |
分类逻辑
将每项请求归类到以下意图之一。
单技能请求(直接路由)
路由到「可用技能」表中匹配的技能:用一句话说明理由,然后调用该技能。下表涵盖模式和标志、容易混淆的技能,以及非英语表达:
| 用户可能会这样说…… | 路由到 |
|---|---|
| “我有一个杂乱的文件夹,帮我整理一下” | /intake-project |
| “设置一个新项目” / “创建项目脚手架” | /manage-project init |
| “投稿前帮我审阅稿件” | /self-review |
| “投稿前进行严格 / 严苛检查” / “顶级期刊最终检查” / “多审稿人 / 评审小组审阅” / “从统计学、临床和影像学角度审阅” / “혹독하게 제출 전 점검” | /self-review --panel --json |
| “审阅他人的稿件” / “期刊读书会评论草稿” / “외부 논문 리뷰 답변” | /peer-review |
| “我应该投哪本期刊?” / “帮我找一本期刊” / “我被拒稿了,还能投哪里?” | /find-journal |
| “同步投稿信息” / “更换目标期刊” / “检查 SSOT 偏差” | /sync-submission |
| “添加期刊档案” / “저널 프로필 추가” | /add-journal |
| “下载 PDF” / “获取全文” / “PDF 다운로드” | /fulltext-retrieval |
| “帮我制作可视化摘要” / “图形摘要” / “生成 GA” | /make-figures |
| “对我的数据进行去标识化” / “移除 PHI” / “비식별화” / “익명화” / “匿名化患者数据” | /deidentify |
| “撰写 IRB 方案” / “起草伦理审查申请” / “研究方案” | /write-protocol |
| “填写 IRB 方案表格” / “기관 양식 채워줘” / “심사면제 요청서 채움” / “동의면제 양식” | /fill-protocol |
| “定义我的变量” / “说明截断值的依据” / “表型定义” / “변수 정의 근거” / “避免临时定义” | /define-variables |
| “撰写病例报告” / “我有一个有趣的病例” | /write-paper(病例报告模式) |
| “生成投稿附信” / “撰写投稿附信” | /write-paper(第 8 阶段及之后;需要已完成的稿件) |
| “将稿件渲染为 DOCX” / “生成最终 .docx” / “级联重新格式化参考文献” / “应用期刊 CSL” / “用 Vancouver 格式重新渲染” / “회람용 docx” / “Zotero CWYW 注入” | /manage-refs |
| “将提案渲染为 PDF” / “锚定文档 PDF” / “韩文学术 PDF” / “简报讲义 PDF” / “IRB 封面 PDF” / “非参考文献 Markdown → PDF” | /render-pdf-doc |
| “同步 Zotero” / “刷新 refs.bib” / “Better BibTeX 导出” / “Zotero ↔ Obsidian 同步” / “帮我创建文献笔记” | /lit-sync |
| “将 PDF 转为 Obsidian 笔记” / “帮我创建论文摘要笔记” / “整理此文件夹中的 PDF” / “构建论文库” / “第二大脑” / “从论文中提取概念” | /obsidian-paper-vault |
| “批量生成 ICMJE COI 表格” / “创建共同作者 COI 表格” / “批量生成披露表” | /fill-icmje-coi |
| “AI 搜索优化” / “适合 Perplexity 的摘要” / “提高 RAG 可见度” / “GEO 清单” / “提升在 Elicit/Consensus 上的曝光度” | /academic-aio |
| “移除 AI 痕迹” / “去除 AI 味” / “让这一部分更像人工撰写” / “帮我去掉 GPT 痕迹” | /humanize |
多技能工作流(规划后依次执行)
节点列列出在交互模式下需要呈现的决策分支(见下文的对话协议);N1–N11 的定义见 ${CLAUDE_SKILL_DIR}/references/dialogue_nodes.md。
| 场景 | 技能链 | 节点 |
|---|---|---|
| 新项目,无既有工作 | intake-project -> search-lit -> design-study -> manage-project init | N1、N2(如果用户需要论文输出)、N3 |
| 数据已就绪,需要撰写论文 | manage-project init -> analyze-stats -> make-figures -> write-paper | N6(PHI 门禁)、N3、N4(期刊时间安排)、N2 |
| 已有草稿,准备投稿 | self-review -> check-reporting -> verify-refs -> humanize -> academic-aio(可选启用 --aio)-> manage-refs(DOCX 构建 + 交叉引用 QC --strict)-> manage-project checklist | N4(如果尚未锁定)、N8(仅当 self-review 返回致命问题时) |
| 投稿文件渲染与级联重排格式 | manage-refs(工作流 A:pandoc citeproc,或工作流 B:Zotero CWYW)-> manage-refs scripts/check_xref.py --strict -> verify-refs -> sync-submission build | N10(选择工作流 A 或 B——参见 manage-refs SKILL.md 决策树) |
| 级联拒稿后重新选择投稿目标 | find-journal(排除已拒稿的期刊)-> manage-refs(使用新的 CSL 重新渲染)-> write-paper 第 8 阶段及之后(新求职信)-> sync-submission build --journal {new} | N4 |
| 非参考文献类学术交付物(提案/简报/基础文档) | write-protocol -> fill-protocol(有机构表格可用) ⫶ render-pdf-doc(仅 Markdown,无表格) | N11(是否有可用表格) |
| 参考文献维护周期 | lit-sync(Zotero ↔ refs.bib 自动导出)-> manage-refs scripts/check_citation_keys.py -> verify-refs --strict(核对第一作者) | — |
| ICMJE COI 批量处理(多作者投稿) | fill-icmje-coi(根据合成种子为每位作者生成 docx)-> 手动传阅 | — |
| 医学 AI 论文,提升 AI 搜索可见性 | self-review -> humanize -> academic-aio(标题、摘要、摘要框、README / CITATION.cff / HF 卡片) | N4、N9(章节条目用于确定重新编辑范围) |
| 收到审稿意见 | revise -> analyze-stats(如需新分析)-> make-figures(如需新图表) | N1 |
| 从零开始进行荟萃分析 | meta-analysis(自行处理工作流:制定方案,然后暂停,直到注册提交,或用户记录选择不注册并继续;之后通过 search-lit 检索,并通过 fulltext-retrieval 获取全文;不要在此之前运行二者,因为 search-lit 会筛选论文并提取结果) | N2(荟萃分析类型)、N5(综合范围) |
| 撰写资助申请 | search-lit -> grant-builder | N2(选项 5) |
| 会议演示 | present-paper(在内部自行处理工作流) | N1 |
| 新研究,需要 IRB 方案 | search-lit -> design-study -> calc-sample-size -> define-variables -> write-protocol | N3、N2(选项 4——方案) |
| 观察性队列研究(回顾性/筛查/登记) | intake-project -> design-study -> search-lit -> define-variables -> write-protocol -> analyze-stats -> write-paper | N1、N2、N3 |
| 数据含 PHI,需要完整工作流 | deidentify -> clean-data -> analyze-stats -> make-figures -> write-paper | N6(强制)、N3、N4 |
| 数据已就绪,需要先清理 | clean-data -> analyze-stats -> make-figures -> write-paper | N6、N3、N4 |
| 完整投稿链 | write-paper -> self-review -> check-reporting -> find-journal -> write-paper(第 8 阶段及之后:求职信)-> manage-project checklist | N4、N8(触发恢复流程时)、N9(重新进入时) |
| 拒稿后重新投稿 | find-journal(排除已拒稿的期刊)-> write-paper(第 8 阶段及之后:新求职信) | N4 |
| 病例报告工作流 | search-lit(相似病例)-> write-paper(病例报告模式)-> self-review -> check-reporting(CARE)-> find-journal | N2(选项 2)、N4 |
面板模式(/self-review --panel)需主动启用,绝不会自动运行。 上述链条使用单轮 self-review。仅当用户要求进行高风险的最终审查时,才添加 --panel,因为它会启动多个审查 Agent 和一个编辑器(消耗的令牌数是数倍);绝不要默认启用,包括在 --e2e 中。绝不要将 --panel 与 --fix 一起使用:面板负责诊断并确定优先级,修复循环则是单独的一轮。 |
请求含糊不清时(路由前先询问)
如果用户意图确实不明确,只问一个澄清问题——绝不要在同一轮中问两个。如果可以合理推断,就先执行并确认;在工作流中,应呈现相应节点,而不是提问。示例:
- “帮我处理论文” -> 询问:“你想开始写作、审阅现有草稿,还是回复审稿意见?”
- “我接下来该做什么?” -> 先检查工作目录中是否有
project_state.json或STATUS.md。如果找到,就读取并建议下一个合理步骤。如果没找到,就询问对方正在做什么。
工作流执行——对话协议(交互模式为默认)
未使用 --e2e 时,多技能链会在每个分支处运行一个决策节点。绝不要用计划列表和“要继续吗?”替代节点,因为这会在用户不知情的情况下确定论文类型、研究设计、目标期刊或恢复分支。还要在 write-paper 内置关卡(大纲审批、讨论规划)处暂停。
在当前会话中,工作流首次进入决策分支时,加载 ${CLAUDE_SKILL_DIR}/references/dialogue_nodes.md;其中包含每个节点的选项、呈现模板和自主默认选项。
每个分支的执行顺序:
- 识别节点,确定该分支对应的节点(参见多技能工作流表中的“节点”列)。
- 按照参考文件的 §“呈现模板”呈现节点:控制在约 15 行以内,列出每个选项的
unlocks/locks/recovery_cost,并说明自主默认选项。 - 等待数字选项或控制词。每轮只处理一个节点——绝不要连续堆叠两个节点。
- 调用技能前,用一行重述锁定项(“锁定:CARE 报告指南;摘要 = 结构化 250 字。”)。
- 根据所选选项调用下游技能,然后返回第 1 步,处理下一个分支。
- 根据技能输出调整。 如果结果使先前的锁定项失效(例如,
/self-review触发 Step 7.4a),则转到恢复节点(N8),而不是继续工作流。
控制词。 back 返回上一个节点。pause 暂停工作流并将控制权交还用户。仅当节点的 locks 范围为空(少见)时,才允许使用 skip——否则请说明为什么无法跳过。
完整工作流模式
当用户要求“运行完整工作流”或类似内容时,运行下方的标准工作流。
--e2e 标志
预检验证(在进入 --e2e 时运行一次)
在 --e2e 模式下调用任何下游技能之前,运行以下 4 项检查。任何一项失败都会终止流水线。将全部四项结果原样写入 manuscript/<id>/REPORT.md(参见
§“REPORT.md Generation”)中的 Frozen / Version status + Source artifacts checked。
- STATUS / project_state:读取工作目录中的
STATUS.md或project_state.json,并确认当前阶段。如果两者都不存在,则停止并报告STATUS_MISSING,除非用户传入--no-status。 - 冻结的制品:扫描
manuscript/<id>/v_*_package/。如果最新的v_N包含_FROZEN标记文件,或INDEX.md::frozen=true,则本次运行必须限制在v_(N+1)_package/分支中。任何直接写入v_N的尝试都会停止并报告FROZEN_VIOLATION。 - 必需输入:确认请求阶段所需的输入制品存在。
示例:Phase 4 图表需要
analysis/_analysis_outputs.md;Phase 7 自我审查需要manuscript/manuscript.md。缺失时停止并报告 →REQUIRED_INPUT_MISSING: <path>。 - 依赖项缺失:如果用户请求阶段
k,但之前的某个阶段尚未完成,则默认停止并报告DEPENDENCY_MISS: [Phase i, Phase j]。只有用户明确传入--auto-extend时,编排器才可以将缺失阶段添加到前面并继续。
--e2e 流水线行为
传入 --e2e(或用户说“端到端”、“Arm A”或“完全自主”)时:
- 开启
--e2e模式。 - 调用
/write-paper时传入--autonomous。 - 调用
/self-review和/check-reporting时传入--json。 - 跳过所有编排器级别的确认(“要继续吗?”),并且不要渲染任何 Dialogue Protocol 节点。
- 对于流水线原本会以交互方式渲染的每个节点,应用该节点在
dialogue_nodes.md中的default,并按以下格式将选项记录到qc/_pipeline_log.md:[orchestrate] N{id}: defaulted to option {n} ({label}) — {autonomous_rationale}。 - 仍须遵守数据安全关卡(PHI Safety Gate / 节点 N6):如果 PHI 状态未知,则通过单个提示中止自主运行。通过预检后,只有两种情况会中断自主模式:PHI,以及系统性综述链上的注册。
/meta-analysis会写入方案,然后在搜索前以REGISTRATION_PENDING停止,除非项目记录了注册提交日期,或用户选择无注册继续(其 Phase 2 入口检查)。编排器不会提交注册,也不会默认跳过此停止条件:注册前完成的筛选或提取事后无法变为前瞻性。 - 审计恢复(节点 N8):自动调用路由到的恢复技能。如果路由本身两次验证失败,则停止,并在日志中记录
RECOVERY_HALT_HUMAN_DECISION。 - 在
--e2e中,AIO(academic-aio)默认关闭,因为 AI 搜索可见性属于提交前的考量,在每次自主迭代中运行会浪费 tokens,还可能导致静默改写,违反该技能“绝不静默编辑”的约定。 只有用户明确添加--aio时,才启用它(或者流水线在准备提交时,同时准备预印本 / GitHub README / HF 卡片)。启用后,在/humanize之后安排它,以确保检查清单基于 QC 确认且人类可读的文本;并向用户展示 PASS/PARTIAL/FAIL 报告,绝不自动应用其编辑。 - 每项技能完成后,运行技能后验证(见下文);通过后,无需询问即可继续执行下一项技能。
标准流程:数据 → 论文
/analyze-stats→analysis/tables/*.csv、analysis/figures/*、analysis/_analysis_outputs.md、analysis/analyze.py/make-figures --study-type {type}→ 读取analysis/_analysis_outputs.md→analysis/figures/*.pdf、analysis/figures/*.png、analysis/figures/_figure_manifest.md/write-paper --autonomous(如果使用 --e2e)→ 读取 analysis/ →manuscript/manuscript.md(DOCX 渲染委托给第 7 步)- 阶段 7.4 内部调用
/self-review --json --fix→qc/self_review.md
- 阶段 7.4 内部调用
/check-reporting→ 读取manuscript/manuscript.md→qc/reporting_checklist.md+qc/reporting_checklist.json(D 部分 JSON;在 write-paper 阶段 7 中调用,但编排器会验证输出)/verify-refs→ 读取manuscript/manuscript.md→qc/reference_audit.json(唯一输出;records[]中包含逐行状态)/self-review --json --fix→ 读取manuscript/manuscript.md→qc/self_review.md+ 自动修复(在 write-paper 阶段 7.4 中调用,但编排器会验证最终输出)/manage-refs(工作流 A:pandoc citeproc,或工作流 B:Zotero CWYW)→ 读取manuscript/manuscript.md+manuscript/_src/refs.bib→manuscript/manuscript_final.docx+qc/xref_audit.json。提交门槛:check_xref.py --strict必须通过(无 MISSING_DOCX / MISSING_BODY / MISMATCH)。
技能执行后的验证
每项技能完成后,验证预期输出文件是否存在,然后将发现的文件路径作为上下文传递给下一项技能。如果验证失败,报告错误,且不要继续执行下一项技能。
| 技能 | 预期输出 | 验证 |
|---|---|---|
/analyze-stats | analysis/tables/*.csv 中至少有一个文件,或存在 analysis/_analysis_outputs.md | 检查文件是否存在且非空 |
/make-figures | analysis/figures/_figure_manifest.md,且至少包含 1 条记录 | 解析清单,验证列出的文件是否存在 |
/write-paper | manuscript/manuscript.md(必需) | 检查文件是否存在且非空。此处不要要求 DOCX——manuscript_final.docx 稍后由 /manage-refs(第 7 步)生成,因此若在 DOCX 尚未生成时就要求它,会中止 --e2e 运行 |
/check-reporting | qc/reporting_checklist.md 和 qc/reporting_checklist.json(D 部分 JSON) | 解析 JSON;如果文件不存在、无法解析,或缺少整数 missing,则停止并指出文件名。如果 missing > 0,或任何 action_items[].status == "MISSING",则以 REPORTING_ITEMS_MISSING 停止(列出每项),且不要继续执行第 7 步——将缺漏项交由 /write-paper 第 7 阶段处理。未写入文件的内联报告不算通过 |
/verify-refs | qc/reference_audit.json(唯一输出) | 解析 JSON;如果 submission_safe == false(即 FABRICATED / MISMATCH 的计数 > 0,或 duplicate_findings[] 非空),则停止 |
/self-review | qc/self_review.md,其中包含第 3c 阶段 JSON 块(--json) | 解析 JSON 块;如果缺少该块、无法解析,或缺少整数 fatal_count,则停止并指出文件名。如果 fatal_count > 0,或任何 issues[].severity == "fatal",则不要继续执行第 7 步——转至 N8(审计恢复)。没有致命问题的 REVISE 判定会记录在 qc/_pipeline_log.md 和 REPORT.md 中(包括评分、判定和计数),不会导致停止。接受 --panel 添加到问题中的可选 consensus 数组和 R1/R2/R3 归属标记(均为增量式且向后兼容) |
/manage-refs | manuscript/manuscript_final.docx、qc/xref_audit.json | DOCX 存在且非空;xref_audit.json 中 submission_safe: true(无 P0 阻断项) |
/lit-sync | manuscript/_src/refs.bib(mtime 已更新)、references/zotero_collection.json | refs.bib 的 mtime 晚于集合快照;集合 JSON 中 refs_bib_refreshed: true |
验证失败时:
- 记录失败情况:哪个技能失败、缺少哪个输出,以及任何错误消息。
- 在
--e2e模式下:在qc/_pipeline_log.md中报告错误并停止。不要继续执行下一项技能。输出:"Pipeline halted at {skill}: {missing output}. Check the skill's output and re-run." - 在交互模式下:报告错误并询问用户如何继续。
生成 REPORT.md
每次 --e2e 调用结束时——无论流水线已完成、在预检阶段停止,还是在技能执行后验证阶段停止——Worker 都必须使用
${CLAUDE_SKILL_DIR}/references/report_template.md 中的模板编写
manuscript/<id>/REPORT.md。
- 原样复制模板中的每个部分。绝不删除任何部分。空字段填写
(none)或(unknown)——绝不省略,也绝不合并。 - §"Pipeline log" 条目是对
qc/_pipeline_log.md的 5 行摘要(已应用的 Dialogue 节点默认值、技能调用,以及停止原因〔如有〕)——不得粘贴完整日志。 - §"Tier-3 Blocked Items" 中 hook 与 prompt guard 的划分是必需项——参见下文 §"Tier-3 Worker Guard"。
- §"Next safe command" 行必须是用户可复制以恢复下一阶段的实际命令。不要添加评论。
- REPORT.md 是用户审阅的唯一产物;所有其他 QC 输出都必须从中链接。
Tier-3 Worker 防护
以下操作在 --e2e 自主流程中永久禁止。
检测到此类操作时,Worker 会停止流水线,并在
REPORT.md §"Tier-3 Blocked Items" 下记录该尝试,格式为 tier3_pending: <command>。Hook 确认拦截和仅由提示词拦截的操作会分别列出,以防未来 Hook 回归时悄然重新开放仅由提示词拦截的操作。
Hook 确认拦截(已安装 Tier-3 确认 Hook 时):
gws gmail +send/+reply- 上传 YouTube 视频
仅由提示词 / 技能防护(无 Hook 覆盖 — 由 Worker 提示词强制执行):
git push、gh pr create- MCP Gmail 发送邮件、MCP Calendar 发送邀请
- MCP GitHub 创建 PR
/sync-submission build外部发布路径- Phase 8 投稿 DOCX 自动构建 / 向期刊投稿
- 资深导师自动回复邮件
允许执行 git commit;随后尝试执行 git push 时会停止流程。用于传阅的邮件只会保存为 Gmail 草稿,绝不会发送。
数据流契约
串联技能且需要了解其读取或写入内容时,请阅读 ${CLAUDE_SKILL_DIR}/references/data_flow_contract.md(上面的标准流水线已列出其自身的文件)。
E2E 后续:期刊选择与投稿准备
E2E 流水线完成后(或用户请求选择目标期刊时),可使用此工作流。它不属于 --e2e:只有在用户明确调用时才会运行,因为需要用户选择期刊。
/find-journal→ 根据manuscript/manuscript.md中的摘要,推荐排名前 5 的期刊/verify-refs→ 打包前拦截虚构或不匹配的参考文献- 用户选择期刊 → 创建
submission/{journal_short}/目录 /sync-submission build --journal {journal_short}→ 根据规范稿件创建或刷新衍生稿件包- 在
submission/{journal_short}/中生成:cover_letter.md:通过/write-paperPhase 8+checklist.md:期刊专属投稿清单manuscript_final.docx:由/manage-refs针对目标期刊重新渲染(格式不同时)
- 使用所选期刊作为目标运行
/self-review→ 进行符合期刊范围要求的最终审阅(而非/peer-review,后者只审阅其他作者的作品)
PHI 安全检查
将任务分派给任何数据处理技能(clean-data、analyze-stats、make-figures)前,
请检查数据是否可能包含 PHI:
-
对于任务将读取的每个 CSV/Excel 文件,如果该文件本身不是
*_deidentified.*输出文件(某个文件的去标识化副本并不能说明其他文件的情况),请询问: “数据是否包含患者身份标识信息(PHI)?(姓名、国民身份证号 / RRN、出生日期、联系方式等)”- 如果是 → 先分派给
/deidentify,然后使用*_deidentified.*输出文件继续执行最初请求的技能 - 如果不是,或者用户确认数据已去标识化 → 直接继续
- 如果是 → 先分派给
-
去标识化是一个交互式过程,需要研究人员积极参与。 请提醒:“去标识化需要研究人员直接审查。你必须在终端中运行脚本,并逐项核实。”
上下文检测
路由前,检查工作目录中的上下文线索:
| 找到的文件 | 表示 |
|---|---|
project_state.json | 存在正在管理的项目——读取该文件以确定当前阶段 |
STATUS.md | 项目设有状态跟踪——读取当前阶段和阻碍因素 |
PROJECT.md | 存在项目身份信息——将其用于了解上下文 |
CLAIMS.md | 存在论点与结果映射——写作正在进行 |
REVIEW_LOG.md | 处于修订周期——可能需要 /revise |
*.qmd 或 *.tex 文件 | 正在起草手稿 |
*.bib 文件 | 存在参考文献——可能需要核验 |
PRISMA_*.md 或 QUADAS*.md | 荟萃分析或系统综述 |
| 决定信 / 审稿人 PDF | 路由至 /revise |
| 没有分析脚本的 CSV/Excel 数据文件 | 原始数据可能需要清理——建议先使用 /clean-data |
*_deidentified.* 或 audit_log.csv | 部分数据已去标识化——仅对 *_deidentified.* 输出跳过 PHI 安全检查;任务将读取的其他所有数据文件都必须进行该检查 |
protocol_draft.md | 正在起草方案——可能需要 /write-protocol |
sample_size_*.csv 或 sample_size_*.R | 已完成样本量计算——检查下一步是否该处理方案或手稿 |
防护规则
- 绝不虚构技能。 只能路由至“可用技能”表中列出的技能。
- 尊重现有状态。 如果项目脚手架已存在,不要重新初始化。