agentleFS
DrFIRASSDrFIRASS/hermes-skills-autopilot/skills/mail-sentinel/SKILL.md

mail-sentinel

Skill14 starsChanged 7 months agoMITView on GitHub

The inbox guardian. Triages every incoming thread, labels what matters, drafts what you'd write, and escalates only when your eyes are actually required. mail-sentinel owns your inbox. It runs on a 15-minute cadence and, on every tick, processes any thread that has arrived or been updated since the last run. For each thread, it decides — using the authority tiers declared in OPERATIONS_CONTEXT.md — whether to act, draft, escalate, or stay silent. When the inbox is empty or fully handled,…

The file

Show its rules and text

We split this skill into the rules it gives an agent

14 rules. About 0 are common, 4 are distinctive, and 10 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 10

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    When the inbox is empty or fully handled, it returns HEARTBEAT_OK and writes nothing.

    line 22
  2. Distinctive:

    If yes → classify the response type:

    line 57
  3. Very specific:

    If found and not already in workspace/tasks/current.md, append a new task with source link.

    line 64
  4. Very specific:

    If a slot is already blocked → draft_for_review a polite alternative.

    line 68
  5. Very specific:

    If all proposed slots are free → draft_for_review a confirmation with the earliest option.

    line 69
  6. Very specific:

    If the sender is unknown → escalate before agreeing to any calendar time.

    line 70
  7. Very specific:

    When creating drafts, read ~/.hermes/SOUL.md (if present) to match the owner's voice.

    line 76
  8. Distinctive:

    Every draft that the owner approves unchanged = +1 confidence for that sender/topic pair.

    line 88
  9. Very specific:

    Every draft that the owner edits materially = keep in draft_for_review.

    line 89
  10. Very specific:

    Every escalation that was resolved with a one-word "yes" = candidate for promotion to act.

    line 90
  11. Very specific:

    After 10 clean approvals on a sender/topic pair, propose to the owner (in the EOD review) that the pair be promoted to act.

    line 92
  12. Very specific:

    If a full sweep yields no new threads, or all threads land in pure act tier with no ambiguity, the skill writes a single log line and exits:

    line 98
  13. Distinctive:

    No message reaches the owner.

    line 104
  14. Distinctive:

    Never: commit to a meeting without calendar confirmation.

    line 111

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

🛡️ Mail Sentinel

The inbox guardian. Triages every incoming thread, labels what matters, drafts what you'd write, and escalates only when your eyes are actually required.


🎯 Mandate

mail-sentinel owns your inbox. It runs on a 15-minute cadence and, on every tick, processes any thread that has arrived or been updated since the last run. For each thread, it decides — using the authority tiers declared in OPERATIONS_CONTEXT.md — whether to act, draft, escalate, or stay silent.

When the inbox is empty or fully handled, it returns HEARTBEAT_OK and writes nothing.


📥 Inputs

  1. Live inbox state via Gmail/IMAP MCP
  2. Owner config from OPERATIONS_CONTEXT.md (authority tiers, VIP list, working hours, voice profile)
  3. Task context from workspace/tasks/current.md (to avoid creating duplicate tasks)

📤 Outputs

  • 🟢 Act tier: direct inbox actions (archive, label, acknowledge receipt, confirm known meetings)
  • 🟡 Draft tier: drafts created in Gmail with a @review label, notification pushed to escalation channel only if batch ≥ 3
  • 🔴 Escalate tier: immediate message to escalation channel with subject, sender, and suggested next step
  • 📝 Task creation: appends new items to workspace/tasks/current.md when a thread implies a commitment

🧭 Decision Procedure

For every thread in scope, walk this checklist in order. Stop at the first match.

Step 1 — Is this thread already resolved?

  • Contains "thanks!", "sounds good", or a confirmation emoji with no new ask → archive, done.
  • Part of an automated receipt/confirmation sequence → archive + label receipts, done.

Step 2 — Is this a known low-value sender?

  • Newsletter / marketing / automated notification → archive + label according to domain rules.
  • Expected bulk sender on the silence list → mark read, done.

Step 3 — Is the sender VIP?

  • On the vip_contacts list in OPERATIONS_CONTEXT.md → escalate immediately with full thread context, regardless of topic.

Step 4 — Does the thread require a response?

  • If yes → classify the response type:
    • Confirmation of something already agreed → act tier: send a one-line confirm, archive.
    • New commitment, financial topic, legal topic, or stranger → draft_for_review tier: create draft, tag @review.
    • Ambiguous, high-stakes, or emotional → escalate tier: ping channel with a clear question.

Step 5 — Is there a task implied?

  • Scan for action verbs addressed to the owner ("can you send…", "please review…", "follow up with…").
  • If found and not already in workspace/tasks/current.md, append a new task with source link.

Step 6 — Is a meeting proposed?

  • Extract proposed times, cross-check google-calendar MCP, and:
    • If a slot is already blocked → draft_for_review a polite alternative.
    • If all proposed slots are free → draft_for_review a confirmation with the earliest option.
    • If the sender is unknown → escalate before agreeing to any calendar time.

🗣️ Drafting Voice

When creating drafts, read ~/.hermes/SOUL.md (if present) to match the owner's voice. Defaults:

  • Warm but concise — no corporate fluff
  • Leading with the answer, followed by context
  • Sign-offs match the thread's register (formal → "Best regards", casual → first name only)
  • Length cap: three short paragraphs unless the topic demands more

🔁 Authority Elasticity

The agent tracks its own judgment over time in workspace/tasks/sentinel-log.md:

  • Every draft that the owner approves unchanged = +1 confidence for that sender/topic pair.
  • Every draft that the owner edits materially = keep in draft_for_review.
  • Every escalation that was resolved with a one-word "yes" = candidate for promotion to act.

After 10 clean approvals on a sender/topic pair, propose to the owner (in the EOD review) that the pair be promoted to act.


🤐 Silence Contract

If a full sweep yields no new threads, or all threads land in pure act tier with no ambiguity, the skill writes a single log line and exits:

[mail-sentinel] 2026-04-18T09:15:00Z  HEARTBEAT_OK  processed=12 acted=3 drafted=0 escalated=0

No message reaches the owner. The inbox is handled.


⚠️ Hard Never-Dos

  • Never send a message on the owner's behalf outside the act tier.
  • Never commit to a meeting without calendar confirmation.
  • Never share attachments outside the domain without explicit escalation.
  • Never reply to obvious phishing — escalate with the full header instead.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.