name: sync-data-gcal description: > Fetch Google Calendar events via API into a JSON file. No classification, no actions — just data. Fast, no browser needed. allowed-tools: Read, Write, Edit, Bash(npx tsx .claude/skills/sync-data-gcal/*)
Sync Google Calendar Data
Calendar event ingestion via Google Calendar API. No classification, no meeting prep. Fast — no browser required. Can run as a subagent in parallel with other syncs.
Output File
outputs/sync-data/gcal.json — full replacement on every run.
Schema
{
"version": 1,
"last_synced": "2026-02-11T09:00:00-08:00",
"days_fetched": 3,
"event_count": 5,
"events": [
{
"eventId": "abc123",
"title": "Meeting with Steven (Worca)",
"start": "2026-02-11T10:00:00-08:00",
"end": "2026-02-11T10:30:00-08:00",
"allDay": false,
"location": "",
"description": "HubSpot booking details...",
"organizer": { "name": "Steven Lin", "email": "steven@worca.io" },
"attendees": [
{ "name": "Simon Reisch", "email": "simon@tessel.ai", "responseStatus": "accepted" }
],
"eventType": "default",
"hangoutLink": "https://meet.google.com/...",
"htmlLink": "https://calendar.google.com/...",
"status": "confirmed",
"calendarId": "primary"
}
]
}
Steps
- Run:
npx tsx .claude/skills/sync-data-gcal/fetch.ts --days 3 - Parse the JSON output. The script returns
{ "events": [...] }. - Build the output object with
version,last_synced(current ISO timestamp with timezone offset),days_fetched(3),event_count, andevents. - Write to
outputs/sync-data/gcal.json(full replacement). - Log: "Synced {N} calendar events ({days} days) at {timestamp}"
Notes
- This skill does NOT do meeting prep. That's
alfred-meeting-prep. - The file is always the latest snapshot. No historical accumulation.
- Default is 3 days (today + 2 more). Covers Monday when run on Friday.
- Typically takes <5 seconds.