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>
10 KiB
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