{"id":52589,"plugin_id":"plugin_asdk_app_6ad1824e3a94819196c9ffc46c93c5b3","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:50:24.644Z","digest":"8cac3425ded825dfb633e84d871cd45703d42f2620baaf3592075a147db69ae2","against":null,"payload":{"description":"Operate the user's real email, calendar, reminders, and saved content through Slashy. Use whenever a request touches their inbox, threads, drafts, sending mail, meetings, availability, scheduling, snoozing, labels, reminders, saved memories or snippets, or existing email/calendar automations. Covers which tool to reach for, the read-before-write order these tools expect, and the confirmation rules that keep an agent from sending or deleting something the user did not ask for.","included_files":[{"relative_path":"references/conventions.md","size_in_bytes":3447}],"name":"slashy-email","skill_md_contents":"---\nname: slashy-email\ndescription: Operate the user's real email, calendar, reminders, and saved content through Slashy. Use whenever a request touches their inbox, threads, drafts, sending mail, meetings, availability, scheduling, snoozing, labels, reminders, saved memories or snippets, or existing email/calendar automations. Covers which tool to reach for, the read-before-write order these tools expect, and the confirmation rules that keep an agent from sending or deleting something the user did not ask for.\n---\n\n# Slashy\n\nSlashy connects to the user's live Gmail or Outlook mail and Google or Outlook\nCalendar. Every tool here acts on real data owned by a real person: mail that\nactually sends, invitations that actually\nnotify attendees, events that actually disappear. Treat it accordingly.\n\n## The three rules that matter most\n\n1. **Resolve identity before anything time- or identity-sensitive.** `get_user_info`\n   returns the signed-in address and timezone. \"Tomorrow at 9\" is meaningless without\n   the timezone, and \"did they reply to me\" is meaningless without the address. Call it\n   once at the start of such a task, not repeatedly.\n2. **Read before you write.** Never compose a reply, label a thread, or move an event\n   from a search snippet alone. Snippets are truncated and routinely omit the part that\n   changes the answer. `list_messages` finds candidates; `read_thread` is what you\n   reason from.\n3. **Sending and deleting need explicit user intent.** Default to `draft_email`. Reach\n   for `send_email` only when the user clearly asked to send. The same applies to\n   `delete_event` and to any trigger deletion. If the instruction is ambiguous, draft it\n   and say so — an unsent draft is a small inconvenience, a wrong send is not recoverable.\n\n## Choosing a tool\n\n**Mail.** `list_messages` searches and filters the mailbox; `read_thread` returns a full\nthread. Compose with `draft_email`, send with `send_email`, and undo a pending scheduled\nsend with `cancel_scheduled_email`. Triage with the specific mail action tool for\nthe requested change, such as `archive_email_thread`, `mark_email_thread_read`,\n`set_thread_category`, or `mark_thread_for_followup`; `snooze_email` handles timed\nresurfacing. `create_label` / `update_label` manage the label set itself. Threads and drafts come back\nwith an `open_in_slashy` link; when the user wants to see an email, give them that link,\nnot a provider webmail link.\n\n**Calendar.** `list_calendars` first when the user has more than one and the target is\nunclear. `list_calendar_events` scans a window, `read_calendar_event` opens one.\n`create_event`, `update_event`, `delete_event` mutate. For anything involving \"when are\nthey free\", `get_available_times` is the tool — do not infer availability by listing\nevents and reasoning about the gaps, because it will miss working hours, declined\ninvitations, and all-day blocks.\n\n**Meetings.** `prep_meeting` assembles context ahead of a meeting. `web_search`\nand `scrape_url` reach outside the mailbox — use them when the answer is not in\nthe user's own data.\n\n**Reminders and automations.** `list_reminders` and `cancel_reminder` manage existing\nreminders. `list_email_triggers` and `list_calendar_triggers` show standing\nautomations. `delete_email_trigger` and `delete_calendar_trigger` remove one when\nthe user explicitly asks. List first so you act on the trigger the user meant.\nCreating or editing reminders or standing automations is not available through this MCP connection.\n\n**Memory and snippets.** `read_memories` recalls durable facts about the user;\n`upsert_memory` records one worth keeping. `create_snippet` saves reusable text;\n`update_snippet` changes an existing snippet. Prefer recalling over re-asking\nsomething the user already told Slashy.\n\n**Files.** `request_file_upload` then `upload_file` then `check_upload_status` for the\npresigned path; `download_file` and `read_file` to retrieve. `get_gmail_attachment`\nretrieves an attachment from Gmail; do not assume it works for Outlook messages.\n\n## Ordering that avoids the common failures\n\nReplying to a thread: `list_messages` to locate it, `read_thread` to read all of it,\nthen `draft_email`. Quoting the wrong message in a long thread is the usual error, and\nreading the whole thread is what prevents it.\n\nScheduling with someone: `get_user_info` for the timezone, `get_available_times` for\nreal availability, then `create_event`. Propose times to the user before creating\nanything unless they have already agreed to a slot.\n\nActing on \"the email from Sarah\": search, then confirm which thread you found before\nmutating it. Two people share a first name more often than you would expect.\n\n## Details\n\nRead `skill://slashy-email/references/conventions.md` for date and timezone handling,\nrecipient and label semantics, pagination behaviour, and error recovery.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}