# Dr Cook:grant Writer

> 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).

- Skill: `wen-chen/dr-cook-grant-writer` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add wen-chen/dr-cook-grant-writer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wen-chen/dr-cook-grant-writer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: wen-chen (https://skillmd.com/u/wen-chen)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/wen-chen/dr-cook-grant-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

```json
{
  "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

