Skip to main content

omp-mail

Use when another omp session should be messaged, when a task or message arrived via mail and must be answered by mail, or when coordinating with agents running in other terminals/projects. Enables cross-process agent mail via mail_send/mail_agents.

Source facts

Repository
jokull/omp-mail
Last source activity
August 12, 2026 at 20:43
Detected SKILL.md language
English
Stars
2
Forks
1

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
omp-mail
description
Use when another omp session should be messaged, when a task or message arrived via mail and must be answered by mail, or when coordinating with agents running in other terminals/projects. Enables cross-process agent mail via mail_send/mail_agents.
# Agent Mail (omp-mail) Sessions on this machine can exchange mail across processes. When you receive mail, it is injected into your context as a `📬 Mail from …` user message — the `from` address is always given in the reply hint. ## When to reply by mail vs in the TUI - **Task arrived by mail** (a `📬 Mail from …` message is in your context) → reply via `mail_send` when you finish, and ask clarifying questions via `mail_send` too — no one may be at the other terminal to answer a prompt. Reply only when a response is actually wanted: new work, a question, or a blocker. Pure confirmations and closings need no reply. - **Direct TUI task** (a human is typing to you) → respond in place; do **not** send mail for that task. ## Tools - `mail_agents()` — discover peers first. Returns sessionId, slug, aliases, name, cwd, live state. `●` = live now, `○` = offline (mail still works — delivered on resume). - `mail_send(to, subject, body)` — send. `to` accepts, in order of preference: 1. the **slug** or **alias** shown in `mail_agents` (human-friendly, stable) 2. the full **session id** (exact) 3. `"all"` — broadcast to every registered session (sender included; use sparingly — replies to broadcasts should target the sender's id directly) ## Invocation: JSON args `mail_send` takes its arguments as a JSON object — `{ "to": …, "subject": …, "body": … }`. Write it as **valid single-line JSON**: literal newlines inside a JSON string are a parse error ("Unterminated string"). For long or multiline bodies: - **Point, don't paste.** The recipient is an agent with full tool access — it can read repo files itself. A body like `See HANDOFF.md in the repo root — implement the fix there, reply by mail when done or blocked.` beats pasting a document into JSON. - Only inline text the recipient cannot read itself. - If you must inline multiline text, escape newlines (`\n`) in the JSON string. ## Etiquette - **Don't acknowledge acknowledgments.** If the last message was a confirmation, a closing, or a status update with no question and no blocker, do **not** reply — the thread is over. Replying to closings starts an "ok bye" loop. The mail layer suppresses turn-triggering for rapid back-and-forth with the same peer; treat that as a signal the thread is done. - Reply to a broadcast by addressing the **sender's id**, not `"all"`. - Prefix reply subjects with `Re: ` to keep threads readable. - Keep bodies self-contained in context: say who you are and what you need — the recipient may have no other context about you or the task. For detail, point to files the recipient can read; don't paste large documents into the body. - Mail is not instant-messaging: the recipient may be offline or mid-task. State what you need and when, so they can act on arrival. - If a peer is unknown, run `mail_agents()` before guessing an address — guessing wastes a round trip.
View on GitHub