By wilfoa
Telegram channel for Claude Code with Forum Topics — each project gets its own topic thread. Manage pairing, allowlists, and topic naming via plugin commands.
Manage Telegram Topics channel access — approve pairings, edit allowlists, set policy. Use when the user asks to pair, approve someone, check who's allowed, or change policy.
Set up the Telegram Topics channel — save the bot token, configure the supergroup chat ID, set topic names, or get the launch recipe for a secondary same-project instance. Use when the user pastes a bot token, asks to configure Telegram Topics, wants to check channel status, or needs to run a second Claude session in the same directory with its own topic.
Manage the Telegram Topics daemon — check status, stop it, or tail its log. Use when the user asks about the daemon process, wants to stop it, or wants to debug why messages aren't flowing.
Show the telegram-topics plugin help — list all commands and the typical setup flow. Use when the user asks what they can do with telegram-topics, wants a command list, or doesn't know where to start.
Approve a Telegram Topics pairing code. Shorthand for /telegram-topics:access pair. Use when the user just got a pairing code from their bot and wants to authorize their account.
Admin access level
Server config contains admin-level keywords
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A Claude Code channel plugin that routes each project to its own Telegram Forum Topic.
Unlike the official Telegram plugin — which funnels every Claude Code session into a single flat chat — telegram-topics creates one topic per project directory. Messages in each topic reach only the Claude Code instance running in the corresponding project. Replies, reactions, attachments, and permission prompts all route back to the correct topic.
/Users/amir/Development/my-api gets its own Forum Topic, separate from /Users/amir/Development/web-app.daemon.lock guarantees exactly one daemon per state dir, so you never hit the 409 Conflict bot-token race. Shim-side withSpawnLock serializes spawn attempts on top of that.${basename} (#2), the third gets (#3), etc. Freed slots are reused. Set TELEGRAM_TOPICS_INSTANCE=<name> if you want a stable, human-chosen name instead of an integer./telegram-topics:project remove <name> deletes a topic from Telegram and clears local state — guarded by a two-step token confirmation./telegram-topics:configure topic "<name>" renames the calling session's own topic immediately via editForumTopic — no session restart. Routed through the shim's rename_topic MCP tool so auto-suffixed sessions correctly rename their own topic (e.g. ${cwd}#2), not whichever session currently holds the primary slot. Add --instance <inst> to target a different slot (1 = primary, 2/3/… = integer slot, any other string = named instance)./plugin update, the shim detects a stale daemon from the old cache path and restarts it.┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Claude Code │ │ Claude Code │ │ Claude Code │
│ (my-api) │ │ (web-app) │ │ (cli-tool) │
│ ┌──────┐ │ │ ┌──────┐ │ │ ┌──────┐ │
│ │ Shim │ │ │ │ Shim │ │ │ │ Shim │ │
│ └──┬───┘ │ │ └──┬───┘ │ │ └──┬───┘ │
└──────┼───────┘ └──────┼───────┘ └──────┼───────┘
│ Unix socket │ │
└────────┬────────┘─────────────────┘
│
┌──────┴──────┐
│ Daemon │────── Telegram Bot API
│ (grammy) │ (getUpdates long poll)
└──────┬──────┘
│
┌───────────┴───────────┐
│ Telegram Supergroup │
│ (Forum Topics on) │
├───────────────────────┤
│ my-api │
│ web-app │
│ cli-tool │
└───────────────────────┘
shim.ts): small MCP server spawned by each Claude Code session. Registers its project directory with the daemon, relays tool calls and inbound messages.daemon.ts): long-lived background process. Owns the bot, polls Telegram, manages topics, routes between topics and shims.~/.claude/channels/telegram-topics/.This plugin isn't on Anthropic's approved allowlist, so it runs under the development flag.
# Add the marketplace (one-time)
/plugin marketplace add wilfoa/claude-plugins
# Install
/plugin install telegram-topics@wilfoa-plugins
/reload-plugins
Setup has two phases:
cd into the project and run Claude Code with the channel flag. The topic is created on first connect. Optionally rename it.Message @BotFather, run /newbot, pick a display name and a unique username ending in bot. Copy the token it returns.
Important: if you also run the official Telegram plugin, use a different bot token for
telegram-topics. Telegram allows only onegetUpdatespoller per token; two daemons on the same token will throw409 Conflictforever.
npx claudepluginhub wilfoa/claude-plugins --plugin telegram-topicsTelegram channel for Claude Code — messaging bridge with built-in access control. Manage pairing, allowlists, and policy via /telegram:access.
Memory compression system for Claude Code - persist context across sessions
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Streamline people operations — recruiting, onboarding, performance reviews, compensation analysis, and policy guidance. Maintain compliance and keep your team running smoothly.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.
Create content, plan campaigns, and analyze performance across marketing channels. Maintain brand voice consistency, track competitors, and report on what's working.