gcal
Google Calendar Manager
Create events, set reminders, and view schedule via Google Calendar API.
Prerequisites
- Google OAuth must be set up:
python3 ~/.claude/skills/_google-auth/scripts/setup.py - Google Calendar API enabled in Google Cloud project
- Python packages:
google-auth-oauthlib,google-api-python-client
Command Routing
| User Says | Action |
|---|---|
| "today's schedule", "what's on my calendar" | List today's events |
| "this week", "next 7 days" | List events for date range |
| "add event", "schedule meeting" | Create timed event |
| "reminder", "set reminder" | Create event with reminder notification |
| "block time for studying" | Create time block |
Workflow: List Events
python3 ~/.claude/skills/gcal/scripts/list_events.py --date today
Options:
--date today/--date tomorrow/--date "2026-02-28"--days 7(show next 7 days)--max 20
Present as a clean schedule:
## Today - Tuesday, Feb 25
| Time | Event | Location |
|------|-------|----------|
| 10:00 AM - 11:30 AM | CS 301 Lecture | Room 204 |
| 2:00 PM - 3:00 PM | GAUDON Client Call | Zoom |
| 7:00 PM - 9:00 PM | Study Group | Library |
Workflow: Create Event
Parse natural language into event parameters, then run:
python3 ~/.claude/skills/gcal/scripts/create_event.py \
--title "CS 301 Study Session" \
--start "2026-02-26T15:00:00" \
--end "2026-02-26T17:00:00"
Options:
--duration 120(minutes, instead of --end)--description "Review chapters 5-7"--location "Library Room 3"--reminder 60(popup 60 min before; can repeat for multiple)--date "2026-03-01"(all-day event, instead of --start/--end)
Workflow: Set Reminder
Reminders are events with notification overrides:
python3 ~/.claude/skills/gcal/scripts/create_event.py \
--title "Submit Lab Report" \
--start "2026-02-28T23:59:00" \
--duration 15 \
--reminder 60 --reminder 1440
This creates a 15-minute event with popups at 1 hour and 24 hours before.
Natural Language Parsing
Convert user input to script arguments:
| User Says | Parsed |
|---|---|
| "tomorrow 3pm-5pm" | --start 2026-02-26T15:00:00 --end 2026-02-26T17:00:00 |
| "Friday at noon for 2 hours" | --start 2026-02-28T12:00:00 --duration 120 |
| "next Monday" | --date 2026-03-02 (all-day) |
| "remind me at 11:59pm" | --start <date>T23:59:00 --duration 15 --reminder 30 |
Always use ISO 8601 format for dates/times. Use the current date context to resolve relative dates (today, tomorrow, next Monday, etc.).
Error Handling
| Error | Solution |
|---|---|
| "OAuth credentials not found" | Run setup: python3 ~/.claude/skills/_google-auth/scripts/setup.py |
| "Token expired" | Script auto-refreshes; if fails, re-run setup |
| Event not appearing | Check timezone; script uses local timezone |
| Past date warning | Warn user if creating event in the past |
Safety Rules
- Confirm event details before creating (show: title, time, reminders)
- Warn if event overlaps with existing events
- Never delete or modify existing events without explicit permission
More from theaayushstha1/agentic-skills
twitter-brief
>
3gmail
>
2notebook
>
2lead-gen
>
2daily-brief
Morning dashboard that aggregates today's schedule, unread emails, upcoming deadlines, job search status, Twitter bookmarks, and AI news into a fast, structured daily summary. Use when the user says 'daily brief', 'morning brief', 'what\\'s on my plate', 'start my day', 'brief me', 'daily summary', 'morning update', or wants an overview of their day.
2quick-note
>
1