# Send Snail Mail to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "snail-mail",
    "name": "Snail Mail",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/dvdegenz/snail-mail",
    "canonicalUrl": "https://clawhub.ai/dvdegenz/snail-mail",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/snail-mail",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=snail-mail",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "scripts/inbox.js"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "snail-mail",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T10:04:38.554Z",
      "expiresAt": "2026-05-08T10:04:38.554Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=snail-mail",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=snail-mail",
        "contentDisposition": "attachment; filename=\"snail-mail-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "snail-mail"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/snail-mail"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/snail-mail",
    "downloadUrl": "https://openagent3.xyz/downloads/snail-mail",
    "agentUrl": "https://openagent3.xyz/skills/snail-mail/agent",
    "manifestUrl": "https://openagent3.xyz/skills/snail-mail/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/snail-mail/agent.md"
  }
}
```
## Documentation

### Operator Inbox

A "slow channel" between you and your operator. Not every event deserves a ping. The inbox captures what matters and presents it beautifully when they're ready to look.

### Setup

On first use, the inbox file is created automatically at {workspace}/inbox/messages.json.

Requires: node (Node.js runtime).

### When to Write to the Inbox

Write an inbox entry when something is notable enough that your operator would want to know, but not urgent enough to interrupt them.

### Write when:

Needs decision — something only a human can resolve (payment, approval, policy)
Abnormal — errors, failures, unexpected patterns, security events
Interesting — notable engagement, media mentions, milestones, opportunities
FYI — context that might matter later but needs no action now

### Do NOT write when:

Routine success ("cron ran fine", "heartbeat OK")
Something you already told them in chat
Trivial events with no lasting significance
Duplicate of something already in the inbox

### Priority levels:

urgent — needs attention within hours (prefix title with [URGENT])
important — should see today (prefix title with [IMPORTANT])
normal — whenever they check (no prefix)

### Writing good entries:

Title: Short, scannable. Include the WHO or WHAT. ("@bigaccount (500K) mentioned us", not "Social media event")
Message: 1-3 sentences. What happened, why it matters, what (if anything) needs doing. Include links/handles when relevant.

### CLI Usage

# Add entry
node {skill}/scripts/inbox.js add "Title" "Description of what happened"

# Add with priority
node {skill}/scripts/inbox.js add "[URGENT] Server disk 95%" "Only 2GB remaining on /dev/sda1"

# List unread
node {skill}/scripts/inbox.js list

# List all (including read)
node {skill}/scripts/inbox.js list all

# List archived
node {skill}/scripts/inbox.js list archived

# Mark one read
node {skill}/scripts/inbox.js read <id>

# Mark all read
node {skill}/scripts/inbox.js read-all

# Archive one
node {skill}/scripts/inbox.js archive <id>

# Archive all read
node {skill}/scripts/inbox.js archive-read

# Render for chat (auto-detects channel via OPENCLAW_CHANNEL)
node {skill}/scripts/inbox.js render [unread|all|archived]

# Render as HTML (force)
node {skill}/scripts/inbox.js render --html

# Render as markdown (force)
node {skill}/scripts/inbox.js render --md

# Render as plain text (force)
node {skill}/scripts/inbox.js render --text

### Presenting the Inbox

When the operator asks to see their inbox (or says "inbox", "messages", "check inbox"), run:

node {skill}/scripts/inbox.js render [unread|all|archived] [--html|--md|--text]

Choose format based on channel:

Telegram, webchat → --html
Discord, Slack → --md
SMS, plain → --text

Send the output as your reply. Do not add commentary unless they ask.

### Heartbeat Integration

During heartbeats, check for unread urgent/important items:

node {skill}/scripts/inbox.js list unread --json

If urgent items exist, surface them proactively. Otherwise stay quiet.

### Storage

Messages stored in {workspace}/inbox/messages.json. Single-writer (the agent), so no locking needed. Writes use atomic rename (write .tmp → rename) to prevent corruption.

Environment variables:

OPENCLAW_WORKSPACE — base directory for inbox storage (defaults to $HOME)
OPENCLAW_CHANNEL — used by render auto-format detection (telegram/discord/slack/webchat)
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: dvdegenz
- Version: 1.0.2
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-01T10:04:38.554Z
- Expires at: 2026-05-08T10:04:38.554Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/snail-mail)
- [Send to Agent page](https://openagent3.xyz/skills/snail-mail/agent)
- [JSON manifest](https://openagent3.xyz/skills/snail-mail/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/snail-mail/agent.md)
- [Download page](https://openagent3.xyz/downloads/snail-mail)