{"skill":{"slug":"gcal-pro","displayName":"gcal-pro - Google Calendar","summary":"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.","description":"---\nname: gcal-pro\ndescription: 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.\n---\n\n# gcal-pro\n\nManage Google Calendar through natural conversation.\n\n## Quick Reference\n\n| Action | Command | Tier |\n|--------|---------|------|\n| View today | `python scripts/gcal_core.py today` | Free |\n| View tomorrow | `python scripts/gcal_core.py tomorrow` | Free |\n| View week | `python scripts/gcal_core.py week` | Free |\n| Search events | `python scripts/gcal_core.py search -q \"meeting\"` | Free |\n| List calendars | `python scripts/gcal_core.py calendars` | Free |\n| Find free time | `python scripts/gcal_core.py free` | Free |\n| Quick add | `python scripts/gcal_core.py quick -q \"Lunch Friday noon\"` | Pro |\n| Delete event | `python scripts/gcal_core.py delete --id EVENT_ID -y` | Pro |\n| Morning brief | `python scripts/gcal_core.py brief` | Pro |\n\n## Setup\n\n**First-time setup required:**\n\n1. User must create Google Cloud project and OAuth credentials\n2. Save `client_secret.json` to `~/.config/gcal-pro/`\n3. Run authentication:\n   ```bash\n   python scripts/gcal_auth.py auth\n   ```\n4. Browser opens → user grants calendar access → done\n\n**Check auth status:**\n```bash\npython scripts/gcal_auth.py status\n```\n\n## Tiers\n\n### Free Tier\n- View events (today, tomorrow, week, month)\n- Search events\n- List calendars\n- Find free time slots\n\n### Pro Tier ($12 one-time)\n- Everything in Free, plus:\n- Create events\n- Quick add (natural language)\n- Update/reschedule events\n- Delete events\n- Morning brief via cron\n\n## Usage Patterns\n\n### Viewing Schedule\n\nWhen user asks \"What's on my calendar?\" or \"What do I have today?\":\n\n```bash\ncd /path/to/gcal-pro\npython scripts/gcal_core.py today\n```\n\nFor specific ranges:\n- \"tomorrow\" → `python scripts/gcal_core.py tomorrow`\n- \"this week\" → `python scripts/gcal_core.py week`\n- \"meetings with Alex\" → `python scripts/gcal_core.py search -q \"Alex\"`\n\n### Creating Events (Pro)\n\nWhen user says \"Add X to my calendar\" or \"Schedule Y\":\n\n**Option 1: Quick add (natural language)**\n```bash\npython scripts/gcal_core.py quick -q \"Lunch with Alex Friday at noon\"\n```\n\n**Option 2: Structured create (via Python)**\n```python\nfrom scripts.gcal_core import create_event, parse_datetime\n\ncreate_event(\n    summary=\"Lunch with Alex\",\n    start=parse_datetime(\"Friday noon\"),\n    location=\"Cafe Roma\",\n    confirmed=True  # Set False to show confirmation prompt\n)\n```\n\n### Modifying Events (Pro)\n\n**⚠️ CONFIRMATION REQUIRED for destructive actions!**\n\nBefore deleting or significantly modifying an event, ALWAYS confirm with the user:\n\n1. Show event details\n2. Ask \"Should I delete/reschedule this?\"\n3. Only proceed with `confirmed=True` or `-y` flag after user confirms\n\n**Delete:**\n```bash\n# First, find the event\npython scripts/gcal_core.py search -q \"dentist\"\n# Shows event ID\n\n# Then delete (with user confirmation)\npython scripts/gcal_core.py delete --id abc123xyz -y\n```\n\n### Finding Free Time\n\nWhen user asks \"When am I free?\" or \"Find time for a 1-hour meeting\":\n\n```bash\npython scripts/gcal_core.py free\n```\n\n### Morning Brief (Pro + Cron)\n\nSet up via Clawdbot cron to send daily agenda:\n\n```python\nfrom scripts.gcal_core import generate_morning_brief\nprint(generate_morning_brief())\n```\n\n**Cron setup example:**\n- Schedule: 8:00 AM daily\n- Action: Run `python scripts/gcal_core.py brief`\n- Delivery: Send output to user's messaging channel\n\n## Error Handling\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| \"client_secret.json not found\" | Setup incomplete | Complete Google Cloud setup |\n| \"Token refresh failed\" | Expired/revoked | Run `python scripts/gcal_auth.py auth --force` |\n| \"requires Pro tier\" | Free user attempting write | Prompt upgrade or explain limitation |\n| \"Event not found\" | Invalid event ID | Search for correct event first |\n\n## Timezone Handling\n\n- All times are interpreted in user's local timezone (default: America/New_York)\n- When user specifies timezone (e.g., \"2 PM EST\"), honor it\n- Display times in user's local timezone\n- Store in ISO 8601 format with timezone\n\n## Response Formatting\n\n**For event lists, use this format:**\n\n```\n📅 **Monday, January 27**\n  • 9:00 AM — Team standup\n  • 12:00 PM — Lunch with Alex 📍 Cafe Roma\n  • 3:00 PM — Client call\n\n📅 **Tuesday, January 28**\n  • 10:00 AM — Dentist appointment 📍 123 Main St\n```\n\n**For confirmations:**\n\n```\n✓ Event created: \"Lunch with Alex\"\n  📅 Friday, Jan 31 at 12:00 PM\n  📍 Cafe Roma\n```\n\n**For morning brief:**\n\n```\n☀️ Good morning! Here's your day:\n📆 Monday, January 27, 2026\n\nYou have 3 events today:\n  • 9:00 AM — Team standup\n  • 12:00 PM — Lunch with Alex\n  • 3:00 PM — Client call\n\n👀 Tomorrow: 2 events\n```\n\n## File Locations\n\n```\n~/.config/gcal-pro/\n├── client_secret.json   # OAuth app credentials (user provides)\n├── token.json           # User's access token (auto-generated)\n└── license.json         # Pro license (if purchased)\n```\n\n## Integration with Clawdbot\n\nThis skill works with:\n- **Cron**: Schedule morning briefs\n- **Memory**: Store calendar preferences\n- **Messaging**: Deliver briefs via Telegram/WhatsApp/etc.\n\n## Upgrade Prompt\n\nWhen a Free user attempts a Pro action, respond:\n\n> ⚠️ Creating events requires **gcal-pro Pro** ($12 one-time).\n> \n> Pro includes: Create, edit, delete events + morning briefs.\n> \n> 👉 Upgrade: [gumroad-link]\n> \n> For now, I can show you your schedule (free) — want to see today's events?\n","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":3175,"installsAllTime":5,"installsCurrent":5,"stars":3,"versions":1},"createdAt":1769462641485,"updatedAt":1778485857338},"latestVersion":{"version":"1.0.0","createdAt":1769462641485,"changelog":"Initial release","license":null},"metadata":null,"owner":{"handle":"bilalmohamed187-cpu","userId":"s17b06hqfgqy7sr9z0wjxd1e6h885q5v","displayName":"bilalmohamed187-cpu","image":"https://avatars.githubusercontent.com/u/257391889?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779916696417}}