google-calendar
Skill82 starsChanged 8 months agoMITView on GitHub
Use the bundled Google Workspace CLI (gws) to read, create, update, and delete Google Calendar events, list calendars, and show agendas. Use when the user asks to connect or operate Google Calendar, or to manage events on their Google Calendar, or says "谷歌日历"、"Google 日历"、"看看我 Google 日历上的安排".
23 other projects use a version of this.
Adopted by
Most recently taken up by
- codewhale-hq/codewhale-plugin-marketplacetheir own version, first seen Nov 8, 2026
- Geruyang/skillstheir own version, first seen Oct 15, 2026
- runxhq/runxtheir own version, first seen Oct 13, 2026
- andreasskyt/claude-skillstheir own version, first seen Oct 11, 2026
- chriswestt/claude-skillstheir own version, first seen Oct 9, 2026
- jholhewres/devclaw-skillstheir own version, first seen Oct 9, 2026
Used with
Projects with it also use google-sheets, google-chat and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
OpenAISkillgoogle-sheets
Analyze and edit connected Google Sheets with range precision. Use when the user wants to create Google Sheets, find a spreadsheet, inspect tabs or ranges, search rows, plan formulas, create or repair charts, clean or restructure tables, write concise summaries, or make explicit cell-range updates.
Also in 9 projects that use this
antoniolgSkillgoogle-chat
Read Google Chat spaces/threads via the Chat API, create/refresh OAuth tokens, parse Gmail Chat URLs, and list spaces. Use when asked to look up or verify messages in Google Chat or when you need API access to Chat from the CLI.
Also in 3 projects that use this
clearsmogSkillgoogle-tasks
Manage Google Tasks via the `gtasks` CLI. Use when the user asks to view, add, update, complete, or delete tasks. Supports multiple task lists.
Also in 3 projects that use this
leolionartSkillgoogle-gmail
Operate Gmail via the Google Workspace CLI (gws) — send emails, reply with threading, triage inbox, and stream new messages as NDJSON. Use when users ask to send/forward/reply emails, check inbox summary, or automate email workflows.
Also in 3 projects that use this
OpenAISkillgoogle-docs
Prompt- and template-complete Google Docs creation and editing with explicit-instruction-authoritative structural preservation, including semantic roles, relationships, comparison dimensions, and instructed extensions; full-topology native-copy routing; source-grounded per-tab adaptation for past/example references; style-preserving hyperlink and table edits; canonical smart-chip-first authoring for dates and relevant supported people or Google resources; a file-backed advisory trusted read before existing-document writes; automatic protected-control awareness; direct connector APIs by default; DOCX-first import only when no supplied Google Doc template/reference constrains the output; and checked-in code mode only for exact native dropdown mutation. Use when Codex must create, edit, fill, adapt, redesign, or verify Google Docs without overriding explicit user/template instructions, adding unrequested document scope, or carrying stale reference facts into a new deliverable.
Also in 7 projects that use this
refly-aiSkillgmail
Integrate with Gmail for email management and automation. Use when you need to: (1) send and compose emails with attachments, (2) read and search emails by criteria, (3) manage drafts and email labels, or (4) reply to email threads and conversations.
Also in 10 projects that use this
- +3 more from openai
Other versions23 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 23
- Lilac-Labs/gini-agent★ 1.9ksame name
- Open-Curiosity/gini-agent★ 1.9ksame name
- vellum-ai/vellum-assistant★ 1.5ksame name
- gemini-cli-extensions/workspace★ 646same name
- sanjay3290/ai-skills★ 452same name
- greatSumini/cc-system★ 438same name
- refly-ai/refly-skills★ 204same name
- runxhq/runx★ 97same name
- ShaunTsai/skill-google-calendar★ 22same name
- AceDataCloud/Skills★ 17same name
13 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository18 other files it gives its agents.
- asrSkill
- cola-avatar-packSkill
- content-parserSkill
- creatorSkill
- explainerSkill
- icloud-calendarSkill
- image-genSkill
- listenhub-cliSkill
- listenhubSkill
- listenhub-voiceSkill
- musicSkill
- outlook-calendarSkill
- podcastSkill
- slidesSkill
- ttsSkill
- universal-emailSkill
- video-genSkill
- voice-cloneSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 3 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 20 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 16
Always use the copy bundled with this Skill.
- Distinctive: line 25
If that file is missing, report that Google Calendar is not ready yet — never describe it as an account problem or a broken connector.
- Distinctive: line 49
If a command fails with an authorization or permission error, tell the user to open the Google Calendar app in Cola's Skill settings and …
- Distinctive: line 83
Read-only — never modifies events.
- Very specific: line 170
Use gws schema output to build --params and --json.
- Very specific: line 176
Prefer --dry-run first for destructive operations.
- Very specific: line 177
Use RFC 3339 times with explicit offsets.
“Common” is measured: kept by at least 6 in 10 of the 20 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Google Calendar (gws)
This Skill targets exactly gws 0.22.5.
Locate the executable
Always use the copy bundled with this Skill; never a gws that happens to be on PATH, which may be an unrelated version. Resolve it once per session:
- Determine the platform directory — on macOS run
uname -m(arm64→darwin-arm64,x86_64→darwin-x64); on Windows usewin32-x64. - Resolve
scripts/bin/<platform>/gwsagainst this document's directory — on Windows the file isgws.exe— and use that absolute path for every command below.
This package ships macOS and Windows builds only; on any other platform report that Google Calendar is not available there rather than looking for another installation.
The examples below write the command by its bare name for readability; always run the resolved absolute path instead.
If that file is missing, report that Google Calendar is not ready yet — never describe it as an account problem or a broken connector.
Talk like Cola
These rules govern what you SAY to the user. They never change which commands you RUN.
- Product words are fine. 配置、授权、连接、账号、日程、App 专用密码 — the user should always know which step they are in.
- Implementation details never reach the user. Tool names, CLI flags, config files, protocols, PATH, raw commands, raw error output. Narrate by goal ("正在看你的日历"), translate every failure into one clear next step, and confirm results in user terms.
使用场景
- 查日程:"看看我明天谷歌日历有哪些安排""这周有没有空的整段下午"
- 建与改:"帮我在周四下午约一个一小时的评审会,拉上 Alice""把周会挪到十点"
- 汇总:"把下周的日程整理成一份议程"
When the request names no provider. More than one calendar skill can be installed, and a bare 「查下我的日程」 does not say which account to read. Use this skill without asking only when it is the only calendar connected, or when the conversation already established that Google Calendar is the one in play. Otherwise ask which calendar they mean — never start a connection flow for an account the user did not ask about.
This installation is calendar-only. Authorization covers Google Calendar and nothing else: other Google services (gmail, drive, sheets, docs, tasks, …) will fail with permission errors. Do not attempt them, and do not suggest them as available.
Authorization
OAuth is managed by Cola with calendar-only scopes (calendar.events plus read-only calendar list). Credentials are already configured for the gws command you invoke.
- Never run
gws auth loginor any other interactive auth flow, and never setGOOGLE_APPLICATION_CREDENTIALS. Authorization is done by the user in Cola's app center. - If a command fails with an authorization or permission error, tell the user to open the Google Calendar app in Cola's Skill settings and complete or renew authorization there. Do not retry in a loop.
Scope boundaries
The granted scopes allow exactly:
events— full read/write on calendar eventscalendarList— read-only (list,get)
Out of scope (will fail; do not call): calendar acl, creating/deleting calendars (calendars insert/delete/clear), settings, channels/watch subscriptions, and every non-calendar service.
Helper commands
Show agenda (read-only)
gws calendar +agenda --timezone <IANA>| Flag | Description |
--today | Show today's events |
--tomorrow | Show tomorrow's events |
--week | Show this week's events |
--days <N> | Number of days ahead to show |
--calendar <NAME_OR_ID> | Filter to a specific calendar |
--timezone <IANA> | Timezone override (e.g. Asia/Shanghai). Always pass it — see below |
gws calendar +agenda --today --timezone 'Asia/Shanghai'
gws calendar +agenda --week --format table --timezone 'Asia/Shanghai'
gws calendar +agenda --days 3 --calendar 'Work' --timezone 'Asia/Shanghai'Read-only — never modifies events. Queries all calendars by default.
Always pass --timezone. The helper's own default reads the account timezone from settings, which this installation's scopes exclude, so it silently falls back to the machine's local timezone — on a machine in a different timezone from the calendar, --today and --week then query the wrong day boundaries. Ask the user for their timezone, or take it from an event's own timezone, and pass it explicitly.
Create an event
gws calendar +insert --summary <TEXT> --start <TIME> --end <TIME>| Flag | Required | Description |
--summary | ✓ | Event title |
--start | ✓ | Start time (RFC 3339, e.g. 2026-06-17T09:00:00+08:00) |
--end | ✓ | End time (RFC 3339) |
--calendar | — | Calendar ID (default: primary) |
--location | — | Event location |
--description | — | Event description/body |
--attendee | — | Attendee email (repeatable). Does not notify them — see below |
--meet | — | Add a Google Meet link |
gws calendar +insert --summary 'Standup' --start '2026-06-17T09:00:00+08:00' --end '2026-06-17T09:30:00+08:00'
gws calendar +insert --summary 'Review' --start ... --end ... --attendee alice@example.com --meet[!CAUTION] This is a write command — confirm with the user before executing.
Attendees are not notified by +insert. The helper does not set the Calendar API's sendUpdates parameter, whose default is to send nothing, so the guest is added to the event but receives no invitation. When the user's intent is to invite someone, create the event through the resource-level command with that parameter instead, then tell the user the invitation went out:
gws calendar events insert \
--params '{"calendarId":"primary","sendUpdates":"all"}' \
--json '{"summary":"Review","start":{"dateTime":"2026-06-17T09:00:00+08:00"},"end":{"dateTime":"2026-06-17T10:00:00+08:00"},"attendees":[{"email":"alice@example.com"}]}'+insert --meet adds the Meet link automatically, but this resource-level form does not — request the conference explicitly, or the invitation goes out without a way to join:
gws calendar events insert \
--params '{"calendarId":"primary","sendUpdates":"all","conferenceDataVersion":1}' \
--json '{"summary":"Review","start":{"dateTime":"2026-06-17T09:00:00+08:00"},"end":{"dateTime":"2026-06-17T10:00:00+08:00"},"attendees":[{"email":"alice@example.com"}],"conferenceData":{"createRequest":{"requestId":"<unique-string>","conferenceSolutionKey":{"type":"hangoutsMeet"}}}}'API resources (within scope)
gws calendar <resource> <method> [flags]events
list— events on a calendar (--params '{"calendarId":"primary","timeMin":"...","timeMax":"...","singleEvents":true,"orderBy":"startTime"}')get— one event by IDinstances— instances of a recurring eventinsert— create an event (prefer+insert)quickAdd— create an event from a text stringpatch— modify an event; use this for every edit. When the event has attendees, add"sendUpdates":"all"to--paramsso guests learn about the change — the default notifies nobody, leaving them on the old timeupdate— full replacement; it drops attendees, recurrence, reminders, location and description when they are absent from the body, so only use it after fetching the complete event and round-tripping every fielddelete— delete an event. With attendees, pass"sendUpdates":"all"too, or guests keep a meeting the organizer already cancelled
calendarList (read-only)
list— calendars on the user's calendar listget— one calendar-list entry
Method flags
| Flag | Description |
--params '{"key": "val"}' | URL/query parameters |
--json '{"key": "val"}' | Request body (POST/PATCH/PUT) |
--format <FMT> | Output format: json (default), table, yaml, csv |
--dry-run | Validate locally without calling the API |
--page-all | Auto-paginate (NDJSON output) |
--page-limit <N> | Max pages with --page-all (default: 10) |
Wrap --params and --json values in single quotes so the shell does not interpret the inner double quotes.
Discovering commands
gws calendar --help
gws schema calendar.<resource>.<method> # required params, types, defaultsUse gws schema output to build --params and --json.
Security rules
- Never output secrets (tokens, credential files) directly.
- Always confirm with the user before executing write or delete commands.
- Prefer
--dry-runfirst for destructive operations. - Use RFC 3339 times with explicit offsets; respect the user's timezone (
--timezoneon+agenda).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

