# Email

> Search and read Gmail messages. Use when looking up emails, reading email threads, or checking inbox labels.

- Skill: `drn/email` (Agent Skill)
- Install (CLI): `npx skillmds@latest add drn/email`
- Raw SKILL.md: https://api.skillmd.com/api/skills/drn/email/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: drn (https://skillmd.com/u/drn)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/drn/email

---


# Email (Read-Only)

Search and read Gmail messages using the `gmail` CLI.

## Instructions

You are helping read Gmail data. Auth uses OAuth tokens stored at `~/.dots/sys/gmail/tokens/`. Additional env vars (if any) are loaded from `~/.dots/sys/env`.

### Operations

```bash
# Search emails
gmail search "from:emily subject:kickoff"     # Search by sender and subject
gmail search "is:unread" --limit 10           # Recent unread
gmail search "after:2025/01/01 from:sarah"    # Date-filtered search

# Read a specific email
gmail read MESSAGE_ID                         # Read full email by ID

# List labels with message counts
gmail labels

# List configured accounts
gmail accounts

# Use a specific account
gmail search "budget" --account personal
gmail labels --account work

# Re-authenticate an account (opens browser for OAuth)
gmail auth personal

# JSON output
gmail search "quarterly review" --json
gmail accounts --json
```

### Accounts

Run `gmail accounts` to see configured accounts with names and emails. The default account is marked with `*`.

### Common Tasks

#### Find recent emails from someone
```bash
gmail search "from:emily" --limit 10
```

#### Read an email thread
```bash
# First search to find message IDs
gmail search "subject:technical kickoff" --limit 5
# Then read the specific message
gmail read MESSAGE_ID
```

#### Check unread count
```bash
gmail labels
```

### Account Resolution

The CLI resolves accounts in this order:
1. `--account NAME` flag — uses `~/.dots/sys/gmail/tokens/NAME.json`
2. Default account from `~/.dots/sys/gmail/accounts.json`
3. First token file found in `~/.dots/sys/gmail/tokens/`

### Search Syntax

Gmail search supports standard Gmail query operators:
- `from:sender` — messages from a specific sender
- `to:recipient` — messages to a specific recipient
- `subject:words` — subject line search
- `after:YYYY/MM/DD` / `before:YYYY/MM/DD` — date range
- `is:unread` / `is:starred` — message state
- `has:attachment` — messages with attachments
- `label:NAME` — messages with a specific label
- `in:inbox` / `in:sent` — location filters

## Capabilities

- **Email search**: Full Gmail query syntax with pagination
- **Email reading**: Full message content including headers, body text, and attachment metadata
- **Label listing**: All labels with message counts (total and unread)
- **Account listing**: Show all configured accounts with default marker

## Troubleshooting

If a search or read fails with `invalid_grant` or `Token has been expired or revoked`, re-authenticate:
```bash
gmail auth ACCOUNT_NAME
```
This opens the browser for OAuth consent and saves the new token.

## Limitations

- **Read-only** — Cannot send, draft, archive, or modify emails. For composing replies, draft the text in the conversation for manual copy/paste.
- Message body is truncated at 5000 characters

