Learn-skills.dev gmail-inbox

Manage emails across multiple Gmail accounts with unified tooling. Use when user asks to check email, read inbox, label emails, archive messages, or manage Gmail across accounts.

install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aiagentwithdhruv/skills/gmail-inbox" ~/.claude/skills/neversight-learn-skills-dev-gmail-inbox && rm -rf "$T"
manifest: data/skills-md/aiagentwithdhruv/skills/gmail-inbox/SKILL.md
source content

Gmail Inbox Management

Goal

Check and manage emails across multiple Gmail accounts using unified tooling.

Scripts

  • ./scripts/gmail_unified.py
    - Check and manage inboxes
  • ./scripts/gmail_multi_auth.py
    - Authenticate accounts
  • ./scripts/gmail_bulk_label.py
    - Bulk labeling
  • ./scripts/gmail_create_filters.py
    - Create filters
  • ./scripts/gmail_auth.py
    - Auth helper

Quick Reference

# Check unread across all accounts
python3 ./scripts/gmail_unified.py --query "is:unread" --limit 50

# Check specific account only
python3 ./scripts/gmail_unified.py --query "is:unread" --account yourcompany

# List registered accounts
python3 ./scripts/gmail_unified.py --accounts

# Label and archive emails
python3 ./scripts/gmail_unified.py --query "from:notifications@" --label "Notifications" --archive

# Mark as read
python3 ./scripts/gmail_unified.py --query "from:noreply@" --mark-read

# Dry run (preview)
python3 ./scripts/gmail_unified.py --query "subject:invoice" --label "Invoices" --dry-run

Account Registry

AccountEmailCredentialsToken
youruseryou@example.comcredentials.jsontoken_youruser.json
yourcompanyyou@yourdomain.comcredentials_yourcompany.jsontoken_yourcompany.json

Troubleshooting Auth Errors

"Token file not found"

python3 ./scripts/gmail_multi_auth.py --account yourcompany --email you@yourdomain.com

"invalid_scope: Bad Request"

rm token_youruser.json
python3 ./scripts/gmail_multi_auth.py --account youruser --email you@example.com

"Failed to authenticate" Check that credentials.json exists in root directory.

Required Scopes

  • gmail.modify
    - Read/write emails
  • gmail.labels
    - Create/manage labels
  • gmail.settings.basic
    - Manage settings
  • spreadsheets
    - Google Sheets access
  • drive
    - Google Drive access

Credentials Location

All credential files should be in the workspace root:

  • credentials.json
    /
    credentials_yourcompany.json
    - OAuth client configs
  • token_*.json
    - Auth tokens (auto-generated)
  • gmail_accounts.json
    - Account registry

Schema

Inputs

NameTypeRequiredDescription
query
stringNoGmail search query (e.g., 'is:unread')
account
stringNoSpecific account name from registry
limit
integerNoMax emails to fetch (default: 50)

Outputs

NameTypeDescription
emails
arrayList of email objects with subject, from, date, snippet

Credentials

NameSource
credentials.json
file
token_*.json
file (auto-generated)

Composable With

Skills that chain well with this one:

gmail-label
,
instantly-autoreply

Cost

Free (Gmail API)