grant-writing-guide
Write competitive research proposals with clear objectives and budgets
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Write competitive research proposals with clear objectives and budgets
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Route empirical-research requests through the Auto-Empirical Research Skills catalog when this whole repository is installed as one skill in Codex, CodeBuddy, Claude Code, or another IDE. Use to choose and load the right vendored AERS skill for causal inference, econometrics, replication, data acquisition, manuscript writing, peer review and referee responses, citation checking, de-AIGC editing, or full empirical-paper workflows without reading the entire repository at once.
公司金融实证研究的"漏斗式选题查找器"。互动开场先后询问 (1) 研究方向、(2) 候选标题数量 N, 再扫描全球文献(已出版英文学术期刊 + SSRN working paper + 全球高校 department seminar 1 年内日程),基于 Edmans (2024) "1000 Rejections" 红线生成 N 个候选标题,**通过并行 subagent(Agent 工具)批量生成计划书 + 查新;每个 subagent 必须强制调用 Skill 工具加载 econfin-proposal 与 novelty-check 两个预设 skill 完成各自模块**,**只有当 novelty score >= 9 时(即 JF/JFE/RFS 顶刊层次),subagent 才把 proposal + 查新报告合并的 md 写入 F:\Dropbox\CC\选题大全\<研究方向短名>\(以"简短选题名称-分数"命名,子文件夹名由 Step 0 从用户输入的研究方向派生);< 9 分的选题在 subagent 内部直接丢弃,绝不写盘、绝不输出**。当用户说"找选题"、"帮我找选题"、"想做 X 方向"、 "empirical CF idea search"、"批量生成研究计划书"、"100 ideas"、"econfin-idea-finder" 时触发。
Create and compile beautiful Beamer presentations following the Rhetoric of Decks philosophy. Use when making slides, creating decks, or compiling .tex presentation files.
Scaffold a new research project with standard directory structure, CLAUDE.md template, and documented README. Use this at the start of every new project to ensure consistent organization.
Download, split, and deeply read academic PDFs. Use when asked to read, review, or summarize an academic paper. Splits PDFs into 4-page chunks, reads them in small batches, and produces structured reading notes — avoiding context window crashes and shallow comprehension.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
| name | grant-writing-guide |
| description | Write competitive research proposals with clear objectives and budgets |
| metadata | {"openclaw":{"emoji":"💰","category":"research","subcategory":"funding","keywords":["research proposal writing","grant proposal","grant writing","budget planning","funding application"],"source":"wentor"}} |
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).
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.)
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
def create_budget(personnel: list[dict], equipment: list[dict],
travel: list[dict], other: list[dict],
indirect_rate: float = 0.55,
years: int = 3) -> dict:
"""
Create a research budget with indirect costs.
Args:
personnel: List of {'role', 'salary', 'effort_pct', 'fringe_rate'}
equipment: List of {'item', 'cost'}
travel: List of {'purpose', 'cost_per_year'}
other: List of {'item', 'cost_per_year'}
indirect_rate: F&A rate (decimal)
years: Project duration in years
"""
budget = {'years': {}}
for year in range(1, years + 1):
year_budget = {'categories': {}}
# Personnel (with annual salary increases of 3%)
personnel_total = 0
for person in personnel:
salary = person['salary'] * (1.03 ** (year - 1))
cost = salary * person['effort_pct'] / 100
fringe = cost * person['fringe_rate']
personnel_total += cost + fringe
year_budget['categories']['personnel'] = round(personnel_total)
# Equipment (Year 1 only for major items)
equip_total = sum(e['cost'] for e in equipment) if year == 1 else 0
year_budget['categories']['equipment'] = equip_total
# Travel
travel_total = sum(t['cost_per_year'] for t in travel)
year_budget['categories']['travel'] = travel_total
# Other direct costs
other_total = sum(o['cost_per_year'] for o in other)
year_budget['categories']['other'] = other_total
# Modified total direct costs (MTDC excludes equipment >$5000)
mtdc = personnel_total + travel_total + other_total
if equip_total < 5000:
mtdc += equip_total
# Indirect costs
indirect = mtdc * indirect_rate
year_budget['categories']['indirect'] = round(indirect)
year_budget['direct_total'] = round(
personnel_total + equip_total + travel_total + other_total
)
year_budget['total'] = round(
year_budget['direct_total'] + indirect
)
budget['years'][year] = year_budget
budget['grand_total'] = sum(y['total'] for y in budget['years'].values())
return budget
# Example budget
budget = create_budget(
personnel=[
{'role': 'PI', 'salary': 120000, 'effort_pct': 20, 'fringe_rate': 0.30},
{'role': 'Postdoc', 'salary': 56000, 'effort_pct': 100, 'fringe_rate': 0.25},
{'role': 'PhD Student', 'salary': 34000, 'effort_pct': 50, 'fringe_rate': 0.10}
],
equipment=[{'item': 'GPU server', 'cost': 15000}],
travel=[{'purpose': 'Conference attendance', 'cost_per_year': 3000}],
other=[
{'item': 'Publication charges', 'cost_per_year': 2000},
{'item': 'Cloud computing', 'cost_per_year': 5000}
],
indirect_rate=0.55,
years=3
)
| Criterion | Weight | Key Questions |
|---|---|---|
| Intellectual Merit | ~50% | Does it advance knowledge? Is the approach sound? |
| Broader Impacts | ~50% | Societal benefit? Education? Diversity? Infrastructure? |
| Criterion | Key Questions |
|---|---|
| Significance | Does it address an important problem? |
| Investigator(s) | Are PI and team qualified? |
| Innovation | Novel approaches or concepts? |
| Approach | Is the strategy well-reasoned and feasible? |
| Environment | Does the institution support the work? |
def create_project_timeline(aims: list[dict], total_months: int = 36) -> list[dict]:
"""Create a project timeline for a grant proposal."""
timeline = []
for aim in aims:
for task in aim['tasks']:
timeline.append({
'aim': aim['name'],
'task': task['name'],
'start_month': task['start'],
'end_month': task['end'],
'milestone': task.get('milestone', ''),
'deliverable': task.get('deliverable', '')
})
return timeline