Calendar Scheduler Skill

Propose available time slots and create calendar events with timezone handling.

calendarschedulingmeetingsproductivity

Calendar Scheduler Skill

TL;DR

The Calendar Scheduler skill reads your calendar availability, proposes open time slots that meet your constraints, and creates events — including invites to external attendees — once you confirm. It handles the back-and-forth of “when are you free?” so you don’t have to.

The medium risk rating comes from the fact that the skill can create, modify, and delete calendar events. A misconfigured rule or a timezone conversion error can result in double-bookings or meetings scheduled at 3 AM. Always review proposed slots before confirming event creation.


What it does

  • Reads your free/busy data from Google Calendar, Outlook, or CalDAV-compatible calendars to identify genuinely open slots.
  • Applies scheduling preferences — no meetings before 9 AM, no back-to-back calls, buffer time between events, preferred days for deep work.
  • Handles multi-participant scheduling by checking availability across multiple calendars when you have access to attendees’ free/busy data.
  • Converts timezones correctly and displays proposed times in both your timezone and the attendee’s timezone to prevent confusion.
  • Creates events with structured descriptions — agenda, dial-in link, pre-read materials — based on a template you define per meeting type.
  • Sends calendar invites to external attendees via email once you approve the proposed slot.

Best for

External meeting coordination: Instead of the “does Tuesday at 2 work? No, how about Thursday?” email chain, the skill proposes three slots and you send one message with options. The attendee picks one, and the event is created automatically.

Recurring meeting hygiene: Audit your calendar for recurring meetings that no longer have a clear owner or agenda. The skill can flag meetings that haven’t had an agenda updated in 30+ days and draft a cancellation or restructuring proposal.

Timezone-heavy teams: When your team spans New York, London, and Singapore, finding a slot that works for everyone is genuinely hard. The skill calculates overlapping business hours and ranks slots by how reasonable they are for each participant.

Interview scheduling: Coordinate candidate interviews across multiple interviewers without a dedicated scheduling tool. The skill checks all interviewers’ calendars and proposes slots where everyone is free.


How to use (example)

Scenario: Scheduling a 45-minute client call across timezones

You’re in Chicago (CT) and need to schedule a call with a client in Amsterdam (CET) and a colleague in Tokyo (JST).

Input:

Schedule a 45-minute video call with:
- client@amsterdam.com (timezone: Europe/Amsterdam)
- colleague@company.com (timezone: Asia/Tokyo)

Constraints:
- My working hours: Mon–Fri, 9 AM–6 PM CT
- No meetings on Friday afternoons
- Prefer morning slots (before noon CT)
- Meeting type: "Client check-in" (use that template)
- Propose 3 options in the next 10 business days

What the skill does:

  1. Fetches free/busy data for all three calendars.
  2. Calculates overlapping windows where all three participants are in business hours.
  3. Applies your preference for morning slots and no Friday afternoons.
  4. Proposes three options with times shown in all three timezones.

Output:

Proposed slots (all times shown in CT / CET / JST):

Option A: Tuesday Apr 1, 9:00–9:45 AM CT
          = 4:00–4:45 PM CET / 11:00–11:45 PM JST ⚠️ Late for Tokyo

Option B: Wednesday Apr 2, 8:00–8:45 AM CT
          = 3:00–3:45 PM CET / 10:00–10:45 PM JST ⚠️ Late for Tokyo

Option C: Monday Apr 7, 9:00–9:45 AM CT
          = 4:00–4:45 PM CET / 11:00–11:45 PM JST ⚠️ Late for Tokyo

Note: No slot exists where all three participants are in standard business hours.
Best available option for Tokyo: [none in next 10 days without early/late compromise]

Confirm Option A, B, or C? Or adjust constraints?

Common variations:

  • Use propose_async: true to send a scheduling link (like a Calendly-style page) rather than proposing specific slots.
  • Add buffer_minutes: 15 to automatically add 15-minute gaps before and after the new event.
  • Combine with email triage to detect scheduling requests in your inbox and trigger the scheduler automatically.

Permissions & Risks

Required permissions: Calendar (read + write)
Risk level: Medium

Timezone conversion errors are the most common failure mode. A skill that stores times in UTC but displays them in local time can create events an hour off during daylight saving transitions. Always verify the displayed time matches your intent before confirming.

Overbooking risk: If the skill reads free/busy data but a calendar event was created after the last sync, it may propose a slot that’s actually taken. Add a “re-check availability” step immediately before creating the event, not just when proposing slots.

Calendar API rate limits: Google Calendar API has per-user quotas. If you’re running bulk scheduling operations (e.g., scheduling 50 interviews in one session), you may hit rate limits. The skill should implement exponential backoff and surface a clear error rather than silently failing.

Recommended guardrails:

  • Always require explicit confirmation before creating any event — never auto-create.
  • Show proposed times in the attendee’s local timezone, not just yours.
  • Log every event creation with the inputs used, so you can audit and undo if needed.
  • Set a maximum number of events the skill can create per session (e.g., 10) to prevent runaway automation.

Troubleshooting

Proposed slots conflict with existing events
The free/busy data was stale at the time of proposal. Enable real-time availability checking rather than caching, or add a “verify before create” step that re-checks the slot immediately before sending the invite.

Times are off by one hour
Almost always a daylight saving time issue. Confirm that your calendar integration stores and retrieves times in UTC and converts to local time at display time — not the other way around.

Attendee’s calendar shows as “unavailable” for all slots
You may not have free/busy access to their calendar. If they’re external, the skill can only propose slots based on your own availability and ask the attendee to confirm. Use a scheduling link approach instead.

Event created with wrong duration
Check whether your meeting type template specifies a duration. If not, the skill may default to 30 or 60 minutes regardless of what you requested.

Skill can’t find any available slots in the requested window
Your constraints are too tight. Try extending the date range, relaxing the time-of-day preference, or removing the buffer requirement temporarily to see what’s available.


Alternatives

Calendly — The most widely recognized scheduling tool. Attendees pick from your available slots via a link; no back-and-forth required. Doesn’t integrate with AI workflows or read email context. Free tier is limited to one event type.

Cal.com — Open-source alternative to Calendly with self-hosting support. More flexible for custom integrations; requires more setup. Good for teams that want to own their scheduling infrastructure.

Google Calendar’s built-in scheduling — The “Appointment schedule” feature in Google Calendar provides a Calendly-like booking page without a third-party tool. Limited to Google Workspace users; no AI-driven slot proposal or multi-participant optimization.


  • Google Calendar API: developers.google.com/calendar/api
  • Microsoft Graph Calendar API: learn.microsoft.com/en-us/graph/api/resources/calendar
  • IANA timezone database: iana.org/time-zones