openai/gmail
Manage Gmail inbox triage, mailbox search, thread summaries, action extraction, reply drafting, and email forwarding through connected Gmail data. Use when the user wants to inspect a mailbox or thread, search email with Gmail query syntax, summarize messages, extract decisions and follow-ups, prepare replies or forwarded messages, or organize messages with explicit confirmation before send, archive, delete, or label actions.
npx skills add https://github.com/openai/plugins --skill gmail
Use this skill to turn noisy email threads into clear summaries, action lists, and ready-to-send drafts. Prefer Gmail-native search and read workflows, preserve message context, and avoid changing message state without explicit user intent.
| Workflow | Skill |
| --- | --- |
| Inbox triage, urgency ranking, and follow-up detection | ../gmail-inbox-triage/SKILL.md |
| Task | Reference |
| --- | --- |
| Search planning, refinement, pagination, and body-fetch strategy | references/search-workflow.md |
| Pasted Gmail URL recognition, exact-ID attempts, and fast-fail recovery | references/pasted-link-workflow.md |
| Label application, relabeling, and label-based cleanup | references/label-actions.md |
| Self-delivery requests such as "email me," "send this to me," or automation delivery | references/self-delivery.md |
| Reply drafting, reply-all decisions, and tone matching | references/reply-workflow.md |
| Email forwarding, context notes, and intent framing | references/forward-workflow.md |
When the user supplies a Gmail web URL, do not pass the URL directly to Gmail tools or turn it into a broad mailbox search. Follow the pasted-link workflow for a bounded exact-ID attempt and immediate recovery guidance when the link cannot be resolved.
For mailbox analysis requests such as triage, follow-up detection, topic summaries, cleanup, thread understanding, or "what matters here" questions, use this pattern:
search_emails first. Use Gmail query syntax for most mailbox tasks because it gives the model precise control over dates, senders, unread state, attachments, subjects, and exclusions, and search_emails returns richer summaries than search_email_ids without requiring an extra hop.search_emails returns message-level summaries, not thread-grouped results. If several messages look related or a conversation may matter, expand the specific items of interest with read_email_thread.tags only in the connector's expected shape: list[str]. Do not pass a single string. Prefer uppercase Gmail system labels when filtering by built-in labels.label:foo, and use tags for built-in/system-label filtering when that is cleaner.tags include INBOX, STARRED, TRASH, DRAFT, SENT, SPAM, UNREAD, and IMPORTANT. For All Mail, prefer Gmail query syntax such as in:anywhere rather than guessing a tag value.batch_read_email when you need the body of multiple shortlisted emails, and escalate to read_email_thread only when the surrounding conversation changes the answer.search_email_ids only when the next tool specifically needs message IDs and the richer search_emails response would not help you decide what to do.If thread or inbox data is missing, say that Gmail access may be unavailable or scoped to the wrong account and ask the user to reconnect or clarify which mailbox or thread should be used.
Take openai/gmail from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.