Skip to content

Instantly share code, notes, and snippets.

@pamelafox
Created June 9, 2026 05:47
Show Gist options
  • Select an option

  • Save pamelafox/e8aca757c8492313f21a0a5c474daf05 to your computer and use it in GitHub Desktop.

Select an option

Save pamelafox/e8aca757c8492313f21a0a5c474daf05 to your computer and use it in GitHub Desktop.
Skill for adding google calendar events with gog CLI
name add-camps-to-calendar
description Add registered summer camps and activities to Google Calendar using gogcli (gog). Use this skill when the user wants to add camps, classes, or scheduled activities from their camp plan files to Google Calendar. Reads camp plan markdowns, identifies registered entries, looks up locations, and creates calendar events interactively one week at a time.

Add Camps to Google Calendar

This skill creates Google Calendar events for registered camps and activities using the gog CLI (gogcli).

When to Use

  • User wants to add their camp schedule to Google Calendar
  • User asks to sync camps/activities to their calendar
  • User says "add camps to calendar" or similar

Prerequisites

  • gog CLI installed and authenticated with calendar scope: gog auth add <email> --services calendar
  • gog auth doctor --check passes

Workflow

Step 1: Read the camp plan

Read the child's summer-camp-plan-*.md file (e.g. children/<child>/summer-camp-plan-2026.md). Identify entries marked with ✅ REGISTERED.

Step 2: Look up locations

For each registered camp, cross-reference the camp's activities.md file (e.g. camps/<camp-name>/activities.md) to find the exact location/address.

Step 3: Ask the user for details

Before generating commands, confirm:

  • Which Google Calendar to use (default: primary)
  • Who to invite as attendees (email addresses)
  • Whether to send invite notifications (--send-updates none|all|externalOnly)
  • Event title format (default: <Child Name>: <Camp Name>)

Step 4: Present commands one week at a time

For each registered camp week, present the gog calendar create command for that week. Ask the user for approval before running.

Example presentation:

Week 1 — Art Camp (June 15-18, Mon-Thu, 9 AM – 12 PM)
Location: Community Center, 123 Main St, Anytown, CA

I'll create a recurring event for 4 days. Proceed?

Step 5: Run approved commands

On user approval, run the gog calendar create command in the terminal. Move to the next week and repeat.

Command Reference

gog calendar create primary \
  --summary "<Child>: <Camp Name>" \
  --from "<YYYY-MM-DD>T<HH:MM:SS><tz offset>" \
  --to "<YYYY-MM-DD>T<HH:MM:SS><tz offset>" \
  --from-timezone "<IANA timezone>" \
  --rrule "RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;COUNT=<days>" \
  --location "<full address>" \
  --attendees "<email1>,<email2>" \
  --send-updates none

Key Flags

Flag Description
--summary Event title
--from Start time in RFC3339 format (first day of the week)
--to End time in RFC3339 format (first day of the week)
--from-timezone IANA timezone (required when using --rrule)
--rrule RFC 5545 recurrence rule (see examples below)
--location Venue address
--attendees Comma-separated invitee emails
--send-updates none (no emails), all (notify everyone), externalOnly
--event-color Optional color ID (1-11) to visually distinguish camps

Recurrence Rules

Use one recurring event per camp week instead of individual daily events:

  • 5-day week (Mon–Fri): RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;COUNT=5
  • 4-day week (Mon–Thu, e.g. holiday week): RRULE:FREQ=DAILY;COUNT=4
  • 4-day week (Tue–Fri): RRULE:FREQ=DAILY;COUNT=4 (set --from to Tuesday)

Set --from and --to to the first day of camp that week. The recurrence rule handles the remaining days.

Important: --from-timezone is required when using --rrule (fixed in gogcli v0.12.0+). Without it, the Google API returns "Missing time zone definition for start time".

Timezone Notes

  • Always include --from-timezone with IANA timezone name when using --rrule
  • US Pacific: America/Los_Angeles
  • Use the local timezone offset in RFC3339 timestamps
  • US Pacific Daylight Time (summer): -07:00
  • US Pacific Standard Time (winter): -08:00
  • Example: 2026-06-15T09:00:00-07:00

Rules

  1. Only include registered camps — skip entries not marked ✅ REGISTERED
  2. One recurring event per camp week — use --rrule to create a single event that repeats for all days in the week (not individual daily events)
  3. Set --from to the first camp day — the recurrence rule handles remaining days. Account for holidays (e.g. no camp on Juneteenth June 19, July 4th/3rd) by starting on the correct day and using the right COUNT.
  4. Always include --from-timezone — required when using --rrule
  5. Ask before running — present each week's command and wait for user approval
  6. Default to --send-updates none — avoid spamming invitees unless user requests notifications
  7. Verify after each week — optionally run gog calendar events --from <start> --to <end> to confirm creation

Example Session

Agent: I found 3 registered camp weeks in the plan. I'll create one recurring event per week.

Week 1 — Emma: Art Camp
Dates: June 15–18 (Mon–Thu, 4 days)
Time: 9:00 AM – 12:00 PM
Location: Community Center, 123 Main St, Anytown, CA
Attendees: parent@example.com

Command:
gog calendar create primary --summary "Emma: Art Camp" \
  --from "2026-06-15T09:00:00-07:00" \
  --to "2026-06-15T12:00:00-07:00" \
  --from-timezone "America/Los_Angeles" \
  --rrule "RRULE:FREQ=DAILY;COUNT=4" \
  --location "Community Center, 123 Main St, Anytown, CA" \
  --attendees "parent@example.com" \
  --send-updates none

Shall I run this?

User: yes

Agent: ✓ Created recurring event for Week 1 (4 occurrences).

Week 2 — Emma: Science Explorers
Dates: June 22–26 (Mon–Fri, 5 days)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment