关于 grants
Grants 是面向临床研究人员的 NIH 资助情报技能,将研究构想、职业阶段、初步数据等信息与 Consensus 文献搜索及 NIH RePORTER 项目数据结合,生成可编辑的 DOCX。报告涵盖研究定位、目标研究所、资助机会和策略建议;范围仅限 NIH。
主要功能
- 01通过六问收集研究项目信息
- 02用 Consensus 搜索研究文献
- 03通过 RePORTER 查询 NIH 项目
- 04匹配资助机制与研究范围
- 05生成含审计记录的 DOCX
适用场景
- 01为临床研究构想寻找 NIH 资助方向
- 02比较目标研究所及相近资助项目
- 03为新申请或重新提交准备策略材料
MCP 相关
此技能要求连接 Consensus MCP,以执行研究文献搜索;README 未说明它提供 MCP 服务。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alirezarezvani/ claude-skills --skill grants安装后在 Claude Code 中输入/grants确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/docx_9_sections.mdnih_mechanism_matching.mdreporter_post_patterns.mdscripts/citation_tracker.pyfiscal_year_calculator.pymechanism_matcher.py详细介绍
Grants — NIH 资助情报
**可移植性:**需要
bash_tool(通过 curl 向 RePORTER 发送 POST 请求)、安装了docx包的 Node.js,以及 Consensus MCP 连接。可在 Claude Code CLI 中原生运行。在 Claude.ai 中使用 Code Execution + Consensus MCP 时,工作流受支持,但速度较慢。
**范围:仅限 NIH。**非 NIH 资助方(PCORI、DOD CDMRP、VA、基金会)不在范围内,并会在受理时标记。
面向有研究构想的临床研究人员,生成一份可编辑的 .docx 格式 NIH 资助策略概览。输出涵盖研究定位分析、研究所映射、目标资助项目发现和策略建议,供研究人员编辑、复制内容并与导师分享。
Agent 完整性规则(Research-Pack 规范)
继承自既有规范;根据 PR #657 审计逐字锁定。
- 执行纪律。只有确认收到结果后,步骤才算完成。Consensus 调用必须按顺序进行,间隔至少 1 秒。RePORTER 调用必须按顺序进行。
- **数据来源。**只统计本会话中工具调用返回的数据。绝不补充训练知识。训练知识须标记为
[Not from Consensus/RePORTER — reference information],且不计入数量。 - **数量与归属。**发送的查询 / 显示的结果 / 引用的结果——分别计数,绝不可混为一谈。每篇引用的论文都必须有本会话中可检索的 URL。
- **错误处理。**失败时 → 等待 3 秒 → 重试一次 → 记录。若跨工具连续失败 3 次:停止,提醒研究人员,并说明缺少哪些内容。绝不默默跳过。
- **透明度。**DOCX 中须有审计日志部分。聊天摘要与文档遵循相同标准。
请参阅 references/reporter_post_patterns.md,了解 RePORTER POST 规范和计划层级检测。
第 1 阶段:严格追问式信息收集(6 个关键问题,逐个提问)
Q1(根问题)— 研究构想
请用 2–3 句话描述研究构想。研究问题是什么?新颖之处是什么?临床意义是什么?含糊的回答(例如“医疗领域的 AI”“疾病 X 的生物标志物”)将被拒绝——请追问细节,力求具体。
*提问原因:*五次 Consensus 搜索(已确立的研究现状 / 研究意义 / 当前方法 / 相邻方法 / 研究空白)都依赖明确的研究构想。构想含糊,产生的研究空白引文和定位叙述也会含糊且毫无用处。
拒绝含糊其辞的回答。若用户回答过于宽泛,给出示例后再追问一次。
Q2(取决于 Q1)— 职业阶段
职业阶段——请选择一项:
- 博士前阶段(博士生、T32 受训者)
- 博士后研究员(F32、K99 候选人)
- 职业早期(K 类奖项候选人、首次申请 R01)
- 独立研究者(多个 R01、已建立的实验室)
- 资深 PI(R35、P 系列、U01 项目负责人)
*提问原因:*职业阶段会影响资助机制建议。F 系列面向受训者,K 系列面向职业早期研究者,R 系列面向独立研究者。选择错误的阶段会导致提出无法获得资助的机制建议。
必须选择一项。
Q3(取决于 Q2)— 初步数据情况
初步数据——请选择一项:
- 无(全新项目,尚无试点数据)
- 试点数据(早期发现,单中心)
- 有力的初步数据(多项实验,已达到 R01 规模)
- 已验证且准备就绪(多中心,已达到发表标准)
*提问原因:*初步数据情况决定资助机制和预算。无数据 → R03 / R21 试点范围。有力的初步数据 → R01 / U01 多中心规模。两者不匹配会导致申请缺乏竞争力。
Q4(取决于 Q2)— 研究环境
研究环境——请选择一项:
- 符合 R01 申请资格(研究密集型机构,拥有 NIH 基础经费)
- 中等水平(地区学术医疗中心,NIH 资助项目规模适中)
- 资源受限(规模较小的机构,NIH 基础经费有限)
- 与产业界合作(学术机构 + 产业界合作)
*提问原因:*研究环境会影响方案范围的现实性(多中心 U01 项目要求符合 R01 申请资格),也会影响哪些资助机制类别具有竞争力(R15 专门面向资源受限的机构)。
Q5(取决于 Q1)— 申请提交状态
申请提交状态——选择一项:
- 新申请(首次提交,没有过往评审)
- 重新提交(A1,需要回应评审意见)
- 正在了解(尚未决定是否提交)
询问原因: 重新提交时,DOCX(第 7 节)需要提供回应评审意见的指导。新申请无需此内容。正在了解则应将重点从策略转向整体情况。
Q6(取决于 Q1)— 已知的目标研究所
你是否已经考虑了 NIH 的特定研究所?请列出名称(NCI / NHLBI / NIMH / NINDS / NIDDK / 等),或回答“没有偏好——请帮我找合适的研究所”。
询问原因: 如果你对研究所已有假设,我会根据 RePORTER 数据验证。如果没有,我会通过研究所统计结果列出资助相近研究的排名前三的研究所。
“没有偏好”是常见情况,请接受此回答。
停止条件: Q6 之后,确定方案并开始阶段 2A。阶段 2A 开始后,绝不重新开启信息收集。
阶段 2A:研究定位(5 次 Consensus 搜索)
按顺序以每秒 1 次的频率运行。每次搜索对应一个定位维度:
- 已有成果 —
"<research idea>" established evidence— 已知内容 - 重要性 —
"<topic>" mortality OR burden OR cost OR prevalence— 研究为何重要 - 当前方法 —
"<topic>" current treatment OR standard of care OR approach— 当前最先进的研究水平 - 相邻方法 —
"<related technique>" applied to <topic>— 方法学上的可能性 - 研究空白 —
"<topic>" limitations OR unanswered OR future directions OR challenge— 研究空白信号
每次搜索都使用 scripts/citation_tracker.py --action record_consensus_search。根据第一个响应检测计划等级。
综合: 为每个维度提取 2–3 条可引用的发现(用于第 2 节的研究空白引文)。按照“该领域已确立 X(参考文献),但 Y 仍未得到解答(参考文献)”的模式撰写意义和创新性内容。
阶段 2B:研究所映射 + 资助项目发现(RePORTER POST)
RePORTER 仅支持 POST。使用 bash_tool + curl,绝不使用 web_fetch。
动态财政年度范围
使用 scripts/fiscal_year_calculator.py 在运行时计算。默认范围:当前财政年度 + 之前 3 个财政年度。联邦财政年度从 10 月 1 日开始,因此:
python scripts/fiscal_year_calculator.py --output json
# Returns: {"current_fy": 2026, "window": [2023, 2024, 2025, 2026]}
窄范围(AND)搜索——查找直接重叠
curl -X POST 'https://api.reporter.nih.gov/v2/projects/search' \
-H 'Content-Type: application/json' \
-d '{
"criteria": {
"fiscal_years": [2023, 2024, 2025, 2026],
"include_active_projects": true,
"advanced_text_search": {
"operator": "AND",
"search_field": "all",
"search_text": "<key term 1> <key term 2>"
}
},
"limit": 50,
"include_fields": ["project_num", "project_title", "agency_ic_admin", "study_section", "fiscal_year", "principal_investigators", "abstract_text"]
}'
宽范围(OR)搜索——查找相邻研究
curl -X POST 'https://api.reporter.nih.gov/v2/projects/search' \
-H 'Content-Type: application/json' \
-d '{
"criteria": {
"fiscal_years": [2023, 2024, 2025, 2026],
"advanced_text_search": {
"operator": "OR",
"search_field": "all",
"search_text": "<term> <synonym> <related concept>"
}
},
"limit": 50
}'
研究所统计 + 评审组排序
RePORTER 响应返回后:
- 统计
agency_ic_admin(研究所代码:NCI、NHLBI、NIMH 等)→ 资助排名前三的研究所 - 统计
study_section→ 排名前二的评审组(申请会送至这些评审组进行评审)
NOSI 发现
解析 RePORTER 响应,查找 NOT-* 项目编号。对每个编号:
# NOSIs live at predictable URLs:
# https://grants.nih.gov/grants/guide/notice-files/NOT-<INSTITUTE>-<YEAR>-<NUMBER>.html
web_fetch <url>
如果获取失败:记录 [NOSI {number} — fetch failed, not included],然后继续。
资助机制匹配(考虑项目范围)
建议不应仅由职业阶段决定。职业阶段 + 项目范围 + 初步数据共同决定建议。
使用 scripts/mechanism_matcher.py:
python scripts/mechanism_matcher.py \
--career-stage "early_career" \
--prelim-data "pilot" \
--environment "r01_eligible" \
--scope "single_site" \
--output json
# Returns mechanism shortlist with rationale
完整矩阵请参阅 references/nih_mechanism_matching.md。
阶段 3:DOCX 生成
通过 Node.js + docx 库生成 9 个部分。完整规范请参阅 references/docx_9_sections.md。
- 执行摘要 — 标题 + 职业阶段 + 环境 + 3-4 条关键发现要点
- 研究定位 — 3-5 条差距引文(斜体,内嵌 Consensus 引用)+ 2-3 段定位叙述 + 支持证据表
- 目标研究所 — 排名表(研究所、时间窗口内项目数量、与您的构想的匹配度百分比)+ 2-3 句解读
- 资助机会 — 如有 NOSI,使用粗体标注。排名前 3 的资助项目表格,包含超链接 FOA + 每项资助的研究范围/预算匹配度段落
- 已资助的重叠项目 — 排名前 5 的项目表格(PI、project_num、IC、年份、指向 RePORTER 的超链接)+ 差异化段落
- 研究组别 — 排名表 + 最佳匹配解读
- 战略建议与后续步骤 — 3-4 条编号建议 + 必需的项目官员建议 + 提交时间表说明 +(如果重新提交时 Q5=2)评审意见回复指南 + 结尾段落
- 参考文献 — 编号书目,链接至 Consensus
- 审计日志 — Consensus 搜索表、计划层级说明、RePORTER 搜索表、NOSI 获取表、摘要统计、工具限制说明、失败步骤
样式
正文采用 Arial 12pt,标题采用海军蓝(#1a3a5c),表格标题采用浅蓝色(#e8f0f8),NOSI 标注采用琥珀色。ExternalHyperlink 模式:
- 论文引用:
https://consensus.app/papers/... - FOA 链接:
https://grants.nih.gov/grants/guide/... - RePORTER 项目:
https://reporter.nih.gov/project-details/<id>
必需的项目官员建议
始终在第 7 节中加入:
建议的下一步:联系 {top institute} 的项目官员。 请在 https://www.nih.gov/institutes-nih/list-nih-institutes-centers-offices → {institute} → Program Officers 页面查找其工作人员页面。请准备:1 页的具体目标 + 您的 CV + 3 个关于匹配度的具体问题。电子邮件主题:“预申请咨询:”。
这是对所有申请者最有价值的一条建议。绝不可省略。
提交时间表(嵌入 DOCX 第 7 节)
| 资助机制 | 标准接收日期 |
|---|---|
| R01, R21, R03 | Feb 5, Jun 5, Oct 5 |
| K awards (K01, K08, K23, K99) | Feb 12, Jun 12, Oct 12 |
| R34, R61/R33 | Feb 16, Jun 16, Oct 16 |
| F31, F32 | Apr 8, Aug 8, Dec 8 |
阶段 4:交付
- 将 DOCX 保存至
<output-dir>/grants_<topic-slug>_<YYYY-MM-DD>.docx - 聊天摘要:文件路径 + 审计计数 + 计划层级 + 对目标研究所的判断
- 验证:使用
python3 -c "import zipfile,sys; zipfile.ZipFile(sys.argv[1]).testzip()" <docx>检查 zip 完整性(无输出 = 完整),然后确认必需的各个部分均已包含
工具
| 脚本 | 作用 |
|---|---|
scripts/citation_tracker.py | 三项计数审计(Consensus 已发送/已显示/已引用 + RePORTER 项目/已引用),保存至 ~/.grants_sessions/<session>.json |
scripts/fiscal_year_calculator.py | 当前财年 + 之前 3 年的时间窗口。在运行时计算,绝不硬编码。 |
scripts/mechanism_matcher.py | 职业阶段 × 研究范围 × 初步数据 → 资助机制推荐候选清单 |
参考资料
references/nih_mechanism_matching.md— 职业阶段 × 研究范围 × 初步数据 → 资助机制规范(7+ 个来源)references/reporter_post_patterns.md— RePORTER curl POST 模板 + 计划层级检测(7+ 个来源)references/docx_9_sections.md— 9 节 .docx 规范 + 技术要求(7+ 个来源)
错误处理
| 失败情况 | 行为 |
|---|---|
| Consensus 触发速率限制 | 等待 3s,重试一次并记录;如果仍然失败,则提醒研究人员 |
| Consensus 对某个维度返回 0 | 明确指出;绝不使用训练知识补充 |
| 检测到 Consensus 计划层级上限 | 记录层级,在审计记录中注明,并告知研究人员 |
| RePORTER POST 返回错误 | 3s 后重试一次;如果仍然失败,则记录并继续 |
| RePORTER 在窄范围查询中返回 <5 条结果 | 记录情况;宽范围 OR 查询应予以弥补;指出结果数量偏少 |
| NOSI 获取失败 | 记录 [NOSI {n} — fetch failed],然后继续 |
| 连续 3 次工具调用失败 | 停止,并提醒研究人员缺少哪些内容 |
| DOCX 生成失败 | 将原始数据保存为 JSON 备用文件,以免研究人员丢失工作成果 |
应拒绝的反模式
- 并行调用 Consensus(会触发速率限制)
- 使用
web_fetch查询 RePORTER(仅支持 POST;web_fetch使用 GET) - 硬编码财年值
- 仅依据职业阶段推荐机制(还必须考虑范围)
- 悄悄使用训练知识补充维度结果不足的部分
- 跳过审计日志
- 跳过项目官员推荐
- 混淆“找到的论文”“展示的论文”和“引用的论文”
- 获取失败时编造 NOSI 详情
版本: 1.0.0
源规范: megaprompts/08-grants-megaprompt.md(维护者本地草稿规范——已被 gitignore 排除,未包含在公开仓库中)
构建模式: Path B(直接转换)。与 pulse + litreview 并列的研究包。