plugins/superhuman/skills/meeting-scheduler/SKILL.md
Handles end-to-end meeting scheduling using the Superhuman Mail MCP server — from finding available times to sending the invite or proposing times via email. Use this skill whenever someone asks to "schedule a meeting with [person]", "find a time to meet", "book a call", "set up a meeting", "when am I free to meet with [person]", "propose times to [person]", "send my availability", "create a meeting invite", "schedule a 1:1", "find overlap in our calendars", "reschedule my meeting with [person]", or any variation of coordinating a meeting. Also trigger when someone says "I need to find time with [person]", "can you check my calendar and suggest times", "set up a recurring sync", "block time for [task]", or when an email thread involves scheduling and the user wants to act on it. Trigger broadly — if someone needs help coordinating when people meet, this skill should activate.
npx skillsauth add openai/plugins meeting-schedulerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a scheduling assistant that handles the full loop: check availability, find times, and either book the meeting directly or draft an email proposing times — all from a single conversational prompt.
This skill uses the Superhuman Mail MCP server to check calendar availability, create events, and draft/send scheduling emails in the user's voice.
Extract from the user's prompt:
If key info is missing, ask — but try to infer reasonable defaults first. Most users want a 30-minute meeting sometime in the next week.
Use Superhuman_Mail.query_email_and_calendar (e.g., "What is my email address?") to determine the user's email address. This is needed so you can include them in availability checks and calendar invites.
Before checking availability, you must resolve each name to the correct person. Do not assume a first name alone is enough — there may be multiple people with the same first name in the user's contacts.
Superhuman_Mail.query_email_and_calendar with a specific question like: "List all contacts named Andrew with their full names, email addresses, and companies." Do not query with just "What is Andrew's email?" — this may silently return the wrong person.Call Superhuman_Mail.get_availability with:
participants: the verified email addresses from Step 1b — always include the user (the user's email address) so their calendar is checked too, unless they explicitly say they don't need to attendstart_date and end_date: the time window in RFC3339 formatduration_minutes: meeting lengthworking_hours_only: true (unless the user specified otherwise)The API's working_hours_only flag only enforces working hours in the user's timezone. You must also ensure proposed slots fall within working hours (9am–5pm) for every participant in their own local timezone.
Superhuman_Mail.query_email_and_calendar to look up each participant's timezone (e.g., "What timezone is [email protected] in?"). If a timezone can't be determined, ask the user.get_availability, convert the time to every participant's local timezone and discard any slot where it falls outside 9am–5pm for anyone. For example, a 9:00am ET slot is 6:00am PT — this must be excluded if any participant is on the West Coast.Show the user 3-5 available time slots, formatted clearly:
## Available times for a 30-min call with Andrew Chen
1. Tuesday, April 14 at 10:00am PT
2. Tuesday, April 14 at 2:30pm PT
3. Wednesday, April 15 at 11:00am PT
4. Thursday, April 16 at 9:00am PT
Would you like me to:
- **Book one of these** directly (creates a calendar invite)?
- **Email Andrew** with these options so he can pick?
If there are no available slots, say so clearly and suggest widening the window or adjusting the duration.
If the user picks a time to book:
Call Superhuman_Mail.create_or_update_event with:
title: Infer from context (e.g., "Lorilyn <> Andrew — Sync") or askstart and end: The selected time slot in RFC3339 formatattendees: All participant email addresses — always include the user (the user's email address) as an attendee unless the user explicitly says to leave themselves off the inviteconference: follow the user's Superhuman personalization settings; override only if the user explicitly requests or declines a video linktimezone: User's timezonedescription: Optional — if the meeting relates to an email thread, include a brief summaryConfirm to the user: "Done — I've sent a calendar invite to Andrew for Tuesday at 10am PT with a video link."
If the user wants to email the other person:
Call Superhuman_Mail.create_or_update_draft with:
type: "new" (or "reply" if this is in the context of an existing thread)to: The other person's emailthread_id: Include if replying to an existing scheduling threadinstructions: Something like "Propose meeting times to Andrew. Suggest [time 1], [time 2], and [time 3] for a 30-minute video call. Keep it friendly and brief. Ask him to pick whichever works best."Present the draft to the user for review, then send via Superhuman_Mail.send_draft when approved.
If the user wants to block time for a task (not a meeting with others):
Call Superhuman_Mail.create_or_update_event with:
title: The task description (e.g., "Deep work: Q3 proposal")start and end: The chosen blockconference: falseIf the user's prompt is in the context of an existing email thread about scheduling:
Superhuman_Mail.get_thread to understand what's being askedSuperhuman_Mail.get_availability for the proposed timesSuperhuman_Mail.create_or_update_draft that either confirms a time, proposes alternatives, or shares availabilityrecurrence field in Superhuman_Mail.create_or_update_event (e.g., RRULE:FREQ=WEEKLY;COUNT=10).development
Use when the user wants to spin up / create / launch / provision a DigitalOcean droplet (or "a remote dev box on DO") and connect to it from Codex as a remote SSH workspace.
data-ai
Search through Microsoft Teams chats or channels, triage unread or recent activity, draft follow-ups, and manage Planner tasks through connected Teams data.
tools
Motion / animation context for the `use_figma` MCP tool — animating Figma nodes via manual keyframes, animation styles, easing, and timeline duration. Load alongside figma-use whenever a task involves adding, editing, or inspecting animation on a node.
development
SwiftUI ↔ Figma translation. Use whenever the user mentions Swift, SwiftUI, iOS, iPhone, or iPad — in EITHER direction — translating a Figma design into SwiftUI (design → code), or pushing SwiftUI views / screens / tokens back into a Figma file (code → design). Triggers on phrases like 'implement this Figma design in SwiftUI', 'build this screen in Swift', 'push this SwiftUI view to Figma', 'mirror my Swift code in a Figma file', or whenever a Figma URL appears alongside `.swift` files / an `.xcodeproj`. Routes to a direction-specific reference doc; loads alongside `figma-use` for the code → design path.