Agent skill

Telegram Channel for NanoClaw

by nanocoai in nanocoai/nanoclaw

Adds Telegram bot support to NanoClaw through the Chat SDK bridge, with a pairing helper, and can add a second bot on a repeat run.

MITAuto-check: notesProductivity & Automation

Install Telegram Channel for NanoClaw

skills CLI
$ npx skills add nanocoai/nanoclaw --skill add-telegram -a claude-code

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

GitHub CLI
$ gh skill install nanocoai/nanoclaw add-telegram --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/nanocoai/nanoclaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/add-telegram .claude/skills/add-telegram && 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
add-telegram
GitHub stars
31k
Token cost
~4.1k tokens
SKILL.md length
1,727 words
Files
3
Skills in repo
59
Repo updated
First seen
Licence
MIT

At a glance

Adds Telegram bot support to NanoClaw through the Chat SDK bridge, with a pairing helper, and can add a second bot on a repeat run.

  • Works in 5 steps: Copy the adapter, helpers, and tests → Register the adapter → Register the pairing setup step → …
  • Letting a NanoClaw agent answer messages from a Telegram bot
  • SKILL.md covers Apply, Credentials, Restart and Pair your chat, plus 4 more sections
  • Calls pnpm and bash; reaches api.telegram.org and telegram.me; needs TELEGRAM_BOT_TOKEN

What it does

Telegram arrives as a bot channel using a Chat SDK adapter copied from the `channels` branch, together with a pairing helper and focused tests. The `pair-telegram` setup step already lives in trunk, so the skill only registers its loader in the `STEPS` map of `setup/index.ts`, which is skipped on a normal install.

The remaining steps append the self-registration import, install `@chat-adapter/telegram` at an exact pinned version, then build and run the registration and connect-group tests. Credentials go through a pairing handshake that launches the setup step. Running the skill again with a bot already configured can add a second bot instead of re-pairing the first one.

When your agent uses it

  • Letting a NanoClaw agent answer messages from a Telegram bot
  • Pairing a Telegram chat with an agent group
  • Adding a second Telegram bot to an existing install

Example prompts

  • “Add Telegram to NanoClaw and pair my account with the bot.”
  • “I already have one Telegram bot connected. Add another bot for the support group.”
  • “Run the Telegram registration and connect-group tests.”

Requirements

  • A NanoClaw installation with pnpm
  • A Telegram bot to pair

Workflow steps

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

  1. Copy the adapter, helpers, and tests
  2. Register the adapter
  3. Register the pairing setup step
  4. Install the adapter package
  5. Build and validate

What it can do on your machine

Read from SKILL.md and the folder at commit 66f0823. 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

    Shell commands in SKILL.md call:

    • pnpm
    • bash

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.telegram.org
    • telegram.me

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

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • TELEGRAM_BOT_TOKEN

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

Context cost

Telegram Channel for NanoClaw loads about 4.1k tokens when it runs. Until then it costs about 15 tokens; SKILL.md has 1,727 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:92
    grep -qsE '^TELEGRAM_BOT_TOKEN=.+' .env && echo yes || echo no
  • NoteMentions a .env fileSKILL.md:106
    lready configured (TELEGRAM_BOT_TOKEN in .env). Add another bot (yes), or keep using the existing one (no)?
  • NoteMentions a .env fileSKILL.md:123
    and store it — the bridge reads it from `.env` (set-if-absent,
  • NoteMentions a .env fileSKILL.md:150
    ne whose token key is not already set in .env.
  • NoteMentions a .env fileSKILL.md:156
    '^TELEGRAM_BOT_TOKEN_{{bot_name_env}}=.' .env
  • NoteMentions a .env fileSKILL.md:195
    "$({ sed -n 's/^TELEGRAM_INSTANCES=//p' .env; echo {{bot_name}}; } | tr ',' '\n' | grep . | sort -u | paste -sd, -)"

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from nanocoai/nanoclaw at commit 66f0823, republished under its MIT licence (© nanocoai). 1,727 words, ~4,114 tokens.

Download SKILL.mdSave it as .claude/skills/add-telegram/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
add-telegram
description
Add Telegram channel integration via Chat SDK.

Add Telegram Channel

Adds Telegram bot support via the Chat SDK bridge. NanoClaw doesn't ship channels in trunk — this skill copies the Telegram adapter, its pairing helper, and their tests in from the channels branch. The pair-telegram setup step is maintained in trunk, so it is not copied here.

The mechanical steps under Apply carry nc: directive fences: an agent reads the prose and applies them, and a parser can apply them deterministically from the same document. Every directive is idempotent, so the whole skill is safe to re-run; anything a parser can't apply falls back to the prose beside it.

Re-running with a bot already configured can add a second one instead of re-pairing the first; see Add another bot under Credentials.

Apply

1. Copy the adapter, helpers, and tests

Fetch the channels branch and copy the Telegram adapter, its pairing helper (with its test), and the focused adapter tests into place (overwrite — the branch is canonical):

nccopy
src/channels/telegram.ts
src/channels/telegram-pairing.ts
src/channels/telegram-pairing.test.ts
src/channels/telegram-registration.test.ts
src/channels/telegram-connect-group.test.ts
src/channels/telegram-instances-registration.test.ts
src/channels/telegram-pairing-interceptor.test.ts
2. Register the adapter

Append the self-registration import to the channel barrel (skipped if the line is already present). This one line is the skill's only reach-in into core:

ncappend
import './telegram.js';
3. Register the pairing setup step

Add the pair-telegram loader to the STEPS map in setup/index.ts, inside the dormant marker region (skipped if already present — pair-telegram ships in core, so this idempotent-skips on a normal install, but is expressed for a clean-upstream rebuild). The pairing handshake below spawns this step:

ncappend
'pair-telegram': () => import('./pair-telegram.js'),
4. Install the adapter package

Pinned to an exact version — the supply-chain policy rejects ranges and latest:

ncdep
@chat-adapter/telegram@4.29.0
5. Build and validate

Build first: it guards the typed createChatSdkBridge(...) core call and proves the dependency is installed. Then run the focused tests.

ncrun
pnpm run build
ncrun
pnpm exec vitest run src/channels/telegram-registration.test.ts src/channels/telegram-connect-group.test.ts

telegram-registration.test.ts imports the real channel barrel and asserts the registry contains telegram. It goes red if the import line is deleted or drifts, if the barrel fails to evaluate, or if @chat-adapter/telegram isn't installed (the import throws) — so it also covers the dependency from step 4. End-to-end delivery against a real bot is verified manually once the service runs.

Credentials

An install that already holds TELEGRAM_BOT_TOKEN can add a second bot instead of re-pairing the first. Check which case this is; the answer steers the rest of the flow:

ncrun
grep -qsE '^TELEGRAM_BOT_TOKEN=.+' .env && echo yes || echo no
ncrun
[ "{{has_default_bot}}" = yes ] && echo ask || echo no

On a first install there is no bot to add another to, so add_another is no and the steps below create and configure the first bot. When a bot is already configured, ask the user whether to keep using it (no: the stored token stays as it is and the flow re-pairs that bot) or to add another one (yes: the first bot's steps are satisfied by the stored token and change nothing; the new bot is handled under Add another bot):

ncprompt
A Telegram bot is already configured (TELEGRAM_BOT_TOKEN in .env). Add another bot (yes), or keep using the existing one (no)?

Bot creation in Telegram is human and interactive — no parser can click through BotFather. The adapter is installed and registered, but it can't receive a message until the bot exists. On a first install, tell the user (a bot that is already configured keeps its stored token below; a second one is created under Add another bot):

ncoperator
Create the Telegram bot:
1. Open Telegram and message @BotFather — Telegram's official bot for creating bots.
2. Send /newbot and follow the prompts: a friendly name, then a username that must end in "bot".
3. Copy the bot token it gives you (looks like 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11a).
4. Planning to use the bot in group chats? Send /mybots → your bot → Bot Settings → Group Privacy → Turn off, so the bot can see all messages and not just @mentions.

Collect the bot token and store it — the bridge reads it from .env (set-if-absent, so a value you've already filled in is never overwritten) and syncs it to the container:

ncprompt
Paste the bot token from BotFather (looks like `123456:ABC-DEF...`).
ncenv-set
TELEGRAM_BOT_TOKEN={{bot_token}}

Confirm the token works and capture the bot's handle — getMe returns the bot account and fails here if the token is bad. You'll use the handle to open the right chat just before pairing:

ncrun
curl -sf https://api.telegram.org/bot{{bot_token}}/getMe | jq -er '.result.username'
Add another bot

Only when add_another is yes. The second bot is a named adapter instance: its short name becomes the registry key telegram-<name> and, uppercased with dashes as underscores, the token key suffix (gh-bot stores TELEGRAM_BOT_TOKEN_GH_BOT). A name whose TELEGRAM_BOT_TOKEN_<NAME> key is already set is taken (storing under it would overwrite that bot's token), so it is refused:

ncprompt
Short name for the new bot (lowercase letters, digits, dashes; e.g. `mega`). Pick one whose token key is not already set in .env.
ncrun
echo {{bot_name}} | tr 'a-z-' 'A-Z_'
ncrun
! grep -qs '^TELEGRAM_BOT_TOKEN_{{bot_name_env}}=.' .env

To pair an already-configured named bot again instead (its token is stored and the service restarted, but pairing failed or was cancelled), run pnpm exec tsx setup/index.ts --step pair-telegram -- --intent main --instance telegram-<name>, then /init-first-agent with --instance telegram-<name> if it was never wired.

The second bot is created with @BotFather exactly like the first. Tell the user:

ncoperator
Create the second Telegram bot: message @BotFather, send /newbot and follow the prompts (its own friendly name, then a username that must end in "bot"), and copy the token it gives you. It must be a different bot from the one already configured. Planning to use it in group chats? Send /mybots → that bot → Bot Settings → Group Privacy → Turn off.

Then confirm its token with getMe as above:

ncprompt
Paste the second bot's token from BotFather (looks like `123456:ABC-DEF...`). It must belong to a different bot than the one already configured.
ncrun
curl -sf https://api.telegram.org/bot{{bot_token_2}}/getMe | jq -er '.result.username'

A second token that resolves to the same bot as the first (its handle matches) is refused here, before anything is written: it would only start a second poller on that bot, which the adapter refuses at startup anyway.

ncrun
[ "{{bot_username_2}}" != "{{bot_username}}" ]

Store the token under its suffixed key and list the name in TELEGRAM_INSTANCES, merged with the names already there. Both writes go through the set-env step, which updates an existing key and logs the key, never the value:

ncrun
pnpm exec tsx setup/index.ts --step set-env -- --key TELEGRAM_BOT_TOKEN_{{bot_name_env}} --value {{bot_token_2}}
ncrun
pnpm exec tsx setup/index.ts --step set-env -- --key TELEGRAM_INSTANCES --value "$({ sed -n 's/^TELEGRAM_INSTANCES=//p' .env; echo {{bot_name}}; } | tr ',' '\n' | grep . | sort -u | paste -sd, -)"

The registry key is how pairing and wiring address the new bot:

ncrun
echo telegram-{{bot_name}}

Restart

Restart the service so it loads the Telegram adapter and the token you just stored, and wait for its CLI socket. The adapter must be live and polling before pairing — it's the thing that observes the code you send:

ncrun
bash setup/lib/restart.sh

Pair your chat

Telegram tokens carry no user binding, so the agent proves you own the chat with a one-time pairing handshake: it issues a 6-digit code, you send those exact 6 digits to the bot from the chat you want to register, and the live adapter matches them. Open the bot first so you're on the right screen when the code appears. Tell the user:

ncoperator
Open @{{bot_username}} (https://telegram.me/{{bot_username}}) in Telegram now and keep it on screen — a 6-digit pairing code is about to appear in this terminal. When it does, send just those 6 digits to the bot as a message (in a group chat with Group Privacy on, prefix them with @{{bot_username}}). A wrong guess is rejected and a fresh code is issued automatically.

Run the pairing handshake. It prints the code, streams "waiting…" and wrong-code feedback while it watches for your message, and resolves your chat address telegram:<chatId> plus your Telegram user id once the code matches:

ncrun
pnpm exec tsx setup/index.ts --step pair-telegram -- --intent main

A second bot pairs through its own instance key: the code is bound to telegram-<name>, the first bot ignores it, and the paired chat gets its own messaging-group row for that instance (a bot cannot message a user who never opened it, so the chat id known from the first bot is not reused). Tell the user:

ncoperator
Open @{{bot_username_2}} (https://telegram.me/{{bot_username_2}}) in Telegram now and keep it on screen: a pairing code is about to appear in this terminal. Send just those digits to this new bot, not to the first one. A wrong guess is rejected and a fresh code is issued automatically.
ncrun
pnpm exec tsx setup/index.ts --step pair-telegram -- --intent main --instance {{instance}}

owner_handle (your Telegram user id) and platform_id (telegram:<chatId>) are what the owner-wiring step needs. The greeting goes out over the same chat as soon as pairing completes. For a second bot, instance (telegram-<name>) comes along too: pass it as --instance to scripts/init-first-agent.ts so the DM row, the wiring and the welcome all target that bot (see /init-first-agent).

Show full SKILL.md (690 more words)Show less

Next Steps

If you're in the middle of /setup, return to the setup flow now. Otherwise wire this channel with /init-first-agent (or /manage-channels).

Connect a group

After the first DM is paired, an owner or global admin can send /connect_group in their bot DM. The bot replies with Telegram's native group picker. Choosing a group adds the bot and posts an addressed start command there; NanoClaw then sends its existing channel-registration approval card to an eligible owner/admin DM. Nothing is wired until that card is approved.

The picker link is navigation, not authorization: it carries no secret and creates no role, member, messaging-group, or wiring row. The existing approval flow remains the authority. If the picker is unavailable, add the bot to the group manually and post /start@{{bot_username}} connect there to reach the same approval card.

If the negative Telegram chat ID is already known, the fully manual ncl equivalent is:

bash
ncl messaging-groups create --channel-type telegram --platform-id "telegram:<chat-id>" --name "<group-name>" --is-group 1
ncl wirings create --channel-type telegram --platform-id "telegram:<chat-id>" --agent-group "<folder>" --session-mode shared

wirings create applies Telegram's group defaults and creates the companion destination row. Prefer /connect_group when the ID is unknown; it discovers the group and keeps the approval card in the loop.

Channel Info

  • type: telegram
  • terminology: Telegram calls them "groups" and "chats." A "group" has multiple members; a "chat" is a 1:1 conversation with the bot.
  • platform-id-format: telegram:{chatId} (e.g. telegram:123456789 for a DM, telegram:-1001234567890 for a group — negative chat IDs are groups/channels).
  • how-to-find-id: Do NOT ask the user for a chat ID. Pair the first DM with pnpm exec tsx setup/index.ts --step pair-telegram -- --intent main. For another group, have an owner/global admin send /connect_group in that paired DM, choose the group, and approve the resulting channel-registration card. The service must be running — the polling adapter observes both flows.
  • instances: TELEGRAM_BOT_TOKEN is the default instance telegram; TELEGRAM_INSTANCES=<name>,... plus TELEGRAM_BOT_TOKEN_<NAME> adds telegram-<name> (reference: .claude/skills/telegram-multi-instance/SKILL.md on the channels branch).
  • supports-threads: no
  • typical-use: Interactive chat — direct messages or small groups
  • default-isolation: Same agent group if you're the only participant across multiple chats. Separate agent group if different people are in different groups.

Troubleshooting

The bot token paste is rejected. A BotFather token is <numeric bot id>:<35+ character secret> — e.g. 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11a. Pasting only the part after the colon, or the bot's @username, won't pass. Recover the full token any time by sending /token to @BotFather.

getMe fails. The token was revoked (a /revoke or a fresh /token invalidates the old value) or picked up whitespace in the paste. Get the current token from BotFather and re-paste it.

Pairing never completes. The live adapter is what observes the code, so the service must be running — the restart step comes before pairing for exactly this reason. Send just the 6 digits from the exact chat you want registered; in a group with Group Privacy on, prefix them with @<botname>. Wrong guesses are fine (a fresh code is issued, up to 5 times), but a dead adapter waits forever.

The bot ignores group messages. Group Privacy is on, so the bot only sees addressed commands and replies, not ordinary @bot text. BotFather → /mybots → your bot → Bot Settings → Group Privacy → Turn off — then remove and re-add the bot to the group so the change takes effect.

/connect_group is denied. The Telegram sender is not a NanoClaw owner or global admin. The command never grants privileges; inspect them with ncl roles list and grant the intended role explicitly if appropriate.

The group was chosen but no approval card arrived. Confirm the service is running and post /start@{{bot_username}} connect in the group. The card is delivered to an eligible owner/admin DM, not to the group.

The second bot never comes online. TELEGRAM_INSTANCES and TELEGRAM_BOT_TOKEN_<NAME> are read once at start, so restart after adding a bot. A name whose token equals one already in use is skipped with a warning in logs/nanoclaw.error.log (Telegram allows one poller per token): give each bot its own BotFather token. A pairing code issued for telegram-<name> is ignored by the first bot; send it to the new one.

Everything green but no replies. Run pnpm exec vitest run src/channels/telegram-registration.test.ts — red means the barrel import or the @chat-adapter/telegram install drifted, so re-run the Apply steps. If green, restart again (bash setup/lib/restart.sh) and check logs/nanoclaw.error.log for token errors.

© nanocoai, 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 in .claude/skills/add-telegram of nanocoai/nanoclaw.

  • SKILL.md
  • REMOVE.md
  • apply-fixtures.json

Open the folder on GitHubat commit 66f0823

Compare with similar skills

Telegram Channel for NanoClaw 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.

Telegram Channel for NanoClaw compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Telegram Channel for NanoClaw this skillnanocoai/nanoclaw31k—~4.1kAutomated safety check: NotesMIT
Claude To Imop7418/Claude-to-IM-skill2.9k—~3.4kAutomated safety check: NotesMIT
Tlivey49/tlive2141 repos~1.7kAutomated safety check: NotesMIT
Traul Message Searchdandaka/traul113—~3.9kAutomated safety check: NotesAGPL-3.0
Conversation Historydashhuang/openclaw-chat-history-import144—~912Automated safety check: PassMIT
Easy Openclawdaheiai/easy-openclaw112—~1.7kAutomated safety check: NotesNone

Similar skills

  • Claude To Im

    op7418/Claude-to-IM-skill

    Bridge THIS Claude Code or Codex session to Telegram, Discord, Feishu/Lark, QQ, or WeChat so the user can chat with Claude from their phone.

    2.9k GitHub stars~3.4k tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check: notes
  • Tlive

    y49/tlive

    tlive — remote approvals (Telegram/Feishu/web), live web terminal, and session monitoring for Claude Code / Codex.

    214 GitHub starsUsed in 1 repo~1.7k tokens
    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
  • Conversation History

    dashhuang/openclaw-chat-history-import

    A skill your agent uses when the user asks what was said earlier in a chat, wants an old decision, exact wording, prior links, or suspects the agent forgot conversation context across Telegram…

    144 GitHub stars~912 tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Easy Openclaw

    daheiai/easy-openclaw

    OpenClaw 配置优化向导。采用“第 0 层测试观测(可选)+ 前 3 轮优化 + 第 4 轮接入扩展”流程:基础推荐层(含联网搜索与权限模式)、渠道增强层(Discord/Feishu/Telegram 分支优化)、Skills 推荐层(可执行可跳过)、新增渠道接入引导(可跳过)。用于帮助用户快速完成 OpenClaw 初始化或优化配置。用户说到“优化…

    112 GitHub stars~1.7k tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check: notes
  • Im Adapter

    0xranx/golembot

    Format responses for instant messaging platforms such as Lark, DingTalk, WeCom, Slack, and Telegram.

    323 GitHub stars~1.4k tokensUpdated 9 days ago
    Productivity & AutomationAuto-check passed

More from nanocoai/nanoclaw

All 59 skills in this repo
  • Installs or refreshes Iron Proxy and its Iron Control web console for NanoClaw, with a local Docker setup, database, credentials and a human approval bridge.

    31k GitHub stars~4.6k tokensUpdated 2 days ago
    Auto-check: notes
  • Agent Browser

    nanocoai/nanoclaw

    Drives a web browser from the shell with the agent-browser CLI: open pages, read an element snapshot, click and fill by reference, grab text and screenshots.

    31k GitHub starsUsed in 3 repos~1.6k tokens
    Auto-check passed
  • Installs or refreshes OneCLI as the gateway provider for NanoClaw, copying the adapter files, registering the provider and running the setup script.

    31k GitHub stars~1.1k tokensUpdated 2 days ago
    Auto-check: notes
  • 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 2 days ago
    Auto-check: notes
  • Wires up an additional phone number onto an already-installed Dial channel, so one NanoClaw install answers SMS and AI voice calls on more than one line.

    31k GitHub starsUsed in 1 repo~1.5k tokens
    Auto-check passed
  • NanoClaw LLM Wiki Setup

    nanocoai/nanoclaw

    Adds a persistent wiki knowledge base to a NanoClaw group following Karpathy's LLM Wiki pattern, with folders, a tailored container skill and a CLAUDE.md section.

    31k GitHub starsUsed in 1 repo~1.3k tokens
    Auto-check passed

Works with

Questions about Telegram Channel for NanoClaw

What does Telegram Channel for NanoClaw do?

Adds Telegram bot support to NanoClaw through the Chat SDK bridge, with a pairing helper, and can add a second bot on a repeat run. Telegram arrives as a bot channel using a Chat SDK adapter copied from the `channels` branch, together with a pairing helper and focused tests.ts`, which is skipped on a normal install.

When should I use Telegram Channel for NanoClaw?

Telegram Channel for NanoClaw fits situations like: letting a NanoClaw agent answer messages from a Telegram bot; pairing a Telegram chat with an agent group; adding a second Telegram bot to an existing install.

How do I install Telegram Channel for NanoClaw in Claude Code?

Run `npx skills add nanocoai/nanoclaw --skill add-telegram -a claude-code`. Or copy the skill folder (.claude/skills/add-telegram in nanocoai/nanoclaw) into .claude/skills/add-telegram in your project. Claude Code loads it when a task matches its description.

How do I install Telegram Channel for NanoClaw in Codex?

Run `npx skills add nanocoai/nanoclaw --skill add-telegram -a codex`. Or copy the skill folder (.claude/skills/add-telegram in nanocoai/nanoclaw) into .agents/skills/add-telegram in your project. Codex loads it when a task matches its description.

Can I use Telegram Channel for NanoClaw 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 nanocoai/nanoclaw --skill add-telegram -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-telegram, .gemini/skills/add-telegram, .github/skills/add-telegram and .opencode/skills/add-telegram in your project.

What does Telegram Channel for NanoClaw need to run?

Going by SKILL.md and its folder, Telegram Channel for NanoClaw needs the command-line tools its instructions call (pnpm and bash) and credentials named TELEGRAM_BOT_TOKEN. Our summary lists: A NanoClaw installation with pnpm; A Telegram bot to pair.

Does Telegram Channel for NanoClaw access the network?

SKILL.md names 2 domains. In commands or code: api.telegram.org and telegram.me; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Telegram Channel for NanoClaw safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Telegram Channel for NanoClaw use?

Telegram Channel for NanoClaw 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 Telegram Channel for NanoClaw use?

About 4.1k tokens (SKILL.md is roughly 16k 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 Telegram Channel for NanoClaw?

Skills that share tags, products or a category with Telegram Channel for NanoClaw: Claude To Im (op7418/Claude-to-IM-skill, 2.9k stars), Tlive (y49/tlive, 214 stars), Traul Message Search (dandaka/traul, 113 stars) and Conversation History (dashhuang/openclaw-chat-history-import, 144 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Telegram Channel for NanoClaw?

nanocoai (a GitHub organization) maintains it in nanocoai/nanoclaw, which has 30,897 GitHub stars. The repository holds 59 skills in this directory. The repository was last updated on October 6, 2026.

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