research/grants/skills/grants/SKILL.md
NIH grant research skill for clinical researchers. Grill-me intake (research idea + career stage + preliminary data + environment + submission posture + known institute targets) locks down the funding strategy before any search runs. Runs a 5-facet Consensus positioning analysis (with draft Significance/Innovation language), maps the research to the right NIH institutes and study sections via RePORTER, finds NOSIs and funded overlap, and produces an editable Word document (.docx) with budget/scope-aware mechanism recommendations, submission timelines, and a mandatory program officer recommendation. Triggers: 'grants for [topic]', 'find grants for my research idea', 'what grants match my research', 'help me find NIH funding', 'grant opportunities for my research', or any grant-related request. NIH-only scope — non-NIH funders (PCORI, DOD CDMRP, VA, foundations) are out of scope and flagged at intake.
npx skillsauth add alirezarezvani/claude-skills grantsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Portability: Requires
bash_tool(for RePORTER POST via curl), Node.js withdocxpackage, and a Consensus MCP connection. Works in Claude Code CLI natively. In Claude.ai with Code Execution + Consensus MCP, the workflow is supported but slower.
Scope: NIH-only. Non-NIH funders (PCORI, DOD CDMRP, VA, foundations) are out of scope and flagged at intake.
For a clinical researcher with a research idea, produce a strategic NIH funding overview as an editable .docx. Output covers research positioning analysis, institute mapping, targeted grant discovery, and strategic recommendations the researcher can edit, copy from, and share with their mentor.
Inherited; locked verbatim per PR #657 audit.
[Not from Consensus/RePORTER — reference information] and excluded from counts.See references/reporter_post_patterns.md for the RePORTER POST canon + plan-tier detection.
Describe the research idea in 2–3 sentences. What's the question, what's new, and what's the clinical relevance? Vague answers ("AI for healthcare", "biomarkers for disease X") will be rejected — push for specificity.
Why I'm asking: Five Consensus searches (established / stakes / current approaches / adjacent methods / gaps) depend on a precise research idea. Vague ideas produce vague gap quotes and useless positioning narrative.
Refuse mush. Re-ask once with examples if user is too broad.
Career stage — pick one:
- Pre-doctoral (PhD student, T32 trainee)
- Postdoctoral fellow (F32, K99 candidate)
- Early career (K-award candidate, first R01)
- Independent investigator (multiple R01s, established lab)
- Senior PI (R35, P-series, U01 leadership)
Why I'm asking: Career stage filters mechanism recommendations. F-series for trainees, K-series for early career, R-series for independent. Picking the wrong stage produces unfundable mechanism suggestions.
Forcing choice.
Preliminary data — pick one:
- None (de novo project, no pilot data yet)
- Pilot data (early findings, single-site)
- Strong preliminary (multi-experiment, ready for R01-scale)
- Validated and ready (multi-site, publication-ready)
Why I'm asking: Prelim data status drives mechanism budget. No data → R03 / R21 pilot scope. Strong prelim → R01 / U01 multi-site scale. Mismatch produces uncompetitive applications.
Research environment — pick one:
- R01-eligible (research-intensive institution with NIH base funding)
- Mid-tier (regional academic medical center, modest NIH portfolio)
- Resource-constrained (smaller institution, minimal NIH base)
- Industry-collaborative (academic + industry partnership)
Why I'm asking: Environment affects scope realism (multi-site U01 requires R01-eligible) and which mechanism categories are competitive (R15 specifically targets resource-constrained).
Submission posture — pick one:
- New application (first submission, no prior reviews)
- Resubmission (A1 with reviewer responses needed)
- Exploring (haven't decided yet whether to submit)
Why I'm asking: Resubmissions need reviewer-response guidance in the DOCX (Section 7). New applications skip that. Exploring shifts emphasis to landscape over strategy.
Are you already considering specific NIH institutes? List names (NCI / NHLBI / NIMH / NINDS / NIDDK / etc.) or say "no preference — find the right ones".
Why I'm asking: If you have an institute hypothesis, I'll validate it against RePORTER data. If not, I'll surface the top-3 institutes funding adjacent work from the institute-tally.
Accept "no preference" as the common case.
Stop condition: After Q6, commit and start Phase 2A. Never re-open intake after Phase 2A begins.
Run sequentially at 1 q/sec. Each search corresponds to one positioning facet:
"<research idea>" established evidence — what's known"<topic>" mortality OR burden OR cost OR prevalence — why it matters"<topic>" current treatment OR standard of care OR approach — state of the art"<related technique>" applied to <topic> — methodological possibilities"<topic>" limitations OR unanswered OR future directions OR challenge — gap signalsUse scripts/citation_tracker.py --action record_consensus_search for each. Plan-tier detected from first response.
Synthesis: for each facet, extract 2-3 quotable findings (becomes Section 2 gap quotes). Draft Significance/Innovation language using "the field has established X (refs), but Y remains unanswered (refs)" pattern.
RePORTER is POST-only. Use bash_tool + curl — never web_fetch.
Compute at runtime via scripts/fiscal_year_calculator.py. Default: current FY + 3 prior. Federal FY starts Oct 1, so:
python ../scripts/fiscal_year_calculator.py --output json
# Returns: {"current_fy": 2026, "window": [2023, 2024, 2025, 2026]}
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"]
}'
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
}'
After RePORTER responses:
agency_ic_admin (institute code: NCI, NHLBI, NIMH, etc.) → top-3 funding institutesstudy_section → top-2 study sections (where applications go for review)Parse RePORTER responses for NOT-* opportunity numbers. For each:
# NOSIs live at predictable URLs:
# https://grants.nih.gov/grants/guide/notice-files/NOT-<INSTITUTE>-<YEAR>-<NUMBER>.html
web_fetch <url>
If fetch fails: log [NOSI {number} — fetch failed, not included], continue.
NOT career stage alone. Career stage + project scope + prelim data drive recommendation.
Use 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
See references/nih_mechanism_matching.md for the full matrix.
9 sections via Node.js + docx library. See references/docx_9_sections.md for full spec.
Arial 12pt body, navy headings (#1a3a5c), light blue table headers (#e8f0f8), amber NOSI callout. ExternalHyperlink patterns:
https://consensus.app/papers/...https://grants.nih.gov/grants/guide/...https://reporter.nih.gov/project-details/<id>Always include in Section 7:
Recommended next step: contact program officer at {top institute}. Find their staff page at https://www.nih.gov/institutes-nih/list-nih-institutes-centers-offices → {institute} → Program Officers. Prepare: 1-page specific aims + your CV + 3 specific questions about fit. Email subject: "Pre-application inquiry: <topic>".
This is the single most valuable advice for any applicant. Never skip.
| Mechanism | Standard receipt dates | |---|---| | 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 |
<output-dir>/grants_<topic-slug>_<YYYY-MM-DD>.docxpython scripts/office/validate.py <docx>| Script | Role |
|---|---|
| scripts/citation_tracker.py | Three-count audit (Consensus sent/shown/cited + RePORTER projects/cited) at ~/.grants_sessions/<session>.json |
| scripts/fiscal_year_calculator.py | Current FY + 3-prior window. Computed at runtime, never hardcoded. |
| scripts/mechanism_matcher.py | Career stage × scope × prelim → mechanism recommendation shortlist |
references/nih_mechanism_matching.md — career stage × scope × prelim → mechanism canon (7+ sources)references/reporter_post_patterns.md — RePORTER curl POST templates + plan-tier detection (7+ sources)references/docx_9_sections.md — 9-section .docx spec + technical requirements (7+ sources)| Failure | Behavior |
|---|---|
| Consensus rate-limit hit | Wait 3s, retry once, log; if still failing, alert researcher |
| Consensus returns 0 for a facet | Surface explicitly; never fill with training knowledge |
| Consensus plan-tier cap detected | Log tier, note in audit, surface to researcher |
| RePORTER POST returns error | Retry once after 3s; if still failing, log and continue |
| RePORTER returns <5 on narrow | Document; broad OR should compensate; surface low count |
| NOSI fetch fails | Log [NOSI {n} — fetch failed], continue |
| 3 consecutive tool failures | Stop, alert researcher with what's missing |
| DOCX generation fails | Save raw data as JSON fallback so researcher doesn't lose work |
web_fetch for RePORTER (POST-only — web_fetch is GET)Version: 1.0.0
Source spec: megaprompts/08-grants-megaprompt.md
Build pattern: Path B (direct conversion). Research-pack sibling of pulse + litreview.
tools
Code review automation for TypeScript, JavaScript, Python, Go, Swift, Kotlin, C#, .NET, Java, C, C++, Rust, Ruby, PHP, and Dart/Flutter. Analyzes PRs for complexity and risk, checks code quality for SOLID violations and code smells, generates review reports. Use when reviewing pull requests, analyzing code quality, identifying issues, generating review checklists.
tools
Use when planning, funding, scoping, or synthesizing enterprise research across workstreams — clinical study design, R&D program finance, market sizing/surveys, or product/user research. Triggers on "design this clinical study", "what sample size", "R&D budget", "burn rate", "capitalize or expense", "TAM SAM SOM", "market sizing", "survey design", "segment the market", "plan user interviews", "usability test", "synthesize research insights". Forks context to route to one of four Research-Operations sub-skills (clinical-research, research-finance, market-research, product-research) and returns a digest. Distinct from ra-qm-team (regulatory submission), finance (corporate close/valuation), research/grants (funding discovery), product-team (persona/journey/live experiments), and marketing-skill (campaign analytics).
development
Use when managing the money for an internal R&D program or portfolio — building a multi-period program budget with the F&A (indirect) split, tracking burn rate and runway against value-inflection milestones, or routing R&D cost items to a capitalize-vs-expense determination. Every budget output surfaces its assumptions block; capitalize-vs-expense is decision-support only and routes to a named finance owner — it never books an entry or decides accounting treatment. Distinct from finance/financial-analysis (corporate DCF, close, valuation) and research/grants (funding discovery — this manages money already won).
development
Use when planning and synthesizing product/user research as a method-and-repository discipline — selecting the right method for the goal (generative interviews vs usability test vs concept test vs validation), computing method-based saturation/sample size with an explicit confidence level, or synthesizing coded observations into insights while flagging single-source anecdotes. Never fabricates user insight; an insight requires recurrence across independent participants. Distinct from product-team/ux-researcher-designer (persona/journey artifacts), product-discovery (discovery-sprint planning), and experiment-designer (live A/B) — this is the research-ops method + insight-repository layer.