google-calendar
Create, list, and manage Google Calendar events. Use when asked to schedule meetings, check calendar, create events, or manage appointments.
Best use case
google-calendar is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Create, list, and manage Google Calendar events. Use when asked to schedule meetings, check calendar, create events, or manage appointments.
Teams using google-calendar should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/google-calendar/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How google-calendar Compares
| Feature / Agent | google-calendar | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Create, list, and manage Google Calendar events. Use when asked to schedule meetings, check calendar, create events, or manage appointments.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Google Calendar
Create, list, find, and manage events in Google Calendar. Connect your Google account to schedule meetings, check availability, and manage your calendar programmatically.
## Requirements
- Install the `orth` CLI
- Connect your Google Calendar at https://orthogonal.com/dashboard/integrations
- OAuth connection must be active (HTTP 428 response means not connected)
## Actions
### Create Event
Schedule a new calendar event with attendees and settings.
```bash
orth run google-calendar /create-event --body '{
"start_datetime": "2024-03-15T14:00:00",
"summary": "Team Meeting",
"description": "Weekly team sync",
"event_duration_hour": 1
}'
```
**Parameters:**
- `start_datetime` (required) - Event start time in "YYYY-MM-DDTHH:MM:SS" format (NO timezone)
- `summary` - Event title/summary
- `description` - Event description/details
- `location` - Event location or meeting room
- `timezone` - IANA timezone (e.g., "America/New_York")
- `attendees` - Array of attendee email addresses
- `event_duration_hour` - Duration in hours
- `event_duration_minutes` - Duration in minutes (0-59 only)
- `recurrence` - Recurrence rule (RRULE format)
- `visibility` - Event visibility (default, public, private)
- `calendar_id` - Specific calendar to create event in
- `send_updates` - Send email invitations (true/false)
- `transparency` - Show as busy/free (opaque/transparent)
- `exclude_organizer` - Exclude organizer from attendee list (true/false)
- `guests_can_modify` - Allow guests to modify event (true/false)
- `create_meeting_room` - Create Google Meet room (requires paid Workspace)
- `eventType` - Event type classification
- `guestsCanInviteOthers` - Allow guests to invite others (true/false)
- `guestsCanSeeOtherGuests` - Allow guests to see other attendees (true/false)
### List Events
Retrieve events from your calendar within a time range.
```bash
orth run google-calendar /list-events --body '{
"calendarId": "primary",
"timeMin": "2024-03-01T00:00:00Z",
"maxResults": 10
}'
```
**Parameters:**
- `calendarId` (required) - Calendar ID to query ("primary" for main calendar)
- `timeMin` - Start time filter (RFC3339 format)
- `timeMax` - End time filter (RFC3339 format)
- `q` - Text search query
- `orderBy` - Sort order (startTime, updated)
- `maxResults` - Maximum events to return
- `pageToken` - Token for pagination
- `singleEvents` - Expand recurring events (true/false)
- `showDeleted` - Include deleted events (true/false)
- `timeZone` - Timezone for results
- `eventTypes` - Filter by event types
- `updatedMin` - Only events updated after this time
- `maxAttendees` - Maximum attendees to return per event
- `syncToken` - Sync token for incremental sync
- `showHiddenInvitations` - Include hidden invitations (true/false)
### Find Event
Search for specific events by query and filters.
```bash
orth run google-calendar /find-event --body '{
"query": "team meeting",
"timeMin": "2024-03-01T00:00:00Z"
}'
```
**Parameters:**
- `query` - Search query text
- `timeMin` - Search start time (RFC3339 format)
- `timeMax` - Search end time (RFC3339 format)
- `calendar_id` - Specific calendar to search
- `order_by` - Sort results (startTime, updated)
- `max_results` - Maximum results to return
- `single_events` - Expand recurring events (true/false)
- `show_deleted` - Include deleted events (true/false)
- `event_types` - Filter by event types
- `page_token` - Token for pagination
- `updated_min` - Only events updated after this time
### Delete Event
Remove an event from your calendar.
```bash
orth run google-calendar /delete-event --body '{
"event_id": "EVENT_ID_HERE"
}'
```
**Parameters:**
- `event_id` (required) - Google Calendar event ID to delete
- `calendar_id` - Calendar containing the event (defaults to primary)
## Usage Examples
**Schedule a 1-hour meeting:**
```bash
orth run google-calendar /create-event -b '{"start_datetime":"2024-03-15T14:00:00","summary":"Client Call","event_duration_hour":1,"attendees":["client@company.com"]}'
```
**Create recurring weekly meeting:**
```bash
orth run google-calendar /create-event -b '{"start_datetime":"2024-03-15T10:00:00","summary":"Weekly Standup","event_duration_minutes":30,"recurrence":"RRULE:FREQ=WEEKLY;BYDAY=FR"}'
```
**Check today's events:**
```bash
orth run google-calendar /list-events -b '{"calendarId":"primary","timeMin":"2024-03-15T00:00:00Z","timeMax":"2024-03-15T23:59:59Z"}'
```
**Search for meetings:**
```bash
orth run google-calendar /find-event -b '{"query":"team meeting","timeMin":"2024-03-01T00:00:00Z"}'
```
**Cancel an event:**
```bash
orth run google-calendar /delete-event -b '{"event_id":"abc123def456ghi789"}'
```
## Error Handling
- **HTTP 428** - Google Calendar integration not connected. Visit https://orthogonal.com/dashboard/integrations to connect your account
- **400 Bad Request** - Invalid datetime format or missing required parameters
- **403 Forbidden** - Insufficient calendar permissions
- **404 Not Found** - Event or calendar does not exist
- **409 Conflict** - Event conflicts with existing event
- **429 Rate Limited** - Too many requests, wait before retrying
## Tips
- Use "primary" as calendarId for your main calendar
- DateTime format must be "YYYY-MM-DDTHH:MM:SS" without timezone
- Set timezone separately using the timezone parameter
- Duration can be specified in hours and/or minutes
- Recurring events use RRULE syntax (e.g., "RRULE:FREQ=WEEKLY")
- Use timeMin/timeMax in RFC3339 format for filtering
- Google Meet rooms require paid Google Workspace
- Event IDs are returned from create/list operationsRelated Skills
google-sheets
Create spreadsheets, read data, and manage Google Sheets. Use when asked to create sheets, add data to spreadsheets, lookup rows, update cells, or manage sheet data.
google-drive
Find, create, and manage files and folders in Google Drive. Use when asked to search Drive, create files, upload documents, organize folders, or access Drive content.
yt-dlp-downloader
Download videos from YouTube, Bilibili, Twitter, and thousands of other sites using yt-dlp. Use when the user provides a video URL and wants to download it, extract audio (MP3), download subtitles, or select video quality. Triggers on phrases like "下载视频", "download video", "yt-dlp", "YouTube", "B站", "抖音", "提取音频", "extract audio".
slack
Send messages and manage Slack channels. Use when asked to send Slack messages, post to channels, list channels, or fetch message history.
yc-batch-evaluator
Evaluate YC batch companies for investment — scrapes the YC directory, researches each company and its founders (work history, LinkedIn, website), assesses founder-company fit, and exports to Google Sheets with priority rankings. Use when asked to evaluate YC companies, research a YC batch, screen startups, or do due diligence on YC companies.
website-screenshot
Take screenshots of websites and web pages
weather
Get current weather and forecasts using free APIs (no API key required). Use when asked about weather, temperature, forecasts, or climate conditions for any location.
weather-forecast
Get weather forecasts - temperature, precipitation, wind, and conditions
vhs-terminal-recordings
Create polished terminal GIF recordings using VHS (Video Hardware Software) by Charmbracelet. Use when asked to create terminal demos, CLI gifs, command-line recordings, or animated terminal screenshots for documentation, READMEs, or marketing.
verify-email
Verify if an email address is valid and deliverable
valyu
Web search, AI answers, content extraction, and async deep research
uptime-monitor
Monitor website uptime - check availability, response times, and status