Skip to content
Back to skills

Mail

ASecurity

Agent mail for multi-session coordination. Wraps levmail CLI. Register, send, inbox, claim, broadcast, roster.

  • 22 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 20, 2026
ai-agentsshellbash

Works with

  • cli

Security analysis

A100/100

Scanned September 20, 2026

npx -y skills add lev-os/agents --skill mail --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mail?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mail
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lev-os-mail/badge)](https://www.skillsdirectory.com/skills/lev-os-mail)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mail
description: "Agent mail for multi-session coordination. Wraps levmail CLI. Register, send, inbox, claim, broadcast, roster."
---

# /mail — Agent Mail

Multi-session agent coordination over `.lev/mail/`. Wraps the `levmail` CLI at `~/.local/bin/levmail`.

## Commands

```
/mail                      # inbox (all messages, newest first)
/mail inbox                # same
/mail inbox <agent-id>     # messages addressed to <agent-id>
/mail send <to> <subject>  # write + send a message (body from context or stdin)
/mail read <file>          # read a specific message
/mail claim <path>         # claim ownership of a file/workstream/folder
/mail broadcast <subject>  # send to all-agents
/mail register <id>        # set this session's agent ID
/mail whoami               # show current agent ID
/mail roster               # show all known agent IDs from message headers
/mail archive <file>       # move message to archive/
```

## How It Works

### First Use in a Session

If no agent ID is registered, prompt to register:
```
You haven't registered an agent ID yet.
Run: /mail register <id>

Active roster:
  A0 — oversight
  A1 — arch IR
  A2 — dashboard
  A3 — constraint code
  A4 — constraint content
```

### /mail (inbox)

```bash
levmail inbox
```

Output format:
```
INBOX (5 messages)
──────────────────
20260411-from-A3-to-A0-parity-update.md    from:A3  subject:parity-update
20260411-broadcast-A0-convergence.md        from:A0  subject:convergence
...
```

### /mail send <to> <subject>

Inline body from conversation context. Uses `levmail send`:

```bash
echo "body text" | levmail send <to> <subject>
```

For longer messages, write the body from the current conversation's key points.

### /mail claim <path>

```bash
levmail claim <path>
```

Broadcasts to all agents: "Agent {id} claims ownership of {path}. Other agents should not modify without coordinating."

### /mail broadcast <subject>

```bash
echo "body" | levmail broadcast <subject>
```

Sends to `all-agents` — every session sees it in their inbox.

## Message Format

Messages are markdown files in `.lev/mail/` with YAML frontmatter:

```yaml
---
from: A0
to: A3
date: 2026-04-11
subject: parity-update
---

Message body here.
```

## Identity (env-var primary, file fallback)

Identity precedence (highest to lowest):

1. `LEVMAIL_AGENT_ID` env var — per-shell, clobber-safe (PREFERRED)
2. `.lev/mail/.agent-id` file — shared across all shells, last writer wins
3. `"unregistered"` — no identity at all

### Recommended session-start ritual

```bash
export LEVMAIL_AGENT_ID=<your-id>
levmail register <your-id>   # optional; also writes the file for shells that don't export
```

The export pins identity for this shell. Parallel sessions registering different ids in the file no longer clobber you. Verify with `levmail roster` — the current-agent row shows `(source: env LEVMAIL_AGENT_ID — clobber-safe)` when correctly set.

### Legacy behavior

Shells that don't export `LEVMAIL_AGENT_ID` fall back to the `.agent-id` file as before. The env var is opt-in. `cmd_register` warns when the env var is set but differs from the id you just registered.

### History

The clobber problem was load-bearing in 2026-04-22 multi-session work (thor-runtime-proof session 8 + flight-observability-blackbox session 2 had concurrent registrations stepping on each other). Fix landed 2026-04-22 in `~/.local/bin/levmail`; broadcast announcement at `.lev/mail/20260422-100203-broadcast-A-arch-levmail-cli-fix-env-var-clobber-immunity-landed.md`.

## Data Sources

- `.lev/mail/*.md` — message files
- `.lev/mail/.agent-id` — current session's registered ID
- `.lev/mail/archive/` — archived messages
- `~/.local/bin/levmail` — the CLI

## Protocols

### Detangle Protocol (established 2026-04-10)

Multi-agent coordination for workstream convergence:
1. Each agent dumps nuggets: `/mail broadcast nugget-dump`
2. Each reads all dumps: `/mail inbox`
3. Claim lanes: `/mail claim <path>`
4. Send handoffs: `/mail send <agent> <topic>`
5. Update handoffs with `detangle_sync` block

Full protocol: `.lev/mail/20260410-detangle-protocol-all-agents.md`

### Nugget Ledger Format

```
[VERIFIED|ASSUMED|STALE] <nugget> — owner: <path> — confidence: <0-1>
```

## Graph Footer

After every /mail command, append the shared graph footer from `~/.claude/skills/_shared/graph-footer.md`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.