Skip to content
Education
Skill

/proposal-write

Draft funding proposals, letters of intent or project summaries from structured inputs and project context.

From plugin
claudeblattman
48229 skills7 agents2 commands

Claude Code

$ npx -y skills add chrisblattman/claudeblattman --skill proposal-write --agent claude-code

SKILL.md

proposal-write.SKILL.md
name: proposal-write
description: "Draft funding proposals, letters of intent or project summaries from structured inputs and project context."

Write Proposal

*v3.4 — Added donor intelligence context (meeting transcripts + Gmail) to Step 3* *v3.x — Auto-loaded project context, donor profile lookup, template gate as the single hard stop* *v3.0 — Restructured to Input Checklist → Auto-Gather Context → Donor Profile → Context Brief → Analyze → Draft*

Draft a funding proposal from structured inputs, using a project's voice pack, project context, and donor intelligence. Use when drafting funding proposals, LOIs, or project summaries for grant applications.

Overview

This skill produces a first draft of a funding proposal in markdown. The flow: **Input Checklist → Auto-Gather Context → Donor Profile → Context Brief → Analyze & Plan → Draft → Save → Update Donor Profile → Log.**

The voice pack loads automatically. Context gathering runs automatically after the checklist to provide richer inputs without manual effort.

**Pre-approved tools:** Google Workspace MCP and filesystem reads. Call them directly — no Task agents.

Voice Pack (Optional)

If you maintain a voice pack with your writing style:

@~/.claude-assistant/voice/PROPOSAL_VOICE.md
@~/.claude-assistant/voice/PROPOSAL_EXAMPLES.md

Create these files with your own writing style preferences: sentence length, active vs. passive voice, hedging rules, formatting conventions. If not found, the skill warns and continues with general academic voice rules.

Instructions

Step 1: Input Checklist (start here — this is the skill's primary value)

**Present this checklist immediately and collect all inputs before proceeding.** This catches missing documents early — the single most important thing this skill does.

PROPOSAL INPUT CHECKLIST

REQUIRED:
1. [ ] Funder name and program: ___
2. [ ] Application template / form fields / guidelines
      (Defines the structure. Without it, the draft may need restructuring.)
3. [ ] Research design document or project overview
4. [ ] Budget ceiling or range: ___
5. [ ] Deadline: ___

IF RESUBMISSION:
6. [ ] Previous submission file
7. [ ] Reviewer comments

RECOMMENDED:
8. [ ] Strategic framing notes (what to emphasize/downplay for this funder)

AUTO-LOADED (skill finds these automatically):
9.  [x] Team roster and roles (from project config)
10. [x] Project status and progress (from project config)
11. [x] Strategic priorities (from project config)
12. [x] Related proposals to other funders (auto-scanned for consistency)
13. [x] Donor profile (if available)

**For each missing REQUIRED item**, ask the user once. If they say "skip" or "don't have it," note the gap and proceed. Flag in the output what couldn't be addressed.

**For items provided as file paths**, read them immediately.

Step 2: Auto-Gather Context

After collecting checklist inputs, automatically gather project context. Each source has a word budget to prevent context window bloat. **Total cap: ~8,000 words of gathered context.**

Skip this step if the user passes `skipcontext`.

| Source | What to read | Word budget | How to summarize | |--------|-------------|-------------|-----------------| | `.claude/CLAUDE.md` | Team, status, priorities | ~800 (full) | Keep full — it's config | | Most recent weekly review | Latest weekly review file by date | ~1,500 | Extract: project status, funding pipeline, recent decisions, active deadlines | | Prior submissions to this funder | Any matching `*[funder]*` file in your grants directory | ~2,000 per file (max 2 files) | Extract: framing, key arguments, budget figures, reviewer feedback if any | | Consistency reference | 2 most recent `*_Draft.md` files to OTHER funders | ~500 total | Extract ONLY: key statistics, sample sizes, budget figures, intervention description (max 20 bullet points). Discard raw text. | | Project Google Doc | Status section via Google Docs MCP | ~1,000 | Extract current status and funding tracker rows | | Donor profile | See Step 3 | ~500 (full) | Keep full |

**Do NOT read raw transcripts.** The weekly review already synthesizes them. If the most recent weekly review is >14 days old, prompt: "The last weekly review is from [date]. Consider running `/weekly-review` first to ensure current context. Continue anyway? [Y/run weekly-review first]"

**Graceful degradation:** If any source is unavailable (no Google Doc configured, no prior submissions found, MCP fails), note it and continue. Never block on a missing optional source.

Step 3: Donor Profile Lookup

1. Check for a donor profile at `~/.claude-assistant/donors/[funder-slug].md` 2. **If found:** Read it. Display "What They Value" and "What to Avoid" to the user. Check freshness — if `next_review_date` has passed, display: "Donor profile for [funder] may be outdated (last reviewed [date]). Proceeding with current info — consider running `/donor-profile [funder] refresh` after this session." 3. **If not found:** Display: "No donor profile found for [funder]. Run `/donor-profile [funder]` to create one, or continue without it." Flag the gap in the context brief.

Do NOT do web research mid-workflow. The `/donor-profile` skill handles that separately.

Step 3b: Donor Interaction History (if profile found)

If a donor profile was found in Step 3, also search for recent interactions to add context:

1. **Meeting search:** If you have a meeting-notes integration (e.g., Granola), search by funder name. If results found, read the 1-2 most recent transcripts. Extract: key decisions, program officer guidance, framing feedback, any commitments made. 2. **Gmail search:** `search_gmail_messages` with query `"[funder name]" newer_than:180d`. Read top 2-3 relevant threads. Extract: correspondence, stated priorities, feedback, relationship signals.

Add findings to the Context Brief under a "Donor Interactions" row. This is passive context — display it, don't gate on it.

**If the profile is

Read more
@chrisblattman
Ships withclaudeblattman

Claude Code for professionals who don't code — Skills, agents, and setup guides

48229 skills7 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
482
Star history of chrisblattman/claudeblattman on GitHub, a chart by star-history.com

Other skills on claudeblattman.

ask-agents

ask-agents

Ask the specific Claude, Codex, Gemini, or Grok agent the user names and automatically retrieve its response. Use for targeted…

council

council

Develop independent approaches to a task, decision, plan, or draft, then use a fresh worker to synthesize them. Use for an…

done

done

Close out current work by saving decisions, unresolved tasks, useful artifacts, a session log and a current-state handoff for the…

kit-setup

kit-setup

Discover and test optional Claude, Codex, Gemini through Antigravity, and Grok subscription connections. Help with missing CLI or…

More skills from other plugins.

lesson-quiz

lesson-quiz

Test a learner on a single Claude Code tutorial lesson (01-10) with 10 questions, scoring answers and flagging weak spots. Use…

@luongnv89@luongnv89Install Skill
build-personal-skill

build-personal-skill

Evidence-based creation of a reusable personal course-making Skill from the user's own classroom and chat history. Use when the…

@thu-maic@thu-maicInstall Skill

Questions about proposal-write.

Which coding agents can use proposal-write?
proposal-write installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.