zcbot/skills/proposal/SKILL.md

2.9 KiB

name description
proposal 撰写科研申报书/课题立项书 (国自然、省基金、横向项目、校级课题)。当用户要写课题申请、立项依据、研究计划、技术路线、本子时使用。

科研申报书

工作流

  1. 对齐课题信息: 不要急着写正文。先与用户确认并落到 project.md:
    • 研究方向 / 拟解决的关键科学问题
    • 创新点 (3 条以内,要"小而尖")
    • 技术路线骨架
    • 应用场景与受众
  2. 分章节起草: 每章一个 .md 文件,不要一次性出全文 —— 单章写完先给用户看,定调后再下一章
  3. 合并定稿: 用 run_python + python-docx,把各章节 md 套模板渲染成 .docx

工作目录约定

proposal/
├── project.md              # 课题信息卡片
├── sections/
│   ├── 01_background.md    # 立项依据
│   ├── 02_objectives.md    # 研究内容与目标
│   ├── 03_method.md        # 拟采取的研究方案
│   ├── 04_innovation.md    # 特色与创新
│   ├── 05_basis.md         # 研究基础
│   └── 06_cv.md            # 申请人简介
└── proposal.docx           # 最终输出

字数(国自然青年示例,其他基金按实际套)

章节 推荐字数
立项依据 5000-8000
研究内容与目标 2000-3000
研究方案 3000-5000
特色与创新 800-1500
研究基础 1500-2500
申请人简介 1000-2000

超出/不足都不专业,严格控字数。

硬规则

  • 文献必须真实: 不可编造作者、年份、DOI、期刊。需要引用先告诉用户来源,让用户提供文献清单
  • GB/T 7714 顺序编码制: 引文 [1][2][3]...,文末参考文献顺序对应
  • 不堆形容词: "首次提出""填补空白""国际领先" 一律不用,除非用户明确要这种话术
  • 逻辑先行: 立项依据按 "现状 → 问题 → 本课题切入点" 三段式;研究方案按 "目标 → 任务分解 → 技术路线 → 可行性"

合并 docx 模板

from docx import Document
from docx.shared import Pt
from pathlib import Path

doc = Document()
style = doc.styles['Normal']
style.font.name = '宋体'
style.font.size = Pt(12)

sections = sorted(Path("proposal/sections").glob("*.md"))
for sec in sections:
    text = sec.read_text(encoding="utf-8")
    for para in text.split("\n\n"):
        para = para.strip()
        if not para:
            continue
        if para.startswith("# "):
            doc.add_heading(para[2:], level=1)
        elif para.startswith("## "):
            doc.add_heading(para[3:], level=2)
        else:
            doc.add_paragraph(para)
doc.save("proposal/proposal.docx")

反模式

  • 用户没给课题就开始硬编内容
  • 一次性出全文 (用户没法迭代)
  • 引文里写 "[Smith et al., 2023]" 但其实根本没这篇文献