adversarial-review
Review existing work with independent fresh reviewers and fresh synthesis. Use for an adversarial review, review-plan request, or…
Draft funding proposals, letters of intent or project summaries from structured inputs and project context.
Claude Code
$ npx -y skills add chrisblattman/claudeblattman --skill proposal-write --agent claude-code
Codex
$ npx skills add chrisblattman/claudeblattman --skill proposal-write -a codex -y
Cursor
$ npx skills add chrisblattman/claudeblattman --skill proposal-write -a cursor -y
Gemini CLI
$ npx skills add chrisblattman/claudeblattman --skill proposal-write -a gemini-cli -y
GitHub Copilot
$ npx skills add chrisblattman/claudeblattman --skill proposal-write -a github-copilot -y
OpenCode
$ npx skills add chrisblattman/claudeblattman --skill proposal-write -a opencode -y
Windsurf
$ npx skills add chrisblattman/claudeblattman --skill proposal-write -a windsurf -y
name: proposal-write description: "Draft funding proposals, letters of intent or project summaries from structured inputs and project context."
*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.
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.
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.
**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.
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.
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.
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
Claude Code for professionals who don't code — Skills, agents, and setup guides
Review existing work with independent fresh reviewers and fresh synthesis. Use for an adversarial review, review-plan request, or…
Ask the specific Claude, Codex, Gemini, or Grok agent the user names and automatically retrieve its response. Use for targeted…
Develop independent approaches to a task, decision, plan, or draft, then use a fresh worker to synthesize them. Use for an…
Close out current work by saving decisions, unresolved tasks, useful artifacts, a session log and a current-state handoff for the…
Check the installed starter kit, prerequisites, and next step without calling external models.
Discover and test optional Claude, Codex, Gemini through Antigravity, and Grok subscription connections. Help with missing CLI or…
Draws static SVG figures for lessons, READMEs and manuals in the AI Engineering from Scratch look: paper panel, blueprint accent,…
End-to-end workflow for creating complete JavaScript concept documentation, orchestrating all skills from research to final review
Test a learner on a single Claude Code tutorial lesson (01-10) with 10 questions, scoring answers and flagging weak spots. Use…