Exchange Skills

v1.0.2

Full email, calendar, contacts, tasks, and notes management for Microsoft Exchange/Outlook. Use when Claude needs to list unread emails, read email content,...

0· 159·0 current·0 all-time
byDerek Hsu@derekhsu

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for derekhsu/exchange-skills.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Exchange Skills" (derekhsu/exchange-skills) from ClawHub.
Skill page: https://clawhub.ai/derekhsu/exchange-skills
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required env vars: EXCHANGE_SERVER, EXCHANGE_EMAIL, EXCHANGE_USERNAME, EXCHANGE_PASSWORD
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install exchange-skills

ClawHub CLI

Package manager switcher

npx clawhub@latest install exchange-skills
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description (Exchange mail/calendar/contacts/tasks/notes) align with required environment variables (EXCHANGE_SERVER, EXCHANGE_EMAIL, EXCHANGE_USERNAME, EXCHANGE_PASSWORD) and the included Python script which uses exchangelib to talk to an Exchange server.
Instruction Scope
SKILL.md and the script limit actions to fetching/reading/replying/marking/archiving emails and listing calendar/contacts/tasks/notes via Exchange. The script loads a local .env in its script directory and reads only Exchange-related environment variables; it does not reference or transmit data to other external endpoints beyond the Exchange server.
Install Mechanism
This is an instruction+code skill with no install spec. The script requires the third‑party Python package exchangelib (pip). Because there is no automated install step, the user/agent must install dependencies manually; ensure exchangelib is installed from a trusted source (PyPI) before use.
Credentials
Requested environment variables (server, email, username, password) are expected for Exchange access and the primary credential is EXCHANGE_PASSWORD. Minor metadata inconsistency: SKILL.md references EXCHANGE_DISABLE_SSL_VERIFY as an optional variable but the registry metadata's optional_env only lists EXCHANGE_DOMAIN; this is a small documentation mismatch but not a behavioral red flag.
Persistence & Privilege
The skill does not request always:true and does not modify other skills or system-wide settings. It reads a .env file from its own script directory but does not write persistent secrets or change agent configuration.
Assessment
This skill appears to be a legitimate Exchange CLI client, but it requires your Exchange credentials (including password) to run. Before installing: (1) verify and trust the skill source/author; (2) prefer using a restricted or app-specific account rather than your primary mailbox password; (3) store credentials in a secure secrets manager or an environment isolated to this skill rather than a global shell profile; (4) note there is no automated install for Python dependencies—install exchangelib from PyPI and inspect it if needed; (5) avoid setting EXCHANGE_DISABLE_SSL_VERIFY unless you understand the implications; and (6) review the script if you need absolute assurance there is no unexpected network exfiltration. If you cannot trust the publisher, do not supply real credentials.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

EnvEXCHANGE_SERVER, EXCHANGE_EMAIL, EXCHANGE_USERNAME, EXCHANGE_PASSWORD
Primary envEXCHANGE_PASSWORD
latestvk973yept1wx5trrz5fzmhr83d18338he
159downloads
0stars
3versions
Updated 1mo ago
v1.0.2
MIT-0

Exchange Mail

Manage Microsoft Exchange/Outlook emails and calendar from terminal.

Script Location

scripts/exchange_mail.py - Main CLI script

Commands

# List unread (today, where you're To/CC)
python3 scripts/exchange_mail.py list

# List options
python3 scripts/exchange_mail.py list --days 3    # Last 3 days
python3 scripts/exchange_mail.py list --all       # All unread
python3 scripts/exchange_mail.py list --json      # JSON output

# Read email
python3 scripts/exchange_mail.py read <id>

# Reply
python3 scripts/exchange_mail.py reply <id> "Your message"

# Mark as read
python3 scripts/exchange_mail.py mark-read <id>
python3 scripts/exchange_mail.py mark-read --external
python3 scripts/exchange_mail.py mark-read --internal
python3 scripts/exchange_mail.py mark-read --all

# Archive
python3 scripts/exchange_mail.py archive <id>
python3 scripts/exchange_mail.py archive --external
python3 scripts/exchange_mail.py archive --internal --days 7

# Calendar (NEW!)
python3 scripts/exchange_mail.py calendar                 # Next 7 days
python3 scripts/exchange_mail.py calendar --today        # Today only
python3 scripts/exchange_mail.py calendar --days 30     # Next 30 days
python3 scripts/exchange_mail.py calendar --json        # JSON output

# Contacts (NEW!)
python3 scripts/exchange_mail.py contacts "name"         # Search contacts
python3 scripts/exchange_mail.py contacts "name" --limit 10  # Limit results
python3 scripts/exchange_mail.py contacts "name" --json  # JSON output

# Tasks (NEW!)
python3 scripts/exchange_mail.py tasks                  # List tasks
python3 scripts/exchange_mail.py tasks --days 30       # Next 30 days
python3 scripts/exchange_mail.py tasks --status pending  # Filter by status

# Notes (NEW!)
python3 scripts/exchange_mail.py notes                 # List notes
python3 scripts/exchange_mail.py notes --limit 10      # Limit results

Note:

  • Contact search requires access to Exchange contact folders. If no contacts are found, check folder permissions on the Exchange server.
  • Tasks and Notes require the corresponding folders to exist in the Exchange account.

Email IDs

Each email gets stable 8-char hex ID (e.g., b7bc8d99). Use for all commands.

Output Format

📧 9 unread emails today:

━━━ Internal (4) ━━━
[b7bc8d99] [13:57] John Smith
        Re: Project Discussion

━━━ External (5) ━━━
[43e56cc9] [09:50] newsletter@company.com
        Weekly Update

Batch Flags

  • --external - Only external emails (outside your domain)
  • --internal - Only internal emails (your domain)
  • --all - All emails
  • --days N - Look back N days (default: today only)

Environment Variables

Required in shell config:

export EXCHANGE_SERVER="mail.company.com"
export EXCHANGE_EMAIL="user@company.com"
export EXCHANGE_USERNAME="username"
export EXCHANGE_PASSWORD="password"

Optional:

export EXCHANGE_DOMAIN="domain"  # Windows domain if required
export EXCHANGE_DISABLE_SSL_VERIFY=1  # Only if you need to disable SSL verification (not recommended)

Note: The script will also load environment variables from a .env file in the script directory (skills/exchange-skills/scripts/.env) if it exists.

Workflow Examples

# Morning: check → read → reply → archive spam
python3 scripts/exchange_mail.py list
python3 scripts/exchange_mail.py read abc123
python3 scripts/exchange_mail.py reply abc123 "Thanks!"
python3 scripts/exchange_mail.py archive --external

# Weekly cleanup
python3 scripts/exchange_mail.py archive --external --days 7

Comments

Loading comments...