Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Google Calendar via gcalcli: today-only agenda by default, bounded meaning-first lookup via agenda scans, and fast create/delete with verification--optimized for low tool calls and minimal output.
.claude/skills/gcalcli-calendar/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | — | — |
| case-04 | ✗→✓ | ▲ Improved | — | — |
| case-05 | ✓→✓ | = Same ✓ | — | — |
| case-21 | ✗→✗ | = Same ✗ | — | — |
| case-19 | ✗→✗ | = Same ✗ | — | — |
Use gcalcli to read/search/manage Google Calendar with minimal tool calls and minimal output.
--nocolor, --calendar) go BEFORE the subcommand.gcalcli --nocolor delete --iamaexpert "query" start end — NOT gcalcli --nocolor --iamaexpert delete ....--iamaexpert (delete), --noprompt/--allday (add), --use-legacy-import (import), etc.If user says "on Monday/Tuesday/..." without a date: 1) fetch next 14 days agenda once, 2) pick matching day/event from tool output, 3) proceed (or disambiguate if multiple).
When locating events to cancel/delete/edit:
agenda over search.Use gcalcli search only as a fallback when:
--nocolor to reduce formatting noise and tokens.--tsv only if you must parse/dedupe/sort.This skill is designed for personal assistant use where the user expects fast, low-friction calendar management. The confirmation policy below is an intentional UX choice — see README.md for rationale and safety guards.
For cancel/delete/edit actions, skip confirmation when ALL of these hold:
If multiple candidates match, or the match is uncertain:
When creating an event:
--calendar.add — default for one-off events. Supports --allday, --reminder, --noprompt. Does NOT support recurrence or free/busy (transparency).import via stdin — use ONLY when you need recurrence (RRULE) or free/busy (TRANSP:TRANSPARENT). Pipe ICS content via stdin; NEVER write temp .ics files (working directory is unreliable in exec sandbox).quick — avoid unless user explicitly asks for natural-language add. Less deterministic.--iamaexpert (a delete subcommand flag — goes AFTER delete). This is gcalcli's built-in flag for non-interactive/scripted deletion.--refresh.gcalcli --nocolor agenda today tomorrowgcalcli --nocolor agenda today +14dgcalcli --nocolor agenda today +30dgcalcli --nocolor agenda <start> <end>gcalcli --nocolor search "<query>" today +180dgcalcli --nocolor search "<query>" <start> <end>add (one-off events)gcalcli --nocolor agenda <start> <end>--calendar here; overlaps must be checked across all non-ignored calendars.gcalcli --nocolor --calendar "<Cal>" add --noprompt --title "<Title>" --when "<Start>" --duration <minutes>gcalcli --nocolor --calendar "<Cal>" add --noprompt --allday --title "<Title>" --when "<Date>"--reminder "20160 popup" → 14 days before (20160 = 14×24×60)--reminder "10080 popup" → 7 days before--reminder "0 popup" → at event startw (weeks), d (days), h (hours), m (minutes). No suffix = minutes.popup (default), email, sms.import via stdin (recurrence / free/busy)Use ONLY when add can't cover the need (recurring events, TRANSP, etc.). Pipe ICS directly via stdin — never write temp files.
echo 'BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
DTSTART;VALUE=DATE:20260308
SUMMARY:Event Title
RRULE:FREQ=YEARLY
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR' | gcalcli import --calendar "<Cal>"DTSTART;VALUE=DATE:YYYYMMDD for all-day; DTSTART:YYYYMMDDTHHmmSS for timed.RRULE:FREQ=YEARLY — yearly recurrence. Also: DAILY, WEEKLY, MONTHLY.TRANSP:TRANSPARENT — free; TRANSP:OPAQUE — busy (default).--reminder "TIME" flag(s) to set reminders (overrides any VALARM in ICS).--use-legacy-import, --verbose, etc.) go AFTER import.gcalcli --nocolor agenda <dayStart> <dayEnd> (exact date)gcalcli --nocolor agenda today +14d (weekday)gcalcli --nocolor agenda today +30d (meaning only)gcalcli --nocolor delete --iamaexpert "<query>" <start> <end>gcalcli --nocolor agenda <dayStart> <dayEnd>gcalcli --nocolor --refresh agenda <dayStart> <dayEnd>gcalcli edit is interactive — cannot be used in non-interactive exec.--iamaexpert) → create with updated properties → verify.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 6 counted toward the lift figure. The other 16 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 6 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.