SKILL.md
Grant Writing Guide
A skill for preparing competitive research grant proposals. Covers proposal structure, writing strategies, budget preparation, and common evaluation criteria used by major funding agencies (NSF, NIH, ERC, NSFC).
Proposal Structure
Generic Proposal Template
Most funding agencies require these core components:
1. Cover Page / Project Summary (1 page)
- Title (concise, descriptive, no jargon)
- PI name, institution, co-PIs
- Total budget and duration
- Abstract (250 words)
- Keywords (5-8)
2. Project Description / Research Plan (10-15 pages typically)
a. Introduction and Background
b. Specific Aims / Research Questions
c. Research Design and Methods
d. Timeline and Milestones
e. Expected Outcomes and Significance
f. Broader Impacts (NSF) / Societal Relevance
3. Literature Cited / References
4. Budget and Budget Justification
5. Biographical Sketches / CVs
6. Data Management Plan
7. Facilities and Equipment
8. Supplementary Materials (letters of support, etc.)
Writing the Specific Aims
The Critical First Page
The specific aims page is the most important page of any NIH-style proposal. Reviewers often form their opinion based on this page alone.
def specific_aims_template(project_info: dict) -> str:
"""
Generate a specific aims page structure.
Args:
project_info: Dict with 'problem', 'gap', 'approach', 'aims', 'impact'
"""
template = f"""
SPECIFIC AIMS
[Opening paragraph: The big picture problem]
{project_info['problem']}
[Gap paragraph: What is unknown/unsolved]
{project_info['gap']}
[Approach paragraph: What will you do and why]
{project_info['approach']}
The long-term goal of this research is [long-term vision].
The objective of this proposal is [specific objective].
The central hypothesis is [testable hypothesis],
based on [preliminary data / rationale].
The following specific aims will test this hypothesis:
Aim 1: {project_info['aims'][0]['title']}
{project_info['aims'][0]['description']}
Hypothesis: {project_info['aims'][0]['hypothesis']}
Aim 2: {project_info['aims'][1]['title']}
{project_info['aims'][1]['description']}
Hypothesis: {project_info['aims'][1]['hypothesis']}
[Impact paragraph]
{project_info['impact']}
"""
return template
