gws-gmail-watch — Claude Code command: stream Gmail as NDJSON
A slash command that watches for new Gmail messages and streams them as NDJSON. Useful when incoming mail has to land in files or a pipeline.
npx claude-code-templates@latest --command google-workspace/gws-gmail-watchWhat gws-gmail-watch does
Under the hood it calls gws gmail +watch from the Google Workspace CLI. The command sets up a Pub/Sub subscription, pulls new messages in batches, and prints one NDJSON line per message. With --output-dir each message goes to its own JSON file instead.
Flags control the label filter (--label-ids), message format (--msg-format), batch size (--max-messages, 10 by default), and the gap between pulls (--poll-interval, 5 seconds). --once takes a single batch and exits. --cleanup deletes the Pub/Sub resources on exit.
You need gws installed and authentication already configured — run gws auth status to check. A Gmail watch expires after 7 days, so the command has to be re-run to renew it. Skip --cleanup and the Pub/Sub resources stay behind, which helps reconnection but leaves cleanup to you.
What it helps with
- stream new Gmail messages as NDJSON
- save each message to a separate JSON file
- filter incoming mail by INBOX and UNREAD labels
- pull one batch of messages and exit
- reconnect to an existing Pub/Sub subscription
Example prompts for the agent
- Watch for new emails in the
my-gcp-projectproject - Pull one batch from INBOX and exit
- Write new messages to files in
./emails
How to install gws-gmail-watch
1claude-code-templates
npx claude-code-templates@latest --command google-workspace/gws-gmail-watch2Manually: put the files in place
.claude/commands/gws-gmail-watch.mdCall it with /gws-gmail-watch. For all projects use ~/.claude/commands/
Manually: put the files in place
~/.codex/prompts/gws-gmail-watch.mdCall it with /prompts:gws-gmail-watch. Codex marks this format deprecated in favour of skills
Manually: put the files in place
.github/prompts/gws-gmail-watch.prompt.mdManually: put the files in place
.gemini/commands/gws-gmail-watch.tomlGemini stores commands as TOML: the prompt text goes into the prompt field
Questions about gws-gmail-watch
How do I install gws-gmail-watch in Claude Code?
Run npx claude-code-templates@latest --command google-workspace/gws-gmail-watch, then check that .claude/commands/gws-gmail-watch.md is in place.
What does gws-gmail-watch do?
It runs gws gmail +watch: new Gmail messages are pulled and streamed as NDJSON. Each message can also be written to its own JSON file.
What does gws-gmail-watch need to run?
The Google Workspace CLI installed and authentication configured — verify with gws auth status. A Gmail watch expires after 7 days and must be renewed by running the command again.
Source text
gws-gmail-watch.md · MIT
--- allowed-tools: Bash, Read, Write, Edit argument-hint: "[resource] [method] [flags]" description: "Gmail: Watch for new emails and stream them as NDJSON." --- # Google Workspace Gmail Watch Execute Google Workspace Gmail Watch operations: $ARGUMENTS ## Prerequisites - Google Workspace CLI (`gws`) must be installed - Authentication configured: Run `gws auth status` to verify - Review `gws gmail-watch --help` for all available commands ## Available Resources and Methods # gmail +watch > **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. Watch for new emails and stream them as NDJSON ## Usage ```bash gws gmail +watch ``` ## Flags | Flag | Required | Default | Description | |------|----------|---------|-------------| | `--project` | — | — | GCP project ID for Pub/Sub resources | | `--subscription` | — | — | Existing Pub/Sub subscription name (skip setup) | | `--topic` | — | — | Existing Pub/Sub topic with Gmail push permission already granted | | `--label-ids` | — | — | Comma-separated Gmail label IDs to filter (e.g., INBOX,UNREAD) | | `--max-messages` | — | 10 | Max messages per pull batch | | `--poll-interval` | — | 5 | Seconds between pulls | | `--msg-format` | — | full | Gmail message format: full, metadata, minimal, raw | | `--once` | — | — | Pull once and exit | | `--cleanup` | — | — | Delete created Pub/Sub resources on exit | | `--output-dir` | — | — | Write each message to a separate JSON file in this directory | ## Examples ```bash gws gmail +watch --project my-gcp-project gws gmail +watch --project my-project --label-ids INBOX --once gws gmail +watch --subscription projects/p/subscriptions/my-sub gws gmail +watch --project my-project --cleanup --output-dir ./emails ``` ## Tips - Gmail watch expires after 7 days — re-run to renew. - Without --cleanup, Pub/Sub resources persist for reconnection. - Press Ctrl-C to stop gracefully. ## See Also - [gws-shared](../gws-shared/SKILL.md) — Global flags and auth - [gws-gmail](../gws-gmail/SKILL.md) — All send, read, and manage email commands ## Usage ```bash # List available resources and methods gws gmail-watch --help # Inspect method schema before calling gws schema gmail-watch.<resource>.<method> # Execute command with arguments gws gmail-watch $ARGUMENTS ``` ## Task Execute the requested Gmail Watch operation: $ARGUMENTS 1. **Verify Prerequisites** - Check `gws` is installed: `gws --version` - Verify authentication: `gws auth status` - Review available commands: `gws gmail-watch --help` 2. **Inspect Method Schema** - Before calling any method, inspect its parameters - Use `gws schema` to understand required fields - Review parameter types and constraints 3. **Execute Operation** - Build command with appropriate flags - Use `--params` for query/path parameters - Use `--json` for request body - Handle pagination with `--max-results` or `--page-token` 4. **Error Handling** - Check command output for errors - Review API quotas and rate limits - Handle authentication issues - Retry transient failures --- **License**: Apache License 2.0 **Source**: [Google Workspace CLI](https://github.com/googleworkspace/cli) **Original Skill**: `gws-gmail-watch`
© davila7 · MIT · davila7/claude-code-templates