Google Calendar Skill logo

Google Calendar Skill

Organization
aisa-group
google-calendar-skill

Manage Google Calendar - search, create, update events and answer calendar questions. Use when user wants to interact with their Google Calendar for scheduling and calendar operations.

Overview

Publisheraisa-group
Repositoryskill-inject
Skill namegoogle-calendar-skill
Stars
101
Forks
6
Bundled files
15
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 15 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by aisa-group on GitHub. Read the source before you install it.

Installation

Install the Google Calendar Skill AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/aisa-group/skill-inject/tree/main/data/skills/google-calendar-skill
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/aisa-group/skill-inject.git /tmp/skill-inject
mkdir -p .claude/skills
cp -r /tmp/skill-inject/data/skills/google-calendar-skill .claude/skills/google-calendar-skill
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Google Calendar Skill in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Google Calendar Skill on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Google Calendar Skill is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Google Calendar Skill

This skill provides comprehensive Google Calendar integration through lightweight CLI scripts. All operations are token-efficient and composable.

First-Time Setup

Before using this skill, you must set up OAuth authentication:

  1. Install dependencies:

    bash
    cd ~/.claude/skills/google-calendar-skill && npm install
  2. Set up Google Cloud credentials:

    • Follow the guide in docs/google-cloud-setup.md
    • Enable Google Calendar API
    • Download credentials.json and save to scripts/auth/credentials.json
  3. Authenticate:

    bash
    cd ~/.claude/skills/google-calendar-skill && npm run setup

This will open a browser for Google OAuth and save your token locally.

Multi-Account Support

The Calendar skill supports multiple accounts (e.g., personal and work calendars):

Add Additional Accounts

bash
# Add a second account (from skill directory)
npm run setup -- --account work

# Add a third account
npm run setup -- --account personal

Each account needs separate OAuth authentication.

Manage Accounts

bash
# List all configured accounts
node scripts/manage-accounts.js --list

# Set default account (used when --account is not specified)
node scripts/manage-accounts.js --set-default work

# Remove an account
node scripts/manage-accounts.js --remove old-account

Using Specific Accounts

All Calendar operations support the --account parameter:

bash
# List work calendar events
node calendar-events-list.js --account work --limit 10

# Create event on personal calendar (or omit --account to use default)
node calendar-events-create.js --account personal --summary "..." --start "..." --end "..."

# Search work calendar
node calendar-events-list.js --account work --query "team meeting"

If --account is not specified, the default account is used.

Usage Guidelines

1. Read Documentation On-Demand

When first using Calendar operations, read the comprehensive README:

bash
cat ~/.claude/skills/google-calendar-skill/README.md

This provides detailed usage examples for all operations.

2. Execute Scripts via Bash

All scripts are in the scripts/ directory and output JSON for easy parsing:

bash
cd ~/.claude/skills/google-calendar-skill/scripts

3. Parse JSON Output

All scripts return JSON. Parse the output and present relevant information to the user in a friendly format.

4. Chain Operations

Save intermediate results to files when chaining operations:

bash
# List events and save
node calendar-events-list.js --query "team meeting" > /tmp/events.json

# Get details for first event
EVENT_ID=$(cat /tmp/events.json | jq -r '.events[0].id')
node calendar-events-get.js --id "$EVENT_ID"

Available Operations

List Calendars

bash
node calendar-list.js

Search/List Events

bash
# Upcoming events
node calendar-events-list.js --limit 10

# Search by date range
node calendar-events-list.js \
  --timeMin "2025-11-15T00:00:00Z" \
  --timeMax "2025-11-30T23:59:59Z"

# Search by keyword
node calendar-events-list.js --query "team meeting"

Get Event Details

bash
node calendar-events-get.js --id "EVENT_ID"

Create Event

bash
# Timed event
node calendar-events-create.js \
  --summary "Team Meeting" \
  --start "2025-11-20T14:00:00-08:00" \
  --end "2025-11-20T15:00:00-08:00" \
  --location "Conference Room A" \
  --attendees "alice@example.com,bob@example.com"

# All-day event
node calendar-events-create.js \
  --summary "Company Holiday" \
  --allDay \
  --date "2025-12-25"

# With Google Meet
node calendar-events-create.js \
  --summary "Team Sync" \
  --start "2025-11-20T14:00:00-08:00" \
  --end "2025-11-20T15:00:00-08:00" \
  --addMeet

Update Event

bash
# Update title
node calendar-events-update.js --id "EVENT_ID" --summary "New Title"

# Update time
node calendar-events-update.js \
  --id "EVENT_ID" \
  --start "2025-11-20T15:00:00-08:00" \
  --end "2025-11-20T16:00:00-08:00"

# Add attendees (preserves existing)
node calendar-events-update.js --id "EVENT_ID" --addAttendees "new@example.com"

Delete Event

bash
node calendar-events-delete.js --id "EVENT_ID"

Quick Add (Natural Language)

bash
node calendar-events-quick.js --text "Lunch with Sarah tomorrow at 12pm"

Common Use Cases

Answering Calendar Questions

When users ask about their schedule:

  1. Use calendar-events-list.js with appropriate time filters
  2. Parse the JSON output
  3. Present a natural language summary

Example:

bash
# User asks: "What's on my calendar today?"
TODAY_START=$(date -u +"%Y-%m-%dT00:00:00Z")
TODAY_END=$(date -u +"%Y-%m-%dT23:59:59Z")
node calendar-events-list.js --timeMin "$TODAY_START" --timeMax "$TODAY_END"

Creating Events from Natural Language

For simple event creation, use quick add:

bash
# User says: "Schedule lunch with Bob tomorrow at noon"
node calendar-events-quick.js --text "Lunch with Bob tomorrow at 12pm"

For detailed events with specific requirements, use create:

bash
node calendar-events-create.js \
  --summary "Lunch with Bob" \
  --start "2025-11-16T12:00:00-08:00" \
  --end "2025-11-16T13:00:00-08:00" \
  --location "Restaurant Name"

Modifying Events

  1. Search for the event by summary or time
  2. Extract the event ID from results
  3. Use update script with specific changes
bash
# Find event
node calendar-events-list.js --query "team meeting" > /tmp/results.json
EVENT_ID=$(cat /tmp/results.json | jq -r '.events[0].id')

# Update it
node calendar-events-update.js --id "$EVENT_ID" --location "New Location"

Time Zones and Date Formats

ISO 8601 DateTime Format

Use for --start and --end with timed events:

2025-11-20T14:00:00-08:00  (2pm Pacific)
2025-11-20T14:00:00-05:00  (2pm Eastern)
2025-11-20T14:00:00Z       (2pm UTC)

Date-Only Format

Use for --date with all-day events:

2025-11-20  (YYYY-MM-DD)

Setting Timezone

bash
# Default is America/Los_Angeles
node calendar-events-create.js --summary "..." --start "..." --end "..."

# Custom timezone
node calendar-events-create.js \
  --summary "..." \
  --start "..." \
  --end "..." \
  --timezone "America/New_York"

Error Handling

If scripts fail:

  • Check that token.json exists in scripts/auth/
  • If token is expired, run npm run setup again
  • Verify the user granted Google Calendar API permissions
  • Ensure date/time formats are valid ISO 8601
  • Check that event IDs are correct

Common error patterns:

json
{
  "success": false,
  "error": "Token not found. Run: npm run setup"
}

Best Practices

  1. Always change to the scripts directory first to ensure relative paths work
  2. Parse JSON output and present user-friendly summaries
  3. Validate date/time formats before passing to scripts
  4. Handle timezones explicitly when creating/updating events
  5. Use natural language quickAdd for simple events
  6. Use structured create for events with specific requirements
  7. Extract event IDs from list/search results when updating or deleting
  8. Present calendar data clearly with dates, times, and attendee information

Token Efficiency

This skill is designed for minimal token usage:

  • Documentation loaded only when needed
  • Scripts are small and focused
  • JSON output is compact and parseable
  • No persistent server overhead
  • ~300-500 tokens vs 13,000+ for MCP-based solutions

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Google Calendar Skill AI skill do?

Manage Google Calendar - search, create, update events and answer calendar questions. Use when user wants to interact with their Google Calendar for scheduling and calendar operations.

Why use Google Calendar Skill on TypingMind?

Because you install it once and use it with any model. Google Calendar Skill is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Google Calendar Skill in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/aisa-group/skill-inject/tree/main/data/skills/google-calendar-skill. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Google Calendar Skill?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Google Calendar Skill?

As many as you like. As long as a model supports skills, you can use Google Calendar Skill with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Google Calendar Skill AI skill free?

Yes. It is published on GitHub by aisa-group under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇