{"id":"c127f682-dfa2-485c-998b-99f8603541cc","shortId":"zLBEd2","kind":"skill","title":"google-calendar-automation","tagline":"Lightweight Google Calendar integration with standalone OAuth authentication. No MCP server required.","description":"# Google Calendar\n\nLightweight Google Calendar integration with standalone OAuth authentication. No MCP server required.\n\n> **⚠️ Requires Google Workspace account.** Personal Gmail accounts are not supported.\n\n## When to Use\n- You need to list, create, inspect, or update Google Calendar events from local scripts.\n- The task requires OAuth-backed calendar automation without standing up an MCP server.\n- You need quick operational access to calendars, schedules, attendees, or event details in a Workspace environment.\n\n## First-Time Setup\n\nAuthenticate with Google (opens browser):\n```bash\npython scripts/auth.py login\n```\n\nCheck authentication status:\n```bash\npython scripts/auth.py status\n```\n\nLogout when needed:\n```bash\npython scripts/auth.py logout\n```\n\n## Commands\n\nAll operations via `scripts/gcal.py`. Auto-authenticates on first use if not logged in.\n\n### List Calendars\n```bash\npython scripts/gcal.py list-calendars\n```\n\n### List Events\n```bash\n# List events from primary calendar (default: next 30 days)\npython scripts/gcal.py list-events\n\n# List events with specific time range\npython scripts/gcal.py list-events --time-min 2024-01-15T00:00:00Z --time-max 2024-01-31T23:59:59Z\n\n# List events from a specific calendar\npython scripts/gcal.py list-events --calendar \"work@example.com\"\n\n# Limit results\npython scripts/gcal.py list-events --max-results 10\n```\n\n### Get Event Details\n```bash\npython scripts/gcal.py get-event EVENT_ID\npython scripts/gcal.py get-event EVENT_ID --calendar \"work@example.com\"\n```\n\n### Create Event\n```bash\n# Basic event\npython scripts/gcal.py create-event \"Team Meeting\" \"2024-01-15T10:00:00Z\" \"2024-01-15T11:00:00Z\"\n\n# Event with description and location\npython scripts/gcal.py create-event \"Team Meeting\" \"2024-01-15T10:00:00Z\" \"2024-01-15T11:00:00Z\" \\\n    --description \"Weekly sync\" --location \"Conference Room A\"\n\n# Event with attendees\npython scripts/gcal.py create-event \"Team Meeting\" \"2024-01-15T10:00:00Z\" \"2024-01-15T11:00:00Z\" \\\n    --attendees user1@example.com user2@example.com\n\n# Event on specific calendar\npython scripts/gcal.py create-event \"Meeting\" \"2024-01-15T10:00:00Z\" \"2024-01-15T11:00:00Z\" \\\n    --calendar \"work@example.com\"\n```\n\n### Update Event\n```bash\n# Update event title\npython scripts/gcal.py update-event EVENT_ID --summary \"New Title\"\n\n# Update event time\npython scripts/gcal.py update-event EVENT_ID --start \"2024-01-15T14:00:00Z\" --end \"2024-01-15T15:00:00Z\"\n\n# Update multiple fields\npython scripts/gcal.py update-event EVENT_ID \\\n    --summary \"Updated Meeting\" --description \"New agenda\" --location \"Room B\"\n\n# Update attendees\npython scripts/gcal.py update-event EVENT_ID --attendees user1@example.com user3@example.com\n```\n\n### Delete Event\n```bash\npython scripts/gcal.py delete-event EVENT_ID\npython scripts/gcal.py delete-event EVENT_ID --calendar \"work@example.com\"\n```\n\n### Find Free Time\nFind the first available slot for a meeting with specified attendees:\n```bash\n# Find 30-minute slot for yourself\npython scripts/gcal.py find-free-time \\\n    --attendees me \\\n    --time-min \"2024-01-15T09:00:00Z\" \\\n    --time-max \"2024-01-15T17:00:00Z\" \\\n    --duration 30\n\n# Find 60-minute slot with multiple attendees\npython scripts/gcal.py find-free-time \\\n    --attendees me user1@example.com user2@example.com \\\n    --time-min \"2024-01-15T09:00:00Z\" \\\n    --time-max \"2024-01-19T17:00:00Z\" \\\n    --duration 60\n```\n\n### Respond to Event Invitation\n```bash\n# Accept an invitation\npython scripts/gcal.py respond-to-event EVENT_ID accepted\n\n# Decline an invitation\npython scripts/gcal.py respond-to-event EVENT_ID declined\n\n# Mark as tentative\npython scripts/gcal.py respond-to-event EVENT_ID tentative\n\n# Respond without notifying organizer\npython scripts/gcal.py respond-to-event EVENT_ID accepted --no-notify\n```\n\n## Date/Time Format\n\nAll times use ISO 8601 format with timezone:\n- UTC: `2024-01-15T10:30:00Z`\n- With offset: `2024-01-15T10:30:00-05:00` (EST)\n\n## Calendar ID Format\n\n- Primary calendar: Use `primary` or omit the `--calendar` flag\n- Other calendars: Use the calendar ID from `list-calendars` (usually an email address)\n\n## Token Management\n\nTokens stored securely using the system keyring:\n- **macOS**: Keychain\n- **Windows**: Windows Credential Locker\n- **Linux**: Secret Service API (GNOME Keyring, KDE Wallet, etc.)\n\nService name: `google-calendar-skill-oauth`\n\nTokens are automatically refreshed when expired using Google's cloud function.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["google","calendar","automation","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-google-calendar-automation","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/google-calendar-automation","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34768 github stars · SKILL.md body (4,753 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T18:51:24.671Z","embedding":null,"createdAt":"2026-04-18T21:38:11.120Z","updatedAt":"2026-04-23T18:51:24.671Z","lastSeenAt":"2026-04-23T18:51:24.671Z","tsv":"'-01':170,179,241,247,265,271,294,300,319,325,360,367,455,464,492,501,577,585 '-05':590 '-15':171,242,248,266,272,295,301,320,326,361,368,456,465,493,578,586 '-19':502 '-31':180 '00':173,244,250,268,274,297,303,322,328,363,370,458,467,495,504,589,591 '00z':174,245,251,269,275,298,304,323,329,364,371,459,468,496,505,581 '10':207 '2024':169,178,240,246,264,270,293,299,318,324,359,366,454,463,491,500,576,584 '30':148,438,470,580,588 '59':182 '59z':183 '60':472,507 '8601':571 'accept':513,524,561 'access':76 'account':34,37 'address':618 'agenda':387 'api':637 'ask':694 'attende':80,285,305,392,400,435,449,477,484 'authent':12,26,92,102,122 'auto':121 'auto-authent':120 'autom':4,65 'automat':652 'avail':428 'b':390 'back':63 'bash':97,104,111,132,140,211,230,334,405,436,512 'basic':231 'boundari':702 'browser':96 'calendar':3,7,18,21,53,64,78,131,137,145,189,195,226,311,330,420,593,597,603,606,609,614,647 'check':101 'clarif':696 'clear':669 'cloud':659 'command':115 'confer':280 'creat':48,228,236,260,289,315 'create-ev':235,259,288,314 'credenti':632 'criteria':705 'date/time':565 'day':149 'declin':525,536 'default':146 'delet':403,409,416 'delete-ev':408,415 'describ':673 'descript':254,276,385 'detail':83,210 'durat':469,506 'email':617 'end':365 'environ':87,685 'environment-specif':684 'est':592 'etc':642 'event':54,82,139,142,154,156,165,185,194,203,209,216,217,223,224,229,232,237,252,261,283,290,308,316,333,336,342,343,349,355,356,379,380,397,398,404,410,411,417,418,510,521,522,533,534,545,546,558,559 'expert':690 'expir':655 'field':374 'find':422,425,437,446,471,481 'find-free-tim':445,480 'first':89,124,427 'first-tim':88 'flag':604 'format':566,572,595 'free':423,447,482 'function':660 'get':208,215,222 'get-ev':214,221 'gmail':36 'gnome':638 'googl':2,6,17,20,32,52,94,646,657 'google-calendar-autom':1 'google-calendar-skill-oauth':645 'id':218,225,344,357,381,399,412,419,523,535,547,560,594,610 'input':699 'inspect':49 'integr':8,22 'invit':511,515,527 'iso':570 'kde':640 'keychain':629 'keyr':627,639 'lightweight':5,19 'limit':197,661 'linux':634 'list':47,130,136,138,141,153,155,164,184,193,202,613 'list-calendar':135,612 'list-ev':152,163,192,201 'local':56 'locat':256,279,388 'locker':633 'log':128 'login':100 'logout':108,114 'maco':628 'manag':620 'mark':537 'match':670 'max':177,205,462,499 'max-result':204 'mcp':14,28,70 'meet':239,263,292,317,384,432 'min':168,453,490 'minut':439,473 'miss':707 'multipl':373,476 'name':644 'need':45,73,110 'new':346,386 'next':147 'no-notifi':562 'notifi':551,564 'oauth':11,25,62,649 'oauth-back':61 'offset':583 'omit':601 'open':95 'oper':75,117 'organ':552 'output':679 'permiss':700 'person':35 'primari':144,596,599 'python':98,105,112,133,150,161,190,199,212,219,233,257,286,312,338,351,375,393,406,413,443,478,516,528,540,553 'quick':74 'rang':160 'refresh':653 'requir':16,30,31,60,698 'respond':508,519,531,543,549,556 'respond-to-ev':518,530,542,555 'result':198,206 'review':691 'room':281,389 'safeti':701 'schedul':79 'scope':672 'script':57 'scripts/auth.py':99,106,113 'scripts/gcal.py':119,134,151,162,191,200,213,220,234,258,287,313,339,352,376,394,407,414,444,479,517,529,541,554 'secret':635 'secur':623 'server':15,29,71 'servic':636,643 'setup':91 'skill':648,664 'skill-google-calendar-automation' 'slot':429,440,474 'source-sickn33' 'specif':158,188,310,686 'specifi':434 'stand':67 'standalon':10,24 'start':358 'status':103,107 'stop':692 'store':622 'substitut':682 'success':704 'summari':345,382 'support':40 'sync':278 'system':626 't00':172 't09':457,494 't10':243,267,296,321,579,587 't11':249,273,302,327 't14':362 't15':369 't17':466,503 't23':181 'task':59,668 'team':238,262,291 'tentat':539,548 'test':688 'time':90,159,167,176,350,424,448,452,461,483,489,498,568 'time-max':175,460,497 'time-min':166,451,488 'timezon':574 'titl':337,347 'token':619,621,650 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':677 'updat':51,332,335,341,348,354,372,378,383,391,396 'update-ev':340,353,377,395 'use':43,125,569,598,607,624,656,662 'user1@example.com':306,401,486 'user2@example.com':307,487 'user3@example.com':402 'usual':615 'utc':575 'valid':687 'via':118 'wallet':641 'week':277 'window':630,631 'without':66,550 'work@example.com':196,227,331,421 'workspac':33,86","prices":[{"id":"317b49f8-9acf-45a4-bbb0-8b68b1c51ae9","listingId":"c127f682-dfa2-485c-998b-99f8603541cc","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:38:11.120Z"}],"sources":[{"listingId":"c127f682-dfa2-485c-998b-99f8603541cc","source":"github","sourceId":"sickn33/antigravity-awesome-skills/google-calendar-automation","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/google-calendar-automation","isPrimary":false,"firstSeenAt":"2026-04-18T21:38:11.120Z","lastSeenAt":"2026-04-23T18:51:24.671Z"}],"details":{"listingId":"c127f682-dfa2-485c-998b-99f8603541cc","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"google-calendar-automation","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34768,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-23T06:41:03Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"38c0b4eb3cbc57ebbe7d7c357dc52578d9200c9b","skill_md_path":"skills/google-calendar-automation/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/google-calendar-automation"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"google-calendar-automation","license":"Apache-2.0","description":"Lightweight Google Calendar integration with standalone OAuth authentication. No MCP server required."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/google-calendar-automation"},"updatedAt":"2026-04-23T18:51:24.671Z"}}