Gmail
Search, read threads, analyze trends, and get inbox insights

Gmail Reader

Superhuman inbox reading. Search with precision, understand conversations, analyze patterns.

Capabilities

Search — Find any email using natural language or Gmail operators. Iterative refinement when results are too broad. Groups results intelligently by sender, thread, or date.

Thread Deep-Dive — Fetch complete conversations with full context. See who said what, when. Strips reply clutter to show just the new content.

Inbox Analytics — Who emails you most? When do emails arrive? Which threads are longest? Compute metrics across any time period or filter.

Digest — Summarize a day, week, or any period. Key senders, important threads, detected action items.

Usage

Ask naturally: "Find emails from Sarah about the budget," "What did my inbox look like last week?", "Show me the full thread with Bob about Q4."

For power users, Gmail operators work directly: from:boss@company.com is:unread has:attachment.

When to use
User asks about their email: finding messages, checking junk/spam levels, seeing who emails them most, getting a digest of what's happened, or understanding a conversation thread

INSTALLER

To install Gmail:

1
📥
Download and install skill files rm -rf ./skills/sauna/gmail.inbox.reader && curl -fsSL "https://sk.ills.app/api/skill/gmail.inbox.reader/download" | tar -xzf - -C ./skills/sauna/ && cat ./skills/sauna/gmail.inbox.reader/SKILL.md
2
▶️
Check if Gmail is connected. If not, help the user connect their account. Once connected, explain that you can analyze their inbox to learn their email patterns and capture their writing style from sent emails—but this takes a few minutes. Ask if they'd like to run the analysis now or skip it. If yes, run taskSetup Gmail Connection. If no, explain that you can still help them search, analyze, and understand their inbox.

SKILL.MD

Gmail Reader Agent Rules

Always Use Tasks, Not Code Directly

Do not call code bullets directly. Always route through the appropriate task:

  • "How much junk" / "spam levels" / "who emails me" → <a href="/task/gmail.inbox.analyze" class="bullet-pill"><img src="/icons/bullets/task.svg" alt="task" class="bullet-pill-icon" /><span class="pill-name">Analyze Inbox</span></a>
  • "Find email about X" / "emails from Y" → <a href="/task/gmail.inbox.search" class="bullet-pill"><img src="/icons/bullets/task.svg" alt="task" class="bullet-pill-icon" /><span class="pill-name">Search Gmail</span></a>
  • "What happened today/this week" → <a href="/task/gmail.inbox.digest" class="bullet-pill"><img src="/icons/bullets/task.svg" alt="task" class="bullet-pill-icon" /><span class="pill-name">Inbox Digest</span></a>
  • "Show me that thread" / "the conversation about X" → <a href="/task/gmail.inbox.thread" class="bullet-pill"><img src="/icons/bullets/task.svg" alt="task" class="bullet-pill-icon" /><span class="pill-name">Thread Deep-Dive</span></a>

The tasks contain all the interpretation logic, fetch sizing, and human-friendly behavior. Calling <a href="/code/gmail.inbox.fetch" class="bullet-pill"><img src="/icons/bullets/code.svg" alt="code" class="bullet-pill-icon" /><span class="pill-name">Fetch Gmail Messages</span></a> directly bypasses everything that makes this skill smart.

Be Human First

Users don't think in Gmail queries. They say "junk" and mean low-value emails. They say "important" and mean from people they care about. Your job is to understand what they actually want, not translate literally.

The pattern: Make a smart guess → state what you're doing → let them correct you.

Good: "Checking your promotions and newsletters—that's usually what people mean by junk. Want me to include actual spam too?"

Bad: "What specifically do you mean by junk? Spam folder, promotions, updates, or something else?"

Refer to sliceInbox Intent Patterns for common phrasings and what they usually mean.

Be Honest About Time

Large fetches take time. Don't silently churn—tell the user what's happening.

Before starting: If fetching 100+ messages, say so: "I'll check 200 emails from the last month—takes about 20 seconds. Or I can sample 50 and estimate."

During: Give progress signals when possible: "Found 47 promotional emails so far..."

After: Report what you actually did: "Checked 150 messages from Dec 1-15."

Right-Size Your Fetches

Match fetch volume to intent. More isn't better—it's slower.

User wants Fetch Why
Quick junk/spam check 50-100 Sample is enough to extrapolate
Find specific email 30, refine if needed They want one thing
Today/this week digest 50-100 Summarize, not enumerate
"Who emails me most" 100-150 Enough for patterns
Full month analytics 200+ Explicitly comprehensive

Default to smaller. A 50-message sample that answers in 5 seconds beats a 200-message crawl that takes 30.

When in doubt: "I can do a quick check of 50 recent emails, or a thorough scan of 200. Which do you want?"

Query Construction

Translate natural language to Gmail operators, but interpret intent, not just words.

"Emails from Sarah last week" → from:sarah newer_than:7d

When user mentions a person by first name only, use partial match from:sarah rather than guessing email. For vague "recent emails," default to newer_than:7d.

Combine operators for precision: "Unread newsletters with attachments" → is:unread category:promotions has:attachment

Presenting Results

Lead with the answer. For "who emails me most," show top senders first. For "find the email about X," surface the most likely match with reasoning.

Group intelligently:

  • Many senders → group by sender with counts
  • Few senders → group by thread
  • Time-based request → group by date

Snippets are usually enough. Only fetch full body when user says "read" or "show me the full email."

Refinement

Offer to narrow when: 30+ results, mixed topics, user seems to want something specific. "Want me to narrow to just this week?"

Offer to broaden when: zero or sparse results, query might be too specific. "No exact matches—want me to try related terms?"

This Skill Is Read-Only

You can search, analyze, and report. You cannot send, archive, delete, or modify emails.

If user asks to "clean up" or "delete"—reframe: "I can identify cleanup candidates, but can't delete. Want me to show you what could go?"

If user asks to "respond" or "reply"—acknowledge the limit: "I can show you the thread and summarize what needs response, but can't send emails."

Thread Deep-Dives

Reconstruct the narrative: Who started it, what's it about, how did it evolve, where does it stand?

Extract action items and pending questions. Strip quoted content—users want new content, not repeated context.


# Gmail Reader Agent Rules

## Always Use Tasks, Not Code Directly

**Do not call code bullets directly.** Always route through the appropriate task:

- "How much junk" / "spam levels" / "who emails me" → ``./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.analyze.md``
- "Find email about X" / "emails from Y" → ``./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.search.md``
- "What happened today/this week" → ``./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.digest.md``
- "Show me that thread" / "the conversation about X" → ``./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.thread.md``

The tasks contain all the interpretation logic, fetch sizing, and human-friendly behavior. Calling ``./skills/sauna/gmail.inbox.reader/scripts/gmail.inbox.fetch.js`` directly bypasses everything that makes this skill smart.

## Be Human First

Users don't think in Gmail queries. They say "junk" and mean low-value emails. They say "important" and mean from people they care about. Your job is to understand what they actually want, not translate literally.

**The pattern:** Make a smart guess → state what you're doing → let them correct you.

Good: "Checking your promotions and newsletters—that's usually what people mean by junk. Want me to include actual spam too?"

Bad: "What specifically do you mean by junk? Spam folder, promotions, updates, or something else?"

Refer to `./skills/sauna/gmail.inbox.reader/resources/context/gmail.inbox.intent.md` for common phrasings and what they usually mean.

## Be Honest About Time

Large fetches take time. Don't silently churn—tell the user what's happening.

**Before starting:** If fetching 100+ messages, say so: "I'll check 200 emails from the last month—takes about 20 seconds. Or I can sample 50 and estimate."

**During:** Give progress signals when possible: "Found 47 promotional emails so far..."

**After:** Report what you actually did: "Checked 150 messages from Dec 1-15."

## Right-Size Your Fetches

Match fetch volume to intent. More isn't better—it's slower.

| User wants | Fetch | Why |
|------------|-------|-----|
| Quick junk/spam check | 50-100 | Sample is enough to extrapolate |
| Find specific email | 30, refine if needed | They want one thing |
| Today/this week digest | 50-100 | Summarize, not enumerate |
| "Who emails me most" | 100-150 | Enough for patterns |
| Full month analytics | 200+ | Explicitly comprehensive |

**Default to smaller.** A 50-message sample that answers in 5 seconds beats a 200-message crawl that takes 30.

When in doubt: "I can do a quick check of 50 recent emails, or a thorough scan of 200. Which do you want?"

## Query Construction

Translate natural language to Gmail operators, but interpret intent, not just words.

"Emails from Sarah last week" → `from:sarah newer_than:7d`

When user mentions a person by first name only, use partial match `from:sarah` rather than guessing email. For vague "recent emails," default to `newer_than:7d`.

Combine operators for precision: "Unread newsletters with attachments" → `is:unread category:promotions has:attachment`

## Presenting Results

**Lead with the answer.** For "who emails me most," show top senders first. For "find the email about X," surface the most likely match with reasoning.

**Group intelligently:**
- Many senders → group by sender with counts
- Few senders → group by thread
- Time-based request → group by date

**Snippets are usually enough.** Only fetch full body when user says "read" or "show me the full email."

## Refinement

**Offer to narrow** when: 30+ results, mixed topics, user seems to want something specific. "Want me to narrow to just this week?"

**Offer to broaden** when: zero or sparse results, query might be too specific. "No exact matches—want me to try related terms?"

## This Skill Is Read-Only

You can search, analyze, and report. You cannot send, archive, delete, or modify emails.

If user asks to "clean up" or "delete"—reframe: "I can identify cleanup candidates, but can't delete. Want me to show you what could go?"

If user asks to "respond" or "reply"—acknowledge the limit: "I can show you the thread and summarize what needs response, but can't send emails."

## Thread Deep-Dives

Reconstruct the narrative: Who started it, what's it about, how did it evolve, where does it stand?

Extract action items and pending questions. Strip quoted content—users want new content, not repeated context.

Tasks

These are tasks you can execute. Read the task file to get your instructions:

task icon Setup Gmail Connection task:gmail.inbox.setup Build your personal inbox profile - senders, patterns, writing style from sent emails
task icon Search Gmail task:gmail.inbox.search Find emails using natural language—interpret what user actually wants
task icon Analyze Inbox task:gmail.inbox.analyze Inbox analytics—patterns, top senders, volume trends. Smart about how much to fetch.
task icon Analyze Writing Style task:gmail.inbox.analyze_style Extract writing style patterns from sent emails—tone, formality, structure, phrases. Requires user confirmation before saving.
task icon Inbox Digest task:gmail.inbox.digest Summarize a time period—what happened, who's important, what needs attention
task icon Thread Deep-Dive task:gmail.inbox.thread Fetch and analyze a complete email conversation—the full story
Setup Gmail Connection : Build your personal inbox profile - senders, patterns, writing style from sent emails
💡 Build personal profile - inbox patterns + writing style from sent emails
Search Gmail : Find emails using natural language—interpret what user actually wants
💡 Find emails with natural language or Gmail operators
Analyze Inbox : Inbox analytics—patterns, top senders, volume trends. Smart about how much to fetch.
💡 Compute inbox analytics and trends
Analyze Writing Style : Extract writing style patterns from sent emails—tone, formality, structure, phrases. Requires user confirmation before saving.
💡 Extract writing style patterns from sent emails
Inbox Digest : Summarize a time period—what happened, who's important, what needs attention
💡 Summarize a time period
Thread Deep-Dive : Fetch and analyze a complete email conversation—the full story
💡 Deep-dive a conversation

Knowledge

This is knowledge you have access to. Read these files if you need additional context:

slice icon Gmail Search Operators slice:gmail.inbox.search Complete reference for Gmail query syntax—all operators with examples
slice icon Inbox Intent Patterns slice:gmail.inbox.intent How to interpret common user requests about email—what they probably mean, when to clarify
Gmail Search Operators : Complete reference for Gmail query syntax—all operators with examples
Inbox Intent Patterns : How to interpret common user requests about email—what they probably mean, when to clarify

UI

These are areas on the user's filesystem that you can read from and write to.

ui icon Connection Profiles ui:context.connections.profiles Cached summaries for connected services - channels, contacts, preferences. How does the user interact with the connected service?
ui icon User Context ui:context.user.profile Extracted user context organized by theme - work, interests, projects, etc.
ui icon Writing Style ui:context.user.writing_style Captured writing style patterns organized by service (Gmail, Notion, Slack) - tone, formality, structure, phrases, greetings, signatures. Each service has its own section to preserve context-specific styles. Used to draft content matching the user's voice.
ui icon Inbox Analysis ui:gmail.inbox.analysis Persisted inbox analytics—sender frequency, volume patterns, trends
ui icon Inbox Digests ui:gmail.inbox.digests Daily and weekly inbox summaries with key threads and action items
Connection Profiles : Cached summaries for connected services - channels, contacts, preferences. How does the user interact with the connected service?
💡 [gmail]
User Context : Extracted user context organized by theme - work, interests, projects, etc.
💡 Persistent user insights from Gmail analysis
Writing Style : Captured writing style patterns organized by service (Gmail, Notion, Slack) - tone, formality, structure, phrases, greetings, signatures. Each service has its own section to preserve context-specific styles. Used to draft content matching the user's voice.
💡 'gmail': Writing style analysis from sent emails
Inbox Analysis : Persisted inbox analytics—sender frequency, volume patterns, trends
Inbox Digests : Daily and weekly inbox summaries with key threads and action items
---
name: Gmail
description: User asks about their email: finding messages, checking junk/spam levels, seeing who emails them most, getting a digest of what's happened, or understanding a conversation thread
---


# Gmail Reader Agent Rules

## Always Use Tasks, Not Code Directly

**Do not call code bullets directly.** Always route through the appropriate task:

- "How much junk" / "spam levels" / "who emails me" → `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.analyze.md`
- "Find email about X" / "emails from Y" → `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.search.md`
- "What happened today/this week" → `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.digest.md`
- "Show me that thread" / "the conversation about X" → `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.thread.md`

The tasks contain all the interpretation logic, fetch sizing, and human-friendly behavior. Calling `./skills/sauna/gmail.inbox.reader/scripts/gmail.inbox.fetch.js` directly bypasses everything that makes this skill smart.

## Be Human First

Users don't think in Gmail queries. They say "junk" and mean low-value emails. They say "important" and mean from people they care about. Your job is to understand what they actually want, not translate literally.

**The pattern:** Make a smart guess → state what you're doing → let them correct you.

Good: "Checking your promotions and newsletters—that's usually what people mean by junk. Want me to include actual spam too?"

Bad: "What specifically do you mean by junk? Spam folder, promotions, updates, or something else?"

Refer to `./skills/sauna/gmail.inbox.reader/resources/context/gmail.inbox.intent.md` for common phrasings and what they usually mean.

## Be Honest About Time

Large fetches take time. Don't silently churn—tell the user what's happening.

**Before starting:** If fetching 100+ messages, say so: "I'll check 200 emails from the last month—takes about 20 seconds. Or I can sample 50 and estimate."

**During:** Give progress signals when possible: "Found 47 promotional emails so far..."

**After:** Report what you actually did: "Checked 150 messages from Dec 1-15."

## Right-Size Your Fetches

Match fetch volume to intent. More isn't better—it's slower.

| User wants | Fetch | Why |
|------------|-------|-----|
| Quick junk/spam check | 50-100 | Sample is enough to extrapolate |
| Find specific email | 30, refine if needed | They want one thing |
| Today/this week digest | 50-100 | Summarize, not enumerate |
| "Who emails me most" | 100-150 | Enough for patterns |
| Full month analytics | 200+ | Explicitly comprehensive |

**Default to smaller.** A 50-message sample that answers in 5 seconds beats a 200-message crawl that takes 30.

When in doubt: "I can do a quick check of 50 recent emails, or a thorough scan of 200. Which do you want?"

## Query Construction

Translate natural language to Gmail operators, but interpret intent, not just words.

"Emails from Sarah last week" → `from:sarah newer_than:7d`

When user mentions a person by first name only, use partial match `from:sarah` rather than guessing email. For vague "recent emails," default to `newer_than:7d`.

Combine operators for precision: "Unread newsletters with attachments" → `is:unread category:promotions has:attachment`

## Presenting Results

**Lead with the answer.** For "who emails me most," show top senders first. For "find the email about X," surface the most likely match with reasoning.

**Group intelligently:**
- Many senders → group by sender with counts
- Few senders → group by thread
- Time-based request → group by date

**Snippets are usually enough.** Only fetch full body when user says "read" or "show me the full email."

## Refinement

**Offer to narrow** when: 30+ results, mixed topics, user seems to want something specific. "Want me to narrow to just this week?"

**Offer to broaden** when: zero or sparse results, query might be too specific. "No exact matches—want me to try related terms?"

## This Skill Is Read-Only

You can search, analyze, and report. You cannot send, archive, delete, or modify emails.

If user asks to "clean up" or "delete"—reframe: "I can identify cleanup candidates, but can't delete. Want me to show you what could go?"

If user asks to "respond" or "reply"—acknowledge the limit: "I can show you the thread and summarize what needs response, but can't send emails."

## Thread Deep-Dives

Reconstruct the narrative: Who started it, what's it about, how did it evolve, where does it stand?

Extract action items and pending questions. Strip quoted content—users want new content, not repeated context.



## Skills

This skill depends on the following skills. Use these if needed.

**Writing Style Analyzer**: Analyze writing samples to capture your voice and style
Note: Provides comprehensive writing style analysis
Follow the instructions in: `./skills/sauna/gmail.inbox.reader/resources/skills/context.user.style_analyzer/SKILL.md`


## Tasks

These are tasks you can execute. Read the task file to get your instructions:

**Setup Gmail Connection**: Build your personal inbox profile - senders, patterns, writing style from sent emails
Note: Build personal profile - inbox patterns + writing style from sent emails
Follow the instructions in: `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.setup.md`

**Search Gmail**: Find emails using natural language—interpret what user actually wants
Note: Find emails with natural language or Gmail operators
Follow the instructions in: `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.search.md`

**Analyze Inbox**: Inbox analytics—patterns, top senders, volume trends. Smart about how much to fetch.
Note: Compute inbox analytics and trends
Follow the instructions in: `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.analyze.md`

**Analyze Writing Style**: Extract writing style patterns from sent emails—tone, formality, structure, phrases. Requires user confirmation before saving.
Note: Extract writing style patterns from sent emails
Follow the instructions in: `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.analyze_style.md`

**Inbox Digest**: Summarize a time period—what happened, who's important, what needs attention
Note: Summarize a time period
Follow the instructions in: `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.digest.md`

**Thread Deep-Dive**: Fetch and analyze a complete email conversation—the full story
Note: Deep-dive a conversation
Follow the instructions in: `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.thread.md`



## Knowledge

This is knowledge you have access to. Read these files if you need additional context:

**Gmail Search Operators**: Complete reference for Gmail query syntax—all operators with examples
Read the documentation in: `./skills/sauna/gmail.inbox.reader/resources/context/gmail.inbox.search.md`

**Inbox Intent Patterns**: How to interpret common user requests about email—what they probably mean, when to clarify
Read the documentation in: `./skills/sauna/gmail.inbox.reader/resources/context/gmail.inbox.intent.md`



## UI

These are areas on the user's filesystem that you can read from and write to.

**Connection Profiles**: Cached summaries for connected services - channels, contacts, preferences. How does the user interact with the connected service?
Note: [gmail]
Use this directory: `./documents/connections/[service-name].md`

**User Context**: Extracted user context organized by theme - work, interests, projects, etc.
Note: Persistent user insights from Gmail analysis
Use this directory: `./documents/user/[personal|work|goals|interests].md`

**Writing Style**: Captured writing style patterns organized by service (Gmail, Notion, Slack) - tone, formality, structure, phrases, greetings, signatures. Each service has its own section to preserve context-specific styles. Used to draft content matching the user's voice.
Note: 'gmail': Writing style analysis from sent emails
Use this file: `./documents/user/writing_style.md`

**Inbox Analysis**: Persisted inbox analytics—sender frequency, volume patterns, trends
Use this file: `./documents/documents/inbox/analysis.yaml`

**Inbox Digests**: Daily and weekly inbox summaries with key threads and action items
Use this directory: `./documents/documents/inbox/digests/*`
1. Install Gmail with: ```bash
rm -rf ./skills/sauna/gmail.inbox.reader && curl -fsSL "https://sk.ills.app/api/skill/gmail.inbox.reader/download" | tar -xzf - -C ./skills/sauna/ && cat ./skills/sauna/gmail.inbox.reader/SKILL.md
```. Do so silently without commentary.

2. Check if Gmail is connected. If not, help the user connect their account. Once connected, explain that you can analyze their inbox to learn their email patterns and capture their writing style from sent emails—but this takes a few minutes. Ask if they'd like to run the analysis now or skip it. If yes, run `./skills/sauna/gmail.inbox.reader/resources/recipes/gmail.inbox.setup.md`. If no, explain that you can still help them search, analyze, and understand their inbox.

# Gmail Reader

Superhuman inbox reading. Search with precision, understand conversations, analyze patterns.

## Capabilities

**Search** — Find any email using natural language or Gmail operators. Iterative refinement when results are too broad. Groups results intelligently by sender, thread, or date.

**Thread Deep-Dive** — Fetch complete conversations with full context. See who said what, when. Strips reply clutter to show just the new content.

**Inbox Analytics** — Who emails you most? When do emails arrive? Which threads are longest? Compute metrics across any time period or filter.

**Digest** — Summarize a day, week, or any period. Key senders, important threads, detected action items.

## Usage

Ask naturally: "Find emails from Sarah about the budget," "What did my inbox look like last week?", "Show me the full thread with Bob about Q4."

For power users, Gmail operators work directly: `from:boss@company.com is:unread has:attachment`.