# Channel Extension

Use when adding a new messaging channel to Tel-Agent or changing an existing one, a...

- Repository: https://github.com/Dpro-at/Tel-Agent (1172 stars)
- Category: Testing
- License: AGPL-3.0
- Last updated: 2026-10-08
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add Dpro-at/Tel-Agent --skill channel-extension -g -a claude-code -y`
Codex: `npx skills add Dpro-at/Tel-Agent --skill channel-extension -g -a codex -y`
Cursor: `npx skills add Dpro-at/Tel-Agent --skill channel-extension -g -a cursor -y`
Gemini CLI: `npx skills add Dpro-at/Tel-Agent --skill channel-extension -g -a gemini-cli -y`

## Description

Use when adding a new messaging channel to Tel-Agent or changing an existing one, a transport under api/channels/, its official extension manifest, its settings card, tests, health and docs. Covers the file checklist, the two inbound shapes (dial-out and the public door), the credential and signature rules that are not negotiable, the declarative setup descriptor the generic card draws from, and the test shape every channel ships with.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Building a channel extension

You are adding a messaging channel to Tel-Agent. A channel is a route a **customer**
uses to reach a business, someone is typing on the other end. If nobody outside the
business is on the other end, it is an integration, not a channel, and it is reached
through the HTTP tool instead (Rule 5 in `CLAUDE.md`). Do not build it here.

**Read first, in this order:** `CLAUDE.md` (the contract), `docs/SPEC.md` §B9 (secrets)
and §B13 (channels), then `api/channels/discord.py` end to end. Discord is the model
every channel copies: a dial-out transport with a supervisor loop, an answering policy,
storage with dedup, and delivery-before-storage. For a channel that receives webhooks,
also read `api/channels/meta_chat.py` and `api/routes/meta_chat_channels.py`, that is
the public door, and its guards are the whole of this product's exposed surface.

Write everything from the platform's **official documentation** and from the shape of
the existing modules. Write it fresh. Never paste code from another product into this
repository, never name another product anywhere in it, and never add a runtime
dependency, `httpx`, `websockets`, `cryptography` and the standard library cover every
platform we ship.

## What a channel consists of

One kind, one transport module, one manifest, one descriptor, one test file. In order:

The rest: https://github.com/Dpro-at/Tel-Agent/blob/HEAD/.claude/skills/channel-extension/SKILL.md
