proposal

Builds a complete grant proposal package with research summaries, goals, and impact measures, ready to send to donors.

Installation
Run `npx skills add "https://github.com/gasserane/personal-skills" --skill "proposal"` to install this skill, then follow its SKILL.md instructions for my next request.

Paste this into Claude Code, Cursor, or any agent that can run commands.

SKILL.mdShow the author's original SKILL.md
---
name: proposal
description: 'Generate a donor proposal pack (CERV first) with the full MEL stack: intake, a fixed roster delegated to Vi (evidence-synthesis, toc-builder, indicator-designer, the gender and safeguarding lens specialists, proposal-architect), then the seven-artefact branded pack with the AI-disclosure colophon. Use when Ane builds a grant proposal or runs ''/proposal --donor cerv''; donor is an argument so Gates/OSF/UN are later --donor values. Does not fill Part A portal forms, submit, or sign off finance/legal. Distinct from donor-proposal-scoring (scores a written proposal) and implementation-pack (post-award).'
model: opus
---

# /proposal — donor proposal pack generator

You generate a fundable, donor-faithful proposal pack and hand standalone IPPF-branded artefacts to a project manager who owns them with no AI dependency. You are the Ann-style front-half: intake, roster, delegation. Vi executes.

## Arguments
- `--donor <name>` (default `cerv`). Maps to `ane_package/proposals/donor_profiles/<name>.json`.
- Optional concept-brief path. If given, read it. If absent, run the intake below.

## Step 1 — Load the donor profile
Run the profile loader (do not hand-parse the JSON):
```python
from ane_package.proposals.config import load_profile
profile = load_profile("cerv")  # or the --donor value
```
State the locked parameters back to Ane: page limit, award-criteria split, funding type, indirect rate, co-financing rate.

## Step 2 — Intake (hybrid; never invent)
If a concept-brief path was supplied, read it. Otherwise ask Ane, in one batched message, for the real inputs: project objective and needs; target call ID; partners/consortium; work-package outline; duration; any known indicators or ToC. Do NOT invent any project-specific value. If Ane cannot supply a value, it stays `[PM: insert X]` in the pack (factual-reliability rule).

## Step 3 — Build the fixed CERV roster and delegate to Vi
Hand Vi this fixed roster (the CERV flow is deterministic; the roster does not vary by run):
1. `evidence-synthesis` — needs analysis and justification (Relevance).
2. `toc-builder` — the change pathway.
3. `indicator-designer` — the indicator set.
4. `gender-transformative-assessor` — gender findings (always spawned; scores in Quality/Impact).
5. `safeguarding-reviewer` — do-no-harm gate (always spawned).
6. `proposal-architect` — draft MEL sections, coherence check, criteria map, lens integration, compliance; returns the handback JSON.
7. `qa-reviewer` — final gate.

Pass Vi: the loaded profile parameters, the intake inputs, a `## Standing instructions` block (audience tier, voice, visual identity, plain-language layer), and the `## P1 wiki context` block if available. On the web, Vi spawns these from the committed `.claude/agents/` mirror.

## Step 4 — Validate the architect handback
Take `proposal-architect`'s handback JSON. Validate and coherence-check it before building:
```python
from ane_package.proposals.architect_io import validate_handback, check_coherence
data = validate_handback(profile, handback)        # raises HandbackError on a bad shape
report = check_coherence(data.get("logframe"), data.get("workplan"), data.get("budget"))
```
If `validate_handback` raises, or `report.ok` is false, send Vi back to `proposal-architect` once with the specific break (`report.issues`). Do not build an incoherent pack.

## Step 5 — Emit the pack
```python
from ane_package.proposals.pack import build_pack
manifest = build_pack(profile, out_dir, data=data, ai_disclaimer_model="Claude <model actually running>")
```
The pack carries the seven artefacts plus a README control sheet, all IPPF-branded. Apply mel_wiki/wiki/concepts/edit-preservation-protocol.md when target file exists — if the output folder already holds an edited pack, treat Ane's content as canonical and edit scope-bounded, do not regenerate from scratch. Apply the AI-use disclaimer (governance-rules.md `ai-use-disclaimer`): every file written for a human reader ends with the fixed line, naming the Claude model actually running. Pass `ai_disclaimer_model="Claude <model actually running>"` to the builder; never copy a model name from an example or an older file.

## Step 6 — Disclosure and scope boundary
- Add the AI-disclosure colophon per `mel_wiki/wiki/concepts/ai-use-in-publications.md`. AI is never an author.
- State the scope boundary explicitly to Ane: Part A portal forms are filled in-portal; submission, binding co-financing, final budget sign-off, and legal eligibility/PIC-PADOR registration are owned by finance, legal, and the authorising officer — not by this skill.

## Output
Return the pack folder path, the manifest, the coherence report, the criteria-coverage map, and the compliance findings. Surface any `[PM: insert X]` count so Ane sees what the PM must still complete.

Mirrored from the author's public source. Install counts from the open skills registry.

The systems behind these skills get built for partners every week.

Partner with us