ワンクリックで
gmail
Send, draft, read, reply, forward, and triage Gmail emails using the gws CLI. Use when the user asks to do anything with email.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Send, draft, read, reply, forward, and triage Gmail emails using the gws CLI. Use when the user asks to do anything with email.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Convert a Markdown file into a clean, print-ready PDF. Use when the user asks to render a `.md` to PDF, generate a resume/report PDF from markdown, or produce a polished printable document from a markdown source. Wraps pandoc + Chrome headless and ships with a sensible default stylesheet you can swap out.
Search songs, manage playlists, control playback queue, and play/pause on Spotify. Use when the user asks anything about Spotify — music, playlists, queue, playing, searching for songs.
Read and edit Google Docs using the gws CLI — insert, delete, replace text, apply formatting, manage headings, lists, tables, and images. Use when the user asks to read, edit, update, or format a Google Doc.
| name | gmail |
| description | Send, draft, read, reply, forward, and triage Gmail emails using the gws CLI. Use when the user asks to do anything with email. |
| allowed-tools | ["Bash","Read","Write","Edit","Glob","Grep"] |
This skill uses the gws CLI (/opt/homebrew/bin/gws) to interact with Gmail. The CLI handles OAuth, MIME encoding, and base64 automatically.
Activate this skill whenever the user asks to:
gws gmail +send --to "recipient@example.com" --subject "Subject" --body "Body text"
Options:
--cc, --bcc — additional recipients (comma-separated)--from — send-as alias-a / --attach <PATH> — attach file (repeatable, 25MB total limit)--html — treat body as HTML (use fragment tags like <p>, <b>, <a>, no wrapper needed)Drafts require building a .eml file and uploading it:
# 1. Write the .eml file (MUST be in current working directory — gws blocks paths outside cwd)
cat > draft-email.eml << 'EOF'
From: me
To: recipient@example.com
Subject: Your subject here
Content-Type: text/plain; charset="UTF-8"
Email body goes here.
EOF
# 2. Create the draft
gws gmail users drafts create \
--params '{"userId":"me"}' \
--upload draft-email.eml \
--upload-content-type message/rfc822
# 3. Clean up
rm draft-email.eml
The response includes id (draft ID) and message.id (message ID).
For CC/BCC in drafts, add headers to the .eml file:
Cc: someone@example.com
Bcc: hidden@example.com
For HTML drafts, change the Content-Type and use HTML in the body:
Content-Type: text/html; charset="UTF-8"
<p>Hello <b>world</b></p>
gws gmail users drafts list --params '{"userId":"me"}'
gws gmail users drafts send --params '{"userId":"me"}' --json '{"id":"DRAFT_ID"}'
# Write updated .eml file, then:
gws gmail users drafts update \
--params '{"userId":"me","id":"DRAFT_ID"}' \
--upload updated-draft.eml \
--upload-content-type message/rfc822
gws gmail users drafts delete --params '{"userId":"me","id":"DRAFT_ID"}'
Warning: This permanently deletes the draft — it does NOT trash it.
# Plain text body
gws gmail +read --id MESSAGE_ID
# With headers (From, To, Subject, Date)
gws gmail +read --id MESSAGE_ID --headers
# JSON output
gws gmail +read --id MESSAGE_ID --format json
# HTML body
gws gmail +read --id MESSAGE_ID --html
# Show unread inbox (default: 20 messages)
gws gmail +triage
# Limit results
gws gmail +triage --max 5
# Custom search query
gws gmail +triage --query "from:boss@company.com"
gws gmail +triage --query "subject:urgent is:unread"
# Show labels
gws gmail +triage --labels
# Table format (default) or JSON
gws gmail +triage --format table
gws gmail +triage --format json
# Reply to sender only
gws gmail +reply --message-id MESSAGE_ID --body "Thanks, got it!"
# Reply with CC
gws gmail +reply --message-id MESSAGE_ID --body "Looping in Carol" --cc carol@example.com
# Reply with attachment
gws gmail +reply --message-id MESSAGE_ID --body "See attached" -a report.pdf
# HTML reply
gws gmail +reply --message-id MESSAGE_ID --body "<b>Noted</b>" --html
# Reply to all recipients
gws gmail +reply-all --message-id MESSAGE_ID --body "Sounds good!"
# Reply-all but exclude someone
gws gmail +reply-all --message-id MESSAGE_ID --body "Updated" --remove bob@example.com
# Forward with optional note
gws gmail +forward --message-id MESSAGE_ID --to dave@example.com --body "FYI see below"
# Forward with attachment
gws gmail +forward --message-id MESSAGE_ID --to dave@example.com -a notes.pdf
# List messages matching a query
gws gmail users messages list --params '{"userId":"me","q":"from:someone@example.com subject:invoice"}'
# Get a specific message
gws gmail users messages get --params '{"userId":"me","id":"MESSAGE_ID"}'
gws gmail users messages trash --params '{"userId":"me","id":"MESSAGE_ID"}'
gws gmail users messages untrash --params '{"userId":"me","id":"MESSAGE_ID"}'
# Add/remove labels from multiple messages
gws gmail users messages batchModify --params '{"userId":"me"}' \
--json '{"ids":["MSG_ID_1","MSG_ID_2"],"addLabelIds":["STARRED"]}'
gws CLI — install via brew install talktoajayprakash/tap/gws (typically at /opt/homebrew/bin/gws on Apple Silicon or /usr/local/bin/gws on Intel Mac)--params '{"userId":"me"}' for low-level API calls (drafts, messages)+send, +read, +triage, +reply, +forward) do NOT need userId.eml file after creation+triage is read-only and never modifies the mailbox