---
name: huangwb8/transfer-old-latex-to-new
source: https://app.decimal.ai/s/huangwb8-transfer-old-latex-to-new@1/SKILL.md
source_sha256: 861a18fc7b64
---

# ChineseResearchLaTeX 内容迁移技能

## BenszAPI 任务工作区

本 Skill 的新任务中间文件统一写入 `./.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/{skill名}/input|output|log/`。同一任务复用一个任务根目录；多 Skill 协作才创建 `shared/`。正式交付物不写入该目录，历史隐藏目录只允许显式兼容读取、迁移或清理。

这个 skill 只做一件事：把旧材料里的正文、参考文献等内容，迁移到 **当前仓库已有模板项目** 的内容层。

它不是模板开发 skill，也不是公共包重构 skill。凡是要改模板源码、样式、`packages/bensz-*`、`projects/*` 内骨架文件、`main.tex`、`@config.tex`、`.cls`、`.sty`、profile、style 或构建脚本的任务，都应转给 `make-latex-model` 或对应产品线的模板开发流程。

## 硬性边界

处理任务时必须始终遵守：

- 绝不能修改 `packages/` 下任何公共包源码、模板实现、profile、style、脚本或共享资源
- 绝不能修改 `projects/` 下任何模板样式、入口骨架、wrapper、`main.tex`、`extraTex/@config.tex`、`.cls`、`.sty`、Lua/Python 构建脚本
- 只能把内容放到目标项目已有的内容层位置
- 如果现有模板没有合适承载位点，不能为了容纳内容去改模板；应明确报告“模板位点不足，需要模板开发 skill 介入”

当前仓库里默认可写的内容层只有 `extraTex/**/*.tex`（排除 `extraTex/@config.tex`）和 `references/**/*.bib`。

除非未来该 skill 的配置白名单明确放开，否则其它路径一律视为只读。

## 与当前仓库结构对齐

这个 skill 仍然要识别目标产品线，但目的只是选对承载项目，而不是判断“该不该改 `packages/`”。

- NSFC：选择合适的 `projects/NSFC_*`
- SCI 论文：选择 `projects/paper-sci-01/`
- 毕业论文：选择最接近的 `projects/thesis-*`
- 简历：选择 `projects/cv-01/`

然后把旧材料中的正文内容映射到这些现成项目的内容文件里；默认优先选择最接近的现有项目，而不是新建或重组模板结构。

## 输入原则

不要要求用户先整理成固定输入协议。默认接受并消化任意合理输入，例如：

- 一个完整旧项目目录
- 若干 `.tex` / `.bib` / `.docx` / `.md` / `.txt`
- PDF、截图、图片
- 一份已有模板项目路径，加上一些迁移目标说明
- 多种输入混合出现

如果材料不完整，不要先追问“标准输入”；先判断目标产品线、合适承载项目、哪些内容能直接落入 `extraTex/*.tex` 或 `references/*.bib`，以及哪些诉求已经超出内容迁移边界。只有缺失信息会导致把正文放错位置时，才请求补充。

## 输出原则

不要把输出理解成“任意重构仓库”。本 skill 的有效输出通常只有：

- 把正文迁移到目标项目的 `extraTex/*.tex`
- 把参考文献迁移到目标项目的 `references/*.bib`
- 生成必要的迁移说明、风险提示、未落位清单
- 在构建成功后给出验证结果

以下动作都超出本 skill 的边界：模板源码改动、样式修复、wrapper / `main.tex` / `template.json` / README 的结构重写，以及公共包抽取或包级能力沉淀。默认把用户原始材料视为只读，目标模板视为只读骨架；样式差异只报告，不偷改。

## 推荐工作流

### 1. 识别目标产品线与承载项目

先回答三个问题：用户最终要落到哪条产品线、当前仓库哪个现有项目最适合作为承载容器、这次任务是“内容迁移”还是已经变成“模板开发”。如果已经变成模板开发，立即转交，不要继续伪装成内容迁移任务。

### 2. 清点可迁移内容

从输入中提炼可直接复用的正文段落、BibTeX、需要人工确认的缺口，以及会触发模板改动需求的超界诉求。

### 3. 做内容层映射

只在内容层做映射：

- 旧正文 → `extraTex/*.tex`
- 旧参考文献 → `references/*.bib`

不要把“映射”理解成：

- 改章节命令
- 改模板标题样式
- 改目录/封面/页眉页脚
- 改公共包接口

### 4. 执行迁移

执行时只允许覆盖目标内容文件、新建目标内容文件（若模板已有对应承载位点）、以及写入或补齐 `.bib`。

如果某项需求必须改模板骨架才能完成，不要继续自动修改；应明确标出受阻位置和原因，并建议改用 `make-latex-model`。

### 5. 官方入口验证

迁移完成后，尽量用对应产品线的官方入口验证：

- NSFC：`python packages/bensz-nsfc/scripts/nsfc_project_tool.py build --project-dir <项目路径>`
- SCI：`python packages/bensz-paper/scripts/paper_project_tool.py build --project-dir <项目路径>`
- Thesis：`python packages/bensz-thesis/scripts/thesis_project_tool.py build --project-dir <项目路径>`
- CV：`python packages/bensz-cv/scripts/cv_project_tool.py build --project-dir <项目路径> --variant all`

如果构建失败且原因来自模板骨架缺口，不要私自修模板；应如实报告。

## Legacy CLI 的定位

`scripts/run.py`、`scripts/migrate.sh` 仍然保留，但只作为经典 old/new 目录迁移的后备入口。即使使用 legacy CLI，也必须继续遵守本文件的硬性边界：旧项目可以读，新项目只能写内容层，不能借 CLI 绕过模板保护。

## 不适用场景

以下场景不要继续使用本 skill 直接落地：

- 用户要“做一个新模板”
- 用户要“把旧样式 1:1 复刻到当前仓库”
- 用户要改 `packages/bensz-*`、`projects/*` 里的模板入口或样式文件
- 用户要新增模板承载位点、封面结构、目录结构、profile、class、style

这些都应转交模板开发链路。

## 参考材料

优先阅读本文件。需要 legacy CLI 细节时，再查看：

- `scripts/README.md`
- `references/quickstart.md`
- `references/config_guide.md`
- `references/api_reference.md`

确认边界时，始终优先遵循：

- 只迁移内容，不改模板骨架
- 样式差异只报告，不偷改