{"id":12813,"plugin_id":"plugin_asdk_app_6a6b9b76fa78819187d0e58b56fa6d20","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:02:13.922Z","digest":"36c8153bf78fc1ff2ec4dbc166399690fbe72843bd179c75ca1484873f27720b","against":null,"payload":{"name":"grant-pipeline-review","description":"Use when the user asks where their grant pipeline stands — a status rollup, what's stalled, totals requested or awarded, or prep for a board or leadership update.","included_files":[],"skill_md_contents":"---\nname: grant-pipeline-review\ndescription: Use when the user asks where their grant pipeline stands — a status rollup, what's stalled, totals requested or awarded, or prep for a board or leadership update.\n---\n\n# Grant pipeline review\n\nReport on the state of the user's tracked grants. This skill is read-only.\n\n## Ground rules\n\n- **\"My grants\" is ambiguous.** Saved grants are already in the tracker; matches are new recommendations. Ask one short clarifying question rather than guessing.\n- **No internal identifiers in output.** Never show an ID, cursor, or API field name.\n- **Never invent grant data.** If a fact isn't in the record, say the record doesn't cover it.\n- **Money formats differ by source.** Budget figures are integer cents (divide by 100). Expense amounts are decimal dollar strings (use as-is).\n- **Out of scope** — say so plainly and point to the Instrumentl app: creating or configuring projects, writing or storing proposal narrative, building or restructuring budgets, recording actual expenses.\n\n## Resolving names before you present anything\n\nSaved-grant records contain **only IDs** — no grant name, no funder, no deadline. You must resolve them or the output is unusable:\n\n1. Call `list_saved_grants` with the user's scope.\n2. Collect the `grant_id` values from the results.\n3. Resolve them in a **single** `list_grants` call passing all of them at once, which returns each grant's name, funder, and next deadline.\n4. Resolve owner and assignee references through `list_users`.\n\nIf a row fails to resolve, say that row couldn't be loaded. Never infer a grant's name or deadline from surrounding context.\n\n## Workflow\n\n1. **Pull saved grants**, scoped to a project or fiscal year if the user named one.\n\n2. **Group by pipeline status** — researching, planned, started, LOI in progress, submitted, LOI submitted, awarded, closed, declined, abandoned. Report counts and dollar totals (requested, awarded) per group. Amounts on a saved grant are already in dollars; do not convert them.\n\n3. **Surface what's stuck**: grants sitting in researching or started well past the grant's next deadline, and grants with no owner. The deadline comes from the resolved grant record, not the saved grant.\n\n4. **If they're prepping for a meeting**, lead with the three things that changed or need a decision, not the full table.\n\n5. **Offer the follow-on action** — update a status, assign an owner, add a task — and hand off to the tracker update or task management skill. Do not perform the write here.\n\n## Guardrails\n\n- Say explicitly that totals are calculated live from their records in this conversation, not pulled from a saved Instrumentl report.\n- This skill does not write. If the user asks to change something, hand off rather than acting.\n- A saved grant with a null requested or awarded amount is unknown, not zero. Exclude it from totals and note how many rows were excluded.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}