gws-install — Claude Code skill: quick Google Workspace CLI setup
Installs gws on a second machine using OAuth credentials you already have, so you skip the Google Cloud setup.
npx skills add jezweb/claude-skills --skill gws-install -a claude-codeWhat gws-install does
The skill walks the agent through the whole sequence: check whether gws and a valid auth session exist, install the CLI with npm install -g @googleworkspace/cli, place client_secret.json in ~/.config/gws/, run gws auth login, then pull in the agent skills with npx skills add googleworkspace/cli -g --agent claude-code --all.
Auth is where it gets fiddly. The OAuth URL carries 30+ scopes, wraps across terminal lines and breaks when copied, so the skill extracts it to a file and opens it from there. One more thing to watch: while the GCP app sits in Testing status, tokens expire after 7 days and gws auth login has to be re-run. Pushing the app to Production in the OAuth consent screen makes them permanent.
You need client_secret.json from an earlier gws-setup or from Google Cloud Console. Without that file the skill has nothing to work with — use gws-setup instead, it creates the GCP project from scratch. Skills load at session start, so restart Claude once the install finishes.
What it helps with
- set up gws on a second workstation
- reinstall the CLI after a fresh OS install
- get OAuth access on a new machine without creating a GCP project
- wire Google Workspace agent skills into Claude
- check which scopes the auth session actually granted
Example prompts for the agent
- install gws on this machine, my client_secret.json is in Downloads
- set up gws again after I reinstalled the OS
- run gws auth status and show me the granted scopes
How to install gws-install
1Skills CLI (Vercel)
npx skills add jezweb/claude-skills --skill gws-install -a claude-code2Manually: put the files in place
~/.claude/skills/gws-install/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/gws-install/
1Skills CLI (Vercel)
npx skills add jezweb/claude-skills --skill gws-install -a codex2Manually: put the files in place
.agents/skills/gws-install/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add jezweb/claude-skills --skill gws-install -a cursor2Manually: put the files in place
.cursor/skills/gws-install/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install jezweb/claude-skills gws-install2Manually: put the files in place
.github/skills/gws-install/SKILL.md1Skills CLI (Vercel)
npx skills add jezweb/claude-skills --skill gws-install -a gemini-cli2Platform CLI
gemini skills install https://github.com/jezweb/claude-skills --path plugins/integrations/skills/gws-installManually: put the files in place
.devin/skills/gws-install/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add jezweb/claude-skills --skill gws-install -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about gws-install
How do I install gws-install in Claude?
Run npx skills add jezweb/claude-skills --skill gws-install -a claude-code. The skill then lives at ~/.claude/skills/gws-install/SKILL.md.
What does gws-install do?
It handles the Google Workspace CLI install on an additional machine: installs the package, writes client_secret.json, runs authentication and adds the agent skills.
How is gws-install different from gws-setup?
gws-install assumes you already have client_secret.json from a previous setup. If you don't, gws-setup is the one that creates the Google Cloud project first.
Source text
SKILL.md · MIT
---
name: gws-install
description: "Quick install of the Google Workspace CLI (gws) on an additional machine using existing OAuth credentials. Requires client_secret.json from a previous gws-setup. Use whenever the user wants to install gws on a new computer, reinstall after a fresh OS, configure a second workstation, or says 'install gws', 'gws on new machine', 'set up gws again'."
compatibility: claude-code-only
---
# Google Workspace CLI — Quick Install
Install `gws` on an additional machine using OAuth credentials from a previous setup. Produces an authenticated CLI with all agent skills ready to use.
**Prerequisite**: The user must have `client_secret.json` from a previous `gws-setup` (or from Google Cloud Console). If they don't have it, use the `gws-setup` skill instead.
## Workflow
### Step 1: Pre-flight Checks
```bash
which gws && gws --version
ls ~/.config/gws/client_secret.json
gws auth status
```
If already authenticated with the right scopes, skip to Step 4.
### Step 2: Install the CLI
```bash
npm install -g @googleworkspace/cli
gws --version
```
### Step 3: Set Up Credentials
Ask the user to provide their `client_secret.json`. Three options:
**Option A — Paste the JSON content:**
Ask the user to paste the JSON. Write it to `~/.config/gws/client_secret.json`:
```bash
mkdir -p ~/.config/gws
```
Expected format:
```json
{
"installed": {
"client_id": "...",
"project_id": "...",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"client_secret": "...",
"redirect_uris": ["http://localhost"]
}
}
```
**Option B — File path:**
If the user has the file locally (e.g. in Downloads):
```bash
mkdir -p ~/.config/gws
cp /path/to/client_secret.json ~/.config/gws/client_secret.json
```
**Option C — Environment variables:**
```bash
export GOOGLE_WORKSPACE_CLI_CLIENT_ID="your-client-id"
export GOOGLE_WORKSPACE_CLI_CLIENT_SECRET="your-client-secret"
```
### Step 4: Authenticate
**IMPORTANT**: This step prints a very long OAuth URL (30+ scopes) that the user must open in their browser. The URL is too long to copy from terminal output — it wraps across lines and breaks. Always extract it to a file and open it programmatically.
Ask which Google account to use, then:
1. **Run auth in the background** and capture output:
```bash
gws auth login -s gmail,drive,calendar,sheets,docs,chat,tasks 2>&1 | tee /tmp/gws-auth-output.txt
```
Running as a background task is fine — it will complete once the user approves in browser.
2. **Extract and open the URL** (run separately after output appears):
```bash
grep -o 'https://accounts.google.com[^ ]*' /tmp/gws-auth-output.txt > /tmp/gws-auth-url.txt
cat /tmp/gws-auth-url.txt | xargs open
```
If `open` doesn't work, tell the user: "The auth URL is saved at `/tmp/gws-auth-url.txt` — open that file and copy the URL from there."
3. **Wait for the user** to approve in their browser, then verify:
```bash
gws auth status
```
**Alternative — `--full` for all scopes:**
```bash
gws auth login --full
```
The user can check their original machine's scopes with `gws auth status` to see what was granted.
### Step 5: Install Agent Skills
```bash
npx skills add googleworkspace/cli -g --agent claude-code --all
```
This installs 90+ skills into `~/.claude/skills/`. Safe to re-run if skills are already installed.
### Step 6: Verify
```bash
gws auth status
gws calendar +agenda --today
gws gmail +triage
```
---
## Troubleshooting
### "Auth error — credentials missing or invalid" (exit code 2)
- Check `~/.config/gws/client_secret.json` exists and has valid JSON
- Re-run `gws auth login`
### Token expired
- If the GCP app is in "Testing" status, tokens expire after 7 days
- Re-run `gws auth login` to refresh
- For permanent tokens, push the app to Production in GCP Console OAuth consent screen
### Skills not appearing in Claude Code
- Skills load at session start — restart Claude Code after installing
- Verify: `ls ~/.claude/skills/gws-* | wc -l` should show 30+ directories
## See Also
- [gws-setup](../gws-setup/SKILL.md) — First-time setup including GCP project creation
- [gws-shared](~/.claude/skills/gws-shared/SKILL.md) — Auth patterns and global flags
© jezweb · MIT · jezweb/claude-skills