skills/7sageer/email/SKILL.md
Email operations skill for sending, fetching, and reading emails via IMAP/SMTP. Uses curl with OpenSSL/LibreSSL for reliable TLS compatibility with Tencent Enterprise Mail and other providers. Credentials are securely stored in macOS Keychain.
npx skillsauth add aiskillstore/marketplace emailInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides email capabilities through direct IMAP/SMTP protocol access using curl. It supports:
references/accounts.yamlsend-email.sh)Send emails via SMTP with support for inline or file-based content.
Usage:
./scripts/send-email.sh -t [email protected] -s "Subject" -b "Message"
./scripts/send-email.sh -t [email protected] -s "Subject" -f message.txt
./scripts/send-email.sh -t [email protected] -c [email protected] -s "Subject" -b "Message"
Parameters:
-a ACCOUNT - Account name (default: from accounts.yaml)-t EMAIL - Recipient email (required)-c EMAIL - CC recipient (optional)-s TEXT - Email subject (required)-b TEXT - Email body inline (required if no -f)-f FILE - Email body from file (required if no -b)fetch-emails.sh)Retrieve email headers from a mailbox.
Usage:
./scripts/fetch-emails.sh # Fetch 10 latest from INBOX
./scripts/fetch-emails.sh -n 20 # Fetch 20 latest
./scripts/fetch-emails.sh -m "Sent" # Fetch from Sent folder
Parameters:
-a ACCOUNT - Account name (default: from accounts.yaml)-m FOLDER - Mailbox folder (default: INBOX)-n N - Number of emails to fetch (default: 10)read-email.sh)Read full content of a specific email by ID.
Usage:
./scripts/read-email.sh 123 # Read full email
./scripts/read-email.sh -p HEADER 123 # Headers only
./scripts/read-email.sh -p BODY 123 # Body only
Parameters:
-a ACCOUNT - Account name (default: from accounts.yaml)-m FOLDER - Mailbox folder (default: INBOX)-p PART - Part to retrieve: HEADER, BODY, or TEXT (default: TEXT)EMAIL_ID - Email ID (required, positional argument)Edit references/accounts.yaml to add email accounts:
default_account: SUSTech
accounts:
SUSTech:
email: [email protected]
display_name: Hanrui Qi
imap:
host: imap.exmail.qq.com
port: 993
login: [email protected]
protocol: imaps
smtp:
host: smtp.exmail.qq.com
port: 465
login: [email protected]
protocol: smtps
Passwords are stored in macOS Keychain. Set them using:
# IMAP password
security add-generic-password \
-a "[email protected]" \
-s "email-imap-sustech" \
-w "your-password" \
-U
# SMTP password
security add-generic-password \
-a "[email protected]" \
-s "email-smtp-sustech" \
-w "your-password" \
-U
Keychain service naming convention:
email-imap-{account_name_lowercase}email-smtp-{account_name_lowercase}When user says: "Send an email to [email protected] about the meeting"
cd /Users/seven/Claude/.claude/skills/email
./scripts/send-email.sh \
-t [email protected] \
-s "Meeting Discussion" \
-b "Hi Alice, I wanted to follow up on our meeting..."
When user says: "Check my email" or "Any new emails?"
cd /Users/seven/Claude/.claude/skills/email
./scripts/fetch-emails.sh -n 5
Parse the output and summarize for the user.
This is a lightweight way to "search" within the recent emails that fetch-emails.sh fetched (headers only: From/Subject/Date).
cd /Users/seven/Claude/.claude/skills/email
# 任意关键字(例如 github),同时保留邮件 ID 行(便于后续 read)
./scripts/fetch-emails.sh -n 200 | rg -i "github" -B 2
# 主题关键字(建议用 rg;没有 rg 就用 grep -E)
./scripts/fetch-emails.sh -n 200 | rg "主题:.*会议" -B 2
./scripts/fetch-emails.sh -n 200 | grep -E "主题:.*会议" -B 2
# 发件人关键字
./scripts/fetch-emails.sh -n 200 | rg "发件人:.*alice" -B 1
# 提取匹配到的邮件 ID,然后读取正文(取第一个匹配)
email_id="$(
./scripts/fetch-emails.sh -n 200 |
rg -i "github" -B 2 |
sed -nE 's/.*邮件 #([0-9]+).*/\1/p' |
head -n 1
)"
./scripts/read-email.sh "$email_id"
If email_id is empty, increase -n (fetch more recent emails) or adjust the keyword/regex.
When user says: "Read email #3" or "Show me the latest email"
cd /Users/seven/Claude/.claude/skills/email
./scripts/read-email.sh 3
Combine with other skills for automation:
Authentication Failed
Connection Timeout
TLS Handshake Failed
SEARCH for string criteria (e.g. SUBJECT/FROM/HEADER) may be unreliable on some Tencent Exmail servers; prefer client-side filtering via fetch-emails.sh | rg/grep.The rustls TLS library has compatibility issues with some email providers (notably Tencent Enterprise Mail). curl with OpenSSL/LibreSSL provides:
This skill uses IMAP (not POP3) because:
Potential improvements (not yet implemented):
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.