home / skills / openclaw / skills / gcal-pro
This skill helps you view and manage Google Calendar events, including morning briefs, with Pro features for create and edit.
npx playbooks add skill openclaw/skills --skill gcal-proReview the files below or copy the command above to add this skill to your agents.
---
name: gcal-pro
description: Google Calendar integration for viewing, creating, and managing calendar events. Use when the user asks about their schedule, wants to add/edit/delete events, check availability, or needs a morning brief. Supports natural language like "What's on my calendar tomorrow?" or "Schedule lunch with Alex at noon Friday." Free tier provides read access; Pro tier ($12) adds create/edit/delete and morning briefs.
---
# gcal-pro
Manage Google Calendar through natural conversation.
## Quick Reference
| Action | Command | Tier |
|--------|---------|------|
| View today | `python scripts/gcal_core.py today` | Free |
| View tomorrow | `python scripts/gcal_core.py tomorrow` | Free |
| View week | `python scripts/gcal_core.py week` | Free |
| Search events | `python scripts/gcal_core.py search -q "meeting"` | Free |
| List calendars | `python scripts/gcal_core.py calendars` | Free |
| Find free time | `python scripts/gcal_core.py free` | Free |
| Quick add | `python scripts/gcal_core.py quick -q "Lunch Friday noon"` | Pro |
| Delete event | `python scripts/gcal_core.py delete --id EVENT_ID -y` | Pro |
| Morning brief | `python scripts/gcal_core.py brief` | Pro |
## Setup
**First-time setup required:**
1. User must create Google Cloud project and OAuth credentials
2. Save `client_secret.json` to `~/.config/gcal-pro/`
3. Run authentication:
```bash
python scripts/gcal_auth.py auth
```
4. Browser opens → user grants calendar access → done
**Check auth status:**
```bash
python scripts/gcal_auth.py status
```
## Tiers
### Free Tier
- View events (today, tomorrow, week, month)
- Search events
- List calendars
- Find free time slots
### Pro Tier ($12 one-time)
- Everything in Free, plus:
- Create events
- Quick add (natural language)
- Update/reschedule events
- Delete events
- Morning brief via cron
## Usage Patterns
### Viewing Schedule
When user asks "What's on my calendar?" or "What do I have today?":
```bash
cd /path/to/gcal-pro
python scripts/gcal_core.py today
```
For specific ranges:
- "tomorrow" → `python scripts/gcal_core.py tomorrow`
- "this week" → `python scripts/gcal_core.py week`
- "meetings with Alex" → `python scripts/gcal_core.py search -q "Alex"`
### Creating Events (Pro)
When user says "Add X to my calendar" or "Schedule Y":
**Option 1: Quick add (natural language)**
```bash
python scripts/gcal_core.py quick -q "Lunch with Alex Friday at noon"
```
**Option 2: Structured create (via Python)**
```python
from scripts.gcal_core import create_event, parse_datetime
create_event(
summary="Lunch with Alex",
start=parse_datetime("Friday noon"),
location="Cafe Roma",
confirmed=True # Set False to show confirmation prompt
)
```
### Modifying Events (Pro)
**⚠️ CONFIRMATION REQUIRED for destructive actions!**
Before deleting or significantly modifying an event, ALWAYS confirm with the user:
1. Show event details
2. Ask "Should I delete/reschedule this?"
3. Only proceed with `confirmed=True` or `-y` flag after user confirms
**Delete:**
```bash
# First, find the event
python scripts/gcal_core.py search -q "dentist"
# Shows event ID
# Then delete (with user confirmation)
python scripts/gcal_core.py delete --id abc123xyz -y
```
### Finding Free Time
When user asks "When am I free?" or "Find time for a 1-hour meeting":
```bash
python scripts/gcal_core.py free
```
### Morning Brief (Pro + Cron)
Set up via Clawdbot cron to send daily agenda:
```python
from scripts.gcal_core import generate_morning_brief
print(generate_morning_brief())
```
**Cron setup example:**
- Schedule: 8:00 AM daily
- Action: Run `python scripts/gcal_core.py brief`
- Delivery: Send output to user's messaging channel
## Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| "client_secret.json not found" | Setup incomplete | Complete Google Cloud setup |
| "Token refresh failed" | Expired/revoked | Run `python scripts/gcal_auth.py auth --force` |
| "requires Pro tier" | Free user attempting write | Prompt upgrade or explain limitation |
| "Event not found" | Invalid event ID | Search for correct event first |
## Timezone Handling
- All times are interpreted in user's local timezone (default: America/New_York)
- When user specifies timezone (e.g., "2 PM EST"), honor it
- Display times in user's local timezone
- Store in ISO 8601 format with timezone
## Response Formatting
**For event lists, use this format:**
```
📅 **Monday, January 27**
• 9:00 AM — Team standup
• 12:00 PM — Lunch with Alex 📍 Cafe Roma
• 3:00 PM — Client call
📅 **Tuesday, January 28**
• 10:00 AM — Dentist appointment 📍 123 Main St
```
**For confirmations:**
```
✓ Event created: "Lunch with Alex"
📅 Friday, Jan 31 at 12:00 PM
📍 Cafe Roma
```
**For morning brief:**
```
☀️ Good morning! Here's your day:
📆 Monday, January 27, 2026
You have 3 events today:
• 9:00 AM — Team standup
• 12:00 PM — Lunch with Alex
• 3:00 PM — Client call
👀 Tomorrow: 2 events
```
## File Locations
```
~/.config/gcal-pro/
├── client_secret.json # OAuth app credentials (user provides)
├── token.json # User's access token (auto-generated)
└── license.json # Pro license (if purchased)
```
## Integration with Clawdbot
This skill works with:
- **Cron**: Schedule morning briefs
- **Memory**: Store calendar preferences
- **Messaging**: Deliver briefs via Telegram/WhatsApp/etc.
## Upgrade Prompt
When a Free user attempts a Pro action, respond:
> ⚠️ Creating events requires **gcal-pro Pro** ($12 one-time).
>
> Pro includes: Create, edit, delete events + morning briefs.
>
> 👉 Upgrade: [gumroad-link]
>
> For now, I can show you your schedule (free) — want to see today's events?
This skill integrates Google Calendar into conversational workflows to view, create, and manage events. It supports natural language queries like “What’s on my calendar tomorrow?” and structured commands for quick add, edit, and delete. Free tier offers read-only access; Pro ($12 one-time) unlocks create/edit/delete and automated morning briefs.
The skill uses OAuth credentials stored in ~/.config/gcal-pro/ to access the user’s calendars. Free tier operations (view, search, list, find free time) read events; Pro tier uses the stored license to permit creating, updating, and deleting events and to generate morning briefs. Times are interpreted and displayed in the user’s local timezone and stored in ISO 8601 format.
What do I need to set up before using the skill?
Create a Google Cloud project, download OAuth client_secret.json to ~/.config/gcal-pro/, then run the auth flow to grant calendar access.
Why can’t I create or delete events?
Write actions require the Pro license. Free tier allows viewing and searching only; prompt the user to upgrade to unlock create/edit/delete and briefs.