Ai-skills google-calendar
install
source · Clone the upstream repo
git clone https://github.com/sanjay3290/ai-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sanjay3290/ai-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/google-calendar" ~/.claude/skills/sanjay3290-ai-skills-google-calendar && rm -rf "$T"
manifest:
skills/google-calendar/SKILL.mdsource content
Google Calendar
Lightweight Google Calendar integration with standalone OAuth authentication. No MCP server required.
⚠️ Requires Google Workspace account. Personal Gmail accounts are not supported.
First-Time Setup
Authenticate with Google (opens browser):
python scripts/auth.py login
Check authentication status:
python scripts/auth.py status
Logout when needed:
python scripts/auth.py logout
Commands
All operations via
scripts/gcal.py. Auto-authenticates on first use if not logged in.
List Calendars
python scripts/gcal.py list-calendars
List Events
# List events from primary calendar (default: next 30 days) python scripts/gcal.py list-events # List events with specific time range python scripts/gcal.py list-events --time-min 2024-01-15T00:00:00Z --time-max 2024-01-31T23:59:59Z # List events from a specific calendar python scripts/gcal.py list-events --calendar "work@example.com" # Limit results python scripts/gcal.py list-events --max-results 10
Get Event Details
python scripts/gcal.py get-event EVENT_ID python scripts/gcal.py get-event EVENT_ID --calendar "work@example.com"
Create Event
# Basic event python scripts/gcal.py create-event "Team Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" # Event with description and location python scripts/gcal.py create-event "Team Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" \ --description "Weekly sync" --location "Conference Room A" # Event with attendees python scripts/gcal.py create-event "Team Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" \ --attendees user1@example.com user2@example.com # Event on specific calendar python scripts/gcal.py create-event "Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" \ --calendar "work@example.com"
Update Event
# Update event title python scripts/gcal.py update-event EVENT_ID --summary "New Title" # Update event time python scripts/gcal.py update-event EVENT_ID --start "2024-01-15T14:00:00Z" --end "2024-01-15T15:00:00Z" # Update multiple fields python scripts/gcal.py update-event EVENT_ID \ --summary "Updated Meeting" --description "New agenda" --location "Room B" # Update attendees python scripts/gcal.py update-event EVENT_ID --attendees user1@example.com user3@example.com
Delete Event
python scripts/gcal.py delete-event EVENT_ID python scripts/gcal.py delete-event EVENT_ID --calendar "work@example.com"
Find Free Time
Find the first available slot for a meeting with specified attendees:
# Find 30-minute slot for yourself python scripts/gcal.py find-free-time \ --attendees me \ --time-min "2024-01-15T09:00:00Z" \ --time-max "2024-01-15T17:00:00Z" \ --duration 30 # Find 60-minute slot with multiple attendees python scripts/gcal.py find-free-time \ --attendees me user1@example.com user2@example.com \ --time-min "2024-01-15T09:00:00Z" \ --time-max "2024-01-19T17:00:00Z" \ --duration 60
Respond to Event Invitation
# Accept an invitation python scripts/gcal.py respond-to-event EVENT_ID accepted # Decline an invitation python scripts/gcal.py respond-to-event EVENT_ID declined # Mark as tentative python scripts/gcal.py respond-to-event EVENT_ID tentative # Respond without notifying organizer python scripts/gcal.py respond-to-event EVENT_ID accepted --no-notify
Date/Time Format
All times use ISO 8601 format with timezone:
- UTC:
2024-01-15T10:30:00Z - With offset:
(EST)2024-01-15T10:30:00-05:00
Calendar ID Format
- Primary calendar: Use
or omit theprimary
flag--calendar - Other calendars: Use the calendar ID from
(usually an email address)list-calendars
Token Management
Tokens stored securely using the system keyring:
- macOS: Keychain
- Windows: Windows Credential Locker
- Linux: Secret Service API (GNOME Keyring, KDE Wallet, etc.)
Service name:
google-calendar-skill-oauth
Tokens are automatically refreshed when expired using Google's cloud function.