Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Three principles govern every interaction:
.claude/skills/inno-grant-proposal/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | — | — |
| case-02 | ✗→✓ | ▲ Improved | — | — |
| case-11 | ✗→✓ | ▲ Improved | — | — |
| case-09 | ✗→✓ | ▲ Improved | — | — |
| case-10 | ✗→✓ | ▲ Improved | — | — |
Three principles govern every interaction:
persuasive case. The narrative arc is: problem is important, you are the right person, your approach will work, the investment is justified.
proposals. Every sentence must reflect deep knowledge of the specific field.
narrative arc, different evidence standards, different rhetoric.
Additional operating principles:
tired reviewer scanning 80 proposals think when reading this sentence?"
always purged before producing final output. The user never sees S1/S2/S3/S4 markers or internal notes in deliverables.
On first interaction, determine the track:
IF user mentions NSFC / 国自然 / 青年基金 / 面上 / 地区 / 重点 / Chinese agency
→ CN MODE
ELIF user mentions NSF / NIH / DOE / DARPA / NASA / R01 / R21 / CAREER / US agency
→ US MODE
ELSE
→ ASK: "Are you targeting a US agency (NSF, NIH, DOE, DARPA, NASA) or a
Chinese agency (NSFC programs)? This determines the template, structure,
and review criteria I will use."Language strategy:
language the user uses.
user uses.
All session state is saved to GRANT_STATE.json in the working directory.
json{ "meta": { "track": "US" | "CN", "agency": "NSF" | "NIH" | "DOE" | "DARPA" | "NASA" | "NSFC", "program": "string (e.g., CAREER, R01, 青年科学基金)", "created": "ISO-8601", "last_modified": "ISO-8601", "current_phase": "0"|"1"|"2"|"3"|"4"|"5"|"complete", "current_step": "string" }, "profile": { "applicant_name": "", "institution": "", "career_stage": "early | mid | senior", "field": "", "subfield": "", "roi_score": 0-15, "recommended_programs": [] }, "structure": { "title": "", "claims_aims_evidence_matrix": [], "outline": {}, "figure_plan": [] }, "drafts": { "section_name": { "version": 1, "status": "planning | drafting | polished | reviewed", "file_path": "", "backup_path": "" } }, "review": { "tier1_results": {}, "tier2_results": {}, "severity_report": [] }, "simulated_review": { "scores": {}, "weaknesses": [], "revision_suggestions": [] } }
Rules:
GRANT_STATE.json at the start of every conversation turn to resume context.GRANT_STATE.json after completing any phase or significant sub-step.version to backups/<section_name>_v<N>.<timestamp>.txt. Use Bash cp for this. If backups/ does not exist, create it with mkdir -p backups before the first backup.
provides source files, work on copies. Always ask before writing back.
(e.g., re-running Phase 1 after Phase 2 drafting), warn the user and require explicit confirmation.
in any generated file. If encountered, warn and redact.
The skill uses supporting files in sibling directories:
references/us/ — US agency guidelines: nsf_guide.md, nih_guide.md, doe_guide.md, darpa_guide.md, nasa_guide.mdreferences/cn/ — CN agency guidelines: nsfc_guide.mdreferences/common/ — shared resources: reviewer_personas.md, common_mistakes.md, resubmission.mdreferences/rubrics/ — scoring rubrics: nsf_rubric.json, nih_rubric.json, nsfc_rubric.jsontemplates/us/ — US templates: nih_specific_aims.md, nsf_project_summary.md, budget_justification.mdtemplates/cn/ — CN templates: nsfc_justification.md, nsfc_research_content.md, nsfc_research_foundation.md, nsfc_abstract_5sentence.mdconfig.yaml — skill configuration: supported agencies/programs, golden ratiobenchmarks, AI-flavor patterns, severity levels. Read at Phase 0 initialization.
scripts/ — deterministic check scripts:validate_length.py — section length vs golden ratio/page limitsvalidate_citations.py — citation consistency and completenesscompliance_check.py — format compliance and AI-flavor detectionWhen a phase requires a reference or template, load it with Read from these directories. If a needed file is missing, inform the user and proceed with built-in knowledge, noting the gap.
Lazy Loading: Do NOT read all reference files at once. Load only the files needed for the current phase and agency track. For example:
references/cn/nsfc_guide.md only, not all US guidesreferences/rubrics/nih_rubric.json + references/common/reviewer_personas.md, not NSF/NSFC rubricsThis keeps context focused and reduces token usage by ~60%.
Step 0.1 — Collect Applicant Profile
Gather (ask if not provided):
Step 0.2 — Collect Project Concept
Gather:
Step 0.3 — ROI Scoring (0-15)
Score the project's fundability across five dimensions (0-3 each):
| Dimension | 0 | 1 | 2 | 3 | |-----------|---|---|---|---| | Significance | Incremental | Moderate gap | Clear gap | Urgent national priority | | Innovation | Standard method | Novel combination | New approach | Paradigm shift potential | | Investigator fit | Tangential | Related | Strong match | World expert | | Preliminary data | None | Conceptual | Partial | Convincing dataset | | Timeliness | No urgency | Modest momentum | Active field | Hot topic + policy alignment |
Report the total score and interpretation:
Step 0.4 — Agency & Program Recommendation
Based on track, field, career stage, and ROI score, recommend 1-3 programs:
US Track Programs: | Agency | Program | Best For | |--------|---------|----------| | NSF | CAREER | Early-career faculty, broad impact | | NSF | Standard/Collaborative | Established investigators | | NIH | R01 | Biomedical, 4-5 year projects | | NIH | R21 | Exploratory/high-risk biomedical | | DOE | Early Career | Energy/physics early-career | | DARPA | Young Faculty Award | Defense-relevant, high-risk | | NASA | FINESST | Graduate student fellowships |
CN Track Programs (NSFC): | Program | Chinese Name | Best For | |---------|-------------|----------| | Youth Fund | 青年科学基金 | Under 35 (male) / 40 (female), first NSFC | | General Program | 面上项目 | Established researchers, broad | | Regional Fund | 地区科学基金 | Researchers at western/regional institutions | | Key Program | 重点项目 | Senior PIs, larger scope |
Present recommendation with reasoning. Get user confirmation before proceeding.
Step 0.5 — Initialize State
Create GRANT_STATE.json with profile, track, agency, program. Set current_phase: "1".
GRANT_STATE.json exists with completed profile section.GRANT_STATE.json has profile and agency/program.references/us/nsf_guide.md or references/us/nih_guide.md (US track) or references/cn/nsfc_guide.md (CN track) depending on the selected agency.references/common/common_mistakes.md for pitfalls to avoid during planning.Step 1.1 — Title Crafting
Generate 3-5 candidate titles following agency conventions:
User selects or modifies. Save to state.
Step 1.2 — Claims-Aims-Evidence Matrix
Build a matrix connecting the argument structure:
| Claim (Why it matters) | Aim/Objective | Key Evidence | Gap Addressed |
|------------------------|---------------|--------------|---------------|
| Claim 1: ... | Aim 1: ... | Prelim data, lit | Gap 1: ... |
| Claim 2: ... | Aim 2: ... | Method validation | Gap 2: ... |
| Claim 3: ... | Aim 3: ... | Pilot study | Gap 3: ... |Rules:
Save matrix to state.
Step 1.3 — Outline Generation
US Track — Generate skeleton for:
For NIH R01/R21:
alternatives, timeline)
For NSF:
CN Track — Generate skeleton for NSFC:
Page Budget (Golden Ratio): Cite these benchmarks explicitly when planning:
The four paragraphs must form a logical closure: significance → progress → gaps → your solution. The reader should feel "of course this is the next step" by paragraph 4.
S1-S4 are planning DIMENSIONS, not timeline phases:
3-4 researchable modules, each mapping to a research content section
key technique maturity (high/medium/low), risk points, backup plans
which module inputs? What can run in parallel? Define milestones.
self-check: has anyone done similar work? Is it method-level or conceptual-level? Can it be stated in one clear sentence? IMPORTANT: S1-S4 markers are for internal planning ONLY. They are purged before producing any user-facing output. The final text flows as continuous prose organized by sub-topic headings. Do NOT present S1-S4 as Year 1/2/3/4.
Step 1.4 — Figure Planning
Every proposal needs figures. Plan at minimum:
For each planned figure, note:
Save figure plan to state.
Step 1.5 — Save & Checkpoint
Write full outline and matrix to GRANT_STATE.json. Set current_phase: "2". Summarize the plan to the user and ask for approval before moving to drafting.
GRANT_STATE.json updated with structure section.templates/us/ (US track) or templates/cn/ (CN track) for the sections being drafted.references/common/common_mistakes.md for common drafting pitfalls.For EVERY section, follow the two-phase model:
Planning Phase (internal, not shown to user as final output):
Narrative Phase (user-facing output):
unless the agency template calls for them.
US Track: Specific Aims / Project Summary
The Specific Aims page is the most important page in any NIH proposal. Structure:
For NSF Project Summary: three separate sections clearly labeled Overview, Intellectual Merit, Broader Impacts. Each ~200 words. No jargon in Broader Impacts — a program officer outside your subfield will read it.
CN Track: Project Rationale (立项依据)
Follow the four-paragraph closure model from Step 1.3. Additional rules:
proposed work.
CN Track: Research Content (研究内容)
Internal planning (S1-S4) guides the structure, but output is organized by research sub-topics. Each sub-topic section includes:
Agency-Specific Templates
Load the appropriate template from templates/ for the target agency/program. If a template exists, use it as the structural scaffold. Key templates:
templates/us/nih_specific_aims.md — NIH Specific Aims page templatetemplates/us/nsf_project_summary.md — NSF Project Summary templatetemplates/us/budget_justification.md — US budget justification templatetemplates/cn/nsfc_justification.md — NSFC project rationale (立项依据) templatetemplates/cn/nsfc_research_content.md — NSFC research content (研究内容) templatetemplates/cn/nsfc_abstract_5sentence.md — NSFC five-sentence abstract (五句模型) templateWhile drafting each section, keep the relevant review criteria visible:
NIH (Scored Review Criteria):
NSF (Merit Review Criteria):
NSFC (评审要点):
After drafting each section, do a self-check: "Does this section explicitly address the review criteria it should? If a reviewer is scoring criterion X, what in this section earns a high score?"
At least 1-2 figures are mandatory. When drafting reaches a section where a figure was planned:
create or commission it.
[FIGURE X: description] in the draft.backups/<section_name>_v<N>.<timestamp>.txt
GRANT_STATE.json:Strategy), pause and checkpoint: summarize what was written, ask user to review before proceeding.
current_phase set to "3" in state.references/common/common_mistakes.md for known quality issues to check.references/us/nsf_guide.md, references/us/nih_guide.md, or references/cn/nsfc_guide.md) to verify compliance requirements.Run scripts from the scripts/ directory for automated checks. If a script is not available, perform the check manually.
Length vs. Golden Ratio
pages: Significance ~2.5pp, Innovation ~1.5pp, Approach ~8pp).
scripts/validate_length.py threshold).
Citation Consistency
NSF uses author-year typically).
Format Compliance
Postdoctoral Mentoring Plan if applicable).
Run checks using scripts if available:
bashpython3 scripts/validate_length.py <proposal_dir> --mode cn|us --json python3 scripts/validate_citations.py <file_or_dir> --mode cn|us --json python3 scripts/compliance_check.py <file> --agency nsf|nih|nsfc --json
If scripts are not available or fail, perform these checks manually by reading the draft files and applying the rules from the agency guide. Document findings in the same P0/P1/P2 format regardless of check method.
Logic Coherence
AI-Flavor Detection (16-Item Checklist)
Scan the draft for these common AI-writing markers. Flag any found:
Read the full 24-item checklist from references/common/ai_flavor_checklist.md (items 1-16 for English, 17-24 for Chinese). For each flagged item, provide the specific location and a concrete revision.
Cross-Section Terminology Consistency
Classify every finding by severity:
Examples: missing required section, exceeding page limit, contradictory aims.
Examples: weak rationale, unclear methods, AI-flavor detected.
Examples: awkward phrasing, minor formatting, citation style inconsistency.
Present as a structured table:
| # | Severity | Section | Issue | Recommendation |
|---|----------|---------|-------|----------------|
| 1 | P0 | Specific Aims | Aim 3 overlaps with Aim 1 scope | Merge or differentiate |
| 2 | P1 | Significance | No quantitative impact data | Add statistics from ... |
| 3 | P2 | Approach | "Delve" used 4 times | Replace with varied verbs |Save full report to GRANT_STATE.json review section.
current_phase set to "4" in state.references/rubrics/nsf_rubric.json, references/rubrics/nih_rubric.json, or references/rubrics/nsfc_rubric.json.references/common/reviewer_personas.md for detailed persona definitions and scoring guidance.references/common/resubmission.md.24-item checklist from Phase 3 (items 1-16 for English, 17-24 for Chinese). This is a distinct value-add that reviewers increasingly notice.
Simulate the actual NIH/NSF review process:
Pass 1 — Triage Scan (2-minute read)
Pass 2 — Detailed Review (15-minute read)
Pass 3 — Overall Scoring
Simulate an NSFC review panel with seven distinct reviewer personas as defined in references/common/reviewer_personas.md (CN Track section). Each persona provides 2-3 strengths, 2-3 weaknesses, a score (A/B/C/D = 优/良/中/差), and one key question for the applicant.
Panel Verdict:
Produce a structured scoring JSON:
json{ "track": "US|CN", "overall_score": "number or letter", "criteria": [ { "name": "criterion name", "score": "value", "strengths": ["..."], "weaknesses": ["..."] } ], "top_weakness": "...", "top_strength": "...", "verdict": "fund | revise | decline", "confidence": "high | medium | low" }
For each identified weakness:
If the user is working on a resubmission:
"we respectfully disagree because..."
Save all results to GRANT_STATE.json simulated_review section.
current_phase set to "5" in state.templates/us/ or templates/cn/ for final formatting.Perform a final pass to eliminate all remaining AI-flavor markers:
terminology, institutional context).
analytical ones).
in error rate (p < 0.01, n=200)."
CN Mode — Five-Sentence Model (五句模型, ~400 characters):
Constraint: total <=400 Chinese characters. Each sentence should be 60-100 characters. The abstract must be self-contained — a reviewer should understand the entire project from these five sentences alone.
US Mode — Per-Agency Format:
specific aims, methods, significance.
Broader Impacts. Each ~200 words.
risk mitigation.
Ensure budget-task traceability:
| Budget Item | Amount | Linked Task/Aim | Justification |
|-------------|--------|-----------------|---------------|
| Postdoc salary | $X | Aim 1, Aim 2 | Dr. Y, 100% effort, expertise in Z |
| Equipment | $X | Aim 3 | Instrument needed for measurement W |
| Travel | $X | All aims | 2 conferences/yr for dissemination |
| ... | ... | ... | ... |Rules:
差旅费、会议费、劳务费、专家咨询费、其他).
NIH salary cap).
Load budget template from templates/us/budget_justification.md (US track). For CN track, follow NSFC budget categories as described in references/cn/nsfc_guide.md.
Run a final comprehensive compliance check:
Generate a post-submission checklist. Read references/common/post_submission.md for the full US and CN track checklists. Customize for the specific agency.
current_phase set to "complete" in state.Users can jump to any phase or request specific actions:
| User Says | Action | |-----------|--------| | "Start a new proposal" | Begin Phase 0 | | "Adapt my previous proposal" | Adapt from Previous Proposal workflow | | "Based on this proposal, write a new one" | Adapt from Previous Proposal workflow | | "Profile my project" | Phase 0 | | "Plan the structure" | Phase 1 | | "Draft section name]" | Phase 2 for that section | | "Review my draft" | Phase 3 | | "Simulate review" | Phase 4 | | "Polish for submission" | Phase 5 | | "Check compliance" | Phase 5, Step 5.4 only | | "Generate abstract" | Phase 5, Step 5.2 only | | "Resume" | Read GRANT_STATE.json and continue from last checkpoint | | "Status" | Report current phase, completed sections, pending items |
Partial / Iterative Use: If the user provides an existing draft and requests review, skip to Phase 3. Populate GRANT_STATE.json with available information and note any missing phases as gaps. Similarly, if the user already has a structure and wants drafting help, start at Phase 2. Always inform the user which phases were skipped and what information may be incomplete.
This is the most frequent use case: the user has a previous proposal (funded or unfunded) and wants to write a new proposal for a different topic, program, or agency. This workflow blends elements of all phases but shortcuts much of the profiling work.
Step A — Analyze Previous Proposal
patterns in the feedback.
Step B — Define the Delta Ask the user to clarify what changes:
writing style and structural patterns
Step C — Accelerated Planning (Modified Phase 0-1)
flag the key structural differences (4 years vs 3, higher expectations for 研究基础, need for stronger preliminary data)
Step D — Drafting with Voice Preservation
Match sentence structure, vocabulary level, and argumentation patterns.
a better starting point. Instead, adapt the previous text.
"ADAPTED from previous §2.1]") so the PI can verify.
stylistic consistency.
Step E — Continue with Standard Phases After drafting, proceed to Phase 3 (Quality Review) → Phase 4 (Simulated Review) → Phase 5 (Final Optimization) as normal.
GRANT_STATE.json exists,inform user and offer to start from Phase 0.
warn that earlier phases have not been completed and list what is missing. Allow override if user insists.
scripts/ fails or is missing, fall backto manual checks and note the gap.
section by section, using GRANT_STATE.json to maintain continuity.
requirements, flag the conflict and defer to agency requirements unless user explicitly overrides.
This skill was built by synthesizing best practices from multiple open-source grant writing skills and resources. See CREDITS.md for full acknowledgments and source attribution.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +50 percentage points is the difference between those two pass rates over the 22 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.