<< All versions
Skill v1.0.1
currentAutomated scan100/100evanpurkhiser/dots-personal/email-and-calendar
2 files
──Details
PublishedAugust 19, 2026 at 04:18 PM
Content Hashsha256:6eeaea115468c5b5...
Git SHAeca577166fb4
Bump Typepatch
──Files
Files (1 file, 4.4 KB)
SKILL.md4.4 KBactive
SKILL.md · 198 lines · 4.4 KB
version: "1.0.1" name: email-and-calendar description: Manage Evan's Gmail and Google Calendar via gogcli. Use this skill to read, search, send, and draft emails, and to list, create, or update calendar events.
Email and Calendar Skill
Evan's Gmail and Google Calendar are accessible via gog (gogcli), installed at /usr/bin/gog.
Environment
The server's gog wrapper automatically loads the file-keyring password from ~/.config/gogcli/keyring-password. Run gog commands normally; do not load or specify GOG_KEYRING_PASSWORD in commands.
Use --json for machine-readable output. Use --plain for TSV.
Gmail
Search emails
Gmail query syntax (same as the Gmail search box):
bash
gog gmail search 'newer_than:7d' --json | toonifygog gmail search 'from:someone@example.com is:unread' --json | toonifygog gmail search 'subject:"meeting" newer_than:3d' --json | toonifygog gmail search 'is:unread in:inbox' --max 20 --json | toonify
Read a thread
bash
gog gmail thread get <threadId> --json | toonify
Read a single message
bash
gog gmail get <messageId> --json | toonify
Send an email
bash
gog gmail send --to recipient@example.com --subject "Subject" --body "Body text"# With HTML bodygog gmail send --to recipient@example.com --subject "Subject" --body "Plain fallback" --body-html "<p>HTML body</p>"# Reply to a messagegog gmail send --reply-to-message-id <messageId> --to recipient@example.com --subject "Re: Subject" --body "Reply text"
Draft emails
bash
# Create a draftgog gmail drafts create --to recipient@example.com --subject "Subject" --body "Body"# List draftsgog gmail drafts list --json | toonify# Send a draftgog gmail drafts send <draftId>
Labels
bash
gog gmail labels list --json | toonify# Add/remove labels on a threadgog gmail thread modify <threadId> --add STARRED --remove INBOX
Batch operations
bash
# Mark multiple messagesgog gmail batch modify <messageId1> <messageId2> --add READ --remove UNREAD# Delete multiple messagesgog gmail batch delete <messageId1> <messageId2>
Calendar
Evan's primary calendar ID is primary.
List calendars
bash
gog calendar calendars --json | toonify
List events
bash
# Todaygog calendar events primary --today --json | toonify# This weekgog calendar events primary --week --json | toonify# Next N daysgog calendar events primary --days 7 --json | toonify# Date rangegog calendar events primary --from 2026-03-01 --to 2026-03-31 --json | toonify# All calendarsgog calendar events --all --today --json | toonify
Search events
bash
gog calendar search "meeting" --days 30 --json | toonifygog calendar search "dentist" --from 2026-01-01 --to 2026-12-31 --json | toonify
Get a specific event
bash
gog calendar event primary <eventId> --json | toonify
Create an event
bash
gog calendar create primary \--summary "Meeting" \--from 2026-03-10T10:00:00-05:00 \--to 2026-03-10T11:00:00-05:00# With attendeesgog calendar create primary \--summary "Team Sync" \--from 2026-03-10T14:00:00-05:00 \--to 2026-03-10T15:00:00-05:00 \--attendees "alice@example.com,bob@example.com" \--location "Zoom"
Update an event
bash
gog calendar update primary <eventId> \--summary "Updated Title" \--from 2026-03-10T11:00:00-05:00 \--to 2026-03-10T12:00:00-05:00
Delete an event
bash
gog calendar delete primary <eventId> --force
RSVP to an invitation
bash
gog calendar respond primary <eventId> --status acceptedgog calendar respond primary <eventId> --status declinedgog calendar respond primary <eventId> --status tentative
Check availability
bash
gog calendar freebusy primary \--from 2026-03-10T00:00:00-05:00 \--to 2026-03-10T23:59:59-05:00 \--json | toonify
Find conflicts
bash
gog calendar conflicts --today --json | toonifygog calendar conflicts --days 7 --json | toonify
Notes
- Evan's timezone is America/New_York (ET). Use
-05:00(EST) or-04:00(EDT) offsets for event times, or pass--timezone America/New_York. - Always confirm destructive actions (sending emails, deleting events) with Evan before executing.
- When searching emails, prefer
--jsonand summarize results rather than dumping raw output. - The
primarycalendar ID can be used for all personal calendar operations.