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.

This is most likely a fork of the gcal-pro-calendar skill from openclaw
npx playbooks add skill openclaw/skills --skill gcal-pro

Review the files below or copy the command above to add this skill to your agents.

Files (10)
SKILL.md
5.7 KB
---
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?

Overview

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.

How this skill works

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.

When to use it

  • Ask about today, tomorrow, this week, or a custom range (e.g., “What do I have today?”).
  • Search for specific events or participants (e.g., “meetings with Alex”).
  • Find free slots for scheduling a meeting or duration-based availability.
  • Quick-add events via natural language (Pro).
  • Create, reschedule, or delete events after user confirmation (Pro).
  • Receive an automated morning brief delivered by cron (Pro).

Best practices

  • Complete first-time OAuth setup: create Google Cloud credentials and save client_secret.json to ~/.config/gcal-pro/ before authenticating.
  • Always show event details and ask for explicit confirmation before destructive actions like delete or major edits.
  • Respect timezone cues in user input and always display times in the user’s local timezone.
  • When a Free user requests a write action, explain the Pro upgrade path and offer read-only alternatives.
  • Use quick-add for fast natural-language creation and structured create for precise fields (location, attendees, confirmed flag).

Example use cases

  • User: “What’s on my calendar tomorrow?” → run the today/tomorrow view to list events by day.
  • User: “Schedule lunch with Alex at noon Friday.” → use quick-add to create the event (Pro).
  • User: “Find a 1-hour slot next week” → run free-time search and return available options.
  • User: “Delete my dentist appointment” → search to find ID, confirm with user, then delete (Pro).
  • Automated daily morning brief at 8:00 AM via cron to deliver the day’s agenda (Pro).

FAQ

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.