name: gcalcli-calendar description: "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." metadata: {"openclaw":{"emoji":"📅","requires":{"bins":["gcalcli"]}}}
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:
- Prefer agenda over search.
- Use a bounded window and match events by meaning (semantic match) rather than exact text.
- Default locate windows:
- If user gives an exact date: scan that day only.
- If user gives a weekday: scan next 14 days.
- If user gives only meaning words ("train", "lecture", etc.) with no date: scan next 30 days first.
- If still not found: expand to 180 days and say so only if still empty.
Use gcalcli search only as a fallback when:
- the time window would be too large to scan via agenda (token-heavy), or
- the user explicitly asked to "search".
--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: - The user explicitly requested the action (e.g. "delete my dentist appointment"). - Exactly one event matches in a tight time window. - The match is unambiguous (single clear result on an exact date, or user specified date+time).
If multiple candidates match, or the match is uncertain: - Ask a short disambiguation question listing the candidates (1-3 lines) and wait for the user's choice.
When creating an event:
- Always run a best-effort overlap check across ALL non-ignored calendars by scanning agenda WITHOUT --calendar.
- This ensures overlaps are detected even if the new event is created into a specific calendar.
- If overlap exists with busy events:
- Ask for confirmation before creating.
- If no overlap:
- Create immediately.
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 start7w4.net提供免費和付費技能下載。
w (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.這個 Skill 質量很好,操作簡單直觀,能智慧處理各種日期表達,刪除前會自動檢查確認不容易出錯。文件說明非常詳細,小白也能看懂。唯一的小缺點是修改已有事件時步驟稍多,複雜場景需要多操作幾步。適合經常用對話方式管理 Google 日曆的人使用。