google-workspace-cli
Manage and automate Google Workspace tasks like Drive, Docs, and security audits via CLI.
Install
mkdir -p .claude/skills/google-workspace-cli && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3442" && unzip -o skill.zip -d .claude/skills/google-workspace-cli && rm skill.zipInstalls to .claude/skills/google-workspace-cli
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Google Workspace administration via the gws CLI (github.com/googleworkspace/cli). Install, authenticate, and automate Gmail, Drive, Sheets, Calendar, Docs, Chat, and Tasks. Run security audits and use local recipe templates and persona bundles. Use for Google Workspace admin, gws CLI setup, Gmail automation, Drive management, or Calendar scheduling.Key capabilities
- →Automates Gmail, Drive, Sheets, Calendar, Docs, Chat, and Tasks
- →Executes security audits across Workspace services
- →Runs built-in recipes and persona bundles
- →Provides CLI interface for Google Workspace administration
- →Analyzes JSON output via local Python tools
How it works
The CLI dynamically builds its command surface from Google's API discovery documents and provides local Python scripts for diagnostics and output analysis.
Inputs & outputs
When to use google-workspace-cli
- →Running Google Workspace security audits
- →Automating sheet and document updates
- →Managing shared drive permissions
About this skill
Google Workspace CLI
Expert guidance and automation for Google Workspace administration using the open-source gws CLI (github.com/googleworkspace/cli, Apache-2.0). The CLI builds its command surface dynamically from Google's Discovery Service, so it covers every supported Workspace API plus +-prefixed helper commands. This skill adds local Python tools (doctor, auth guide, recipe catalog, security audit, output analyzer).
Verify before scripting:
gwsgenerates commands at runtime from Google's API discovery documents, and the CLI is pre-v1.0. Always confirm a command's exact surface withgws --help,gws <service> --help, orgws schema <service>.<resource>.<method>before putting it in automation. Commands in this skill marked (verify) are illustrative of thegws <service> <resource> <method>pattern and must be checked against your installed version.
Quick Start
Check Installation
# Verify gws is installed and authenticated
python3 scripts/gws_doctor.py
Send an Email
gws gmail +send --to "[email protected]" \
--subject "Weekly Update" --body "Here's this week's summary..."
List Drive Files
gws drive files list --params '{"pageSize": 20}' | python3 scripts/output_analyzer.py --select "name,mimeType,modifiedTime" --format table
Installation
npm (recommended; requires Node.js 18+)
npm install -g @googleworkspace/cli
gws --version
Homebrew (macOS/Linux)
brew install googleworkspace-cli
Cargo (from source)
cargo install --git https://github.com/googleworkspace/cli --locked
gws --version
Pre-built Binaries
Download from github.com/googleworkspace/cli/releases for macOS, Linux, or Windows. Nix users: nix run github:googleworkspace/cli.
Verify Installation
python3 scripts/gws_doctor.py
# Checks: PATH, version, auth status, service connectivity
Authentication
OAuth Setup (Interactive)
# Step 1: Create Google Cloud project and OAuth credentials
python3 scripts/auth_setup_guide.py --guide oauth
# Step 2: Run interactive auth setup (uses gcloud if available)
gws auth setup
# Step 3: Log in, requesting only the scopes you need
gws auth login -s drive,gmail,sheets
Headless/CI
# Generate setup instructions
python3 scripts/auth_setup_guide.py --guide service-account
# Export credentials from an interactive machine, then point the CLI at them
gws auth export --unmasked > credentials.json
export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json
Environment Variables
# Generate .env template
python3 scripts/auth_setup_guide.py --generate-env
| Variable | Purpose |
|---|---|
GOOGLE_WORKSPACE_CLI_CLIENT_ID | OAuth client ID |
GOOGLE_WORKSPACE_CLI_CLIENT_SECRET | OAuth client secret |
GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE | Path to exported credentials JSON |
GOOGLE_WORKSPACE_CLI_TOKEN | Pre-obtained OAuth token |
GOOGLE_WORKSPACE_CLI_CONFIG_DIR | Override default config location |
GOOGLE_WORKSPACE_CLI_LOG | Enable debug logging |
Validate Authentication
python3 scripts/auth_setup_guide.py --validate --json
# Tests each service endpoint
Workflow 1: Gmail Automation
Goal: Automate email operations — send, search, label, and filter management.
Send, Reply, Forward (helper commands)
# Send a new email
gws gmail +send --to "[email protected]" \
--subject "Proposal" --body "Please find attached..."
# Reply to a message (auto-threading); check exact flags with: gws gmail +reply --help
gws gmail +reply ...
# Forward a message; check exact flags with: gws gmail +forward --help
gws gmail +forward ...
# Unread inbox summary
gws gmail +triage
Search and Inspect (discovery commands)
Discovery commands follow gws <service> <resource> <method> and take request
parameters as JSON via --params (query/path params) and --json (request body).
Inspect any method's exact schema first:
# What does messages.list accept? (verify)
gws schema gmail.users.messages.list
# Search emails (verify against the schema above)
gws gmail users messages list --params '{"userId": "me", "q": "from:[email protected] after:2025/01/01"}' \
| python3 scripts/output_analyzer.py --count
# List labels (verify)
gws gmail users labels list --params '{"userId": "me"}'
Bulk Operations
Use --dry-run first, and --page-all to paginate (one JSON line per page):
# Preview, then archive read emails older than 30 days (verify method schema first)
gws gmail users messages list --params '{"userId": "me", "q": "is:read older_than:30d"}' --page-all \
| python3 scripts/output_analyzer.py --select "id" --format json
# Then feed ids to gmail users messages modify (see: gws schema gmail.users.messages.modify)
Workflow 2: Drive & Sheets
Goal: Manage files, create spreadsheets, configure sharing, and export data.
File Operations
# List files
gws drive files list --params '{"pageSize": 50}' \
| python3 scripts/output_analyzer.py --select "name,mimeType,size" --format table
# Upload a file (helper)
gws drive +upload ./report.pdf --name "Q1 Report"
# Create a Google Sheet
gws sheets spreadsheets create --json '{"properties": {"title": "Budget 2026"}}'
# Download/export — inspect the method first (verify)
gws schema drive.files.export
Sharing (verify schemas first)
# Inspect the permissions API surface
gws schema drive.permissions.create
# Share with user (verify against schema)
gws drive permissions create --params '{"fileId": "<FILE_ID>"}' \
--json '{"type": "user", "role": "writer", "emailAddress": "[email protected]"}'
# List who has access (verify)
gws drive permissions list --params '{"fileId": "<FILE_ID>"}'
Sheets Data
# Read values (helper); check exact flags with: gws sheets +read --help
gws sheets +read ...
# Append a row (helper); check exact flags with: gws sheets +append --help
gws sheets +append ...
# Or use discovery methods (verify):
gws schema sheets.spreadsheets.values.update
gws sheets spreadsheets values get --params '{"spreadsheetId": "<SHEET_ID>", "range": "Sheet1!A1:D10"}'
Workflow 3: Calendar & Meetings
Goal: Schedule events, find available times, and generate standup reports.
Event Management
# Create an event (helper); check exact flags with: gws calendar +insert --help
gws calendar +insert ...
# Upcoming events (helper, timezone-aware)
gws calendar +agenda
# Or via discovery (verify):
gws schema calendar.events.insert
gws calendar events list --params '{"calendarId": "primary", "maxResults": 10}'
Find Available Time
# Free/busy via the Calendar API (verify schema first)
gws schema calendar.freebusy.query
gws calendar freebusy query --json '{"timeMin": "...", "timeMax": "...", "items": [{"id": "[email protected]"}]}'
Standup Report (workflow helpers)
# Today's meetings + tasks
gws workflow +standup-report \
| python3 scripts/output_analyzer.py --format table
# Next meeting prep; check exact flags with: gws workflow +meeting-prep --help
gws workflow +meeting-prep
Workflow 4: Security Audit
Goal: Audit Google Workspace security configuration and generate remediation commands.
Run Full Audit
# Full audit across all services
python3 scripts/workspace_audit.py --json
# Audit specific services
python3 scripts/workspace_audit.py --services gmail,drive,calendar
# Demo mode (no gws required)
python3 scripts/workspace_audit.py --demo
Audit Checks
| Area | Check | Risk |
|---|---|---|
| Drive | External sharing enabled | Data exfiltration |
| Gmail | Auto-forwarding rules | Data exfiltration |
| Gmail | DMARC/SPF/DKIM records | Email spoofing |
| Calendar | Default sharing visibility | Information leak |
| OAuth | Third-party app grants | Unauthorized access |
| Admin | Super admin count | Privilege escalation |
| Admin | 2-Step verification enforcement | Account takeover |
Review and Remediate
# Review findings
python3 scripts/workspace_audit.py --json | python3 scripts/output_analyzer.py \
--filter "status=FAIL" --select "area,check,remediation"
# Execute remediation (example: check current Drive settings first; verify)
gws drive about get --params '{"fields": "*"}'
# Follow remediation commands from audit output (verify each against gws --help)
Python Tools
| Script | Purpose | Usage |
|---|---|---|
gws_doctor.py | Pre-flight diagnostics | python3 scripts/gws_doctor.py [--json] [--services gmail,drive] |
auth_setup_guide.py | Guided auth setup | python3 scripts/auth_setup_guide.py --guide oauth |
gws_recipe_runner.py | Recipe catalog & runner | python3 scripts/gws_recipe_runner.py --list [--persona pm] |
workspace_audit.py | Security/config audit | python3 scripts/workspace_audit.py [--json] [--demo] |
output_analyzer.py | JSON/NDJSON analysis | gws ... --json | python3 scripts/output_analyzer.py --count |
All scripts are stdlib-only, support --json output, and include demo mode with embedded sample data.
Best Practices
Security
- Use OAuth with minimal scopes — request only what each workflow needs
- Store tokens in the system keyring, never in plain text files
- Rotate service account keys every 90 days
- Audit third-party OAuth app grants quarterly
- Use
--dry-runbefore bulk destructive operations
Automation
- All
gwsoutput is structured JSON — pipe it throughoutput_analyzer.pyfor filtering and aggregation - Use
gws workflow +*helpers for multi-step operations instead of chaining raw commands - Use the local recipe catalog (
gws_recipe_runner.py) as command templates, the
Content truncated.
When not to use it
- →When you lack administrative privileges for required API scopes
- →When performing operations that exceed API rate limits
Prerequisites
Limitations
- →OAuth tokens expire after one hour
- →CLI is currently pre-v1.0 status
- →Bulk operations may trigger 429 rate limit errors
How it compares
It provides a unified CLI interface for Google Workspace administration instead of manual interaction with individual web consoles or disparate APIs.
Compared to similar skills
google-workspace-cli side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| google-workspace-cli (this skill) | 9 | 2mo | Review | Advanced |
| skill-install | 4 | 7mo | Review | Intermediate |
| context-engine | 2 | 2mo | No flags | Intermediate |
| aif | 0 | 4mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by alirezarezvani
View all by alirezarezvani →You might also like
skill-install
cexll
Install Claude skills from GitHub repositories with automated security scanning. Triggers when users want to install skills from a GitHub URL, need to browse available skills in a repository, or want to safely add new skills to their Claude environment.
context-engine
alirezarezvani
Loads and manages company context for all C-suite advisor skills. Reads ~/.claude/company-context.md, detects stale context (>90 days), enriches context during conversations, and enforces privacy/anonymization rules before external API calls.
aif
hightemp
Set up agent context for a project. Analyzes tech stack, installs relevant skills from skills.sh, generates custom skills, and configures MCP servers. Use when starting new project, setting up AI context, or asking "set up project", "configure AI", "what skills do I need".
tidy-perms
joeharris76
Consolidate accumulated permission grants across Claude Code, Codex, and Gemini: move trusted commands into project settings, clean garbage entries, verify cross-agent consistency, commit project-level configs.
windows-ui-automation
martinholovsky
Expert in Windows UI Automation (UIA) and Win32 APIs for desktop automation. Specializes in accessible, secure automation of Windows applications including element discovery, input simulation, and process interaction. HIGH-RISK skill requiring strict security controls for system access.
1password
openclaw
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.