From google-workspace
Search, read, send, and manage Gmail messages, drafts, labels, and filters with gws.
npx claudepluginhub pgoell/pgoell-claude-tools --plugin google-workspaceThis skill uses the workspace's default tool permissions.
Search, read, send, and manage Gmail messages, drafts, labels, and filters using the `gws` CLI.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Edits, creates, cleans, and formats spreadsheet files (.xlsx, .xlsm, .csv, .tsv) with zero formula errors, professional styling, and financial model standards like color coding.
Share bugs, ideas, or general feedback.
Search, read, send, and manage Gmail messages, drafts, labels, and filters using the gws CLI.
Do NOT check authentication upfront. Just run the command. If it fails with an auth error (exit code 2), see the Self-Healing section for diagnostics.
All operations use the gws CLI directly. No wrapper scripts.
+): Use for common operations. These handle formatting, threading, and MIME encoding automatically.--params '<JSON>' and request bodies via --json '<JSON>'. Resource paths are space-separated (e.g., gws gmail users messages list).Always prefer + helpers when one exists for the operation.
Show unread inbox summary:
gws gmail +triage
Filtered/customized:
gws gmail +triage --query 'from:boss' --max 5
gws gmail +triage --labels
gws gmail +triage --format table
gws gmail +read --id <messageId>
gws gmail +read --id <messageId> --headers
gws gmail +read --id <messageId> --format json
gws gmail users messages list --params '{"userId": "me", "q": "<query>"}'
See gmail-search-recipes.md for query syntax.
gws gmail users labels list --params '{"userId": "me"}'
gws gmail +send --to <addr> --subject '<subj>' --body '<body>'
gws gmail +send --to <addr> --subject '<subj>' --body '<body>' --cc <addr> --bcc <addr>
gws gmail +send --to <addr> --subject '<subj>' --body '<body>' -a <filepath>
gws gmail +send --to <addr> --subject '<subj>' --body '<html>' --html
gws gmail +reply --message-id <id> --body '<body>'
gws gmail +reply-all --message-id <id> --body '<body>'
gws gmail +reply-all --message-id <id> --body '<body>' --remove <addr>
gws gmail +forward --message-id <id> --to <addr>
gws gmail +forward --message-id <id> --to <addr> --body 'FYI see below'
gws gmail users drafts create --params '{"userId": "me"}' --json '<draft-json>'
gws gmail users messages trash --params '{"userId": "me", "id": "<id>"}'
gws gmail users messages delete --params '{"userId": "me", "id": "<id>"}'
Trash is reversible. Delete is permanent — confirm with the user first.
gws gmail users messages modify --params '{"userId": "me", "id": "<id>"}' --json '{"addLabelIds": ["STARRED"], "removeLabelIds": ["UNREAD"]}'
gws gmail users labels create --params '{"userId": "me"}' --json '{"name": "<label-name>"}'
gws gmail users labels delete --params '{"userId": "me", "id": "<labelId>"}'
gws gmail users settings filters list --params '{"userId": "me"}'
gws gmail users settings filters create --params '{"userId": "me"}' --json '<filter-json>'
gws gmail users settings filters delete --params '{"userId": "me", "id": "<filterId>"}'
See gmail-search-recipes.md
When a command fails:
Check if gws is available and authenticated:
which gws && gws auth status
If gws is not installed or not authenticated, tell the user:
"The gws CLI is not installed or not authenticated. Install and configure it: https://github.com/googleworkspace/cli"
gws gmail <command> --helpgws schema gmail.<resource>.<method>--dry-run to preview requests without executing--params JSON syntax and required fields+ helper commands over raw API calls when a helper exists.--format table for human-readable output when needed.--dry-run to preview destructive operations before executing.userId to me in --params unless the user specifies otherwise.+triage.users messages list.