Agent skill

Send User Message

by TinyAGI in TinyAGI/tinyagi

Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).

MITAuto-check passedProductivity & Automation

Install Send User Message

skills CLI
$ npx skills add TinyAGI/tinyagi --skill send-user-message -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install TinyAGI/tinyagi send-user-message --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/TinyAGI/tinyagi.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/send-user-message .claude/skills/send-user-message && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
send-user-message
GitHub stars
3.6k
Token cost
~829 tokens
SKILL.md length
334 words
Files
3 (incl. scripts)
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).

  • Works in 3 steps: Identify the target → Send the message → Choosing a target when multiple pairings…
  • The agent needs to notify
  • SKILL.md covers When to use, Workflow and Notes
  • Runs Shell and JavaScript scripts from its folder

What it does

Send User Message is an agent skill from TinyAGI/tinyagi. Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp). Use when the agent needs to notify, alert, or send an unsolicited message to a user — especially during heartbeat invocations, scheduled tasks, or when the agent wants to reach out without a prior user message in the current conversation. Triggers: 'send message to user', 'notify user', 'alert user', 'message the user on discord/telegram/whatsapp', or any need to proactively communicate with a paired sender.

Its SKILL.md is about 830 tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/send-message.sh` and `scripts/send_message.js`).

It sits in Productivity & Automation, covering Scheduled and recurring tasks. It works with Discord, Telegram and WhatsApp. The repository describes itself as: TinyAGI is the agent teams orchestrator for One Person Company. (fka TinyClaw). The licence is MIT.

When your agent uses it

  • The agent needs to notify
  • Send an unsolicited message to a user — especially during heartbeat invocations
  • Scheduled tasks
  • The agent wants to reach out without a prior user message in the current conversation

Example prompts

  • “send message to user”
  • “notify user”
  • “alert user”
  • “/send-user-message”

Requirements

  • Node.js
  • A Bash shell

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Identify the target
  2. Send the message
  3. Choosing a target when multiple pairings exist

What it can do on your machine

Read from SKILL.md and the folder at commit 2db3a03. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Shell and JavaScript), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Send User Message loads about 829 tokens when it runs. Until then it costs about 131 tokens; SKILL.md has 334 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~131
When it runs · the whole SKILL.md, loaded when a task matches
~829

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from TinyAGI/tinyagi at commit 2db3a03, republished under its MIT licence (© TinyAGI). 334 words, ~829 tokens.

Download SKILL.mdSave it as .claude/skills/send-user-message/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
send-user-message
description
Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp). Use when the agent needs to notify, alert, or send an unsolicited message to a user — especially during heartbeat invocations, scheduled tasks, or when the agent wants to reach out without a prior user message in the current conversation. Triggers: 'send message to user', 'notify user', 'alert user', 'message the user on discord/telegram/whatsapp', or any need to proactively communicate with a paired sender.

Send User Message

Send a message to a paired user via the TinyAGI API server (POST /api/responses). The message is delivered by the channel client (Discord, Telegram, or WhatsApp) that polls the API for pending responses.

When to use

  • Proactively notify a user (e.g., task completion, status update, alert)
  • Send a message during a heartbeat invocation (no active user conversation)
  • Reach a specific user on a specific channel when multiple pairings exist

Workflow

1. Identify the target

If you already know the target from the current conversation context (channel and senderId from the incoming message), skip to step 2.

If you are running from a heartbeat invocation or are unsure which user to send to, list available targets first:

bash
<skill_dir>/scripts/send-message.sh list-targets

This reads pairing.json and prints all approved pairings with their channel, senderId, and sender (display name). Pick the appropriate target.

2. Send the message
bash
<skill_dir>/scripts/send-message.sh send \
  --channel <channel> \
  --sender-id <senderId> \
  --sender "<display name>" \
  --message "<your message>"

With file attachments:

bash
<skill_dir>/scripts/send-message.sh send \
  --channel telegram \
  --sender-id 123456 \
  --sender "Alice" \
  --message "Here's the report you requested." \
  --files "/Users/you/.tinyagi/files/report.pdf,/Users/you/.tinyagi/files/chart.png"

Parameters:

  • --channel: One of discord, telegram, whatsapp
  • --sender-id: The channel-specific user ID (from pairing.json or conversation context)
  • --sender: Human-readable display name of the recipient
  • --message: The message text to send (max 4000 chars)
  • --agent: (Optional) Agent ID to attribute the message to
  • --files: (Optional) Comma-separated absolute file paths to attach (files must exist on disk)

The script POSTs to POST /api/responses which enqueues the message in the SQLite responses table for the channel client to pick up.

3. Choosing a target when multiple pairings exist

When there are multiple approved pairings and you need to decide who to message:

  • If the task or context specifies a user by name, match against the sender field
  • If the task specifies a channel, filter by channel
  • If ambiguous, prefer the most recently approved pairing
  • If still ambiguous, send to all relevant targets (run the send command once per target)

Notes

  • The script POSTs to the API server (default http://localhost:3777), configurable via TINYAGI_API_PORT env var
  • Messages include a senderId field so channel clients can route agent-initiated messages to the correct user
  • For heartbeat-context messages, set --agent to identify which agent is sending

© TinyAGI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts) in .agents/skills/send-user-message of TinyAGI/tinyagi.

  • SKILL.md
  • scripts/send-message.sh
  • scripts/send_message.js

Open the folder on GitHubat commit 2db3a03

Compare with similar skills

Send User Message next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Send User Message compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Send User Message this skillTinyAGI/tinyagi3.6k—~829Automated safety check: PassMIT
MuseKevPH2026/muse-catch128—~1.6kAutomated safety check: NotesAGPL-3.0
Task Manager0xranx/golembot323—~694Automated safety check: PassMIT
OpenClaw to NanoClaw Migrationnanocoai/nanoclaw31k—~6kAutomated safety check: NotesMIT
Traul Message Searchdandaka/traul113—~3.9kAutomated safety check: NotesAGPL-3.0
Lettabotletta-ai/lettabot326—~3.4kAutomated safety check: PassApache-2.0

Similar skills

  • Muse

    KevPH2026/muse-catch

    Muse · Catch — AI 灵感捕手。浏览器插件 + 任意 Agent(Telegram/WhatsApp/Discord…)一键捕获灵感,AI自动提炼,Web Dashboard浏览。分级LLM路由:Agent内置LLM隐私分析 + TokenRouter云端分布式调用。当用户说「灵感」「捕获」「Muse」「Catch」「记下来」「收藏」「稍后读」时自动触发。

    128 GitHub stars~1.6k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check: notes
  • Task Manager

    0xranx/golembot

    Creates and manages scheduled tasks, cron jobs, recurring reminders, and timers via the Task HTTP API.

    323 GitHub stars~694 tokensUpdated 8 days ago
    Productivity & AutomationAuto-check passed
  • Guides a conversational migration from an OpenClaw install to NanoClaw v2, carrying over identity, channel credentials, scheduled tasks and workspace files.

    31k GitHub stars~6k tokensUpdated yesterday
    Productivity & AutomationAuto-check: notes
  • Drives the traul CLI to sync, search and monitor messages from Slack, Telegram, Discord, Linear, Gmail, WhatsApp, Claude Code sessions and Markdown files.

    113 GitHub stars~3.9k tokensUpdated 5 mo ago
    Productivity & AutomationAuto-check: notes
  • Lettabot

    letta-ai/lettabot

    Set up and run LettaBot - a multi-channel AI assistant for Telegram, Slack, Discord, WhatsApp, and Signal.

    326 GitHub stars~3.4k tokensUpdated 4 mo ago
    Productivity & AutomationAuto-check passed
  • Wire First NanoClaw Agent

    nanocoai/nanoclaw

    Connects the first NanoClaw agent to a chat channel and proves delivery by having it send the operator a welcome direct message.

    31k GitHub stars~2.5k tokensUpdated yesterday
    Productivity & AutomationAuto-check: notes

More from TinyAGI/tinyagi

  • Schedule

    TinyAGI/tinyagi

    Create, list, and delete scheduled tasks (recurring or one-time) that send messages to agents.

    3.6k GitHub stars~1.4k tokensUpdated 6 mo ago
    Auto-check passed
  • Skills Manager

    TinyAGI/tinyagi

    Search for and install skills from the skills registry to agent workspaces.

    3.6k GitHub stars~528 tokensUpdated 6 mo ago
    Auto-check passed
  • Tasks

    TinyAGI/tinyagi

    Manage your assigned tasks on the TinyAGI kanban board — list tasks, update task status, create new tasks, and add or view comments.

    3.6k GitHub stars~721 tokensUpdated 6 mo ago
    Auto-check passed
  • Tinyagi Admin

    TinyAGI/tinyagi

    Manage and operate the TinyAGI system itself — agents, teams, settings, queue, tasks, daemon lifecycle, and source code.

    3.6k GitHub stars~2.5k tokensUpdated 6 mo ago
    Auto-check passed
  • Memory

    TinyAGI/tinyagi

    Manage your persistent hierarchical memory — save, update, search, and organize knowledge as markdown files in the memory/ folder.

    3.6k GitHub stars~1.1k tokensUpdated 6 mo ago
    Auto-check passed

Questions about Send User Message

What does Send User Message do?

Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp). Send User Message is an agent skill from TinyAGI/tinyagi. Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).

When should I use Send User Message?

Send User Message fits situations like: the agent needs to notify; send an unsolicited message to a user — especially during heartbeat invocations; scheduled tasks; the agent wants to reach out without a prior user message in the current conversation.

How do I install Send User Message in Claude Code?

Run `npx skills add TinyAGI/tinyagi --skill send-user-message -a claude-code`. Or copy the skill folder (.agents/skills/send-user-message in TinyAGI/tinyagi) into .claude/skills/send-user-message in your project. Claude Code loads it when a task matches its description.

How do I install Send User Message in Codex?

Run `npx skills add TinyAGI/tinyagi --skill send-user-message -a codex`. Or copy the skill folder (.agents/skills/send-user-message in TinyAGI/tinyagi) into .agents/skills/send-user-message in your project. Codex loads it when a task matches its description.

Can I use Send User Message in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add TinyAGI/tinyagi --skill send-user-message -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/send-user-message, .gemini/skills/send-user-message, .github/skills/send-user-message and .opencode/skills/send-user-message in your project.

What does Send User Message need to run?

Going by SKILL.md and its folder, Send User Message needs a shell and JavaScript for the scripts in its folder. Our summary lists: Node.js; A Bash shell.

Does Send User Message access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Send User Message safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Send User Message use?

Send User Message is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Send User Message use?

About 829 tokens (SKILL.md is roughly 3.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Send User Message?

Skills that share tags, products or a category with Send User Message: Muse (KevPH2026/muse-catch, 128 stars), Task Manager (0xranx/golembot, 323 stars), OpenClaw to NanoClaw Migration (nanocoai/nanoclaw, 31k stars) and Traul Message Search (dandaka/traul, 113 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Send User Message?

TinyAGI (a GitHub organization) maintains it in TinyAGI/tinyagi, which has 3,620 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on March 30, 2026.

Source: TinyAGI/tinyagi on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.