# Lit Search

Runs an exhaustive time-windowed literature search over a research topic and delivers a...

- Repository: https://github.com/luwill/research-skills (877 stars)
- Category: Writing
- License: see repository
- Last updated: 2026-10-25
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add luwill/research-skills --skill lit-search -g -a claude-code -y`
Codex: `npx skills add luwill/research-skills --skill lit-search -g -a codex -y`
Cursor: `npx skills add luwill/research-skills --skill lit-search -g -a cursor -y`
Gemini CLI: `npx skills add luwill/research-skills --skill lit-search -g -a gemini-cli -y`

## Description

Runs an exhaustive time-windowed literature search over a research topic and delivers a quality-tiered DOI list plus a matching formatted reference list, with measurable recall (gold-set recall, PRISMA counts, citation-closure saturation). Use for systematic reviews / SLR, the literature-retrieval half of 开题报告 (the writing half is the research-proposal skill, which consumes this skill's dois.md / references), 挑战赛调研, or any "把某方向近 N 年文献检索全/理一遍/梳理一遍/查全" request. Builds the corpus, not for reading or summarizing the papers themselves, and not for writing the review text. Not for casual "find me a few papers" lookups.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 时间窗受限的高召回文献检索

驱动本目录 `src/litsearch/` 的 `lit` CLI 流水线。核心前提：**召回率不是提示词问题，是检索工程问题。**
反复 WebSearch 得到的是"相关度排序的前若干条"，既不可复现，也无法说明漏了什么。

## 工具位置与产物去向（第一步，别跳过）

CLI 就装在**本 skill 目录里**（`src/litsearch/` + `pyproject.toml`）。
所有命令都要在这个目录下执行, , 它是 `uv` 找得到项目的地方：

```bash
SKILL_DIR=~/.claude/skills/lit-search     # 本 SKILL.md 所在目录
cd "$SKILL_DIR" && uv run lit --help      # 跑不通就先跑一次 ./install.sh
```

`$LITSEARCH_HOME` 若已设置则优先用它（把工具装在别处的人靠这个覆盖）。
两处都找不到 `src/litsearch/cli.py` → **问用户，不要猜**。

> **产物必须写到用户的项目里，不是 skill 目录里。**
> `--runs-root` 默认是相对路径 `runs/`，而命令的工作目录是 skill 目录, , > 不显式指定的话，几百 MB 的采集结果会堆进 `~/.claude/skills/lit-search/runs/`，
> 用户既找不到，也想不到要去那里清理。**每一条命令都要带上绝对路径**：

```bash
PROJ=/abs/path/to/用户的项目            # 开工前先跟用户确认这个位置
cd "$SKILL_DIR" && uv run lit harvest --topic "$PROJ/topics/<id>.yaml" \
                                      --runs-root "$PROJ/runs" --depth standard
```

协议 YAML 同理, , 写在用户项目的 `topics/` 下，不要写进 skill 目录。
本目录的 `examples/` 有两份真实协议（生物医学、纯 CS 各一份）可以照抄。
下文命令块为了可读省略了这两个路径参数，**实际执行时必须补上**。

## 判断要不要用

**用**：系统综述、开题报告的文献检索部分、挑战赛调研, , 需要**说得清召回边界**的场合。
（开题报告的**写作**由 research-proposal skill 负责, , 它消费本 skill 的 `dois.md`/`references.bib`，不要在这里写正文。）
**不用**：用户只想快速看几篇代表作。那种情况直接 WebSearch 更快，别拖他走完整条流水线。

## 契约

**输入**：一句话研究主题 + 可选时间范围（不给就默认近 5 年）。
**输出**：

| 文件 | 内容 |
|---|---|
| `dois.md` | 全量 DOI 清单，按质量层分节，每条带证据标记 |
| `references.md` | 参考文献列表，顺序与 `dois.md` 一致 |
| `references.bib` | BibTeX（`--bibtex`，需额外一遍抓取） |
| `PRISMA.md` / `coverage_report.md` | 计数与召回率证据 |

**全量交付，分层只决定顺序，不决定去留。**

三份参考文件，按需读，不要预先读：
`references/topic-template.yaml`（写协议用）、
`references/jev-profile-template.yaml`（用 `--model jev` / `lit triage` / `lit facets` 前必读, , 判定 API 的阈值配置）、
`references/evidence.md`（下面每条规则背后的实测数字，用户追问或排查时才需要）。

---

## 阶段 0｜写协议（这一步是模型的核心工作）

没有 `lit init` 命令, , 把主题变成协议需要判断力，不是代码。模板在
`references/topic-template.yaml`，复制到 `topics/<id>.yaml` 后按四步填。

**① 拆概念块。** 3, 5 块，标出哪些 `required`。

The rest: https://github.com/luwill/research-skills/blob/HEAD/lit-search/SKILL.md
