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.
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.
$ npx skills add nanocoai/nanoclaw --skill add-telegram -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nanocoai/nanoclaw add-telegram --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "add-telegram" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-telegram into .claude/skills/add-telegram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-telegram", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-telegramType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nanocoai/nanoclaw --skill add-telegram -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nanocoai/nanoclaw add-telegram --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/add-telegram .agents/skills/add-telegram && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "add-telegram" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-telegram into .agents/skills/add-telegram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-telegram", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nanocoai/nanoclaw --skill add-telegram -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nanocoai/nanoclaw add-telegram --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/add-telegram .cursor/skills/add-telegram && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "add-telegram" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-telegram into .cursor/skills/add-telegram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-telegram", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nanocoai/nanoclaw.git --path .claude/skills/add-telegram--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nanocoai/nanoclaw --skill add-telegram -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nanocoai/nanoclaw add-telegram --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/add-telegram .gemini/skills/add-telegram && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "add-telegram" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-telegram into .gemini/skills/add-telegram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-telegram", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nanocoai/nanoclaw add-telegramInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nanocoai/nanoclaw --skill add-telegram -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/add-telegram .github/skills/add-telegram && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "add-telegram" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-telegram into .github/skills/add-telegram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-telegram", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nanocoai/nanoclaw --skill add-telegram -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nanocoai/nanoclaw add-telegram --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/add-telegram .opencode/skills/add-telegram && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "add-telegram" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-telegram into .opencode/skills/add-telegram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-telegram", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
add-telegramAdds 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. 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.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 66f0823. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
pnpmbashFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.telegram.orgtelegram.meFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
TELEGRAM_BOT_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
grep -qsE '^TELEGRAM_BOT_TOKEN=.+' .env && echo yes || echo nolready configured (TELEGRAM_BOT_TOKEN in .env). Add another bot (yes), or keep using the existing one (no)?and store it — the bridge reads it from `.env` (set-if-absent,ne whose token key is not already set in .env.'^TELEGRAM_BOT_TOKEN_{{bot_name_env}}=.' .env"$({ 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.
The full file from nanocoai/nanoclaw at commit 66f0823, republished under its MIT licence (© nanocoai). 1,727 words, ~4,114 tokens.
.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.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.
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):
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.tsAppend 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:
import './telegram.js';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:
'pair-telegram': () => import('./pair-telegram.js'),Pinned to an exact version — the supply-chain policy rejects ranges and latest:
@chat-adapter/telegram@4.29.0Build first: it guards the typed createChatSdkBridge(...) core call and proves
the dependency is installed. Then run the focused tests.
pnpm run buildpnpm exec vitest run src/channels/telegram-registration.test.ts src/channels/telegram-connect-group.test.tstelegram-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.
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:
grep -qsE '^TELEGRAM_BOT_TOKEN=.+' .env && echo yes || echo no[ "{{has_default_bot}}" = yes ] && echo ask || echo noOn 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):
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):
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:
Paste the bot token from BotFather (looks like `123456:ABC-DEF...`).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:
curl -sf https://api.telegram.org/bot{{bot_token}}/getMe | jq -er '.result.username'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:
Short name for the new bot (lowercase letters, digits, dashes; e.g. `mega`). Pick one whose token key is not already set in .env.echo {{bot_name}} | tr 'a-z-' 'A-Z_'! grep -qs '^TELEGRAM_BOT_TOKEN_{{bot_name_env}}=.' .envTo 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:
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:
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.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.
[ "{{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:
pnpm exec tsx setup/index.ts --step set-env -- --key TELEGRAM_BOT_TOKEN_{{bot_name_env}} --value {{bot_token_2}}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:
echo telegram-{{bot_name}}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:
bash setup/lib/restart.shTelegram 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:
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:
pnpm exec tsx setup/index.ts --step pair-telegram -- --intent mainA 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:
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.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).
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).
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:
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 sharedwirings 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.
telegramtelegram:{chatId} (e.g. telegram:123456789 for a DM, telegram:-1001234567890 for a group — negative chat IDs are groups/channels).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.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).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
SKILL.md and 2 other files in .claude/skills/add-telegram of nanocoai/nanoclaw.
Open the folder on GitHubat commit 66f0823
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Telegram Channel for NanoClaw this skillnanocoai/nanoclaw | 31k | — | ~4.1k | Automated safety check: Notes | MIT | |
| Claude To Imop7418/Claude-to-IM-skill | 2.9k | — | ~3.4k | Automated safety check: Notes | MIT | |
| Tlivey49/tlive | 214 | 1 repos | ~1.7k | Automated safety check: Notes | MIT | |
| Traul Message Searchdandaka/traul | 113 | — | ~3.9k | Automated safety check: Notes | AGPL-3.0 | |
| Conversation Historydashhuang/openclaw-chat-history-import | 144 | — | ~912 | Automated safety check: Pass | MIT | |
| Easy Openclawdaheiai/easy-openclaw | 112 | — | ~1.7k | Automated safety check: Notes | None |
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.
y49/tlive
tlive — remote approvals (Telegram/Feishu/web), live web terminal, and session monitoring for Claude Code / Codex.
dandaka/traul
Drives the traul CLI to sync, search and monitor messages from Slack, Telegram, Discord, Linear, Gmail, WhatsApp, Claude Code sessions and Markdown files.
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…
daheiai/easy-openclaw
OpenClaw 配置优化向导。采用“第 0 层测试观测(可选)+ 前 3 轮优化 + 第 4 轮接入扩展”流程:基础推荐层(含联网搜索与权限模式)、渠道增强层(Discord/Feishu/Telegram 分支优化)、Skills 推荐层(可执行可跳过)、新增渠道接入引导(可跳过)。用于帮助用户快速完成 OpenClaw 初始化或优化配置。用户说到“优化…
0xranx/golembot
Format responses for instant messaging platforms such as Lark, DingTalk, WeCom, Slack, and Telegram.
nanocoai/nanoclaw
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.
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.
nanocoai/nanoclaw
Installs or refreshes OneCLI as the gateway provider for NanoClaw, copying the adapter files, registering the provider and running the setup script.
nanocoai/nanoclaw
Guides a conversational migration from an OpenClaw install to NanoClaw v2, carrying over identity, channel credentials, scheduled tasks and workspace files.
nanocoai/nanoclaw
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.
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.
Works with
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.