Create, update, and organize Google Calendar events and schedules. Check availability, book time, and manage calendars. Use when asked to schedule a meeting, set up an appointment, book a call, check gcal, or manage calendar events.
94
Quality
94%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Verify configuration and connectivity.
$SKILL_DIR/scripts/google-calendar.py checkThis validates:
Store OAuth 2.0 client credentials for custom OAuth flow.
$SKILL_DIR/scripts/google-calendar.py auth setup \
--client-id YOUR_CLIENT_ID \
--client-secret YOUR_CLIENT_SECRETCredentials are saved to ~/.config/agent-skills/google-calendar.yaml.
Clear stored OAuth token. The next command that needs authentication will trigger re-authentication automatically.
$SKILL_DIR/scripts/google-calendar.py auth resetUse this when you encounter scope or authentication errors.
Show current OAuth token information without making API calls.
$SKILL_DIR/scripts/google-calendar.py auth statusDisplays: whether a token is stored, granted scopes, refresh token presence, token expiry, and client ID.
List all calendars for the authenticated user.
$SKILL_DIR/scripts/google-calendar.py calendars listGet details for a specific calendar.
$SKILL_DIR/scripts/google-calendar.py calendars get CALENDAR_IDArguments:
calendar_id: Calendar ID or "primary" (required)List calendar events.
$SKILL_DIR/scripts/google-calendar.py events list \
--time-min "2026-01-24T00:00:00Z" \
--time-max "2026-01-31T23:59:59Z" \
--query "meeting" \
--max-results 20 \
--calendar CALENDAR_IDArguments:
--calendar: Calendar ID (default: "primary")--time-min: Start time (RFC3339 timestamp, e.g., "2026-01-24T00:00:00Z")--time-max: End time (RFC3339 timestamp)--max-results: Maximum number of results (default: 10)--query: Free text search query--include-declined: Include events you have declined (excluded by default)Time Format Examples:
2026-01-24T10:00:00Z2026-01-24T10:00:00-05:00 (EST)2026-01-24Get details for a specific event.
$SKILL_DIR/scripts/google-calendar.py events get EVENT_ID --calendar CALENDAR_IDArguments:
event_id: Event ID (required)--calendar: Calendar ID (default: "primary")Create a new calendar event.
# Timed event
$SKILL_DIR/scripts/google-calendar.py events create \
--summary "Team Meeting" \
--start "2026-01-24T10:00:00-05:00" \
--end "2026-01-24T11:00:00-05:00" \
--description "Quarterly project review meeting" \
--location "Conference Room A" \
--attendees "alice@example.com,bob@example.com"
# All-day event
$SKILL_DIR/scripts/google-calendar.py events create \
--summary "Conference" \
--start "2026-01-24" \
--end "2026-01-25" \
--timezone "America/New_York"Arguments:
--summary: Event title (required)--start: Start time - RFC3339 timestamp or YYYY-MM-DD for all-day (required)--end: End time - RFC3339 timestamp or YYYY-MM-DD for all-day (required)--calendar: Calendar ID (default: "primary")--description: Event description--location: Event location--attendees: Comma-separated list of attendee email addresses--timezone: Timezone for all-day events (e.g., "America/New_York")Update an existing event.
$SKILL_DIR/scripts/google-calendar.py events update EVENT_ID \
--summary "Updated Meeting Title" \
--start "2026-01-24T15:00:00Z" \
--end "2026-01-24T16:00:00Z" \
--description "Updated agenda" \
--location "Room B"Arguments:
event_id: Event ID (required)--calendar: Calendar ID (default: "primary")--summary: New event title--start: New start time (RFC3339 or YYYY-MM-DD)--end: New end time (RFC3339 or YYYY-MM-DD)--description: New description--location: New locationDelete a calendar event.
$SKILL_DIR/scripts/google-calendar.py events delete EVENT_ID --calendar CALENDAR_IDArguments:
event_id: Event ID (required)--calendar: Calendar ID (default: "primary")Check free/busy information for calendars.
$SKILL_DIR/scripts/google-calendar.py freebusy \
--start "2026-01-24T08:00:00Z" \
--end "2026-01-24T17:00:00Z" \
--calendars "primary,colleague@example.com"Arguments:
--start: Start time (RFC3339 timestamp, required)--end: End time (RFC3339 timestamp, required)--calendars: Comma-separated calendar IDs (default: "primary")Google Calendar uses RFC3339 format for timestamps. See calendar-timezones.md for detailed timezone handling.
Use RFC3339 format with timezone:
2026-01-24T10:00:00-05:00 # 10 AM EST
2026-01-24T10:00:00Z # 10 AM UTC
2026-01-24T10:00:00+01:00 # 10 AM CETUse date format (YYYY-MM-DD):
2026-01-24 # All day on January 24, 2026For all-day events, you can specify a timezone using the --timezone argument.
Install with Tessl CLI
npx tessl i odyssey4me/google-calendar