Skip to main content
ClaudeWave
Skill2.3k repo starsupdated 2d ago

nsfc-roadmap

# nsfc-roadmap This Claude Code skill generates publication-ready technical roadmaps from NSFC grant proposals by converting research content into editable `.drawio` diagrams and multiple output formats (SVG, PNG, PDF). Use it when explicitly requested to create a roadmap, flowchart, or convert proposal research plans into A4-printable visualizations; it supports iterative refinement across up to five rounds with automatic structure and layout optimization.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/huangwb8/ChineseResearchLaTeX /tmp/nsfc-roadmap && cp -r /tmp/nsfc-roadmap/skills/nsfc-roadmap ~/.claude/skills/nsfc-roadmap
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# NSFC 技术路线图生成器

## 与 bensz-collect-bugs 的协作约定

- 当用户环境中出现因本 skill 设计缺陷导致的 bug 时,优先使用 `bensz-collect-bugs` 按规范记录到 `~/.bensz-skills/bugs/`,严禁直接修改用户本地 Claude Code / Codex 中已安装的 skill 源码。
- 若 AI 仍可通过 workaround 继续完成用户任务,应先记录 bug,再继续完成当前任务。
- 当用户明确要求“report bensz skills bugs”等公开上报动作时,调用本地 `gh` 与 `bensz-collect-bugs`,仅上传新增 bug 到 `huangwb8/bensz-bugs`;不要 pull / clone 整个 bug 仓库。

## 定位

- 用于把 NSFC 标书中的研究内容、技术路线和风险控制转成可打印、A4 可读的路线图。
- 默认工作流是确定性的 `drawio` 渲染;只有用户明确要求 Nano Banana 图片模型时才允许切到 PNG-only。
- 本技能只服务科研写作与可视化表达,不代表任何官方评审口径或资助结论。

## 输入

至少提供其一:

- `proposal_path`:标书目录,推荐。
- `proposal_file`:单个输入文件。
- `spec_file`:结构化图规格文件,最可控。

可选:

- `rounds`:默认读 `config.yaml:evaluation.max_rounds`
- `output_dir`:默认 `roadmap_output/`
- `renderer`:默认 `drawio`;仅用户明确要求时才用 `nano_banana`
- `dotenv`:仅 `nano_banana` 用
- `style_ref_images`:仅 `nano_banana` 用,最多前 4 张
- `layout` / `template_ref`:高级选项,默认不需要

## 输出

默认交付:

- `roadmap.drawio`
- `roadmap.svg`
- `roadmap.png`
- `roadmap.pdf`
- `roadmap-plan.md`

隐藏中间产物位于 `output_dir/.nsfc-roadmap/`:

- `runs/run_*/round_*`
- `spec_latest.yaml`
- `optimization_report.md`
- `config_used_best.yaml`
- `evaluation_best.json`
- `config_local.yaml`
- `ai/`:`stop_strategy=ai_critic` 时的请求/响应协议

Nano Banana 模式仅交付:

- `roadmap.png`
- `roadmap_compacted.png`

## 硬规则

- 先读 `config.yaml`,以下字段视为单一真相来源:`renderer`、`evaluation`、`layout`、`color_scheme`、`planning`、`output`。
- 仅处理用户明确提供的文件或目录;默认把标书视为敏感信息。
- 默认不联网补素材;如用户要求联网,应先提醒风险。
- 默认保持 `drawio` 流程;不要因为“图片模型更快”就擅自切换渲染后端。
- 若内容拥挤,优先改 `spec` 的节点文案、分组或结构,不要靠缩字号硬过阈值。

## 工作流

### 1. 规划

- 若已提供 `spec_file`,可跳过。
- 默认使用 `config.yaml:planning.planning_mode=ai`:
  1. 运行 `plan_roadmap.py` 生成 `plan_request.json/plan_request.md`
  2. 宿主 AI 写 `roadmap-plan.md` 和 `spec_draft.yaml`
  3. 再次运行脚本校验 `spec_draft.yaml`
- 规划阶段要同时看立项依据与研究内容,不只看 `2.1 研究内容`。

### 2. 落到 spec

- 优先级:用户自带 `spec_file` > 规划阶段的 `spec_draft.yaml` > 从输入文件自动抽取。
- spec 至少明确阶段、节点、输入输出和风险/备选方案。
- 模板字段可选;默认不强制绑定某个 `template_ref`。

### 3. 确定性渲染

```bash
python3 nsfc-roadmap/scripts/generate_roadmap.py \
  --spec-file ./roadmap_output/spec.yaml \
  --output-dir ./roadmap_output \
  --rounds 5
```

- 渲染时固化 `spec_latest.yaml`
- 生成交付文件与每轮证据
- `draw.io CLI` 缺失时按配置决定提示、降级或停止

### 4. 评估与优化

- 默认最多 5 轮,具体以 `config.yaml:evaluation` 为准。
- 每轮至少识别三类问题:
  - `P0`:缺研究内容、逻辑断裂、孤立节点、不可读
  - `P1`:布局混乱、配色干扰、字号过小
  - `P2`:间距、边距、箭头清晰度等一般优化
- 停止策略只看配置:`early_stop`、`stop_strategy=plateau` 或 `stop_strategy=ai_critic`
- 多维度自检默认覆盖 `structure / visual / readability`

### 5. 可选:AI 自主闭环

- 若希望由宿主 AI 决定“是否继续、改哪里”,在 `config_local.yaml` 中启用 `evaluation.stop_strategy: ai_critic`。
- 脚本会在 `output_dir/.nsfc-roadmap/ai/` 下生成:
  - `ai_critic_request.md`
  - `ai_critic_response.yaml`
  - 每轮 `ai_pack_round_XX/`

### 6. 可选:Nano Banana PNG-only(Gemini / OpenAI `gpt-image-2`)

- 只有用户明确要求时才启用。
- 先做连通性检查:

```bash
python3 nsfc-roadmap/scripts/nano_banana_check.py
```

- `.env` 中可通过 `IMAGE_PROVIDER=openai` 切到 OpenAI;未显式指定时,默认优先沿用既有 `GEMINI_*` 配置。

- 然后再生成 PNG:

```bash
python3 nsfc-roadmap/scripts/generate_roadmap.py \
  --spec-file ./roadmap_output/spec.yaml \
  --output-dir ./roadmap_output \
  --rounds 1 \
  --renderer nano_banana
```

## 常用命令

```bash
# 规划
python3 nsfc-roadmap/scripts/plan_roadmap.py --proposal /path/to/proposal --output ./roadmap_output

# 生成
python3 nsfc-roadmap/scripts/generate_roadmap.py --spec-file ./roadmap_output/spec.yaml --output-dir ./roadmap_output --rounds 5

# 图片模型连通性
python3 nsfc-roadmap/scripts/nano_banana_check.py
```

## 参考材料

- `config.yaml`
- `references/models/templates.yaml`
- `references/models/README.md`
- `assets/evaluation_rubric.md`
check-review-alignmentSkill

当用户明确要求"核查/优化综述 `{主题}_review.tex` 的正文引用"或"运行 check-review-alignment"时使用。通过宿主 AI 的语义理解逐条核查引用是否与文献内容吻合,只在发现致命性引用错误时对"包含引用的句子"做最小化改写,并复用 `systematic-literature-review` 的渲染脚本输出 PDF/Word。核心原则:不为了改而改,无法确定是否为致命性错误时保留原样并在报告中警告。⚠️ 不适用:用户只是想生成系统综述正文(应使用 systematic-literature-review);用户只是想新增/核对 BibTeX 条目(应使用专门的 bib 管理流程)。

complete-exampleSkill

当用户明确要求"填充示例内容""生成示例""补充 LaTeX 示例"时使用。AI 增强版 LaTeX 示例智能生成器,实现 AI 与硬编码的有机融合:AI 做"语义理解"(分析章节主题、推理资源相关性、生成连贯叙述),硬编码做"结构保护"(格式验证、哈希校验、访问控制)。

get-review-themeSkill

当用户明确要求"从文件/图片/网页/描述中提取综述主题"或"生成主题+关键词+核心问题结构化输出"时使用。支持文件(PDF/Word/Markdown/Tex)、文件夹、图片、自然语言描述、网页 URL 等多种输入源,自动识别输入类型并提取内容,生成可直接用于 systematic-literature-review 及其他文献综述技能的结构化输出。

guide-updaterSkill

当用户明确要求"更新项目指南""同步指南""沉淀洞见到指南"时使用。将对话中新产生的可复用写作洞见实时沉淀到项目指南文件,保持术语口径一致、结构稳定、可检验与可复现。调用时必须指定指南文件路径。

make-latex-modelSkill

当用户明确要求“LaTeX 模板优化”“样式参数对齐”“像素级比对”“make-latex-model”或旧写法“make_latex_model”,或要把 ChineseResearchLaTeX 里的某个项目做成高质量模板时使用。适配 NSFC / paper / thesis / cv 四条产品线;先依据 packages/ 与 projects/ 的真实分层判断改项目层还是公共包,再用各产品线官方构建入口验收。若必须修改 packages 下公共包,需先生成受影响模板回归计划并完成相关回归;NSFC 专项工具仅在明确属于 NSFC 参数对齐场景时按需使用。

nsfc-abstractSkill

当用户明确要求"写/润色 NSFC 标书摘要""生成中文摘要和英文摘要""把中文摘要翻译成英文摘要"时使用。输出中文、英文两个版本(英文必须是中文的忠实翻译版),同时输出标题建议(1个推荐标题+5个候选标题及理由)。中文摘要默认≤400字符,英文摘要默认≤4000字符。输出方式:将结果写入工作目录下的 `NSFC-ABSTRACTS.md`。⚠️ 不适用:用户只想翻译一段与标书无关的通用文本(应直接翻译);用户只想写立项依据/研究内容/研究基础正文(应使用对应 nsfc 系列 skill)。

nsfc-budgetSkill

当用户明确要求“写/生成 NSFC 预算说明书”“写预算说明”“生成 budget.tex / budget.pdf”“写国自然预算 justification”时使用。基于用户标书正文或补充材料,输出一份可提交的预算说明书 LaTeX 项目并渲染 `budget.pdf`。若用户未指定工作目录,必须暂停并先要求其指定。⚠️ 不适用:用户只是想了解预算原则;用户仅要预算表数字而不写说明书;或用户是 2026 青年 A/B/C 默认包干制且无需预算说明书的场景。

nsfc-codeSkill

根据 NSFC 标书正文内容,结合申请代码推荐库,为你给出 5 组申请代码1/2(主/次)推荐与理由;输出到 NSFC-CODE-vYYYYMMDDHHmm.md(只读,不修改标书)