# Send Channel Reminders 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": "channel-reminders",
    "name": "Channel Reminders",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/alex3alex/channel-reminders",
    "canonicalUrl": "https://clawhub.ai/alex3alex/channel-reminders",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/channel-reminders",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=channel-reminders",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "package.json"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "channel-reminders",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-29T10:27:58.622Z",
      "expiresAt": "2026-05-06T10:27:58.622Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=channel-reminders",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=channel-reminders",
        "contentDisposition": "attachment; filename=\"channel-reminders-1.3.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "channel-reminders"
      },
      "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/channel-reminders"
    },
    "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/channel-reminders",
    "downloadUrl": "https://openagent3.xyz/downloads/channel-reminders",
    "agentUrl": "https://openagent3.xyz/skills/channel-reminders/agent",
    "manifestUrl": "https://openagent3.xyz/skills/channel-reminders/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/channel-reminders/agent.md"
  }
}
```
## Documentation

### Channel Reminders

Навык для создания напоминаний через cron jobs с доставкой в Telegram.

### 1. Heartbeat должен быть включён

В ~/.openclaw/openclaw.json проверь:

{
  "agents": {
    "defaults": {
      "heartbeat": {
        "every": "5m",      // ← НЕ должен быть "0m" или отсутствовать
        "target": "last"    // ← Куда отправлять ответы
      }
    }
  }
}

Если heartbeat.every = "0m" или отсутствует — напоминания НЕ будут работать!

### 2. HEARTBEAT.md должен содержать инструкцию

В HEARTBEAT.md main агента ОБЯЗАТЕЛЬНО добавь раздел для обработки напоминаний:

### Напоминания (systemEvent)

Когда получаешь systemEvent с напоминанием (обычно содержит ⏰, 📅, 💰, 📞, ✅, 🔔, 💊, 🏃 и т.д.) — передай его пользователю в Telegram.

**Пример:**
- Получено: \`⏰ НАПОМИНАНИЕ: оплатить интернет\`
- Ответ в Telegram: \`💰 Напоминаю: пора оплатить интернет!\`

Просто доставь напоминание без лишних комментариев.

### 3. wakeMode: "now" в cron job

Всегда указывай "wakeMode": "now" чтобы heartbeat сработал сразу:

{
  "sessionTarget": "main",
  "wakeMode": "now",    // ← ОБЯЗАТЕЛЬНО для немедленного срабатывания
  "payload": { ... }
}

Без этого напоминание будет ждать следующего heartbeat (до 5 минут).

### 🧪 ПОСЛЕ УСТАНОВКИ: Тестирование

После установки навыка обязательно протестируй все подходы с пользователем:

### Шаг 1: Тест простого напоминания (main агент)

Поставь тестовое напоминание через 1 минуту

### Шаг 2: Тест через message tool (если есть несколько ботов)

Отправь тестовое сообщение через message tool

### Шаг 3: Определи рабочий вариант

После тестов запиши в память какой подход работает:

Пример записи в MEMORY.md или memory/YYYY-MM-DD.md:

## Напоминания

**Рабочий подход:** sessionTarget: "main" + systemEvent + wakeMode: "now"
**Проверено:** 2026-02-14
**Chat ID пользователя:** 7977422300

### Шаг 4: Если не работает

Проверь:

✅ Heartbeat включён (heartbeat.every ≠ "0m")
✅ HEARTBEAT.md содержит инструкцию для напоминаний
✅ wakeMode: "now" указан в cron job
✅ Telegram канал настроен и работает

### Для MAIN агента

{
  "name": "Напоминание",
  "schedule": { "kind": "at", "at": "2026-02-14T15:00:00+03:00" },
  "sessionTarget": "main",
  "wakeMode": "now",
  "payload": {
    "kind": "systemEvent",
    "text": "⏰ НАПОМИНАНИЕ: текст напоминания"
  }
}

Main агент получит systemEvent → heartbeat сработает → агент ответит в чат.

### Для НЕ-main агентов (Semen, Andrey, Hristofor, Discussions)

Используй схему: main агент + message tool

{
  "agentId": "main",
  "name": "Напоминание от Semen",
  "schedule": { "kind": "at", "at": "2026-02-14T15:00:00+03:00" },
  "sessionTarget": "main",
  "wakeMode": "now",
  "payload": {
    "kind": "systemEvent",
    "text": "📤 ОТПРАВИТЬ НАПОМИНАНИЕ:\\naccountId: semen\\ntarget: 7977422300\\nmessage: 🤗 текст напоминания"
  }
}

Как это работает:

Cron срабатывает → systemEvent идёт в main session main агента
Main агент видит 📤 ОТПРАВИТЬ НАПОМИНАНИЕ: в HEARTBEAT.md
Main агент парсит accountId, target, message
Main агент отправляет через message tool с указанным accountId
Пользователь получает сообщение от бота НЕ-main агента

### Chat ID пользователя

Где взять:

curl "https://api.telegram.org/bot<BOT_TOKEN>/getUpdates" | jq '.result[].message.chat.id'

Или из metadata сообщения — в заголовке Telegram сообщения виден id:XXXXXXXX

### AccountId для каждого агента

АгентaccountIdДжон Зойдберг (main)mainСемёнsemenАндрейandreyХристофорhristoforDiscussionsdiscussions

### Одноразовое (at)

{ "kind": "at", "at": "2026-02-14T15:00:00+03:00" }

⚠️ Всегда указывай таймзону! Без неё = UTC.

### Повторяющееся (cron)

{ "kind": "cron", "expr": "0 9 * * *", "tz": "Europe/Moscow" }

ВыражениеЗначение0 9 * * *Каждый день в 9:000 9 * * 1-5Будни в 9:000 18 * * 5Каждую пятницу в 18:000 */2 * * *Каждые 2 часа

### Интервал (every)

{ "kind": "every", "everyMs": 3600000 }

ИнтервалМиллисекунды5 минут3000001 час360000024 часа86400000

### Main агент: напомнить через 10 минут

{
  "name": "Напоминание через 10 мин",
  "schedule": { "kind": "at", "at": "<текущее время + 10 мин>" },
  "sessionTarget": "main",
  "wakeMode": "now",
  "payload": {
    "kind": "systemEvent",
    "text": "⏰ НАПОМИНАНИЕ: проверить почту"
  }
}

### Semen: ежедневное напоминание

{
  "agentId": "main",
  "name": "Утреннее напоминание от Semen",
  "schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Europe/Moscow" },
  "sessionTarget": "main",
  "wakeMode": "now",
  "payload": {
    "kind": "systemEvent",
    "text": "📤 ОТПРАВИТЬ НАПОМИНАНИЕ:\\naccountId: semen\\ntarget: 7977422300\\nmessage: 🤗 Доброе утро! Проверь задачи на сегодня."
  }
}

### Hristofor: напоминание об оплате

{
  "agentId": "main",
  "name": "Оплата интернета",
  "schedule": { "kind": "at", "at": "2026-02-25T10:00:00+03:00" },
  "sessionTarget": "main",
  "wakeMode": "now",
  "payload": {
    "kind": "systemEvent",
    "text": "📤 ОТПРАВИТЬ НАПОМИНАНИЕ:\\naccountId: hristofor\\ntarget: 7977422300\\nmessage: 💰 Напоминание: оплатить интернет до 28 февраля"
  }
}

### Посмотреть все

cron list

### Удалить

cron remove jobId: "uuid"

### Отключить/включить

cron update jobId: "uuid" patch: { enabled: false }
cron update jobId: "uuid" patch: { enabled: true }

### Формат systemEvent для НЕ-main агентов

📤 ОТПРАВИТЬ НАПОМИНАНИЕ:
accountId: <accountId бота>
target: <Chat ID пользователя>
message: <текст напоминания с эмодзи>

Эмодзи для разных типов:

ЭмодзиАгент🤗Semen🧑💻Andrey💰Hristofor💬Discussions

### Проверка

Перед использованием навыка убедись, что в HEARTBEAT.md main агента есть инструкция для обработки 📤 ОТПРАВИТЬ НАПОМИНАНИЕ:.

Проверь файл: ~/.openclaw/workspace-main/HEARTBEAT.md

Ищи раздел:

### Напоминания от других агентов (📤 ОТПРАВИТЬ НАПОМИНАНИЕ)

### Если раздела нет — добавь:

### Напоминания от других агентов (📤 ОТПРАВИТЬ НАПОМИНАНИЕ)

Когда получаешь systemEvent с \`📤 ОТПРАВИТЬ НАПОМИНАНИЕ:\` — это запрос от НЕ-main агента отправить сообщение через их бота.

**Формат:**
\\\`\\\`\\\`
📤 ОТПРАВИТЬ НАПОМИНАНИЕ:
accountId: semen
target: 7977422300
message: 🤗 текст напоминания
\\\`\\\`\\\`

**Действие:** Используй \`message\` tool:
\\\`\\\`\\\`json
{
  "action": "send",
  "channel": "telegram",
  "accountId": "<accountId из systemEvent>",
  "target": "<target из systemEvent>",
  "message": "<message из systemEvent>"
}
\\\`\\\`\\\`

Ничего больше не отвечай после отправки (NO_REPLY).

### Как это работает

При получении такого systemEvent, main агент:

Парсит accountId, target, message из текста
Использует message tool с этими параметрами
Сообщение отправляется от бота с указанным accountId
Main агент отвечает NO_REPLY (не дублирует в свой чат)

### Почему эта схема работает

Main агент имеет стабильный heartbeat — systemEvent всегда обрабатывается
Message tool работает — проверено CLI и tool call
AccountId маршрутизирует — сообщение идёт от нужного бота
Target указывает получателя — Chat ID пользователя

### Альтернатива: прямая отправка через message tool

Если агент хочет отправить сообщение СЕЙЧАС (не по расписанию):

{
  "action": "send",
  "channel": "telegram",
  "accountId": "semen",
  "target": "7977422300",
  "message": "🤗 Текст сообщения"
}

Это работает для любого агента, если он имеет доступ к message tool.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: alex3alex
- Version: 1.3.0
## 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-04-29T10:27:58.622Z
- Expires at: 2026-05-06T10:27:58.622Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/channel-reminders)
- [Send to Agent page](https://openagent3.xyz/skills/channel-reminders/agent)
- [JSON manifest](https://openagent3.xyz/skills/channel-reminders/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/channel-reminders/agent.md)
- [Download page](https://openagent3.xyz/downloads/channel-reminders)