# Nsfc Ref Alignment

> 检查 NSFC 标书正文引用与参考文献的一致性与真实性风险（只读）：核查 bibkey 是否存在、BibTeX 字段与 DOI 等格式问题，并生成结构化输入供宿主 AI 逐条评估“正文表述是否真的在引用该文献”；默认仅输出审核报告，不直接修改标书或 .bib（除非用户明确要求）。

- Skill: `internscience/nsfc-ref-alignment` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add internscience/nsfc-ref-alignment`
- Raw SKILL.md: https://api.skillmd.com/api/skills/internscience/nsfc-ref-alignment/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: internscience (https://skillmd.com/u/internscience)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/internscience/nsfc-ref-alignment

---


# NSFC Ref Alignment

## 适用场景
- 你有一份 NSFC 标书（LaTeX 项目），希望检查：
  - `.tex` 里所有 `\cite{...}` / `\citep{...}` / `\citet{...}` 等引用的 bibkey 是否都存在于 `.bib`
  - `.bib` 条目的基础字段是否完备、格式是否明显错误（如 DOI 非法、年份缺失）
  - 引用所在句子的“语义主张”是否与该文献（至少从 title/author/year/venue/DOI 等元信息）相匹配，是否存在乱引/过度主张/张冠李戴风险
- 你希望**只得到一份报告**先人工审核（改 `.bib` / 改正文属于大事）。

## 不适用
- 你希望“自动替换 bibkey / 自动改写正文”——本 skill 默认禁止直接修改（除非你明确要求）。
- 你只是想补齐 BibTeX 条目：优先使用 `nsfc-bib-manager`。

## 输入
- `project_root`：标书项目根目录（如 `projects/NSFC_General`）
- 可选：`main_tex`：主入口 tex（默认 `main.tex`）
- 可选：`report_dir`：报告输出目录（默认 `./references`，相对你运行 skill 的当前目录）
- 可选：`verify_online`：是否进行在线核验（默认 false；仅做确定性查询，失败降级）

## 输出（只读 + 可复现）

### 中间产物（强制）
**所有中间文件**必须托管在：

`{project_root}/.nsfc-ref-alignment/run_{YYYYMMDDHHMMSS}/`

其中 `run_{YYYYMMDDHHMMSS}` 为时间戳；如同秒重复运行，脚本会追加 `-2/-3/...`，确保多次分析不冲突。

该目录至少包含：
- `ai_ref_alignment_input.json`：结构化输入（引用位置 + 句子上下文 + 文献元信息 + 校验结果），供宿主 AI 做语义判断
- `ref_integrity_report.md`：确定性报告（缺失 bibkey、重复条目、字段缺失、DOI 格式问题等）
- `citations.csv`：逐条引用清单（file/line/bibkey/sentence）
- `bib_inventory.json`：BibTeX 清单（被引用条目与问题标注）

### 最终交付（默认）
仅输出一份**供用户审核的报告**（默认写入 `./references/`；用户可指定其他目录）：
- `NSFC-REF-ALIGNMENT-vYYYYMMDDHHMMSS.md`（如同秒重复运行，脚本会追加 `-2/-3/...` 避免覆盖）

该报告必须是“只读审查报告”，不得直接修改标书正文或 `.bib`。

## 工作流（推荐）

### 步骤 1：预检与定位
1) 确认 `project_root` 存在且包含 `main_tex`。
2) 自动解析 `main_tex` 的 `\input{}` / `\include{}` 依赖树，收集所有涉及的 `.tex` 文件。
3) 自动发现 `\bibliography{...}` / `\addbibresource{...}` 指向的 `.bib` 文件；若发现 0 个 `.bib`，则回退为在 `project_root` 下搜索 `*.bib` 并给出 warning。

### 步骤 2：确定性抽取（脚本执行）
运行脚本生成结构化输入与确定性报告：

```bash
cd /path/to/ChineseResearchLaTeX
python3 skills/nsfc-ref-alignment/scripts/run_ref_alignment.py \
  --project-root "projects/NSFC_General" \
  --main-tex "main.tex" \
  --report-dir "references" \
  --prepare
```

如需在线核验（建议只对最终稿/重点条目开启）：

```bash
python3 skills/nsfc-ref-alignment/scripts/run_ref_alignment.py \
  --project-root "projects/NSFC_General" \
  --main-tex "main.tex" \
  --report-dir "references" \
  --prepare \
  --verify-online
```

### 步骤 3：宿主 AI 语义核查（本 skill 的核心）
宿主 AI 在读取 `{run_dir}/ai_ref_alignment_input.json` 后，逐条核查：

1) **真实性/存在性**（P0）
   - bibkey 缺失：正文引用了不存在的条目
   - DOI/URL 明显无效或在线核验失败且元信息严重不一致

2) **语义不匹配风险**（P0/P1）
   - P0：句子对文献作出了“强断言”，但从元信息看高度不可能（如年份矛盾、领域完全不相关、明显张冠李戴）
   - P1：可疑但证据不足（元信息不足、缺少 DOI/缺少 title/作者信息不全）

3) **过度主张/弱支撑**（P1）
   - 例如“首次/唯一/最优/显著优于”但缺乏足够支撑或疑似需要更强引用

> 证据优先级（强制）：
> 在线核验结果（若开启） > BibTeX 的 title/abstract > 仅从句子推断（最低优先级）。

### 步骤 4：生成最终报告（只读）
在 `report_dir` 写入最终报告 `NSFC-REF-ALIGNMENT-vYYYYMMDDHHMMSS.md`，必须包含：

- Summary：总引用数、唯一 bibkey 数、缺失条目数、重复条目数、P0/P1 数
- P0（必须处理）：缺失 bibkey、明显伪造/错误元信息、严重语义错配
- P1（建议处理）：字段不全（缺 DOI/缺 year）、弱支撑/过度主张、需要人工复核
- 附录：逐条引用明细（至少包含 file/line、原句、bib 条目关键字段、风险判断与理由）

## 修改边界（强制）
- 默认**不修改**任何标书内容与配置：
  - 禁止修改：`**/*.tex`、`**/*.bib`、`**/*.cls`、`**/*.sty`
- 允许写入：
  - `{project_root}/.nsfc-ref-alignment/**`（中间产物）
  - `./references/**`（最终报告；可由用户改到别处）
- 若用户明确要求“修复引用/修复 bib”，必须先在报告里给出**修改计划**与影响面，再执行最小化修改（默认不做）。

## 与 check-review-alignment 的关系（经验复用）
- 共同点：脚本只做确定性抽取；“语义是否匹配”的判断由宿主 AI 完成；输出可追溯的结构化输入与报告。
- 不同点：本 skill 面向**标书项目**（多文件 `\input{}` 结构），且默认**不做任何自动改写**（只输出审查报告）。

## 验证清单（静态自检）
- `{project_root}/.nsfc-ref-alignment/run_{timestamp}/` 存在且包含 4 个核心产物（json/md/csv/json）。
- 最终报告写入 `report_dir`，且没有任何 `.tex/.bib` 文件被修改。
- 报告对每个 P0/P1 给出：定位（file/line）+ 原句 + 依据 + 建议动作。

