api-and-interface-desi…
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating REST or GraphQL endpoints,…
Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python.
$ npx -y skills add kevinnft/ai-agent-skills --skill google-workspace --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/google-workspaceContext preview
The summary Claude sees to decide when to auto-load this skill.
Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python.
name: google-workspace
description: "Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python."
version: 1.0.0
author: Nous Research
license: MIT
metadata:
hermes:
tags: [Google, Gmail, Calendar, Drive, Sheets, Docs, Contacts, Email, OAuth]
homepage: https://github.com/NousResearch/hermes-agent
related_skills: [himalaya]
origin: original
source_repo: kevinnft/ai-agent-skills
source_url: https://github.com/kevinnft/ai-agent-skills
source_license: MIT
language: enGmail, Calendar, Drive, Contacts, Sheets, and Docs — through Hermes-managed OAuth and a thin CLI wrapper. When `gws` is installed, the skill uses it as the execution backend for broader Google Workspace coverage; otherwise it falls back to the bundled Python client implementation.
The setup is fully non-interactive — you drive it step by step so it works on CLI, Telegram, Discord, or any platform.
Define a shorthand first:
GSETUP="python ${HERMES_HOME:-$HOME/.hermes}/skills/productivity/google-workspace/scripts/setup.py"$GSETUP --check
If it prints `AUTHENTICATED`, skip to Usage — setup is already done.
Before starting OAuth setup, ask the user TWO questions:
**Question 1: "What Google services do you need? Just email, or also Calendar/Drive/Sheets/Docs?"**
instead — it works with a Gmail App Password (Settings → Security → App Passwords) and takes 2 minutes to set up. No Google Cloud project needed. Load the himalaya skill and follow its setup instructions.
`--services email,calendar` during auth so the consent screen only asks for the scopes they actually need.
narrower `--services` set like `calendar,drive,sheets,docs`.
`all` service set.
**Question 2: "Does your Google account use Advanced Protection (hardware security keys required to sign in)? If you're not sure, you probably don't — it's something you would have explicitly enrolled in."**
allowed apps list before Step 4 will work. Let them know upfront.
Tell the user:
> You need a Google Cloud OAuth client. This is a one-time setup: > > 1. Create or select a project: > https://console.cloud.google.com/projectselector2/home/dashboard > 2. Enable the required APIs from the API Library: > https://console.cloud.google.com/apis/library > Enable: Gmail API, Google Calendar API, Google Drive API, > Google Sheets API, Google Docs API, People API > 3. Create the OAuth client here: > https://console.cloud.google.com/apis/credentials > Credentials → Create Credentials → OAuth 2.0 Client ID > 4. Application type: "Desktop app" → Create > 5. If the app is still in Testing, add the user's Google account as a test user here: > https://console.cloud.google.com/auth/audience > Audience → Test users → Add users > 6. Download the JSON file and tell me the file path > > Important Hermes CLI note: if the file path starts with `/`, do NOT send only the bare path as its own message in the CLI, because it can be mistaken for a slash command. Send it in a sentence instead, like: > `The JSON file path is: /home/user/Downloads/client_secret_....json`
Once they provide the path:
$GSETUP --client-secret /path/to/client_secret.json
If they paste the raw client ID / client secret values instead of a file path, write a valid Desktop OAuth JSON file for them yourself, save it somewhere explicit (for example `~/Downloads/hermes-google-client-secret.json`), then run `--client-secret` against that file.
Use the service set chosen in Step 1. Examples:
$GSETUP --auth-url --services email,calendar --format json $GSETUP --auth-url --services calendar,drive,sheets,docs --format json $GSETUP --auth-url --services all --format json
This returns JSON with an `auth_url` field and also saves the exact URL to `~/.hermes/google_oauth_last_url.txt`.
Agent rules for this step:
The user will paste back either a URL like `http://localhost:1/?code=4/0A...&scope=...` or just the code string. Either works. The `--auth-url` step stores a temporary pending OAuth session locally so `--auth-code` can complete the PKCE exchange later, even on headless systems:
$GSETUP --auth-code "THE_URL_OR_CODE_THE_USER_PASTED" --format json
If `--auth-code` fails because the code expired, was already used, or came from an older browser tab, it now returns a fresh `fresh_auth_url`. In that case, immediately send the new URL to the user and
191 attribution-first agent skills for Hermes Agent, Claude Code, Cursor — one installer, 28 categories, searchable catalog. See NOTICE for upstream attribution.
Repo: kevinnft/ai-agent-skills
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating REST or GraphQL endpoints,…
Tests in real browsers. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM, capture console errors, analyze…
Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate quality gates, configure test…
Conducts multi-axis code review. Use before merging any change. Use when reviewing code written by yourself, another agent, or a human. Use when you need to…
Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder to read, maintain, or extend…
Optimizes agent context setup. Use when starting a new session, when agent output quality degrades, when switching between tasks, or when you need to configure…