Official agent skill

Google Workspace

by google in google/adk-recipes

Read/write Google Drive, Docs, Sheets, Gmail, Calendar, Chat, Tasks, Slides via the gws CLI.

OfficialApache-2.0Auto-check passedDocuments & Office

Install Google Workspace

skills CLI
$ npx skills add google/adk-recipes --skill google-workspace -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install google/adk-recipes google-workspace --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/google/adk-recipes.git skills-src && mkdir -p .claude/skills && cp -r skills-src/core/python/long-horizon-harness/horizon/builtin_skills/google-workspace .claude/skills/google-workspace && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
google-workspace
GitHub stars
10k
Token cost
~4.6k tokens
SKILL.md length
2,267 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
Apache-2.0

At a glance

Read/write Google Drive, Docs, Sheets, Gmail, Calendar, Chat, Tasks, Slides via the gws CLI.

  • Works in 4 steps: client_secret.json — drop an OAuth… → Env vars — set… → Service account — set… → …
  • Any Google Workspace task
  • SKILL.md covers When to use this skill, Auth, Command form and Common operations, plus 1 more section
  • Calls npm; reaches googleapis.com and github.com; needs GOOGLE_WORKSPACE_CLI_TOKEN and GOOGLE_WORKSPACE_CLI_CLIENT_SECRET

What it does

Google Workspace is an agent skill from google/adk-recipes, published by the product's own GitHub organization. Read/write Google Drive, Docs, Sheets, Gmail, Calendar, Chat, Tasks, Slides via the gws CLI. Needs an OAuth client or service account configured first. Use for any Google Workspace task.

Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Documents & Office, covering Cloud office suites, Email management and OAuth and OpenID Connect. It works with Google Workspace, Gmail and Google Drive. The repository describes itself as: A collection of agent recipes, reference patterns, and vertical plugins built with Agent Development Kit (ADK). The licence is Apache-2.0.

When your agent uses it

  • Any Google Workspace task
  • Tasks that involve Cloud office suites
  • Tasks that involve Email management

Example prompts

  • “/google-workspace”

Requirements

  • Node.js
  • A credential in GOOGLE_WORKSPACE_CLI_TOKEN
  • A credential in GOOGLE_WORKSPACE_CLI_CLIENT_SECRET

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. client_secret.json — drop an OAuth client secret file into the gws
  2. Env vars — set GOOGLE_WORKSPACE_CLI_CLIENT_ID and
  3. Service account — set GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json.
  4. gws auth setup — provisions a GCP project + OAuth client for you, but

What it can do on your machine

Read from SKILL.md and the folder at commit c339821. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • googleapis.com
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • GOOGLE_WORKSPACE_CLI_TOKEN
    • GOOGLE_WORKSPACE_CLI_CLIENT_SECRET
    • GOOGLE_APPLICATION_CREDENTIALS

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Google Workspace loads about 4.6k tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 2,267 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~51
When it runs · the whole SKILL.md, loaded when a task matches
~4.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from google/adk-recipes at commit c339821, republished under its Apache-2.0 licence (© google). 2,267 words, ~4,584 tokens.

Download SKILL.mdSave it as .claude/skills/google-workspace/SKILL.md (or your agent's skills folder).
name
google-workspace
description
Read/write Google Drive, Docs, Sheets, Gmail, Calendar, Chat, Tasks, Slides via the `gws` CLI. Needs an OAuth client or service account configured first. Use for any Google Workspace task.

Google Workspace via gws

gws (install: npm install -g @googleworkspace/cli; this skill targets 0.22.x) speaks every Workspace API the user is likely to ask about — Drive, Docs, Sheets, Gmail, Calendar, Chat, Tasks, Slides, Keep, Forms, Apps Script, Meet. It is a community CLI ("not an officially supported Google product"). It wraps the REST APIs so you don't hand-roll curl, but it does not bundle credentials: you must configure an OAuth client or service account first, then authenticate.

When to use this skill

Any user request that names a Google Workspace surface:

  • "read this Drive file", "list my Drive folder", "share this doc"
  • "create a Google Doc with…", "update this sheet", "append a row"
  • "send an email", "draft a Gmail reply", "check my inbox for…"
  • "what's on my calendar", "schedule a meeting"
  • "post to this Chat space"

Do NOT shell out to curl against the raw Workspace REST APIs — gws already wraps them and handles pagination, retries, and JSON parsing.

Auth

First, always: try the pre-injected token

Before any OAuth client, service account, or login dance, check for a pre-injected access token. When the user has used "Connect Workspace" in the web UI, the GOOGLE_WORKSPACE_CLI_TOKEN secret is auto-injected into every bash command and is gws's highest-priority auth source — no OAuth client, no login, no loopback bridge. Don't ask, don't inspect the environment, just probe with a cheap read against the surface you need:

bash(command="export GOOGLE_WORKSPACE_CLI_CONFIG_DIR=/workspace/lha/config/gws GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file && gws gmail messages list --params '{\"maxResults\": 1}'")
  • If it returns data, you're done — the token works. Proceed with the task.
  • If it 403s / scope error, the token is valid but the user didn't grant this surface (or only read-only). The "Connect Workspace" flow is per-surface (drive / gmail / calendar / sheets / docs / chat / tasks / slides / keep / script / meet / forms) × read-only|read-write, read-only by default — ask the user to reconnect with the surface (or read-write) you need; don't start a login dance.
  • If it 401s / "not logged in", the token is truly missing or lapsed (it's a ~1h token, no refresh) — then fall back to the OAuth-client login below, or ask the user to re-click "Connect Workspace".

Do NOT trust gws auth status here. With the env token it reports auth_method: none / credential_source: token_env_var even though reads succeed — a real read is the only reliable check. Skipping the probe and jumping to gws auth login is the mistake to avoid: it drags the user through a browser-redirect bridge that the already-present token makes unnecessary.

Otherwise: configure an OAuth client

gws has no embedded OAuth client. gws auth login fails until one of these is in place:

  1. client_secret.json — drop an OAuth client secret file into the gws config dir. Preferred in the sandbox — see "Creating the OAuth client" below. Keep that dir on /workspace (next section) so it survives.
  2. Env vars — set GOOGLE_WORKSPACE_CLI_CLIENT_ID and GOOGLE_WORKSPACE_CLI_CLIENT_SECRET.
  3. Service account — set GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json. No gws auth login step is needed in this mode; calls authenticate directly with the key (use for fully unattended automation, no user present).
  4. gws auth setup — provisions a GCP project + OAuth client for you, but renders a full-screen interactive TUI that can't be driven from bash (no keyboard input). Don't use it headless — create the client_secret.json by hand (option 1) instead.
Creating the OAuth client (one-time)

When building the OAuth client yourself (via gcloud or the Cloud console):

  • Choose the "Desktop app" client type, not "Web application". gws auth login listens on a random loopback port; a Web-app client rejects that with Error 400: redirect_uri_mismatch. Desktop-app clients accept loopback.
  • For a corporate Workspace org, set the consent-screen audience to Internal. An internal-audience client clears the Context-Aware Access / "Account restricted" block that the default gcloud OAuth client trips on.
  • The client_secret.json's project_id must be a project the authenticating account may use — otherwise calls fail with the quota-project 403 (see Failure handling).
Config dir + keyring (sandbox gotchas)

Set both on every gws command — each bash call is a fresh non-login shell, so exports don't carry over between calls:

export GOOGLE_WORKSPACE_CLI_CONFIG_DIR=/workspace/lha/config/gws
export GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file
  • GOOGLE_WORKSPACE_CLI_CONFIG_DIR — relocates the config dir (which holds client_secret.json, the token, and the encryption key) onto /workspace. The default ~/.config/gws is not migrated on runtime upgrades, so without this you'd redo the browser login after the next upgrade.
  • GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file — there's no OS keyring headless; the file backend writes the key into the config dir (hence also on /workspace).
Authenticating

With an OAuth client configured, authenticate with:

bash(command="gws auth login --readonly")  # read-only scopes (start here)
bash(command="gws auth login")             # all default scopes
bash(command="gws auth login -s drive,gmail,sheets")  # limit the picker
bash(command="gws auth login --scopes <comma,separated,scopes>")

Start with read-only scopes (--readonly) — least privilege. Add write scopes only when the task actually needs to write, by re-running gws auth login --scopes <…> for the specific surface; Google's incremental consent merges the new scope with what's already granted, so you never over-grant up front.

gws auth login is loopback-browser only — it opens a browser and waits on a local listener for the OAuth redirect. There is NO device-code / paste-a-code flag.

Completing the loopback flow headless. It does work in the sandbox — you bridge the redirect by hand. The browser opens on the user's machine, but the listener is inside the container, so you relay the redirect URL across. The URL appears in one turn and the user pastes back in a later turn, so use the cross-turn process pipeline (process(action='spawn', ...) + process):

process(action='spawn', command="export GOOGLE_WORKSPACE_CLI_CONFIG_DIR=/workspace/lha/config/gws GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file && gws auth login")
# read the printed auth URL, surface it VERBATIM to the user, then wait
process(action='poll', session_id=<id>)
  1. The user opens the auth URL, consents, and their browser lands on a http://localhost:<port>/?code=...&scope=... page that won't load (the listener is in the sandbox, not on their machine). Ask them to copy that full redirect URL from the address bar and paste it back.
  2. curl that exact URL from inside the sandbox to hand the code to the waiting listener, which completes the exchange and writes the token:
    bash(command="curl -s 'http://localhost:<port>/?code=...&scope=...'")
    The backgrounded gws auth login then finishes.

(localhost is on Layer A's allowlist, so this curl isn't gated.) For fully unattended jobs where no user is present to paste the redirect, use a service account instead — the loopback bridge needs a live user.

Check state any time with bash(command="gws auth status").

Command form

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

Query parameters are passed as JSON via --params; request bodies via --json. Wrap both in single quotes so the shell preserves inner double quotes:

gws drive files list --params '{"pageSize": 5, "q": "trashed=false"}'
gws drive files create --json '{"name": "notes.txt"}' --upload notes.txt

Several common operations also have ergonomic helper commands (prefixed +) that take plain flags instead of JSON — e.g. gws sheets +read, gws sheets +append, gws gmail +send, gws drive +upload.

Useful global flags: --format json|table|yaml|csv (json default), --dry-run (validate without hitting the API), --page-all (auto-paginate to NDJSON), -o/--output <path> (save binary responses), --sanitize <template> (screen responses through Model Armor).

Discovery — don't guess params
bash(command="gws drive --help")                 # resources + methods
bash(command="gws schema drive.files.list")      # params, types, defaults

gws schema <service>.<resource>.<method> prints the exact param shape for a method. Run it (or gws <service> --help) whenever you're unsure of a flag — it's authoritative for the installed version.

Prefer the official per-surface skills for depth

The tables below are a quick reference, not the full surface. gws ships maintained per-surface skills upstream — gws-drive, gws-gmail, gws-sheets, gws-calendar, gws-chat, gws-people, gws-slides, gws-tasks, plus curated recipes — that cover the less-common methods this file doesn't. For anything beyond the common operations, install the relevant skill into the workspace and read it (note the path the command prints):

bash(command="npx -y skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-drive")

Swap gws-drive for the surface you need. These are version-pinned docs, so when a skill and the installed binary disagree, gws schema <service>.<resource>.<method> wins — it reflects the gws actually on PATH.

Common operations

You want to…Command
List Drive filesgws drive files list --params '{"q": "trashed=false", "pageSize": 20}'
Get Drive file metadatagws drive files get --params '{"fileId": "ID", "fields": "id,name,mimeType"}'
Download file contentsgws drive files get --params '{"fileId": "ID", "alt": "media"}' -o out.bin
Export a Doc/Sheetgws drive files export --params '{"fileId": "ID", "mimeType": "text/plain"}' -o out.txt
Read a Sheet rangegws sheets +read --spreadsheet ID --range "Sheet1!A1:D10"
Append a Sheet rowgws sheets +append --spreadsheet ID --range Sheet1 --json '{"values": [["a","b"]]}'
List Gmail messagesgws gmail messages list --params '{"q": "from:alice@example.com newer_than:7d", "maxResults": 10}'
Get a Gmail messagegws gmail messages get --params '{"id": "MSG_ID", "format": "full"}'
Send mailgws gmail +send --to alice@example.com --subject 'Hi' --body 'Hello!'
List Calendar eventsgws calendar events list --params '{"calendarId": "primary", "maxResults": 10}'
List Tasks task listsgws tasks tasklists list
List tasks in a listgws tasks tasks list --params '{"tasklist": "TASKLIST_ID"}'
Add a taskgws tasks tasks insert --params '{"tasklist": "TASKLIST_ID"}' --json '{"title": "Buy milk"}'
Read a presentationgws slides presentations get --params '{"presentationId": "ID"}'
List Keep notesgws keep notes list
Get a Form + its responsesgws forms forms get --params '{"formId": "ID"}' · gws forms forms responses list --params '{"formId": "ID"}'

Confirm the exact params with gws schema … before write/delete calls — the shapes above are the common cases, not an exhaustive contract.

Keep caveat: the Google Keep API is restricted to Workspace Enterprise domains via service-account domain-wide delegation — an ordinary Connect-Workspace access token will likely 403 on gws keep … regardless of the granted scope. If it does, tell the user it's an API restriction, not a missing grant.

Under a routine, the Google token is present only if you declared its secret name (GOOGLE_WORKSPACE_CLI_TOKEN) in the routine's secrets:.

Show full SKILL.md (796 more words)Show less
Google Chat — unread state & sender names

Two Chat limitations are scope-bound, so check before promising the user a result:

  • "Unread messages" needs an extra scope, but gws has a native command for it. The default read scopes (chat.spaces.readonly + chat.messages.readonly) let you list spaces and read messages but do not expose per-space unread state — read-position needs chat.users.readstate.readonly. With that scope, don't hand-roll REST: gws wraps the read-state endpoint as gws chat users spaces getSpaceReadState. Compute unread per space yourself — there's no single "list unread" call:
    1. List the spaces you care about (DMs/group chats sort by lastActiveTime):
      gws chat spaces list --params '{"pageSize": 1000}'
    2. For each space, read your last-read mark and its latest message, then compare:
      gws chat users spaces getSpaceReadState --params '{"name": "users/me/spaces/<space>/spaceReadState"}'
      gws chat spaces messages list --params '{"parent": "spaces/<space>", "pageSize": 1, "orderBy": "create_time DESC"}'
      A space is unread when the latest message's createTime is strictly newer than the read state's lastReadTime and that message's sender.name (a users/<id>) isn't you. (orderBy is create_time DESC — snake_case field + ASC/DESC, not createTime desc.)
    • Resolving your own users/<id> to skip self-authored messages is the one snag: people/me 403s under the Connect-Workspace token, so pass your id in explicitly (read it off any message you sent, or gws people people get once) rather than relying on me.
    • Resolve the remaining sender ids to names with gws people people getBatchGet (see the People note above).
    • Without the read-state scope you can't get true unread — be upfront, then either re-auth to add it (gws auth login --scopes https://www.googleapis.com/auth/chat.users.readstate.readonly; incremental consent merges it) or fall back to recency as a proxy (list spaces by lastActiveTime, pull each space's latest messages). Say which.
  • Senders come back as user IDs, not names. Chat returns each sender as users/<numeric-id>; the Chat read scopes don't resolve those to display names. The People API does (gws wraps it as gws people …), and "Connect Workspace" now offers the grant as a separate Directory surface (scope directory.readonly — read-only regardless of the read-write toggle). To turn IDs into names:
    • If a gws people read 403s, the user hasn't ticked Directory — ask them to reconnect with it.
    • Resolve in batch — a Chat thread has many distinct senders, so collect all the <numeric-id>s from users/<numeric-id> and resolve them in one getBatchGet call, not one get per ID (the People resource id is the <numeric-id>):
      gws people people getBatchGet --params '{"resourceNames": ["people/<id1>", "people/<id2>"], "personFields": "names,emailAddresses"}'
      Read each name off responses[].person.names[0].displayName. Use single-ID gws people people get --params '{"resourceName": "people/<numeric-id>", "personFields": "names"}' only for a one-off lookup. If a sender can't be seen as a domain member, fall back to gws people people searchDirectoryPeople --params '{"query": "<name-or-email>", "readMask": "names,emailAddresses"}'.
    • Confirm exact param shapes with gws schema people.people.get before relying on them.

Failure handling

  • No OAuth client configured → set up credentials first (see Auth: drop a client_secret.json, set the GOOGLE_WORKSPACE_CLI_CLIENT_* env vars, or use a service account).
  • gws auth login hangs on the listener → expected headless; bridge the loopback by relaying the redirect URL and curl-ing it back in (see Auth → "Completing the loopback flow headless"). Only fall back to a service account when no user is present to paste the redirect.
  • Login token doesn't persist / "no keyring" error, or asked to log in again after a runtime upgrade → set both GOOGLE_WORKSPACE_CLI_CONFIG_DIR=/workspace/lha/config/gws and GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file on every gws call (config + key then live on /workspace, which persists; ~/.config/gws does not).
  • Error 400: redirect_uri_mismatch on login → the OAuth client is a "Web application" type; recreate it as Desktop app (loopback ports).
  • access_denied / "Account restricted" on consent → Context-Aware Access on the OAuth client. Use an Internal-audience client (see Auth → "Creating the OAuth client").
  • 401 / not logged in → if GOOGLE_WORKSPACE_CLI_TOKEN is the auth source, the ~1h token has lapsed — ask the user to re-click "Connect Workspace" (it has no refresh). Otherwise the OAuth login expired; re-run gws auth login.
  • gws auth status shows auth_method: none but reads work → expected when the env token (GOOGLE_WORKSPACE_CLI_TOKEN) is the source; auth status doesn't reflect it. Confirm with a real read, not auth status.
  • 403, scope too narrow → the granted scopes don't cover the call. If the auth source is the GOOGLE_WORKSPACE_CLI_TOKEN env token, the "Connect Workspace" grant was per-surface and read-only by default — ask the user to reconnect including the surface (or read-write) you need. On the OAuth-login path instead, re-auth with the needed scope: gws auth login --scopes <…> (Google's incremental consent merges it with what was already granted).
  • 403, serviceUsageConsumer / quota project → distinct from a scope 403: the client_secret.json's project_id is a project the account can't bill to. Point the client at a project the account may use (the account needs roles/serviceusage.serviceUsageConsumer on it).
  • gws: command not found → not installed. npm install -g @googleworkspace/cli.
  • Unsure of a flag or param → gws <service> --help or gws schema <service>.<resource>.<method>. Don't guess.
<!-- find-skills:tested:false -->

© google, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in core/python/long-horizon-harness/horizon/builtin_skills/google-workspace of google/adk-recipes.

Open the folder on GitHubat commit c339821

Compare with similar skills

Google Workspace next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Google Workspace compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Google Workspace this skillgoogle/adk-recipes10k—~4.6kAutomated safety check: PassApache-2.0
Google WorkspaceTommy-yw/RunbookHermes5462 repos~2.7kAutomated safety check: PassMIT
Community Google WorkspaceArgentAIOS/argentos-core126—~2.8kAutomated safety check: PassMIT
Google Workspacetaracodlabs/aiden851—~1.1kAutomated safety check: PassApache-2.0
Google Workspaceespennilsen/pi122—~3.4kAutomated safety check: PassMIT
GwsLeoYeAI/openclaw-master-skills2.2k—~4.9kAutomated safety check: PassMIT

Similar skills

  • Google Workspace

    Tommy-yw/RunbookHermes

    Gmail, Calendar, Drive, Contacts, Sheets, and Docs integration for Hermes.

    546 GitHub starsUsed in 2 repos~2.7k tokens
    Documents & OfficeAuto-check passed
  • Community Google Workspace

    ArgentAIOS/argentos-core

    Gmail, Calendar, Drive, Contacts, Sheets, and Docs integration for community skills.

    126 GitHub stars~2.8k tokensUpdated 3 mo ago
    Documents & OfficeAuto-check passed
  • Google Workspace

    taracodlabs/aiden

    Gmail, Calendar, Drive, Sheets, Docs via Google API (SA / OAuth)

    851 GitHub stars~1.1k tokensUpdated 24 days ago
    Documents & OfficeAuto-check passed
  • Google Workspace

    espennilsen/pi

    Manage Google Workspace via the gws CLI — Drive, Gmail, Sheets, Docs, Slides, People, Chat, Meet, Forms, and cross-service workflows.

    122 GitHub stars~3.4k tokensUpdated 16 days ago
    Documents & OfficeAuto-check passed
  • Gws

    LeoYeAI/openclaw-master-skills

    Google Workspace CLI. An agent skill from LeoYeAI/openclaw-master-skills.

    2.2k GitHub stars~4.9k tokensUpdated 2 mo ago
    Documents & OfficeAuto-check passed
  • Google Workspace

    yc-software/qm

    Read and act on the user's Gmail, Google Calendar, and Google Tasks through per-user OAuth.

    15k GitHub stars~1.8k tokensUpdated today
    Productivity & AutomationAuto-check passed

More from google/adk-recipes

All 14 skills in this repo
  • Retail Product Search Agent

    google/adk-recipes

    Official

    Builds a retail product search agent on Google Cloud, from catalog ingestion into BigQuery and Vector Search to ADK scaffolding, evaluation and Cloud Run deployment.

    10k GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Align Recipe pyproject.toml

    google/adk-recipes

    Official

    Brings a Python recipe's pyproject.toml in line with the repo's CI rules, either as a read-only dry run or by rewriting the file while keeping comments.

    10k GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Official

    Generates a minimal tests/test_runnability.py for a Python agent recipe that imports the agent module and checks root_agent, adding only the mocks and env vars it needs.

    10k GitHub stars~3.3k tokensUpdated today
    Auto-check passed
  • Retail Virtual Try-On Agent

    google/adk-recipes

    Official

    Sets up a virtual try-on agent on Google Cloud that generates image and catwalk-video try-ons with Gemini, from first setup through local testing.

    10k GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Scaffold Python ADK Recipe

    google/adk-recipes

    Official

    Creates a new Python recipe for the ADK recipes repository by running a scaffold script that copies template files, after confirming the output directory and recipe name.

    10k GitHub stars~931 tokensUpdated today
    Auto-check passed
  • Official

    Reviews a GitHub pull request and drafts a small set of inline comments in a human reviewing voice, each checkable from the line it points at, then posts them after approval.

    10k GitHub stars~8.4k tokensUpdated today
    Auto-check passed

Questions about Google Workspace

What does Google Workspace do?

Read/write Google Drive, Docs, Sheets, Gmail, Calendar, Chat, Tasks, Slides via the gws CLI. Google Workspace is an agent skill from google/adk-recipes, published by the product's own GitHub organization. Read/write Google Drive, Docs, Sheets, Gmail, Calendar, Chat, Tasks, Slides via the gws CLI.

When should I use Google Workspace?

Google Workspace fits situations like: any Google Workspace task; tasks that involve Cloud office suites; tasks that involve Email management.

How do I install Google Workspace in Claude Code?

Run `npx skills add google/adk-recipes --skill google-workspace -a claude-code`. Or copy the skill folder (core/python/long-horizon-harness/horizon/builtin_skills/google-workspace in google/adk-recipes) into .claude/skills/google-workspace in your project. Claude Code loads it when a task matches its description.

How do I install Google Workspace in Codex?

Run `npx skills add google/adk-recipes --skill google-workspace -a codex`. Or copy the skill folder (core/python/long-horizon-harness/horizon/builtin_skills/google-workspace in google/adk-recipes) into .agents/skills/google-workspace in your project. Codex loads it when a task matches its description.

Can I use Google Workspace in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add google/adk-recipes --skill google-workspace -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/google-workspace, .gemini/skills/google-workspace, .github/skills/google-workspace and .opencode/skills/google-workspace in your project.

What does Google Workspace need to run?

Going by SKILL.md and its folder, Google Workspace needs the command-line tools its instructions call (npm) and credentials named GOOGLE_WORKSPACE_CLI_TOKEN, GOOGLE_WORKSPACE_CLI_CLIENT_SECRET and GOOGLE_APPLICATION_CREDENTIALS. Our summary lists: Node.js; A credential in GOOGLE_WORKSPACE_CLI_TOKEN; A credential in GOOGLE_WORKSPACE_CLI_CLIENT_SECRET.

Does Google Workspace access the network?

SKILL.md names 2 domains. In commands or code: googleapis.com and github.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Google Workspace safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Google Workspace use?

Google Workspace is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Google Workspace use?

About 4.6k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Google Workspace?

Skills that share tags, products or a category with Google Workspace: Google Workspace (Tommy-yw/RunbookHermes, 546 stars), Community Google Workspace (ArgentAIOS/argentos-core, 126 stars), Google Workspace (taracodlabs/aiden, 851 stars) and Google Workspace (espennilsen/pi, 122 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Google Workspace?

google (a GitHub organization, an official publisher) maintains it in google/adk-recipes, which has 10,421 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 8, 2026.

Source: google/adk-recipes on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.