different-ai

gmail-chrome

@different-ai/gmail-chrome
different-ai
152
21 forks
Updated 1/6/2026
View on GitHub

Automate Gmail actions using Chrome DevTools MCP - search, read, compose, reply, and manage emails

Installation

$skills install @different-ai/gmail-chrome
Claude Code
Cursor
Copilot
Codex
Antigravity

Details

Path.opencode/skill/gmail-chrome/skill.md
Branchmain
Scoped Name@different-ai/gmail-chrome

Usage

After installing, this skill will be available to your AI coding assistant.

Verify installation:

skills list

Skill Instructions


name: gmail-chrome description: Automate Gmail actions using Chrome DevTools MCP - search, read, compose, reply, and manage emails license: MIT compatibility: opencode metadata: audience: developers workflow: automation

What I Do

  • Search and read emails in Gmail
  • Compose and send new emails
  • Reply to existing threads
  • Archive, delete, and label emails
  • Navigate Gmail efficiently using keyboard shortcuts

Prerequisites

  • Chrome browser open with Gmail tab
  • Chrome DevTools MCP server running (configured in opencode.json)
  • Logged into Gmail in the browser

Context Management Strategy

IMPORTANT: Gmail's DOM is complex. To prevent context overflow:

  1. Take snapshots sparingly - Only snapshot when you need to find elements
  2. Use keyboard shortcuts when possible (faster than clicking)
  3. Work in batches - Complete one action fully before starting next
  4. Clear context between major operations

Core Gmail Operations

1. Navigate to Gmail

chrome_navigate_page(url: "https://mail.google.com")
chrome_wait_for(text: "Inbox")

2. Search for Emails

Gmail search is the fastest way to find emails:

# Take snapshot to find search box
chrome_take_snapshot()

# Find the search input (usually has placeholder "Search mail")
chrome_fill(uid: "<search-input-uid>", value: "from:sender@example.com")
chrome_press_key(key: "Enter")
chrome_wait_for(text: "results")

Common search operators:

  • from:email@example.com - From specific sender
  • to:email@example.com - To specific recipient
  • subject:keyword - Subject contains keyword
  • is:unread - Unread emails only
  • is:starred - Starred emails
  • has:attachment - Has attachments
  • after:2024/01/01 - After date
  • before:2024/12/31 - Before date
  • label:important - Has label

3. Read an Email

# After search results appear, take snapshot
chrome_take_snapshot()

# Click on email row to open it
chrome_click(uid: "<email-row-uid>")

# Wait for email to load
chrome_wait_for(text: "Reply")

# Take snapshot to read content
chrome_take_snapshot()

4. Compose New Email

Using keyboard shortcut (preferred):

# Press 'c' to compose (Gmail shortcut)
chrome_press_key(key: "c")
chrome_wait_for(text: "New Message")

# Take snapshot to find compose fields
chrome_take_snapshot()

# Fill in the compose form
chrome_fill(uid: "<to-field-uid>", value: "recipient@example.com")
chrome_press_key(key: "Tab")
chrome_fill(uid: "<subject-field-uid>", value: "Email Subject")
chrome_press_key(key: "Tab")
chrome_fill(uid: "<body-field-uid>", value: "Email body content here...")

# Send with Ctrl+Enter or click Send
chrome_press_key(key: "Control+Enter")

5. Reply to Email

# With email open, press 'r' to reply
chrome_press_key(key: "r")
chrome_wait_for(text: "Send")

# Take snapshot to find reply box
chrome_take_snapshot()

# Type reply
chrome_fill(uid: "<reply-body-uid>", value: "Your reply here...")

# Send
chrome_press_key(key: "Control+Enter")

6. Archive Email

# With email open or selected, press 'e' to archive
chrome_press_key(key: "e")

7. Delete Email

# With email open or selected, press '#' to delete
chrome_press_key(key: "Shift+3")  # '#' key

8. Star/Unstar Email

# Press 's' to star/unstar
chrome_press_key(key: "s")

9. Mark as Read/Unread

# Press 'Shift+i' to mark as read
chrome_press_key(key: "Shift+i")

# Press 'Shift+u' to mark as unread
chrome_press_key(key: "Shift+u")

10. Navigate Between Emails

# Press 'j' for next email
chrome_press_key(key: "j")

# Press 'k' for previous email
chrome_press_key(key: "k")

# Press 'u' to go back to list
chrome_press_key(key: "u")

Gmail Keyboard Shortcuts Reference

ActionShortcutNotes
ComposecOpens new compose window
ReplyrReply to current email
Reply allaReply to all recipients
ForwardfForward email
SendCtrl+EnterSends composed email
ArchiveeArchives selected/open email
Delete# (Shift+3)Moves to trash
StarsToggle star
Mark readShift+iMark as read
Mark unreadShift+uMark as unread
Next emailjMove to next in list
Previous emailkMove to previous
Back to listuReturn to inbox view
Search/Focus search box
Select all*+aSelect all visible
Deselect all*+nDeselect all

Element Identification Tips

Gmail elements can be identified by:

  1. Aria labels: Most buttons have descriptive aria-labels

    • "Compose" button
    • "Send" button
    • "Archive" button
  2. Placeholder text: Input fields often have placeholders

    • "Search mail"
    • "To"
    • "Subject"
  3. Content text: Email subjects and sender names

Example: Find and Reply to Specific Email

# 1. Navigate to Gmail
chrome_navigate_page(url: "https://mail.google.com")
chrome_wait_for(text: "Inbox")

# 2. Search for the email
chrome_take_snapshot()  # Find search box
chrome_fill(uid: "<search-uid>", value: "from:important@client.com subject:urgent")
chrome_press_key(key: "Enter")
chrome_wait_for(text: "results")

# 3. Open the email
chrome_take_snapshot()  # Find email row
chrome_click(uid: "<email-row-uid>")
chrome_wait_for(text: "Reply")

# 4. Read the email content
chrome_take_snapshot()
# ... process the email content from snapshot ...

# 5. Reply
chrome_press_key(key: "r")
chrome_wait_for(text: "Send")
chrome_take_snapshot()  # Find reply body
chrome_fill(uid: "<reply-body-uid>", value: "Thank you for your email...")
chrome_press_key(key: "Control+Enter")

Example: Bulk Archive Emails

# 1. Search for emails to archive
chrome_fill(uid: "<search-uid>", value: "is:read before:2024/01/01")
chrome_press_key(key: "Enter")
chrome_wait_for(text: "results")

# 2. Select all visible emails
chrome_press_key(key: "*")  # Open selection menu
chrome_press_key(key: "a")  # Select all

# 3. Archive all selected
chrome_press_key(key: "e")

Troubleshooting

Gmail Not Loading

  • Check if logged in
  • Try refreshing: chrome_navigate_page(type: "reload")

Compose Window Not Opening

  • Ensure keyboard shortcuts are enabled in Gmail settings
  • Try clicking compose button instead of 'c' key

Elements Not Found

  • Gmail DOM is dynamic; take a fresh snapshot
  • Wait for page to fully load
  • Try scrolling to make elements visible

Slow Response

  • Gmail is heavy; allow extra time for actions
  • Use chrome_wait_for() between major operations

When to Use This Skill

  • Automating email workflows
  • Bulk email operations
  • Reading and responding to emails programmatically
  • Email search and analysis
  • Testing email-related features