Agent skill

Email Operations

by OpenLoaf in OpenLoaf/OpenLoaf

Handles a real email account through query and mutate tools: check the inbox, read, search, reply, forward, compose and organize, with sending always confirmed first.

AGPL-3.0Auto-check passedProductivity & Automation

Install Email Operations

skills CLI
$ npx skills add OpenLoaf/OpenLoaf --skill email-ops-skill -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install OpenLoaf/OpenLoaf email-ops-skill --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/OpenLoaf/OpenLoaf.git skills-src && mkdir -p .claude/skills && cp -r skills-src/apps/server/src/ai/builtin-skills/email-ops/en .claude/skills/email-ops-skill && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
email-ops-skill
GitHub stars
108
Token cost
~1.8k tokens
SKILL.md length
655 words
Files
1
Skills in repo
33
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Handles a real email account through query and mutate tools: check the inbox, read, search, reply, forward, compose and organize, with sending always confirmed first.

  • Works in 3 steps: get-message to retrieve the full… → Compose a new message: set to to the… → Show the full forward in plain text and…
  • Checking an inbox or finding messages from a particular sender
  • SKILL.md covers Tool Inventory, Which Query Mode Should I Use?, Core Workflows and Forwarding Messages, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Two tools do the work. `EmailQuery` is read-only and has modes for listing accounts, a unified inbox view, listing messages, fetching one message, searching, unread counts and mailbox lists, with cursor paging. `EmailMutate` sends, replies, forwards, archives, deletes and moves messages, and send, delete and move require approval. Both are deferred tools whose schemas must be loaded through `ToolSearch` before use.

The workflows are explicit. To reply, the agent lists accounts, scans the inbox, reads the full message, drafts a reply, shows the recipient, subject and body in plain text and waits for your confirmation, because a sent email cannot be recalled. The reply carries `inReplyTo` and `references` so mail clients keep it in the original thread. New messages follow the same show-then-confirm rule, and search can feed a bulk organize step after the agent reports what it found. Chat apps, translation and offline `.eml` parsing are out of scope.

When your agent uses it

  • Checking an inbox or finding messages from a particular sender
  • Replying to or forwarding an email in its original thread
  • Composing and sending a new email after reviewing the draft
  • Searching and archiving a batch of newsletters

Example prompts

  • “Check my inbox and tell me how many unread messages there are.”
  • “What did the accounting team send me this week? Read the latest one.”
  • “Reply to the landlord's email saying I can meet Thursday, and show me the draft before sending.”
  • “Search for newsletters from the last month and archive them after listing them for me.”

Requirements

  • A configured email account in the host application with the EmailQuery and EmailMutate tools

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. get-message to retrieve the full original content
  2. Compose a new message: set to to the forwarding target, prefix subject with Fwd:, and include the original content in bodyText (add an…
  3. Show the full forward in plain text and wait for the user to confirm before send

What it can do on your machine

Read from SKILL.md and the folder at commit f7eccf6. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Email Operations loads about 1.8k tokens when it runs. Until then it costs about 103 tokens; SKILL.md has 655 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~103
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from OpenLoaf/OpenLoaf at commit f7eccf6, republished under its AGPL-3.0 licence (© OpenLoaf). 655 words, ~1,761 tokens.

Download SKILL.mdSave it as .claude/skills/email-ops-skill/SKILL.md (or your agent's skills folder).
name
email-ops-skill
description
Trigger whenever the user wants to do anything with a real email account: check inbox, read messages, reply, forward, compose, send, search, archive, delete. Typical phrasing: "check my inbox", "what did X send me", "查下我邮箱". **Do not use for**: instant messaging / IM / WeChat / Slack, translating text that merely contains the word "email", or offline parsing of `.eml` files (→ just use Read).

Email Operations Skill

Tool Inventory

ToolResponsibilityRead-only
EmailQueryQuery email accounts / messages / stats / search (mode: list-accounts / list-unified / list-messages / get-message / search / unread-stats / list-mailboxes)Yes
EmailMutateSend / reply / forward / archive / delete / move messages (send / delete / move require approval)No

Loading: Both are deferred tools. Before calling either, activate its schema with ToolSearch(names: "EmailQuery,EmailMutate").

Which Query Mode Should I Use?

Pick based on your goal — don't guess blindly:

Want to know how many unread?           → unread-stats
Want a unified inbox view?              → list-unified (scope: all-inboxes)
Want sent / drafts / flagged?           → list-unified (scope: sent/drafts/flagged)
Want to browse a specific folder?       → list-messages (needs accountEmail + mailbox)
Want to search by keyword/sender?       → search (query accepts natural language)
Want to read a message in full?         → get-message (needs messageId)
Don't know which accounts are set up?   → list-accounts (always call this first to get accountEmail)
Need to know what folders exist?        → list-mailboxes

All list modes support cursor + pageSize (1-50) pagination.

Core Workflows

Workflow 1: View and Reply to a Message
1. list-accounts                → obtain the available accountEmail
2. list-unified (all-inboxes)   → scan inbox overview
3. get-message (messageId)      → read the full content of the message you need to reply to
4. Draft the reply
5. ⚠️ Show the draft (recipient / subject / body) in plain text and explicitly ask "send?" — wait for the user to confirm
6. send (with inReplyTo + references) → only send after the user confirms

Why is step 5 mandatory? Because once an email is sent, it can't be recalled. Wrong recipient or wrong content can lead to irreversible embarrassment or even business damage. Always let the user verify recipient, subject, and body with their own eyes before sending.

Why must step 6 carry inReplyTo? Because without it, the reply shows up as a standalone new message in the recipient's inbox, detached from the original thread. All major mail clients (Gmail, Outlook, Apple Mail) rely on the Message-ID header to thread conversations. Set inReplyTo to the original message's messageId, and set references to the original's references chain plus the original messageId.

Workflow 2: Compose a New Message
1. list-accounts                → confirm which account to send from
2. Draft the email based on user intent
3. ⚠️ Show the complete email (recipient / subject / body) in plain text and explicitly ask "send?" — wait for the user to confirm
4. send                         → send after confirmation
Workflow 3: Search and Bulk Organize
1. search (query: "newsletter") → find all matching messages
2. Report a summary of the results to the user
3. batch-move / batch-delete    → perform bulk operations per user instruction

Handling large result sets: Searches can return many results. Follow these principles:

  • Fetch the first page with pageSize: 20, then report the total count and a sample to the user
  • Wait for the user to confirm the scope before running bulk operations, to avoid mistakes
  • Process in batches (no more than 50 per batch) and report progress between batches
  • Watch out for false positives: Search results may include irrelevant messages (e.g. searching "newsletter" can match ordinary emails that merely mention the word). Always have the user review a sample before bulk deletion.
Workflow 4: Daily Email Digest
1. unread-stats                 → quickly see unread counts per account
2. list-unified (all-inboxes, pageSize: 20) → fetch the latest message list
3. get-message on each important message → read the details
4. Produce a structured digest (grouped by urgency / sender)

Forwarding Messages

There is no standalone forward action — forwarding is implemented via send:

  1. get-message to retrieve the full original content
  2. Compose a new message: set to to the forwarding target, prefix subject with Fwd:, and include the original content in bodyText (add an "---------- Forwarded message ----------" separator along with the original sender / date / subject)
  3. Show the full forward in plain text and wait for the user to confirm before send
Show full SKILL.md (284 more words)Show less

Attachments

The current version does not support sending or downloading email attachments. If the user asks:

  • Send attachment → tell them "The current version does not support sending email attachments via AI. Please do this directly in an email client such as Gmail or Outlook."
  • Download attachment → same response, redirect them to their email client.

Message Format

The bodyText parameter of the send action is plain text only — HTML is not supported. If the user asks for rich formatting (bold, images, tables, etc.), tell them only plain text is supported and recommend composing complex formatting in an email client.

Common Mistakes — You Must Avoid These

  1. Sending without a plain-text confirmation step first: This is the most serious mistake. Never send an email on your own authority — always show the full draft and wait for the user to reply "send".
  2. Replying without setting inReplyTo: The thread breaks, and the recipient sees an orphan new message.
  3. Calling tools blindly without knowing accountEmail: Many actions require accountEmail. When unsure, call list-accounts first.
  4. Putting passwords, keys, or credentials in the body: Never do this.
  5. Forgetting the Re: prefix on replies: Keep the subject as Re: <original subject> to preserve threading.
  6. Forgetting the Fwd: prefix on forwards: Keep the subject as Fwd: <original subject>.
  7. Running bulk operations without a sample review: Before any large-scale delete / move, show samples and wait for user confirmation to avoid wiping important mail.

Quick Reference

EmailQuery 7 modes: list-accounts · list-mailboxes · list-messages · list-unified · get-message · search · unread-stats

EmailMutate 8 actions: send · mark-read · flag · delete · move · batch-mark-read · batch-delete · batch-move

Send parameters (send): requires accountEmail, to, subject, bodyText; replies additionally require inReplyTo and references. See the tool schema for full parameter details.

© OpenLoaf, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in apps/server/src/ai/builtin-skills/email-ops/en of OpenLoaf/OpenLoaf.

Open the folder on GitHubat commit f7eccf6

Compare with similar skills

Email Operations next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Email Operations compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Email Operations this skillOpenLoaf/OpenLoaf108—~1.8kAutomated safety check: PassAGPL-3.0
Crisis And Moderationsocial-media-skills/skills125—~1.7kAutomated safety check: PassMIT
Loop FactoryJuliusBrussee/skills161—~2kAutomated safety check: PassMIT
Reddit Engageshawnla90/gtm-coding-agent154—~794Automated safety check: PassMIT
3D Cv Labeling 2026curiositech/some_claude_skills2431 repos~3.2kAutomated safety check: NotesMIT
Process Inboxtelegramdesktop/tdesktop33k2 repos~4.5kAutomated safety check: PassGPL-3.0

Similar skills

  • Crisis And Moderation

    social-media-skills/skills

    A skill your agent uses when something goes wrong on social — the crisis-and-moderation playbook for negative moments, pile-ons, misinformation/deepfakes about the brand, offensive-post backlash…

    125 GitHub stars~1.7k tokensUpdated 7 days ago
    Agent WorkflowsAuto-check passed
  • Loop Factory

    JuliusBrussee/skills

    Run a spec-driven agent loop where coding tasks live as markdown specs that move through inbox → active → archive, get implemented by Claude Code or Codex, and pass a review gate before they count…

    161 GitHub stars~2k tokensUpdated 2 mo ago
    Agent WorkflowsAuto-check passed
  • Reddit Engage

    shawnla90/gtm-coding-agent

    Draft and approve Reddit comments from scouted opportunities with a hard human-in-the-loop gate.

    154 GitHub stars~794 tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check passed
  • 3D Cv Labeling 2026

    curiositech/some_claude_skills

    Expert in 3D computer vision labeling tools, workflows, and AI-assisted annotation for LiDAR, point clouds, and sensor fusion.

    243 GitHub starsUsed in 1 repo~3.2k tokens
    AI & LLM EngineeringAuto-check: notes
  • Process Inbox

    telegramdesktop/tdesktop

    Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.

    33k GitHub starsUsed in 2 repos~4.5k tokens
    Productivity & AutomationAuto-check passed
  • Continue

    telegramdesktop/tdesktop

    Continue autonomous Telegram Desktop development from the shared ai-tdesktop repository.

    33k GitHub starsUsed in 2 repos~9.4k tokens
    Productivity & AutomationAuto-check passed

More from OpenLoaf/OpenLoaf

All 33 skills in this repo
  • Agent Orchestration Skill

    OpenLoaf/OpenLoaf

    Triggers when the master Agent faces a multi-step complex task and is deciding whether / how to outsource sub-tasks to built-in subagents (browser / doc-editor / data-analyst / extractor /…

    108 GitHub stars~1.9k tokensUpdated 4 mo ago
    Auto-check passed
  • Browser Ops Skill

    OpenLoaf/OpenLoaf

    Triggered when the user asks for page-level interaction with a specific webpage: login, form filling, button clicks, pagination scraping, screenshots, downloading page images, handling CAPTCHAs or…

    108 GitHub stars~1.5k tokensUpdated 4 mo ago
    Auto-check passed
  • Canvas Ops Skill

    OpenLoaf/OpenLoaf

    Triggered when the user wants lifecycle management of OpenLoaf canvases / whiteboards: create, open, filter, duplicate, delete, rename, or change ownership.

    108 GitHub stars~1.4k tokensUpdated 4 mo ago
    Auto-check passed
  • Reads, edits, converts and reviews Word documents through three dedicated tools, covering tracked changes, comments, tables, images and format conversion.

    108 GitHub stars~1.9k tokensUpdated 4 mo ago
    Auto-check passed
  • macOS Desktop Control

    OpenLoaf/OpenLoaf

    Guides an agent to operate native macOS apps by surveying an app first, acting through intents, menus or keystrokes, and verifying each step, in OpenLoaf Desktop only.

    108 GitHub stars~2.4k tokensUpdated 4 mo ago
    Auto-check passed
  • PDF Skill

    OpenLoaf/OpenLoaf

    All-in-one PDF read / write / convert / OCR. An agent skill from OpenLoaf/OpenLoaf.

    108 GitHub stars~2k tokensUpdated 4 mo ago
    Auto-check passed

Questions about Email Operations

What does Email Operations do?

Handles a real email account through query and mutate tools: check the inbox, read, search, reply, forward, compose and organize, with sending always confirmed first. Two tools do the work. `EmailQuery` is read-only and has modes for listing accounts, a unified inbox view, listing messages, fetching one message, searching, unread counts and mailbox lists, with cursor paging.

When should I use Email Operations?

Email Operations fits situations like: checking an inbox or finding messages from a particular sender; replying to or forwarding an email in its original thread; composing and sending a new email after reviewing the draft; searching and archiving a batch of newsletters.

How do I install Email Operations in Claude Code?

Run `npx skills add OpenLoaf/OpenLoaf --skill email-ops-skill -a claude-code`. Or copy the skill folder (apps/server/src/ai/builtin-skills/email-ops/en in OpenLoaf/OpenLoaf) into .claude/skills/email-ops-skill in your project. Claude Code loads it when a task matches its description.

How do I install Email Operations in Codex?

Run `npx skills add OpenLoaf/OpenLoaf --skill email-ops-skill -a codex`. Or copy the skill folder (apps/server/src/ai/builtin-skills/email-ops/en in OpenLoaf/OpenLoaf) into .agents/skills/email-ops-skill in your project. Codex loads it when a task matches its description.

Can I use Email Operations in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OpenLoaf/OpenLoaf --skill email-ops-skill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/email-ops-skill, .gemini/skills/email-ops-skill, .github/skills/email-ops-skill and .opencode/skills/email-ops-skill in your project.

What does Email Operations need to run?

SKILL.md names no scripts, command-line tools or credentials: Email Operations is instructions for the agent only. Our summary lists: A configured email account in the host application with the EmailQuery and EmailMutate tools.

Does Email Operations access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Email Operations safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Email Operations use?

Email Operations is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Email Operations use?

About 1.8k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Email Operations?

Skills that share tags, products or a category with Email Operations: Crisis And Moderation (social-media-skills/skills, 125 stars), Loop Factory (JuliusBrussee/skills, 161 stars), Reddit Engage (shawnla90/gtm-coding-agent, 154 stars) and 3D Cv Labeling 2026 (curiositech/some_claude_skills, 243 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Email Operations?

OpenLoaf (a GitHub organization) maintains it in OpenLoaf/OpenLoaf, which has 108 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on May 14, 2026.

Source: OpenLoaf/OpenLoaf on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.