Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
glebis avatar

Gws

  • 204 installs
  • 339 repo stars
  • Updated August 4, 2026
  • glebis/claude-skills

Automate Google Workspace tasks such as reading mail, calendar events, or Drive files when a feature needs external productivity data or outbound notifications.

About

The gws skill guides Claude Code through Google Workspace integration patterns so agents can query or act on Gmail, Calendar, Drive, and related services while building features that depend on real user productivity data instead of static mocks.

  • Connects agent workflows to Google Workspace APIs
  • Supports email, calendar, and document automation patterns
  • Reduces manual context switching during implementation
  • Fits SaaS products that depend on user productivity suites

Gws by the numbers

  • 204 all-time installs (skills.sh)
  • Ranked #588 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/glebis/claude-skills --skill gws

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs204
repo stars339
Last updatedAugust 4, 2026
Repositoryglebis/claude-skills

What it does

Automate Google Workspace tasks such as reading mail, calendar events, or Drive files when a feature needs external productivity data or outbound notifications.

Files

SKILL.mdMarkdownGitHub ↗

Google Workspace CLI (gws)

CLI for Gmail, Calendar, Drive, Sheets, Docs, Slides, Tasks, People, Chat, Meet, Forms, Keep, Admin, and cross-service workflows.

Binary: /opt/homebrew/bin/gws

Command Pattern

gws <service> <resource> [sub-resource] <method> [flags]

Every command accepts:

  • --params <JSON> — URL/query parameters
  • --json <JSON> — request body (POST/PATCH/PUT)
  • --upload <PATH> — file to upload as media content
  • --output <PATH> — path for binary responses (downloads)
  • --format json|table|yaml|csv — output format (default: json)
  • --page-all / --page-limit N — auto-paginate
  • --dry-run — validate locally without sending

Quick Reference — Helper Commands (prefer these)

CommandPurposeR/W
gws gmail +triage [--max N] [--query Q]Unread inbox summaryR
gws gmail +send --to EMAIL --subject S --body TSend plaintext emailW
gws gmail +watch --project GCPStream new emails (Pub/Sub)R
`gws calendar +agenda [--today\--tomorrow\--week\
gws calendar +insert --summary T --start ISO --end ISOCreate eventW
gws drive +upload FILE [--parent ID] [--name N]Upload fileW
gws sheets +read --spreadsheet ID --range RRead range (e.g. Sheet1!A1:D10)R
gws sheets +append --spreadsheet ID --values "a,b,c"Append row (or --json-values)W
gws docs +write --document ID --text TAppend text to docW
gws chat +send --space spaces/ID --text TPost to Chat spaceW
gws workflow +standup-reportToday's meetings + open tasksR
gws workflow +meeting-prep [--calendar ID]Next meeting detailsR
gws workflow +email-to-task --message-id IDEmail → TaskW
gws workflow +weekly-digestWeek's meetings + unreadR
gws workflow +file-announce --file-id ID --space SPACEAnnounce file in ChatW

Common Patterns

Gmail

# Triage unread (table for humans)
gws gmail +triage --max 10 --format table

# Search
gws gmail users messages list --params '{"userId":"me","q":"from:amazon newer_than:7d","maxResults":5}'

# Read full message
gws gmail users messages get --params '{"userId":"me","id":"MSG_ID","format":"full"}'

# Read headers only (faster)
gws gmail users messages get --params '{"userId":"me","id":"MSG_ID","format":"metadata","metadataHeaders":["Subject","From","Date"]}'

# Archive (remove INBOX)
gws gmail users messages modify --params '{"userId":"me","id":"MSG_ID"}' --json '{"removeLabelIds":["INBOX"]}'

# Trash
gws gmail users messages trash --params '{"userId":"me","id":"MSG_ID"}'

# Bulk label
gws gmail users messages batchModify --params '{"userId":"me"}' --json '{"ids":["ID1","ID2"],"addLabelIds":["Label_123"]}'

Calendar

# Today (Europe/Berlin default works with RFC3339 +02:00/+01:00)
gws calendar +agenda --today --format table

# Create simple event
gws calendar +insert \
  --summary 'AGENCY Meetup' \
  --start '2026-04-14T18:00:00+02:00' \
  --end '2026-04-14T19:00:00+02:00' \
  --location 'https://us02web.zoom.us/j/8991032224' \
  --description 'Zoom: https://us02web.zoom.us/j/8991032224'

# Event WITH Google Meet link (helper doesn't support — use raw)
gws calendar events insert \
  --params '{"calendarId":"primary","conferenceDataVersion":1}' \
  --json '{
    "summary":"Sync",
    "start":{"dateTime":"2026-04-15T14:00:00+02:00"},
    "end":{"dateTime":"2026-04-15T15:00:00+02:00"},
    "conferenceData":{"createRequest":{"requestId":"req-'$(date +%s)'","conferenceSolutionKey":{"type":"hangoutsMeet"}}}
  }'

# Update event
gws calendar events patch --params '{"calendarId":"primary","eventId":"EID"}' --json '{"summary":"New title"}'

# Delete
gws calendar events delete --params '{"calendarId":"primary","eventId":"EID"}'

# List all calendars
gws calendar calendarList list --format table

Drive

# Upload to root
gws drive +upload ./report.pdf

# Upload to folder
gws drive +upload ./data.csv --parent FOLDER_ID --name 'Sales Data.csv'

# Search files
gws drive files list --params '{"q":"name contains \"report\" and mimeType=\"application/pdf\"","pageSize":10}'

# Download
gws drive files get --params '{"fileId":"FID","alt":"media"}' --output ./local.pdf

# Create folder
gws drive files create --json '{"name":"MyFolder","mimeType":"application/vnd.google-apps.folder"}'

# Share with user
gws drive permissions create --params '{"fileId":"FID"}' --json '{"role":"reader","type":"user","emailAddress":"user@example.com"}'

Sheets

# Read
gws sheets +read --spreadsheet SID --range 'Sheet1!A1:D10' --format table

# Append single row (simple values)
gws sheets +append --spreadsheet SID --values 'Alice,100,true'

# Append multiple rows
gws sheets +append --spreadsheet SID --json-values '[["a","b"],["c","d"]]'

Tasks

gws tasks tasklists list
gws tasks tasks list --params '{"tasklist":"@default"}'
gws tasks tasks insert --params '{"tasklist":"@default"}' --json '{"title":"My task","notes":"Details","due":"2026-04-20T00:00:00Z"}'
gws tasks tasks patch --params '{"tasklist":"@default","task":"TID"}' --json '{"status":"completed"}'

Chat

# Find space
gws chat spaces list --format table

# Post message
gws chat +send --space spaces/AAAAxxxx --text 'Hello team!'

People / Contacts

gws people people connections list --params '{"resourceName":"people/me","personFields":"names,emailAddresses","pageSize":100}'
gws people people searchContacts --params '{"query":"John","readMask":"names,emailAddresses"}'

Critical Notes

  • userId: Every Gmail raw call needs "userId":"me" in params.
  • RFC3339 times: Calendar uses full ISO with offset (2026-04-14T18:00:00+02:00). "Z" for UTC.
  • Meet links: +insert does NOT add conferencing — use raw events.insert with conferenceDataVersion=1 and conferenceData.createRequest.
  • Pagination: --page-all emits NDJSON (one JSON object per page). --page-limit N caps pages.
  • Schema discovery: gws schema <service>.<resource>.<method> — e.g. gws schema gmail.users.messages.list.
  • Filters: gmail.settings.basic scope required — special manual OAuth flow (see references/api_reference.md).
  • Write confirmation: Always confirm with user before +send, +insert, +email-to-task, +file-announce, drive files delete, events delete, messages trash.
  • Format choice: --format table for human-readable summaries; default json for scripting/piping to jq.

OAuth Setup

  • GCP project: n8n-automations-454016
  • Credentials: ~/.config/gws/credentials.json
  • Configured scopes: gmail.modify, gmail.settings.basic, drive, spreadsheets, tasks, calendar, documents, chat.messages, contacts.readonly
  • gmail.settings.basic scope needs manual OAuth (Python localhost listener on port 8085) — gws auth login --scopes cannot request it directly.

Full API Reference

For full command inventory, all raw API calls, pagination, labels, drafts, filters, and admin APIs, see references/api_reference.md.

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.