원클릭으로
gws-shared
gws CLI: Shared patterns for authentication, global flags, and output formatting.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
gws CLI: Shared patterns for authentication, global flags, and output formatting.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Summarize activity in a Slack channel over a timeframe (or the last ~100 messages). Use when the user says 'catch me up on #channel', 'what did I miss in X', or 'summarize this channel'.
Build a cross-channel daily digest of what matters across the user's Slack. Use for 'give me my Slack digest', 'what happened across my channels today', or a standing daily/standup recap.
Triage what needs the user's attention in Slack — unread mentions, DMs, and active threads they're in — ranked by urgency with a suggested action each. Use for 'what needs my attention on Slack', 'triage my Slack', or 'what should I respond to'.
Compose and send a Slack message to a channel, thread, or DM (or draft one for approval). Use when the user asks to post/send/DM something on Slack, or to reply in a specific thread.
Find Slack messages that need a response from the user and draft replies for them. Use for 'draft replies to my Slack', 'what am I behind on and write responses', or drafting a reply to a specific thread/DM.
Router + guardrails for Slack work — search, read, summarize, triage, draft replies, and send messages. Use whenever the user asks to do anything in Slack (read a channel, catch up, reply, post, react, find a message/person). Delegates to the specialized slack-* skills.
| name | gws-shared |
| version | 1.0.0 |
| description | gws CLI: Shared patterns for authentication, global flags, and output formatting. |
| metadata | {"openclaw":{"category":"productivity","requires":{"bins":["gws"]}}} |
Mode: This CLI is power-user / local (nomos-mac) mode only, where Google is reached through the local
gwsCLI. In hosted mode there is no local CLI: the user connects Google entirely in the app at Settings → Integrations → Google (server-side OAuth). Never tell a hosted user to run a terminal command.
gws ships as the @googleworkspace/cli npm dependency and is invoked as
npx @googleworkspace/cli … (the bare gws command is not assumed to be on $PATH).
If it is missing, install it in the project with pnpm add @googleworkspace/cli and
verify with npx @googleworkspace/cli --version.
The product path is the Nomos Settings UI at Integrations → Google
(/integrations/google): it captures the OAuth Client ID / Secret / GCP project and
finalizes the account. The terminal path below is a fallback for when credentials are
already configured in ~/.config/gws/.
# First time only: bootstrap OAuth credentials (requires gcloud)
npx @googleworkspace/cli auth setup
# Browser-based OAuth (interactive)
npx @googleworkspace/cli auth login
Never tell the user to open "Claude Code" settings (this product is Nomos), and never
suggest npx gws auth login (the npm package is @googleworkspace/cli, not gws).
Advanced: a service account can be used instead by setting
GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json. This is not how the standard local deployment connects Google; preferauth login.
| Flag | Description |
|---|---|
--format <FORMAT> | Output format: json (default), table, yaml, csv |
--dry-run | Validate locally without calling the API |
--sanitize <TEMPLATE> | Screen responses through Model Armor |
gws <service> <resource> [sub-resource] <method> [flags]
| Flag | Description |
|---|---|
--params '{"key": "val"}' | URL/query parameters |
--json '{"key": "val"}' | Request body |
-o, --output <PATH> | Save binary responses to file |
--upload <PATH> | Upload file content (multipart) |
--page-all | Auto-paginate (NDJSON output) |
--page-limit <N> | Max pages when using --page-all (default: 10) |
--page-delay <MS> | Delay between pages in ms (default: 100) |
--dry-run for destructive operations--sanitize for PII/content safety screeningzsh ! expansion: Sheet ranges like Sheet1!A1 contain ! which zsh interprets as history expansion. Use double quotes with escaped inner quotes instead of single quotes:
# WRONG (zsh will mangle the !)
gws sheets +read --spreadsheet ID --range 'Sheet1!A1:D10'
# CORRECT
gws sheets +read --spreadsheet ID --range "Sheet1!A1:D10"
JSON with double quotes: Wrap --params and --json values in single quotes so the shell does not interpret the inner double quotes:
gws drive files list --params '{"pageSize": 5}'