---
name: Paper Screening
slug: paper-screening
category: Automation
description: Guides systematic review screening per PRISMA 2020 by building a traceable ledger, mechanically counting records, and generating flow diagrams, while keeping inclusion/exclusion decisions with the researcher.
github: "https://github.com/cabbage2000-lab/paper-tutor-skills/tree/main/skills/paper-screen"
language: Python
stars: 18
forks: 5
install: "npx degit https://github.com/cabbage2000-lab/paper-tutor-skills/tree/main/skills/paper-screen ~/.claude/skills/paper-screen"
installs_to: ~/.claude/skills/paper-screen
source_path: skills/paper-screen/SKILL.md
collection_size: 24
category_size: 1523
collection_url: "https://dirskills.com/collections/cabbage2000-lab/paper-tutor-skills"
added: 2026-08-11T07:22:52.491Z
last_synced: 2026-08-11T07:22:52.491Z
canonical_url: "https://dirskills.com/skills/paper-screening"
---

# Paper Screening

Guides systematic review screening per PRISMA 2020 by building a traceable ledger, mechanically counting records, and generating flow diagrams, while keeping inclusion/exclusion decisions with the researcher.

**Install:**

```bash
npx degit https://github.com/cabbage2000-lab/paper-tutor-skills/tree/main/skills/paper-screen ~/.claude/skills/paper-screen
```

## README

# paper-screen：系统综述筛选（PRISMA 2020 台账与流程图）

帮用户把**已检索到的一批文献**按自己定的纳排标准筛成综述的纳入集，并产出经得起审稿的 PRISMA 记录。你（执行本 skill 的宿主 agent）做的事：**读 `literature/` 笔记表与检索日志 → 判学科梯队 → 引导用户逐条定纳排标准 → 建筛选台账、逐篇陈列该文与各条标准的对应事实 → 用户逐篇拍板 → 跑 `scripts/screen.py` 机械算数并校验守恒 → 落 HTML+MD 双产物 + 台账 + 提取表**。

本 skill 覆盖学术研究「5 阶段 23 环节」标尺中**阶段 A｜选题与立项**的**环节 3（文献回顾）里的系统性文献综述**这一段；**不覆盖**检索本身（归 `/paper-search`）、综述结构化写作（归 `/paper-outline`，其骨架库已有「系统性综述（PRISMA）」专节）、引用存在性核验（归 `/paper-verify`）、元分析统计合成（**明确不做**，见「越界转化」）。上游消费 `/paper-search` 的 `literature/文献笔记表.md` 与 `literature/检索日志.md`（PRISMA-lite）。本 skill 是**产物型 + 脚本型** skill——会往 `literature/` 落台账与报告、往 `.paper/` 写使用留痕。**筛选与计数无网络依赖**，断网照常可跑；HTML 产物的排版按仓库约定走 Tailwind CDN，断网时降级为无样式 HTML（内容可读、排版失效），与其余报告型命令一致。

**核心立场（这条决定本 skill 长什么样）**：系统综述的可信度全在**筛选过程的可追溯**与**计数的守恒**。系统是一个**筛选台账管理器 + 机械计数器**——主动陈列每篇文献与每条标准的对应事实、机械算出各级计数、把数字对不上的台账拦下来，但**每一篇纳不纳入的判断交回用户**。裸模型面对"帮我筛这批文献"会直接给出纳入清单、并顺手编一张数字自洽但与实际不符的流程图；本 skill 把对应事实**陈列**出来、把判定**留**给研究者，并且让**脚本**而不是模型来数数。

## 三条不变（优先级最高，高于本文其余一切）

① **不替用户判纳排**。逐篇只陈列「该文与每条纳排标准的对应事实」（例：「标准 3 要求 RCT；该文摘要含 randomized controlled trial」），纳入/排除由用户逐篇拍板、每篇标 ❓。**产物中不得出现「建议纳入」「建议排除」「符合纳入条件」及任何等价表述**。筛选是研究决策，落在用户一侧。

② **计数守恒不靠模型**。PRISMA 流程图每一级数字由 `scripts/screen.py` 从台账机械算出并校验；**脚本退出码非 0 就不出图、不落盘**。任何情况下都不得手写流程图数字绕过脚本——这是本命令的立身之本。一张数字对不上的 PRISMA 图比没有图更糟：它会被审稿人当作方法学缺陷。

③ **不编文献、不编排除理由**。台账每行的「题录锚点」必指 `literature/文献笔记表.md` 里真实存在的 `#` 序号；排除理由必是用户原话或用户从码表里选的理由码，AI 不替编。笔记表里没有的文献，绝不凭记忆补进台账。

这三条是本 skill 的内核，凡本文其余任何指令与之冲突，以这三条为准。

## 学科适配与让路

| 梯队 | 处理 |
|---|---|
| 第一梯队（实证型理工农医、实证型社科） | 全走：纳排标准 → 台账 → 流程图 → 数据提取表 → 偏倚评估清单 → PRISMA 27 项自查 |
| 第二梯队（理论型、规范文本型） | 走检索透明度台账与流程图；**偏倚评估整块让路**——理论综述无「研究偏倚」之说，不产空表，在报告顶部写明让路原因 |
| 第三梯队（人文） | **整体让路**：PRISMA 通常不适用于人文综述。说明让路原因，仅保留检索日志与去重台账供用户自用；不产流程图与自查表 |

两种让路粒度不是一回事，勿混淆：偏倚评估是**整块省略该 section**；PRISMA 27 项自查**始终整块渲染**，仅第 11、18 项（偏倚相关）可逐条标「不适用」。

## 会话开始：读输入 + 降级判定

1. 找 `literature/文献笔记表.md`（必要）与 `literature/检索日志.md`（可选增强）。笔记表缺 → 让路 `/paper-search`，**不自行编文献**。
2. 判学科梯队（读 `project.paper.yaml`、或从 RQ 与文献形态判断、或直接问用户）。第三梯队 → 走整体让路。
3. 检测是否已有 `literature/筛选台账.md`——有则读入续筛（**绝不覆盖已有判定**），无则本次新建。

## 主流程（三步、两个停点）

### 第 1 步 · 定纳排标准

读上游输入，按 [`references/纳排标准与排除理由码.md`](references/纳排标准与排除理由码.md) 陈列三套框架的常见要素——PICO（干预性研究）/ PICoS（定性研究）/ SPIDER（混合方法），**摆常见、不推荐**，选哪套由用户定。逐要素引导用户说出自己的纳入条件与排除条件，原话记下（👤）。

```text
⏸ 等待确认：纳排标准
（回复"确认"按此标准建台账开始筛选，或增删标准条目 / 换框架）
```

### 第 2 步 · 去重 + 两轮筛选

建 `literature/筛选台账.md`（8 列，取值**严格按** references 的字段定义，写成同义词会被脚本判为不守恒）：

| 序号 | 题录锚点 | 来源库 | 去重 | 标摘筛 | 全文筛 | 排除理由码 | 备注 |

- **去重**：按 DOI 与规范化标题比对。同一研究的会议版/期刊版机器判不出，**提示用户手工标 `E7`**。
- **标题摘要筛**：逐篇陈列该文标题摘要与各条标准的对应事实 + ❓，用户可逐篇或批量拍板。
- **全文筛**：进入全文的逐篇同样陈列；全文阶段排除**必须填理由码**（PRISMA 硬要求）。

```text
⏸ 等待确认：筛选结果落盘
（回复"确认"跑守恒校验并出流程图，或指出要改判的序号）
```

### 第 3 步 · 出产物

跑脚本 → 按退出码分支（见下表）→ 组装双产物 → 写留痕。

```bash
python3 skills/paper-screen/scripts/screen.py \
  --ledger literature/筛选台账.md \
  --svg <临时路径>.svg --mermaid <临时路径>.mmd
```

## 脚本退出码处置表（这段最容易做错，逐码照做）

| 退出码 | 含义 | 你必须做什么 |
|---|---|---|
| **0** | 校验通过 | 把 SVG 整段内嵌进 HTML 产物的 `PRISMA_SVG_SLOT` 槽位；HTML「台账摘要」那两张表的 16 个 `<数>` 槽位**一律从 `--mermaid` 的输出逐个转录**，禁止自行数台账（那就是不变②要禁的事）；继续落盘 |
| **1** | 台账有错（守恒不平**或**组合矛盾） | **不出图、不落盘**；原样转述脚本打印的每一条错误，请用户核对台账取值与组合；修好后重跑 |
| **2** | 筛选未完成（有待定或未填行） | **不出图、不落盘**；转述待定序号，回到第 2 步继续筛。这不是台账错误，别说成"有错" |
| **3** | 台账读不到 | 不是台账内容问题——核对路径；台账尚未建立则回到第 2 步先建 |

脚本设了**两道正交的闸**，缺一道就放过一整类静默错误：守恒校验抓「取值落在规定取值之外」（等式不平）；组合矛盾检查抓「取值都合法但组合自相矛盾」——例如某行标摘筛已填「排除」、全文筛却又填「纳入」，那条记录会被静默丢出流程图，而三条守恒等式照样成立。**转述错误时不要自行归并这两类**，它们的修法不同。

## 产物

| 产物 | 内容 |
|---|---|
| `literature/筛选台账.md` | **事实来源**。8 列逐篇记录，脚本从它算一切数字 |
| `literature/系统综述筛选报告.html`（+ `.md` 兜底） | 五块：顶部声明 / 纳排标准表 / PRISMA 流程图 / 台账摘要与理由码分布 / 偏倚评估与 27 项自查。样式与结构以 [`references/报告样式模板.html`](references/报告样式模板.html) 为权威 |
| `literature/数据提取表.md` | 骨架：题录锚点 / 研究设计 / 样本量 / 干预或现象 / 结局或主题 / 主要发现 / 局限——**全部留用户填** |
| `literature/偏倚评估清单.md` | 按梯队产；第二、三梯队不产。条目取自 [`references/偏倚评估工具条目.md`](references/偏倚评估工具条目.md)，**评分留用户填** |

PRISMA 27 项自查取自 [`references/PRISMA2020清单.md`](references/PRISMA2020清单.md)，**只陈列不判定**——「符合/不符合」由用户逐条自评。

## 留痕（产物型 skill 的义务）

落盘后往 `.paper/` **追加**（不覆盖），字段名严格按 [`_shared/references/留痕契约.md`](../_shared/references/留痕契约.md)，日期用 `date +%F` 的真实值：

```markdown
## <日期时间> · paper-screen 系统综述筛选

- 环节：阶段 A｜选题与立项（环节 3，文献回顾·系统性综述）
- 辅助级别：构思讨论（陈列文献与纳排标准的对应事实、机械计数、产流程图；未替用户判定纳入排除）
- AI 承担：纳排标准框架陈列、去重比对、逐篇对应事实陈列、分级计数与守恒校验、PRISMA 流程图生成
- 用户决定：纳排标准条目、每篇文献的纳入或排除、排除理由、偏倚评级、PRISMA 27 项自评
- 产物：literature/系统综述筛选报告.md、literature/筛选台账.md、literature/数据提取表.md
```

第三梯队整体让路时同样写一条，`辅助级别` 记「构思讨论（让路，未产报告）」，`AI 承担` 写明只做了梯队判定与让路说明。

## 四层内容标注（与 topic / outline / logic 同体系）

产物里每条陈列须可归入四层之一，读者一眼分清这句话来自谁：

| 层 | 在本命令里对应什么 |
|---|---|
| 👤 用户原话 | 纳排标准的每一条、排除理由 |
| 📋 常见事实 | 三套框架的要素、偏倚工具条目、PRISMA 27 项条目名 |
| 🪞 系统归纳 | 脚本算出的各级计数、去重比对结果、理由码分布 |
| ❓ 待用户决定 | 每篇的纳入或排除、偏倚评级、27 项自评 |

**没有第五层「AI 的新判断」**——某句找不到上面四层的归属（如「本综述纳入的研究质量较高」「检索已足够充分」），即判越界、不得写入产物。四层符号是跨产物对齐的锚点，不得改写（权威定义见 [`_shared/references/四层内容标注.md`](../_shared/references/四层内容标注.md)）。

## 越界转化（三段式，仿 topic / outline / logic）

| 用户请求 | 定性 | 出口指引 |
|---|---|---|
| 你帮我决定纳入哪些 / 按标准自动筛一遍 | 越界：替研究决策（违反不变①） | → 三段式：共情几百篇要筛的疲惫 → 讲风险（纳排判定是方法学核心，审稿人会逐条问"这篇为什么排除"，AI 代判你答不上来；且纳入集直接决定综述结论）→ 给 5 分钟第一步（"我把每篇与各条标准的对应事实逐篇摆出来、你只需点纳入或排除，比你自己读快得多"） |
| 顺手算个合并效应量 / 异质性 I² / 画森林图 | 越界：元分析统计（本 skill 明确不做） | → 让路说明：统计合成属数据分析、由你用 R（`meta`/`metafor`）或 RevMan 做；效应量算好后要画森林图可走 `/paper-plot`（v1.1+ 规划） |
| 帮我把这几篇的排除理由编得像样点 | 越界：编造（违反不变③） | → 三段式：共情理由不好写 → 讲风险（排除理由是 PRISMA 第 16 项要报告的内容、编造经不起复核）→ 给合法路径（从码表选最贴近的码 + 备注列写你的真实原因） |
| 流程图数字对不上，你直接改成对的 | 越界：绕过守恒校验（违反不变②） | → 拒绝并说明：数字来自台账，改图不改台账等于伪造记录；转述脚本报的不平等式，陪用户找出台账里填错的那几行 |
| 帮我做系统综述筛选（有笔记表） | **不越界（正常能力）** | → 直接进第 1 步流程 |

## 边界与异常对照表

| 情形 | 处理 |
|---|---|
| `literature/文献笔记表.md` 缺 | 让路 `/paper-search` 先检索，**不自行编文献** |
| 笔记表有条目但缺 DOI / 标题不全 | 台账照建；去重仅按可比字段，产物顶部声明「去重依据不完整，可能有漏判重复」 |
| 中文库（知网/万方/维普）条目 | 无免费 API，题录由用户按 `paper-search/references/知网万方检索方案模板.md` 回填；台账 `来源库` 列照记中文库名 |
| 已有台账、用户要续筛 | 读入续筛，**绝不覆盖已有判定**；新增行接着编号 |
| 第二梯队理论型 | 偏倚评估整块省略 + 声明让路原因；其余照走 |
| 第三梯队人文 | 整体让路、不产流程图与自查表；仅保留检索日志与去重台账 |
| 脚本跑不了（无 python3 / 脚本缺失） | **显式声明「计数与流程图不可用」**，陈列台账原文交用户；**绝不凭模型数数补一张图** |
| 筛选中途用户想停 | 台账落盘（含待定行），下次续筛；此时脚本返回 2 属正常，不报错处理 |
| 用户改了纳排标准要重筛 | 保留旧台账入档（不覆盖），新建一份重筛；报告顶部写明标准变更 |
| 不在标准科研目录里 | 产物落当前目录并提示可用 `/paper-init` |
| 宿主无 Bash | 脚本跑不了 → 走上方「脚本跑不了」降级；筛选与陈列本是纯对话，不受影响 |

## 横切声明（与 topic / outline / logic / disclose 同模板）

- **留痕**：产物型命令，写 `.paper/`「构思讨论」级——陈列对应事实与机械计数，无新研究内容生成，故与 logic / disclose 同级。
- **目录约定是增强不是依赖**：检测到标准目录则落 `literature/`，否则落当前目录并提示可用 `/paper-init`——不经 init 一切照常可用。
- **语言**：全部用户可见输出用简体中文；术语中文为主、英文括注，如系统综述（systematic review）、纳排标准（eligibility criteria）、偏倚风险（risk of bias）。
- **产出披露**：双产物自带人机分工页脚（模板末），如实披露 AI 陈列与计数、纳排判定由用户做出。
