{"id":12811,"plugin_id":"plugin_asdk_app_6a6b9b76fa78819187d0e58b56fa6d20","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:02:13.886Z","digest":"4a12b4e1885132950daf827816cd2cc33253c4daa89d2eba6af13034221c1636","against":null,"payload":{"name":"grant-deadline-review","description":"Use when the user asks what grant work is due, what's overdue, or who owns what across the tasks and deadlines on the grants in their tracker.","included_files":[],"skill_md_contents":"---\nname: grant-deadline-review\ndescription: Use when the user asks what grant work is due, what's overdue, or who owns what across the tasks and deadlines on the grants in their tracker.\n---\n\n# Grant deadline review\n\nAnswer questions about upcoming and overdue grant work. 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- **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\nTask records contain **only IDs** — no person name, no grant name. A readable answer needs three hops:\n\n1. `list_tasks` returns `assignee_id`, `nominator_id`, and `saved_grant_id`.\n2. Resolve people with `list_users`.\n3. Resolve the grant by taking the task's saved grant through `list_saved_grants` to get its `grant_id`, then a single `list_grants` call for the name and funder.\n\nIf a lookup fails, say that row couldn't be loaded rather than inferring.\n\n## Workflow\n\n1. **For \"what's due\"**: pull open tasks in the requested window plus anything past due, sorted by date. **Call out overdue items first.**\n\n2. **Disambiguate person references before filtering.** \"Sarah's tasks\" could mean assigned to, created by, completed by, or nominated (handed off) by her — these are four separate filters that compose with AND, so the wrong one returns wrong results. Ask: \"Do you mean tasks assigned to Sarah, ones she created, ones she completed, or ones she handed off?\"\n\n3. **Filter by task kind with care.** Kinds are full proposal, report, general, letter of inquiry, and cultivation — but **older tasks may have no kind recorded at all**. If the user asks for a specific kind, say plainly that tasks without a recorded kind won't appear, and offer to show the unclassified ones too.\n\n4. **Report unowned work** when relevant — tasks with no assignee are a common gap in a deadline review.\n\n5. **Offer the follow-on action** — create, assign, reschedule, or complete a task — and hand off to the task management skill. Do not perform the write here.\n\n## Guardrails\n\n- This skill does not write. If the user asks to create, assign, or complete anything, hand off rather than acting.\n- Never mark a task complete or assign work as a side effect of a status question.\n- A task with a deadline earlier than its creation date is a data artifact, not necessarily overdue work — report it as recorded and don't editorialize.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}