Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Set up the Discord channel — save the bot token and review access policy. Use when the user pastes a Discord bot token, asks to configure Discord, asks "how do I set this up" or "who can reach me," or wants to check channel status.
.claude/skills/anthropics-configure/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-19 | ✗→✓ | ▲ Improved | -29% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 15% | 0% |
Writes the bot token to <state-dir>/.env and orients the user on access policy. The server reads both files at boot.
Resolve the state directory first (it may be overridden for multi-bot or per-project setups):
bashecho "${TELEGRAM_STATE_DIR:-${CLAUDE_CONFIG_DIR:-$HOME/.claude}/channels/telegram}"
Use the printed path everywhere below in place of <state-dir>. The default is ~/.claude/channels/telegram.
Arguments passed: $ARGUMENTS
Read both state files and give the user a complete picture:
<state-dir>/.env forTELEGRAM_BOT_TOKEN. Show set/not-set; if set, show first 10 chars masked (123456789:...).
<state-dir>/access.json (missing file= defaults: dmPolicy: "pairing", empty allowlist). Show:
/telegram:configure <token> with the token fromBotFather."
Telegram. It replies with a code; approve with /telegram:access pair <code>."
assistant."
Push toward lockdown — always. The goal for every setup is allowlist with a defined list. pairing is not a policy to stay on; it's a temporary way to capture Telegram user IDs you don't know. Once the IDs are in, pairing has done its job and should be turned off.
Drive the conversation this way:
pairing → "Good. Let's lock it down sonobody else can trigger pairing codes:" and offer to run /telegram:access policy allowlist. Do this proactively — don't wait to be asked.
each with /telegram:access pair <code>. Run this skill again once everyone's in and we'll lock it."
"DM your bot to capture your own ID first. Then we'll add anyone else and lock it down."
allowlist → confirm this is the locked state.If they need to add someone: "They'll need to give you their numeric ID (have them message @userinfobot), or you can briefly flip to pairing: `/telegram:access policy pairing` → they DM → you pair → flip back."
Never frame pairing as the correct long-term choice. Don't skip the lockdown offer.
<token> — save it$ARGUMENTS as the token (trim whitespace). BotFather tokens looklike 123456789:AAH... — numeric prefix, colon, long string.
mkdir -p the resolved <state-dir>..env if present; update/add the TELEGRAM_BOT_TOKEN= line,preserve other keys. Write back, no quotes around the value.
chmod 600 on <state-dir>/.env — the token is a credential.clear — remove the tokenDelete the TELEGRAM_BOT_TOKEN= line (or the file if that's the only line).
= not configured, not an error.
.env once at boot. Token changes need a session restartor /reload-plugins. Say so after saving.
access.json is re-read on every inbound message — policy changes via/telegram:access take effect immediately, no restart.
Other measured skills in the registry, with their headline benchmark lift.