nsfc-budget

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

157 stars

Best use case

nsfc-budget is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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

Teams using nsfc-budget should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/nsfc-budget/SKILL.md --create-dirs "https://raw.githubusercontent.com/InternScience/DrClaw/main/drclaw/agent_hub/templates/proposal-writing/skills/nsfc-budget/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/nsfc-budget/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How nsfc-budget Compares

Feature / Agentnsfc-budgetStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# NSFC 预算说明书生成器

目标:基于标书正文与补充材料,写出一份“经得起财务与学术双重审视”的预算说明书,并交付可编辑 LaTeX 项目与 `budget.pdf`。

## 先做适用性判断

- 如果用户**没有指定工作目录**:立即暂停,先让用户给出工作目录。
- 如果用户只是问“预算怎么写/有哪些原则”,直接回答或给建议,不启动本 skill。
- 如果用户是 **2026 青年 A/B/C** 且场景属于**包干制**:先明确提醒“通常无需预算说明书”;只有在用户明确说明是历史模板、特定单位要求或预算制场景时才继续。

## 必要输入

优先让用户按 `skills/nsfc-budget/references/info_form.md` 提供。最少要拿到:

- 工作目录(必需)
- 标书正文或其它材料
- 项目类型:`general | local | youth`
- 预算口径:至少说明“这是申请总额”还是“这是需要解释的直接费用口径”

若用户没给全,按下面规则处理:

- **总预算未给**:按 `config.yaml:defaults.total_budget_wan` 取默认值。
- **正文目标字数未给**:按 `config.yaml:defaults.target_chars` 推荐区间执行。
- **每节上限**:按 `config.yaml:defaults.per_section_max_chars`。
- **模板未给**:按 `config.yaml:defaults.template_id`。
- **预算模式合法值**:见 `config.yaml:rules.budget_modes`。
- **预算口径合法值**:见 `config.yaml:rules.budget_scopes`。

## 中间产物边界

- 所有中间文件只能放在 `<workdir>/.nsfc-budget/`。
- 不要把草稿、日志、计划、截图、临时 JSON、编译中间文件散落到工作目录其它位置。
- 最终可见交付物只放在 `<workdir>/<output_dirname>/`(默认值见 `config.yaml:defaults.output_dirname`)。
- `template_id`、`output_dirname`、`.template.yaml` 里的 `section_files/latex_entry/pdf_name` 都必须是**相对安全路径**;不得包含绝对路径、`.` / `..` 越界段。
- `output_dirname` 不得指向工作目录根路径,也不得与隐藏工作区 `<workdir>/.nsfc-budget/` 重叠。

## 工作流

### 1. 初始化 run

先创建隐藏工作区与 `budget_spec.json` 骨架:

```bash
python3 skills/nsfc-budget/scripts/init_budget_run.py \
  --workdir <workdir> \
  --project-type <general|local|youth> \
  --template-id 01
```

如用户已给材料路径,可追加多个 `--material <path>`。脚本会把材料快照复制到 `.nsfc-budget/run_xxx/materials/`。
若同秒重复初始化,脚本会自动避让目录名冲突,避免 run 目录互相污染。

### 2. 吃透材料,形成“任务-需求-金额-依据”链

读取正文与补充材料后,先在隐藏工作区内形成内部判断,再填写 `budget_spec.json`:

- 每一笔钱都必须能追溯到**具体研究任务**。
- 每一节都要说明**为什么要花、花在哪里、怎么测算、为什么这个数合理**。
- 不能捏造设备、合作单位、测试次数、出差频次、劳务人数、价格依据。
- 证据不足时,要么追问用户,要么保守写“暂不列支/暂无合作转拨/暂无其他来源资金”,不要编造。

写作原则见:`skills/nsfc-budget/references/budget-writing-rules.md`。

### 3. 填写 `budget_spec.json`

脚本生成的 `budget_spec.json` 是**唯一结构化中间稿**。至少补齐:

- `meta`:项目题目、项目类型、预算模式、工作目录、输出目录、模板 ID、字数目标
- `budget`:总预算口径、直接费用总额(若已知)、设备/业务/劳务/合作转拨/其他来源金额
- `sections`:五个部分的正文段落(数组)
- `evidence`:关键测算依据、必要假设、待确认点

要求:

- `设备费 + 业务费 + 劳务费 = 直接费用总额`(若你已明确直接费用口径)
- `budget.*_wan` 与 `sections.*.amount_wan` 必须保持一致,避免出现两份金额源漂移。
- `合作研究转拨资金` 不能与前三项形成逻辑冲突
- `其他来源资金` 必须写明来源与用途;若无,则显式写“无”
- 金额、字数上限、容差等数值不得为负数;不合法时优先修正 JSON,而不是带病渲染。

### 4. 渲染、校验、迭代

用脚本把 JSON 渲染为 LaTeX 项目,并把校验报告与编译日志留在隐藏目录:

```bash
python3 skills/nsfc-budget/scripts/render_budget_project.py \
  --spec <workdir>/.nsfc-budget/run_xxx/budget_spec.json
```

脚本会:

- 复制模板到 `<workdir>/<output_dirname>/`
- 将五个 section 写入对应 `extraTex/*.tex`
- 校验金额关系、段落长度、可见字符数与模板/路径约束
- 校验 `budget_spec.json` 是否仍位于 `<workdir>/.nsfc-budget/`,保证隐藏工作区承诺不被破坏
- 自动转义常见 LaTeX 特殊字符(如 `%`、`#`、`&`、`_`),减少自然语言正文导致的编译失败
- 在隐藏目录保存 `validation_report.md/json`
- 若校验失败,终端会直接给出首批错误摘要与 `validation_report.md` 路径
- 编译输出 `budget.pdf`

如校验失败,先修 `budget_spec.json` 再重新运行脚本,直到通过。

### 5. 交付前人工复核

交付前必须至少复核这些点:

- 预算口径是否说清楚:申请总额 vs 直接费用
- 设备/测试/差旅/劳务是否真的与研究任务一一对应
- 是否出现“写得很满但没有证据”的句子
- 是否存在“金额能对上,但逻辑对不上”的隐性漏洞
- 是否存在“应该写无,却被硬凑了一段”的编造痕迹

## 写作策略

默认采用以下结构化策略:

- **总述从严**:先交代预算遵循政策相符性、目标相关性、经济合理性。
- **逐项落地**:每节至少讲清“用途 + 测算 + 必要性 + 依据”。
- **少说空话**:不要写“为保证项目顺利开展”“具有重要意义”这类无信息量句子,除非后面紧跟具体任务与支出。
- **金额服务任务**:说明书不是“财务散文”,每一段都要能回到研究方案。
- **宁缺毋滥**:缺材料时,先保守、先追问、先明确边界;不要补脑。

## 输出

最终输出必须同时包含:

- `<workdir>/<output_dirname>/`:完整 LaTeX 项目
- `<workdir>/<output_dirname>/budget.pdf`

中间过程保留在:

- `<workdir>/.nsfc-budget/run_xxx/`

## 关键文件

- `skills/nsfc-budget/references/info_form.md`
- `skills/nsfc-budget/references/budget-writing-rules.md`
- `skills/nsfc-budget/scripts/init_budget_run.py`
- `skills/nsfc-budget/scripts/render_budget_project.py`
- `skills/nsfc-budget/models/01/.template.yaml`

Related Skills

nsfc-roadmap

157
from InternScience/DrClaw

当用户明确要求"生成 NSFC 技术路线图/技术路线图绘制/roadmap/flowchart"或需要把标书研究内容转成"可打印、A4 可读"的技术路线图时使用。默认输出可编辑源文件(`.drawio`)与可嵌入文档的渲染结果(`.svg`/`.png`/`.pdf`);当用户主动提及 Nano Banana/Gemini 图片模型时,可切换为 PNG-only 模式。⚠️ 不适用:用户只是想修改某张已有图片的格式/尺寸(应使用图片处理技能)、只是想润色技术路线文字描述(应直接改写正文)。

nsfc-reviewers

157
from InternScience/DrClaw

当用户明确要求"评审国自然标书"、"模拟专家评审"、"审阅 NSFC 申请书"时使用。模拟领域专家视角对 NSFC 标书进行多维度评审,输出分级问题与可执行修改建议。⚠️ 不适用:用户只是想写/改标书某个章节(应使用 nsfc-*-writer 系列技能)、只是想了解评审标准(应直接回答)、没有明确"评审/审阅"意图。

nsfc-research-foundation-writer

157
from InternScience/DrClaw

当用户明确要求"写/改研究基础""研究基础+工作条件+风险应对编排"时使用。为 NSFC 正文"(三)研究基础"写作/重构,并同步编排"工作条件"和"研究风险应对",用证据链证明项目可行、资源条件对位研究内容、风险预案可执行。

nsfc-research-content-writer

157
from InternScience/DrClaw

当用户明确要求"写/改研究内容""研究内容+创新+年度计划编排"时使用。为 NSFC 正文"(二)研究内容"写作/重构,并同步编排"特色与创新"和"三年年度研究计划",输出可直接落到 LaTeX 模板的三个 extraTex 文件。

nsfc-ref-alignment

157
from InternScience/DrClaw

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

nsfc-qc

157
from InternScience/DrClaw

当用户明确要求"标书QC/质量控制/润色前质检/引用真伪核查/篇幅与结构检查"时使用。对 NSFC 标书进行只读质量控制:并行多线程独立检查文风生硬、引用假引/错引风险、篇幅与章节分布、逻辑清晰度等,最终输出标准化 QC 报告;中间文件默认归档到“交付目录内的隐藏工作区(.nsfc-qc/)”,并兼容 legacy `.nsfc-qc/`。

nsfc-length-aligner

157
from InternScience/DrClaw

基于国自然标书篇幅预算标准;检查目标标书篇幅并总结差距;给出针对性优化建议;在尽量不改变原意的前提下扩写/压缩到达标。

nsfc-justification-writer

157
from InternScience/DrClaw

当用户明确要求"写/改 NSFC 立项依据""立项依据写作/重构"时使用。基于最小信息表输出价值与必要性、现状不足、科学问题/假说与项目切入点,并保持模板结构不被破坏。适用于 NSFC 及各类科研基金申请书的立项依据写作场景。

nsfc-humanization

157
from InternScience/DrClaw

去除 NSFC 标书中的 AI 机器味,使文本读起来像资深领域专家亲笔撰写(不适用:非标书内容/需修改格式/需补充新内容)

nsfc-code

157
from InternScience/DrClaw

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

nsfc-abstract

157
from InternScience/DrClaw

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

nsfc-schematic

154
from InternScience/DrClaw

当用户明确要求"生成 NSFC 原理图/机制图/schematic diagram/mechanism diagram"或需要把标书中的研究机制、算法架构、模块关系转成"可编辑 + 可嵌入文档"的图示时使用。默认输出可编辑源文件(`.drawio`)与渲染文件(`.pdf`/`.svg`/`.png`);当用户主动提及 Nano Banana/Gemini 图片模型时,可切换为 PNG-only 模式。⚠️ 不适用:用户只是想润色正文文本(应直接改写文本)、只是想改已有图片格式/尺寸(应使用图片处理技能)、没有明确"原理图/机制图"意图。