Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Channel Reminders

v1.3.0

Создаёт и доставляет пользователю напоминания в текущий чат мессенджера через systemEvent в main session по расписанию или интервалу.

0· 727·0 current·0 all-time
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
The skill's name/description (channel reminders → deliver reminders to chat via scheduled systemEvent) matches the SKILL.md instructions: create cron jobs that send systemEvent payloads to the main session which then deliver messages via the message tool. The package.json keywords (signal, discord) slightly overreach the SKILL.md focus on Telegram, but this is a minor metadata mismatch rather than a functional contradiction.
Instruction Scope
Instructions explicitly tell the operator to edit ~/.openclaw/openclaw.json, HEARTBEAT.md, and to create cron jobs with wakeMode: "now"; these are within the agent's domain and are necessary for the described behavior. The skill does not instruct reading unrelated host files or exfiltrating data. It does assume the main agent is allowed to send messages via the message tool and that a Telegram bot is configured.
Install Mechanism
Instruction-only skill with no install spec and no code files; nothing is written or downloaded. Low install risk.
Credentials
The skill declares no required environment variables, but its instructions expect a Telegram bot (BOT_TOKEN) and an operational message tool. The SKILL.md shows a curl example to get chat IDs using BOT_TOKEN but does not declare or instruct where to store that token. This is an omission (the skill assumes existing Telegram integration) rather than an incoherent request for unrelated credentials.
Persistence & Privilege
always is false and the skill is user-invocable; it does require modifying agent-specific files (openclaw.json, HEARTBEAT.md, memory files) which is expected for this functionality. It does not request permanent elevated privileges or modify other skills' configurations.
Assessment
This skill is instruction-only and appears to do what it says: schedule cron jobs that send systemEvent payloads to the main agent, which then delivers messages to users via the message tool (Telegram). Before using it: 1) Verify you already have a configured Telegram bot/message-tool integration (BOT_TOKEN) and understand where credentials are stored—the skill assumes these exist but does not declare them. 2) Back up ~/.openclaw/openclaw.json and HEARTBEAT.md before editing them; the skill requires changing/adding heartbeat handling. 3) Review who can create cron jobs and who can supply target chat IDs—the main agent will be able to send messages to arbitrary chat IDs if allowed, so restrict who can create jobs. 4) Store Chat IDs and any notes with care (MEMORY.md may contain PII). 5) Test thoroughly with a non-sensitive chat/bot before use. If you want higher confidence, ask the author for explicit instructions on where the Telegram BOT_TOKEN should be configured and examples of the message-tool auth setup; a small reference implementation or unit tests would also reduce ambiguity.

Like a lobster shell, security has layers — review code before you run it.

latestvk975b3tf4j598bvcg8khjqgpe181401p
727downloads
0stars
4versions
Updated 8h ago
v1.3.0
MIT-0

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: Если не работает

Проверь:

  1. ✅ Heartbeat включён (heartbeat.every ≠ "0m")
  2. ✅ HEARTBEAT.md содержит инструкцию для напоминаний
  3. wakeMode: "now" указан в cron job
  4. ✅ 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: 🤗 текст напоминания"
  }
}

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

  1. Cron срабатывает → systemEvent идёт в main session main агента
  2. Main агент видит 📤 ОТПРАВИТЬ НАПОМИНАНИЕ: в HEARTBEAT.md
  3. Main агент парсит accountId, target, message
  4. Main агент отправляет через message tool с указанным accountId
  5. Пользователь получает сообщение от бота НЕ-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
Христофорhristofor
Discussionsdiscussions

Типы расписаний

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

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

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

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

{ "kind": "cron", "expr": "0 9 * * *", "tz": "Europe/Moscow" }
ВыражениеЗначение
0 9 * * *Каждый день в 9:00
0 9 * * 1-5Будни в 9:00
0 18 * * 5Каждую пятницу в 18:00
0 */2 * * *Каждые 2 часа

Интервал (every)

{ "kind": "every", "everyMs": 3600000 }
ИнтервалМиллисекунды
5 минут300000
1 час3600000
24 часа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 агента

Проверка

Перед использованием навыка убедись, что в 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 агент:

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

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

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

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

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

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

Это работает для любого агента, если он имеет доступ к message tool.

Comments

Loading comments...