api-and-interface-desi…
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating…
Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python.
Claude Code
$ npx -y skills add kevinnft/ai-agent-skills --skill google-workspace --agent claude-code
Codex
$ npx skills add kevinnft/ai-agent-skills --skill google-workspace -a codex -y
Cursor
$ npx skills add kevinnft/ai-agent-skills --skill google-workspace -a cursor -y
Gemini CLI
$ npx skills add kevinnft/ai-agent-skills --skill google-workspace -a gemini-cli -y
GitHub Copilot
$ npx skills add kevinnft/ai-agent-skills --skill google-workspace -a github-copilot -y
OpenCode
$ npx skills add kevinnft/ai-agent-skills --skill google-workspace -a opencode -y
Windsurf
$ npx skills add kevinnft/ai-agent-skills --skill google-workspace -a windsurf -y
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.
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating…
Tests in real browsers. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM,…
Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate…
Conducts multi-axis code review. Use before merging any change. Use when reviewing code written by yourself, another agent, or a…
Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder…
Optimizes agent context setup. Use when starting a new session, when agent output quality degrades, when switching between tasks,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.