| name | dr-cook:grant-writer |
| description | Draft competitive grant proposals and research funding applications. Use when writing or drafting NSFC grant sections, research proposals, project proposals, or reviewing existing grant drafts. Triggers on: grant proposal, grant application, grant writing, NSFC, National Natural Science Foundation, research proposal, project proposal, 基金申请, 国家自然科学基金, 基金标书, 科研项目申请, 立项依据, 研究方案. Does NOT trigger on manuscript writing (use paper-writer) or journal submission cover letters (use cover-letter-writer).
|
grant-writer
1. Overview
grant-writer drafts competitive NSFC grant proposals and general research proposals. Three modes: section mode drafts one section (rationale, innovation, methods, or budget); full mode drafts all sections sequentially; review mode evaluates a draft against NSFC criteria. When upstream modules (literature-reviewer, research-gap-finder) have run, grant-writer inherits their key_findings and summary automatically — no re-collection needed.
2. Parameters
Required
| Parameter | Values | Description |
|---|
grant_type | nsfc_general | nsfc_young | nsfc_key | general_proposal | Grant program type. Determines format rules, character limits, and eligibility constraints. |
section | rationale | innovation | methods | budget | full | review | Which section to draft, or full to generate all sections sequentially, or review to evaluate an existing draft. |
Optional
| Parameter | Values | Description |
|---|
domain | tcm | bioinformatics | clinical | pharmacology | Research domain. If not provided by the user, load from context_output.parameters.domain if available. |
research_area | string | Brief description of the research topic (1–2 sentences). If upstream summary is available, that is used as the basis — confirmed with user before drafting. |
target_amount | string | Requested funding amount (e.g., "580,000 RMB" for NSFC general). Used to calibrate budget section proportions. |
duration | string | Project duration (e.g., "4 years"). Affects budget annualization and methods timeline. |
language | en | zh (default: zh) | Output language. Grant proposals submitted to NSFC are typically in Chinese. |
prior_work | string | Brief description of the applicant's preliminary data. Used to strengthen the rationale and methods feasibility. |
Parameter collection rule
If required parameters are missing and cannot be inherited from upstream context, ask one at a time: grant_type first, then section. Do not ask for optional parameters unless the user has mentioned them or they are needed for the current section.
3. Workflow
Step 1 — Check upstream context.
Inspect context_output before asking anything. Extract as already-provided: domain, key_findings, summary, parameters.target_journal, language, all parameters.*. If upstream status is failed, halt and inform the user.
Step 2 — Collect missing required parameters.
Identify which required parameters (grant_type, section) are absent. Ask for each one at a time: grant_type first, then section. Wait for the user's answer before asking for the next.
Step 3 — Collect optional context.
Ask for research_area and prior_work only if not inferable from upstream context. If upstream summary from literature-reviewer or research-gap-finder is available, present it to the user as the proposed research_area basis and ask for confirmation before proceeding. Do not ask for domain if it is already present in context_output.parameters.domain.
Step 4 — Load reference files.
Load the reference files appropriate for the requested section:
- All sections → load
references/nsfc-format.md for format constraints and character limits.
section: rationale or section: innovation → also load references/significance-innovation.md.
section: budget → also load references/budget-guidelines.md.
section: full → load all three reference files.
section: review → load references/nsfc-format.md and references/significance-innovation.md for review criteria.
Step 5 — Draft the requested section.
Compose the grant text using structural frameworks from loaded references, content from upstream key_findings and summary, and the user-provided research_area and prior_work.
- Rationale (立项依据): Background → current research status → gaps → how this project addresses gaps → expected significance.
- Innovation (创新性): 3–5 numbered points. Each: [研究角度/技术方法/理论框架] + [what is new] + [comparison to prior approaches]. Apply taxonomy from
references/significance-innovation.md.
- Methods (研究方案): Hypothesis → specific aims → design per aim → expected results → contingency plans.
- Budget: 劳务费 → 设备费 → 耗材费 → 国际合作与交流费 → 出版/文献/信息费 → 间接费用. Apply constraints from
references/budget-guidelines.md. Present as a table.
- Full: Execute rationale → innovation → methods → budget sequentially, each within character limits. Output all four sections in one continuous response, separated by
--- horizontal rules and bold section headers (立项依据, 创新性, 研究方案, 经费预算). Issue the iteration prompt (Step 7) once at the end.
- Review: Evaluate draft against four NSFC criteria (科学意义 20%, 创新性 30%, 研究方案可行性 30%, 申请人研究基础 20%). Rate each ✅ / ⚠️ / ❌ with specific revision suggestions. Check for: (a) missing/thin Paragraph 3 (gap statement), (b) reference count <5, (c) missing Paragraph 5 impact statement, (d) innovation points with no comparison to existing approaches, (e) missing contingency plans in 研究方案.
Step 6 — Apply character limits and language.
For Chinese grants (language: zh), output in Chinese using correct NSFC terminology. Verify the drafted text against character limits from references/nsfc-format.md:
nsfc_general: 立项依据 ≤3000 characters, 研究方案 ≤8000 characters.
nsfc_young: 立项依据 ≤2000 characters, 研究方案 ≤6000 characters.
nsfc_key: 立项依据 ≤5000 characters, 研究方案 ≤12000 characters.
Show character count at the end of each section draft.
Step 7 — Present draft and offer iteration.
After presenting the draft, ask: "Would you like me to expand, compress to the word limit, translate to English for collaborators, or move to the next section?"
4. Output Format
Header line on every output:
[Grant: <grant_type_label> | Section: <section_label> | Language: <ZH|EN>]
For Chinese output (language: zh):
- Section heading in Chinese (e.g., 二、立项依据, 三、创新性)
- Paragraph text in Chinese following the structural framework
For innovation section — numbered list with bold aspect labels:
**创新点1:[研究视角的创新]**
本研究首次…现有研究多采用…本研究通过…
**创新点2:[方法学创新]**
…
For budget section — table format:
| 经费类别 | 金额(元) | 数量依据 |
|---------|----------|--------|
| 劳务费 | … | … |
Character count shown at section end:
[字符数: 1847/3000]
For section: review — four-criterion assessment block, each with ✅ / ⚠️ / ❌ rating, followed by a ranked improvement list.
5. context_output
Reads from upstream
| Field | Source | Usage |
|---|
parameters.domain | any upstream module | Domain-specific terminology and framing |
parameters.target_journal | any upstream module | Maps to grant funding body context |
key_findings | literature-reviewer, research-gap-finder | Content basis for rationale section |
summary | literature-reviewer, research-gap-finder | Proposed research_area — confirmed with user before use |
raw_text | any upstream module | Additional content context if provided |
Writes to output
{
"module": "grant-writer",
"summary": "NSFC general grant innovation section drafted, 3 innovation points",
"raw_text": "<drafted grant section(s)>",
"parameters": {
"grant_type": "<collected>",
"section": "<collected>",
"language": "<collected>"
},
"status": "success | partial | failed",
"error_message": null
}
Downstream readers of raw_text: chinese-polisher, english-polisher (if translation requested).
6. References
See references/ for:
nsfc-format.md — Grant type comparison, character limits, review criteria weights, common rejection reasons, and format requirements
significance-innovation.md — 立项依据 structural framework, innovation point structure and taxonomy, strength/weakness indicator phrases
budget-guidelines.md — NSFC budget category breakdown, sample budget table, justification rules, and common budget mistakes