channel-bot

Registers and routes Telegram, Slack, and Mattermost bots through a shared agent pipeline.

49|11|Updated Jul 31, 2026
One-click install
npx skills add https://github.com/vstorm-co/agenticos --skill channel-bot-vstorm-co
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: channel-bot
Source: https://github.com/vstorm-co/agenticos/tree/main/.claude/skills/channel-bot
Command: npx skills add https://github.com/vstorm-co/agenticos --skill channel-bot-vstorm-co

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Wiring company chat platforms into an AI agent is error-prone: bot tokens need secure storage, inbound messages must reach the same agent pipeline as web chat, and identity mistakes turn a channel into a privilege-escalation path. This Skill guides registering bots, routing messages, and enforcing the mention invariants. ## Core Features & Use Cases - Bot registration and CLI management: Add, list, and test Telegram, Slack, or Mattermost bots with flat hyphenated commands like channel-add-bot and channel-test-message. - Webhook vs polling setup: Choose long-polling for development or signature-verified webhooks for production, with HMAC verification for Telegram and signing secrets for Slack. - Mention and identity invariants: Enforce one-agent-per-bot binding, organization-scoped @slug resolution, sender-based execution, and refusal of unlinked identities. - Use Case: Register a Telegram support bot in jwt_linked mode, verify its webhook signature, and confirm that an @support mention runs as the sender rather than as the bot. ## Quick Start Register a new Telegram bot named Support with a token in jwt_linked mode and send it a test message to verify delivery.

Frequently Asked Questions about channel-bot

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I register a Telegram bot with an agent?▼

Register a Telegram bot using the CLI command `channel-add-bot` with the platform, name, token, and access mode such as jwt_linked. The token is sealed through the vault and bound to the organization, then inbound messages route through the shared agent pipeline.

Webhook vs polling for chat bots: which should I use?▼

Use polling for development since the adapter long-polls without needing a public URL. Use webhooks in production where the platform POSTs to a route, and always verify the signature or secret before processing, HMAC for Telegram and signing secret for Slack.

Can one bot serve multiple agents?▼

No, a bot serves exactly one agent, enforced by the uq_exposure_bot constraint in migration 0018. Binding a second agent is refused by both the service layer and the database, so @slug acts as an alias for that single agent.

Why does a bot mention fail with an unlinked identity?▼

An unlinked identity is refused rather than run with no role, because running without a role would be an unauthenticated execution. Mentions always run as the sender, never as the bot, to prevent the channel from becoming a privilege-escalation path.

How do I add a new messaging platform adapter?▼

Implement a new adapter in services/channels against base.py, wire it into router.py without forking the agent pipeline, and add a signature-verified webhook route or polling entrypoint. Reuse the existing conversation/session model and the supervise_stream reconnect loop.