Files
Reza Rezvani 4e9f1d934d feat(engineering): add google-workspace-cli skill with 5 Python tools
New skill for Google Workspace administration via the gws CLI:
- SKILL.md with 4 workflows (Gmail, Drive/Sheets, Calendar, Security Audit)
- 5 stdlib-only Python scripts (doctor, auth setup, recipe runner, audit, analyzer)
- 3 reference docs, 2 asset files, 43 built-in recipes, 10 persona bundles
- cs-workspace-admin agent, /google-workspace slash command
- Standalone marketplace plugin entry with .claude-plugin/plugin.json
- Cross-platform sync (Codex CLI, Gemini CLI), MkDocs docs pages
- All documentation updated (173 skills, 250 tools, 15 agents, 15 commands)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:59:40 +01:00

10 KiB

Google Workspace CLI Command Reference

Comprehensive reference for the gws CLI covering 18 services, 22 helper commands, global flags, and environment variables.


Global Flags

Flag Description
--json Output as JSON
--format ndjson Output as newline-delimited JSON
--dry-run Show what would be done without executing
--limit <n> Maximum results to return
--page-all Fetch all pages of results
--fields <spec> Partial response field mask
--quiet Suppress non-error output
--verbose Verbose debug output
--timeout <ms> Request timeout in milliseconds

Environment Variables

Variable Description Default
GWS_CLIENT_ID OAuth client ID
GWS_CLIENT_SECRET OAuth client secret
GWS_TOKEN_PATH Token storage location ~/.config/gws/token.json
GWS_SERVICE_ACCOUNT_KEY Service account JSON key path
GWS_DELEGATED_USER User to impersonate (service accounts)
GWS_DEFAULT_FORMAT Default output format text
GWS_PAGINATION_LIMIT Default pagination limit 100
GWS_LOG_LEVEL Logging level (debug/info/warn/error) warn

Services

Gmail

gws gmail users.messages list me --query "<query>" --json
gws gmail users.messages get me <messageId> --json
gws gmail users.messages send me --to <email> --subject <subj> --body <body>
gws gmail users.messages reply me --thread-id <id> --body <body>
gws gmail users.messages forward me --message-id <id> --to <email>
gws gmail users.messages modify me <id> --addLabelIds <label> --removeLabelIds INBOX
gws gmail users.messages trash me <id>
gws gmail users.labels list me --json
gws gmail users.labels create me --name <name>
gws gmail users.settings.filters create me --criteria <json> --action <json>
gws gmail users.settings.forwardingAddresses list me --json
gws gmail users getProfile me --json

Google Drive

gws drive files list --json --limit <n>
gws drive files list --query "name contains '<term>'" --json
gws drive files list --parents <folderId> --json
gws drive files get <fileId> --json
gws drive files create --name <name> --upload <path> --parents <folderId>
gws drive files create --name <name> --mimeType application/vnd.google-apps.folder
gws drive files update <fileId> --upload <path>
gws drive files delete <fileId>
gws drive files export <fileId> --mime <mimeType> --output <path>
gws drive files copy <fileId> --name <newName>
gws drive permissions list <fileId> --json
gws drive permissions create <fileId> --type <user|group|domain> --role <reader|writer|owner> --emailAddress <email>
gws drive permissions delete <fileId> <permissionId>
gws drive about get --json
gws drive files emptyTrash

Google Sheets

gws sheets spreadsheets create --title <title> --json
gws sheets spreadsheets get <spreadsheetId> --json
gws sheets spreadsheets.values get <spreadsheetId> --range <range> --json
gws sheets spreadsheets.values update <spreadsheetId> --range <range> --values <json>
gws sheets spreadsheets.values append <spreadsheetId> --range <range> --values <json>
gws sheets spreadsheets.values clear <spreadsheetId> --range <range>
gws sheets spreadsheets.values batchGet <spreadsheetId> --ranges <range1>,<range2> --json
gws sheets spreadsheets.values batchUpdate <spreadsheetId> --data <json>

Google Calendar

gws calendar calendarList list --json
gws calendar calendarList get <calendarId> --json
gws calendar events list <calendarId> --timeMin <datetime> --timeMax <datetime> --json
gws calendar events get <calendarId> <eventId> --json
gws calendar events insert <calendarId> --summary <title> --start <datetime> --end <datetime> --attendees <emails>
gws calendar events update <calendarId> <eventId> --summary <title>
gws calendar events patch <calendarId> <eventId> --start <datetime> --end <datetime>
gws calendar events delete <calendarId> <eventId>
gws calendar freebusy query --timeMin <start> --timeMax <end> --items <calendarId1>,<calendarId2> --json

Google Docs

gws docs documents create --title <title> --json
gws docs documents get <documentId> --json
gws docs documents batchUpdate <documentId> --requests <json>

Google Slides

gws slides presentations create --title <title> --json
gws slides presentations get <presentationId> --json
gws slides presentations.pages get <presentationId> <pageId> --json
gws slides presentations.pages getThumbnail <presentationId> <pageId> --json

Google Chat

gws chat spaces list --json
gws chat spaces get <spaceName> --json
gws chat spaces.messages create <spaceName> --text <message>
gws chat spaces.messages list <spaceName> --json
gws chat spaces.messages get <messageName> --json
gws chat spaces.members list <spaceName> --json

Google Tasks

gws tasks tasklists list --json
gws tasks tasklists get <tasklistId> --json
gws tasks tasklists insert --title <title> --json
gws tasks tasks list <tasklistId> --json
gws tasks tasks get <tasklistId> <taskId> --json
gws tasks tasks insert <tasklistId> --title <title> --due <datetime>
gws tasks tasks update <tasklistId> <taskId> --status completed
gws tasks tasks delete <tasklistId> <taskId>

Admin SDK (Directory)

gws admin users list --domain <domain> --json
gws admin users get <email> --json
gws admin users insert --primaryEmail <email> --name.givenName <first> --name.familyName <last>
gws admin users update <email> --suspended true
gws admin groups list --domain <domain> --json
gws admin groups get <email> --json
gws admin groups insert --email <email> --name <name>
gws admin groups.members list <groupEmail> --json
gws admin groups.members insert <groupEmail> --email <memberEmail> --role MEMBER
gws admin orgunits list --customerId my_customer --json

Google Groups

gws groups groups list --domain <domain> --json
gws groups groups get <email> --json
gws groups memberships list <groupEmail> --json

Google People (Contacts)

gws people people.connections list me --personFields names,emailAddresses --json
gws people people get <resourceName> --personFields names,emailAddresses,phoneNumbers --json
gws people people searchContacts --query <term> --readMask names,emailAddresses --json

Google Meet

gws meet spaces create --json
gws meet spaces get <spaceName> --json
gws meet conferenceRecords list --json

Google Classroom

gws classroom courses list --json
gws classroom courses get <courseId> --json
gws classroom courses.courseWork list <courseId> --json
gws classroom courses.students list <courseId> --json

Google Forms

gws forms forms get <formId> --json
gws forms forms.responses list <formId> --json

Google Keep

gws keep notes list --json
gws keep notes get <noteId> --json

Google Sites

gws sites sites list --json
gws sites sites get <siteId> --json

Google Vault

gws vault matters list --json
gws vault matters get <matterId> --json
gws vault matters.holds list <matterId> --json

Admin Reports / Activities

gws admin activities list <applicationName> --json
gws admin activities list login --json
gws admin activities list drive --json
gws admin activities list admin --json

Helper Commands (22)

Helper Description Example
send Quick send email gws helpers send --to a@b.com --subject Hi --body Hello
reply Quick reply gws helpers reply --thread <id> --body Thanks
forward Quick forward gws helpers forward --message <id> --to a@b.com
upload Quick upload to Drive gws helpers upload file.pdf --folder <id>
download Quick download gws helpers download <fileId> --output file.pdf
share Quick share gws helpers share <fileId> --with a@b.com --role writer
quick-event Natural language event gws helpers quick-event "Lunch tomorrow at noon"
find-time Find free slots gws helpers find-time --attendees a,b --duration 60
standup-report Daily standup gws helpers standup-report
meeting-prep Prep for meeting gws helpers meeting-prep --event <id>
weekly-summary Week summary gws helpers weekly-summary
morning-briefing Morning overview gws helpers morning-briefing
eod-wrap End of day wrap gws helpers eod-wrap
inbox-zero Process inbox gws helpers inbox-zero
search Cross-service search gws helpers search "quarterly report"
create-task Quick task creation gws helpers create-task "Review PR" --due tomorrow
list-tasks Quick task listing gws helpers list-tasks
chat-send Quick chat message gws helpers chat-send --space <id> --text "Hello"
export-pdf Export as PDF gws helpers export-pdf <fileId> --output file.pdf
trash-old Trash old files gws helpers trash-old --older-than 365d
audit-sharing Audit file sharing gws helpers audit-sharing --folder <id>
backup-labels Backup Gmail labels gws helpers backup-labels --output labels.json

Schema Introspection

# View the API schema for any service method
gws schema gmail.users.messages.list
gws schema drive.files.create
gws schema calendar.events.insert

# List all available services
gws schema --list

# List methods for a service
gws schema gmail --methods

Authentication Commands

gws auth setup                      # Interactive OAuth setup
gws auth setup --service-account    # Service account setup
gws auth status                     # Check current auth
gws auth status --json              # JSON auth details
gws auth refresh                    # Refresh expired token
gws auth revoke                     # Revoke current token
gws auth switch <profile>           # Switch auth profile
gws auth profiles list              # List saved profiles

Recipe Commands

gws recipes list                    # List all 43 recipes
gws recipes list --category email   # Filter by category
gws recipes describe <name>         # Show recipe details
gws recipes run <name>              # Execute a recipe
gws recipes run <name> --dry-run    # Preview recipe commands

Persona Commands

gws persona list                    # List all 10 personas
gws persona select <name>           # Activate a persona
gws persona show                    # Show active persona
gws persona recipes                 # Show recipes for active persona