manage-channels

Installation
SKILL.md

Manage Channels

Wire messaging channels to agent groups. See docs/isolation-model.md for the full isolation model.

Privilege is a user-level concept, not a channel-level one (see src/db/user-roles.ts, src/access.ts). There is no "main channel" / "main group" — any user can be granted owner or admin (global or scoped to an agent group) via grantRole(), and messages from unknown senders are gated per-messaging-group by unknown_sender_policy (strict | request_approval | public).

Assess Current State

Read the central DB (data/v2.db) — query agent_groups, messaging_groups, messaging_group_agents, users, and user_roles tables. Also check .env for channel tokens and src/channels/index.ts for uncommented imports.

Categorize channels as: wired (has DB entities + messaging_group_agents row), configured but unwired (has credentials + barrel import, no DB entities), or not configured.

If the instance has no owner yet (SELECT COUNT(*) FROM user_roles WHERE role='owner' AND agent_group_id IS NULL returns 0), tell the user they should run /init-first-agent first — it stands up the first agent group, promotes the operator to owner, and verifies delivery end-to-end by having the agent DM them. Then return here for any additional channels/groups.

First Channel (No Agent Groups Exist)

Delegate to /init-first-agent. It handles: channel choice, operator identity lookup, DM platform id resolution (with cold-DM or pair-code fallback), agent group creation, wiring, and the welcome DM. Return here afterward for any additional channels.

Wire New Channel

Related skills
Installs
2
GitHub Stars
28.7K
First Seen
Apr 26, 2026