gmail skill
✓ VerifiedManage Gmail emails, labels, drafts, and attachments to organize inboxes and automate email workflows.
- GitHub stars
- 112
- Files
- 1
- Last commit
- Nov 11, 2026
- License
- MIT
- Allowed tools
- —
What does the gmail skill do?
gmail manages Gmail emails, labels, drafts, and attachments to organize inboxes and automate email workflows.
Summary generated from the skill's SKILL.md.
About the gmail skill
Managing Gmail communications and organizing inboxes is what this skill enables for developers and users. It provides a way to handle the full lifecycle of an email, from searching for specific messages using Gmail query syntax to sending replies or creating drafts for later review. Agents can use these tools to perform inbox triage by moving messages between labels, archiving old mail, or trashing unwanted content.
When an agent needs to organize a workspace, it can use gmail_labels_list to identify specific label IDs before applying them via gmail_labels_add or gmail_messages_move_to_label. The skill also handles file management by allowing users to retrieve attachments through gmail_attachments_get. For those who prefer a multi-step approach to communication, the draft workflow provides tools to create, update, and eventually send messages. This ensures that sensitive or complex emails can be prepared and reviewed before they are officially sent to a recipient.
What an agent can do with it
- 1Organize inbox with labelsA developer can instruct an agent to categorize incoming mail by moving it into specific folders.
- 2Prepare and send draftsAn AI client can draft a response to an email for a user to review before it is sent.
- 3Perform inbox cleanupUsers can automate the process of archiving or deleting old messages to keep their inbox clean.
- 4Retrieve email attachmentsAn agent can download files that were sent as part of an email message.
Written from the skill's SKILL.md. Every use case is checked against a quote from it.
How to install the gmail skill
Each command copies the skill folder into the client's skills directory. Restart the client or start a new session to load it.Install the gmail skill in Plugin
/plugin marketplace add hyperfx-ai/marketing-skills /plugin install hyper-marketing@hyperfx-marketing-skills
Install the gmail skill in Claude Code
~/.claude/skills/gmail/SKILL.md
$ npx degit hyperfx-ai/marketing-skills/skills/gmail ~/.claude/skills/gmailInstall the gmail skill in Claude Code (project)
.claude/skills/gmail/SKILL.md
$ npx degit hyperfx-ai/marketing-skills/skills/gmail .claude/skills/gmailInstall the gmail skill in Codex
~/.agents/skills/gmail/SKILL.md
$ npx degit hyperfx-ai/marketing-skills/skills/gmail ~/.agents/skills/gmailInstall the gmail skill in Gemini CLI
~/.gemini/skills/gmail/SKILL.md
$ npx degit hyperfx-ai/marketing-skills/skills/gmail ~/.gemini/skills/gmailInstall the gmail skill in Claude.ai
npx degit hyperfx-ai/marketing-skills/skills/gmail gmail && zip -r gmail.zip gmail # claude.ai → Customize → Skills → + → Create skill → Upload a skill → gmail.zip
Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the scripts before you let an agent run them. How checks work
- Source repository linked and reachablehyperfx-ai/marketing-skills/skills/gmail is public and reachablegithub.com/hyperfx-ai/marketing-skills/tree/HEAD/skills/gmai ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit 2026-11-11github.com/hyperfx-ai/marketing-skills/commits ↗Pass
- No download-and-run or credential theft in scriptsNo scripts in the skill folderPass
- No hidden instructions in SKILL.mdNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/hyperfx-ai/marketing-skills/blob/HEAD/skills/gmai ↗Pass
- Pre-approved tools are scopedNo pre-approved tools; the agent asks before using onegithub.com/hyperfx-ai/marketing-skills/blob/HEAD/skills/gmai ↗Pass
- SKILL.md follows the Agent Skills formatValid name and description; says when to use it; 141 linesgithub.com/hyperfx-ai/marketing-skills/blob/HEAD/skills/gmai ↗Pass
SKILL.md
View on GitHubGmail Email Management
This skill provides comprehensive guidance for managing Gmail emails, labels, and organization.
Requirements
- Hyper MCP installed and connected. https://app.hyperfx.ai/mcp
- Gmail integration enabled at https://app.hyperfx.ai/apps.
How to run the tools in this skill
Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:
| Surface | Find a tool | Run it |
|---|---|---|
| Hyper chat | Call the tool by its name; search_tools(queries=["<provider> <action>"]) shows its parameters |
<name>(...) |
| MCP client (Claude, Cursor, Codex, ChatGPT) | search("<what you want to do>"), then describe("<name>") |
call_read("<name>", {...}), call_write or call_destructive: the one that describe names in call_with |
| Hyper CLI | hyperai search "<what you want to do>", then hyperai describe <name> |
hyperai call <name> --json '{...}' |
If a tool is not found: in Hyper chat, find its toolkit id with discover_toolkits and pass it to enable_toolkit. On an MCP client or the CLI, tell the user which integration to connect in Hyper.
Label Operations - Critical Distinctions
ADD LABEL (keeps email in current location + adds new label)
- Use:
gmail_labels_add - Use case: Adding labels WITHOUT moving the email from its current location
- Example: Email stays in INBOX and also gets labeled "Important"
MOVE TO LABEL (removes from INBOX + adds to target label)
- Use:
gmail_messages_move_to_label - Use case: Moving email OUT of inbox and INTO a specific label/folder
- Example: Email is removed from INBOX and moved to "Archive" or "Work"
- This performs TWO operations: removes INBOX label + adds target label
REMOVE LABEL (removes specific label)
- Use:
gmail_labels_remove - Use case: Removing labels from an email
- Can remove any label including INBOX
Getting Label IDs
CRITICAL: Most Gmail label operations require label IDs, NOT label names.
- Always call
gmail_labels_listfirst to get available labels and their IDs - Label IDs look like: "Label_123", "Label_456", or system labels: "INBOX", "SENT", "TRASH"
- Never guess or make up label IDs
Common Workflows
Email Triage/Organization
- Call
gmail_labels_listto see available labels - Call
gmail_messages_listto get emails - Use
gmail_messages_move_to_labelto move emails from INBOX to appropriate labels
Adding Categories (keep in inbox)
- Call
gmail_labels_listto get label IDs - Use
gmail_labels_addto categorize emails while keeping them in INBOX
Creating New Labels
- Use
gmail_labels_createif the desired label doesn't exist - Returns the new label's ID for immediate use
Searching and Listing Messages
gmail_messages_list supports full Gmail search query syntax:
queryparameter accepts the same syntax as Gmail's search box- Examples:
"is:unread","from:user@example.com","has:attachment subject:invoice" - Combine operators:
"from:user@example.com is:unread has:attachment" - With no
query, the tool adds-in:draft. When you pass aquery, add-in:draftto it yourself - The
labelparameter takes the label NAME (or INBOX, SENT, SPAM, TRASH, CATEGORY_*), not aLabel_…ID. An ID is ignored with no error
Drafts Workflow
Creating and sending draft emails
gmail_drafts_create- Create initial draftgmail_drafts_update- Edit existing draft (optional)gmail_drafts_send- Send the draft as email
Managing drafts
gmail_drafts_list- List all draft emailsgmail_drafts_get- Get a specific draft by IDgmail_drafts_delete- Delete a draft without sending
When to use drafts vs direct send
- Use
gmail_messages_sendfor immediate one-step sending - Use the draft workflow when a person must review or edit the email before it is sent
- To send later, pass
scheduled_at="<ISO datetime>"togmail_messages_send; a draft does not schedule
Replies
gmail_messages_reply(message_id=..., body=..., reply_all=False)sends a reply at oncegmail_drafts_create(reply_to_message_id=..., mode="reply", body=...)drafts a reply;modeis also"reply_all", or"forward"withto
Email Actions - Important Distinctions
Archive vs Trash
gmail_messages_archive- Removes from INBOX but keeps in "All Mail" (recoverable, not deleted)gmail_messages_trash- Moves to Trash folder (will be auto-deleted after 30 days)- Archive is the preferred way to "clean up" inbox while keeping emails
Attachments
gmail_attachments_get- Download attachments from received emails- To attach files, pass their workspace file IDs in
file_ids, not/files/...paths (files_createreturns thefile_id). An unknown ID is skipped with no error, so check each ID before you send
Tool Selection Quick Reference
| Action | Tool |
|---|---|
| Add label X | gmail_labels_add |
| Move to label X | gmail_messages_move_to_label |
| Remove from inbox | gmail_messages_move_to_label (move to target) OR gmail_labels_remove (just remove INBOX) |
| Archive email | gmail_messages_archive (preferred for cleanup) |
| Delete/trash email | gmail_messages_trash |
| Send email now | gmail_messages_send |
| Send email later | gmail_messages_send with scheduled_at="<ISO datetime>" |
| Reply now | gmail_messages_reply |
| Draft a reply or forward | gmail_drafts_create with reply_to_message_id |
Files in this skill
1gmail skill questions
How do I install the gmail skill in Claude Code?
Run npx degit hyperfx-ai/marketing-skills/skills/gmail ~/.claude/skills/gmail. Claude Code loads skills from ~/.claude/skills (all projects) or .claude/skills (one project) and uses a skill when its description matches the task.
Which clients can use the gmail skill?
Any client that reads the Agent Skills format: Claude Code, Codex, Gemini CLI and claude.ai (upload as a ZIP). Scripts in the skill run only where the client allows code execution.
How do I get the correct ID for a Gmail label?
You should always call the gmail_labels_list tool first to retrieve available labels and their corresponding IDs, as most operations require IDs rather than names.
Should I archive or trash an email to clean up my inbox?
Archiving is the preferred method for cleaning up an inbox because it removes the email from the INBOX but keeps it in 'All Mail' where it remains recoverable.
How can I send an email at a later time?
To schedule an email for later, use the gmail_messages_send tool and provide a scheduled_at parameter with an ISO datetime.