Skills gmail-checker

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/99rebels/rebels-gmail-checker" ~/.claude/skills/openclaw-skills-gmail-checker && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/99rebels/rebels-gmail-checker" ~/.openclaw/skills/openclaw-skills-gmail-checker && rm -rf "$T"
manifest: skills/99rebels/rebels-gmail-checker/SKILL.md
source content

Gmail Checker 📧

Fetch unread Gmail messages, filter out noise, deliver a prioritized digest.

Why

Your inbox is full of automated emails, promotions, and updates. This skill surfaces what actually matters — security alerts, personal messages, and anything you've flagged as important.

When to Use

  • "Check my emails"
  • "Any new mail?"
  • "Give me an email digest"
  • "What's in my inbox?"
  • "Email summary"

Setup

First-time users need Google OAuth credentials. If the script exits with a "missing file" error, read references/setup.md and walk the user through the setup flow.

pip install google-api-python-client google-auth-oauthlib

How to Run

python3 scripts/check_gmail.py [hours]          # default: last 24h
python3 scripts/check_gmail.py --json [hours]   # structured JSON output

Config: Copy

config.example.json
to
<DATA_DIR>/gmail-config.json
and customize. The script prints the resolved
<DATA_DIR>
path if credentials are missing.

Data Directory

Credentials and config resolve to:

1. $SKILL_DATA_DIR (set by agent platform)
2. ~/.config/gmail-checker/  (default fallback)

Any platform can set

$SKILL_DATA_DIR
to their preferred credential store. If unset,
~/.config/gmail-checker/
is used automatically. Works with OpenClaw, Claude Code, Codex, and any agent that can run Python scripts.

Priority Rules

🔴 HIGH   → Sender domain or subject matches your config
🟡 MEDIUM → Gmail-labeled personal messages
🟢 LOW    → Everything else (still inbox, still unread)
Filtered out entirely:
• CATEGORY_PROMOTIONS
• CATEGORY_UPDATES
• CATEGORY_FORUMS
• CATEGORY_SOCIAL

Customize priorities in

gmail-config.json
:

high_priority_domains:   ["stripe.com", "github.com"]
high_priority_keywords:  ["security", "urgent", "billing"]

Output Example

Unread Inbox (last 24h)

🔴 HIGH
  Security alert: new sign-in from unknown device
  from: Google <no-reply@google.com>

🟡 MED
  Re: dinner friday?
  from: Sarah <sarah@gmail.com>

🟢 LOW
  Your weekly GitHub digest
  from: GitHub <noreply@github.com>

3 unread emails

Adapt formatting for the current channel (bold, bullets, etc.).

Suggested Integration

cron: 0 8 * * * → python3 scripts/check_gmail.py