@tank/google-calendar
1.2.0Skill
Description
Create, query, update, and manage Google Calendar events and availability. Covers event CRUD, free/busy queries, recurring events with RRULE, Google Meet conferencing, attendee management, multi-calendar operations, and incremental sync. Sources: Google Calendar API docs, RFC 5545 (iCalendar).
Triggered by
calendareventmeetingscheduleavailabilityfree busy
Download
Verified
tank install @tank/google-calendarGoogle Calendar
Create, query, update, and manage Google Calendar events, schedules, and availability.
Overview
This skill enables AI agents to manage Google Calendar — creating and modifying events, checking free/busy availability, managing multiple calendars, and handling recurring events. Ideal for scheduling automation, meeting coordination, and time management workflows.
Capabilities
Event Management
- Create events with title, description, location, start/end times
- Update existing events (time, attendees, description)
- Delete and cancel events with optional notification to attendees
- Move events between calendars
- Set event colors and visibility (public, private, default)
Scheduling
- Query free/busy information across multiple calendars
- Find available time slots for a group of attendees
- Create events with conferencing (Google Meet auto-generation)
- Set reminders (email, popup) with configurable lead times
- Handle all-day events and multi-day spans
Recurring Events
- Create recurring events with RRULE patterns (daily, weekly, monthly, yearly)
- Modify single instances or entire series
- Handle exceptions to recurring patterns
- Query instances of a recurring event within a date range
Calendar Management
- List all calendars for the authenticated user
- Create and delete secondary calendars
- Subscribe to other users' calendars
- Set calendar-level default reminders and notification preferences
- Manage calendar access control lists (ACLs)
Attendees & RSVPs
- Add and remove attendees from events
- Set optional vs. required attendance
- Read attendee response status (accepted, declined, tentative)
- Send update notifications to attendees on changes
Authentication
Requires Google OAuth 2.0:
https://www.googleapis.com/auth/calendar— Full calendar accesshttps://www.googleapis.com/auth/calendar.events— Event-only accesshttps://www.googleapis.com/auth/calendar.readonly— Read-only access
Example Usage
{
"action": "createEvent",
"calendarId": "primary",
"summary": "Sprint Planning",
"start": "2026-02-17T10:00:00-08:00",
"end": "2026-02-17T11:00:00-08:00",
"attendees": ["[email protected]", "[email protected]"],
"conferenceData": true,
"reminders": [{"method": "popup", "minutes": 10}]
}
{
"action": "findAvailability",
"attendees": ["[email protected]", "[email protected]"],
"timeMin": "2026-02-17T08:00:00-08:00",
"timeMax": "2026-02-17T18:00:00-08:00",
"duration": 30
}
Permissions
| Permission | Scope | Reason |
|---|---|---|
| Network | *.googleapis.com | Calendar API calls |
| Network | accounts.google.com | OAuth authentication |
| Filesystem | Read ./** | Read ICS files for import |
| Subprocess | None | Not required |
Best Practices
- Use RFC 3339 timestamps: Always include timezone offset or use UTC
- Batch requests: Combine multiple operations when creating/updating several events
- Incremental sync: Use
syncTokenfrom list responses to efficiently poll for changes - Time zone awareness: Set
timeZoneon events explicitly — don't rely on calendar defaults - Respect quotas: Calendar API has per-user rate limits — implement exponential backoff