Anvia Channels Skill

SkillCommunication

Connect Discord, Slack, and Telegram to Anvia agents, channel adapters, agent-backed bots, proactive delivery, sessions, streaming, and platform actions.

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Anvia Channels Skill skill

What this skill tells your AI

The instructions your AI receives, as published by anvia-hq/anvia in skills/anvia-channels/SKILL.md and read by ahel’s review.

Use this skill when the user wants an Anvia agent reachable from Discord, Slack, or Telegram, needs proactive delivery into a channel from a worker or monitor, or wants to handle raw platform events. The five libraries are private workspace packages — depend on them from the channels workspace (workspace:*), not npm.

Process

  1. Wire the platform adapter (references/adapters.md) — one factory call per platform; credentials from the environment, never literals.
  2. Run an agent behind it (references/channel-agent.md) — sessions and memory, streaming edits, acknowledgements, slash commands, paused approvals.
  3. Send or receive without an agent (references/delivery.md) — sendChannelMessage, long-text splitting, validation, raw event handling.
  4. Run scripts/check-channels.sh from the app root before claiming done.

Minimal slice

import { createChannelAgent } from "@anvia/channel-agent";
import { Agent } from "@anvia/core/agent";
import { OpenAIClient } from "@anvia/openai";
import { telegram } from "@anvia/telegram";

const openai = new OpenAIClient({ apiKey: process.env.OPENAI_API_KEY ?? "" });
const agent = new Agent({
  id: "telegram-assistant",
  model: openai.completionModel({ modelId: "gpt-6-astra", api: "responses" }),
  instructions: "You are a concise assistant. Answer in the sender's language.",
});

const channel = telegram({
  token: process.env.TELEGRAM_BOT_TOKEN ?? "",
  onError: (error, context) => console.error(`[telegram:${context.operation}]`, error),
});

const service = createChannelAgent({
  channel,
  agent,
  streaming: { placeholder: "Thinking…", editIntervalMs: 750 },
  acknowledge: "👀",
  onError: (error, context) => console.error(`[channel-agent:${context.stage}]`, error),
});

await service.start();
process.once("SIGTERM", () => void service.stop());

Output

Prefer one adapter, one agent, environment-read credentials, and a shutdown path for every started service. Point to the relevant reference file instead of pasting its contents into chat.

Signals

GitHub stars
50
Forks
6
Last commit
Oct 2026

ahel review

  • K6low
    bundled executables the agent is told to run

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Item type
skill
Key
anvia-channels
Source
github.com/anvia-hq/anvia