From agent-messenger
Interacts with Channel Talk workspaces via CLI: sends messages, reads chats, and manages groups/bots using API credentials. Useful for customer support automation and team inbox management.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agent-messenger:agent-channeltalkbotThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
A TypeScript CLI tool that enables AI agents and humans to interact with Channel Talk workspaces using API credentials (Access Key + Access Secret). Designed for customer support automation, team inbox management, and CI/CD integrations.
A TypeScript CLI tool that enables AI agents and humans to interact with Channel Talk workspaces using API credentials (Access Key + Access Secret). Designed for customer support automation, team inbox management, and CI/CD integrations.
Before diving in, a few things about Channel Talk's terminology:
@name.blocks format: [{ type: "text", value: "..." }]. The CLI handles this automatically when you pass plain text.# Set your API credentials
agent-channeltalkbot auth set your-access-key your-access-secret
# Verify authentication
agent-channeltalkbot auth status
# Get a workspace overview
agent-channeltalkbot snapshot --pretty
# Send a message to a UserChat
agent-channeltalkbot message send abc123-chat-id "Hello from the CLI!"
# Send a message to a Group
agent-channeltalkbot message send @support "Team update: deployment complete"
agent-channeltalkbot uses Access Key + Access Secret pairs from Channel Talk's developer settings:
# Set credentials (validates against Channel Talk API before saving)
agent-channeltalkbot auth set your-access-key your-access-secret
# Check auth status
agent-channeltalkbot auth status
# Clear stored credentials
agent-channeltalkbot auth clear
For credential setup, multi-workspace management, and security details, see references/authentication.md.
The agent maintains a ~/.config/agent-messenger/MEMORY.md file as persistent memory across sessions. This is agent-managed, the CLI does not read or write this file. Use the Read and Write tools to manage your memory file.
At the start of every task, read ~/.config/agent-messenger/MEMORY.md using the Read tool to load any previously discovered workspace IDs, group IDs, chat IDs, manager IDs, bot names, and preferences.
After discovering useful information, update ~/.config/agent-messenger/MEMORY.md using the Write tool. Write triggers include:
auth list, snapshot, etc.)group list, snapshot, etc.)chat list, etc.)manager list, etc.)bot list, etc.)auth bot)When writing, include the complete file content. The Write tool overwrites the entire file.
@name aliases)Never store access keys, access secrets, or any credentials. Never store full message content (just IDs and context). Never store personal user data.
If a memorized ID returns an error (chat not found, group not found), remove it from MEMORY.md. Don't blindly trust memorized data. Verify when something seems off. Prefer re-listing over using a memorized ID that might be stale.
# Agent Messenger Memory
## Channel Talk Workspaces
- `abc123` - Acme Support
## Default Bot (Acme Support)
- Support Bot
## Groups (Acme Support)
- `grp_111` - @support (Support Inbox)
- `grp_222` - @billing (Billing Inbox)
- `grp_333` - @engineering (Engineering)
## Recent UserChats (Acme Support)
- `uc_aaa` - John Doe inquiry (opened)
- `uc_bbb` - Refund request (closed)
## Managers (Acme Support)
- `mgr_001` - Alice (Team Lead)
- `mgr_002` - Bob (Support Agent)
## Bots (Acme Support)
- Support Bot (default, used for auto-replies)
- Notification Bot (used for alerts)
## Aliases
- "support" -> `grp_111` (@support in Acme Support)
## Notes
- Support Bot is used for closing chats and auto-replies
- Notification Bot is used for CI/CD alerts to @engineering
Memory lets you skip repeated
group listandchat listcalls. When you already know an ID from a previous session, use it directly.
# Set workspace credentials (validates against API)
agent-channeltalkbot auth set <access-key> <access-secret>
# Check auth status
agent-channeltalkbot auth status
# Clear all credentials
agent-channeltalkbot auth clear
# List stored workspaces
agent-channeltalkbot auth list
# Switch active workspace
agent-channeltalkbot auth use <workspace-id>
# Remove a stored workspace
agent-channeltalkbot auth remove <workspace-id>
# Set default bot name for sending messages
agent-channeltalkbot auth bot <name>
# Show current authenticated bot
agent-channeltalkbot whoami
agent-channeltalkbot whoami --pretty
agent-channeltalkbot whoami --workspace <workspace-id>
# Send a message to a UserChat or Group
agent-channeltalkbot message send <target> <text>
agent-channeltalkbot message send abc123-chat-id "Hello!"
agent-channeltalkbot message send @support "Team update"
# Reply in a group thread (group only — userchats have no thread API)
agent-channeltalkbot message reply <group> <root-message-id> <text>
agent-channeltalkbot message reply @support root-msg-id "Sounds good"
# List messages from a UserChat or Group
agent-channeltalkbot message list <target>
agent-channeltalkbot message list abc123-chat-id --limit 50
# Get a specific message by ID
# Note: Searches the latest 100 messages. Older messages may not be found.
agent-channeltalkbot message get <target> <message-id>
Target auto-detection: if the target starts with @, it's treated as a group. Otherwise, it's treated as a UserChat. You can override with --type userchat or --type group.
# List UserChats (default: opened)
agent-channeltalkbot chat list
agent-channeltalkbot chat list --state opened
agent-channeltalkbot chat list --state snoozed
agent-channeltalkbot chat list --state closed
# Get a specific UserChat
agent-channeltalkbot chat get <chat-id>
# Close a UserChat (requires --bot or default bot)
agent-channeltalkbot chat close <chat-id>
agent-channeltalkbot chat close <chat-id> --bot "Support Bot"
# Delete a UserChat (requires --force)
agent-channeltalkbot chat delete <chat-id> --force
# List groups
agent-channeltalkbot group list
# Get a group by ID or @name
agent-channeltalkbot group get <group>
agent-channeltalkbot group get @support
# Get messages from a group
agent-channeltalkbot group messages <group>
agent-channeltalkbot group messages @support --limit 50
# List all managers
agent-channeltalkbot manager list
# Get a specific manager
agent-channeltalkbot manager get <manager-id>
# List all bots
agent-channeltalkbot bot list
# Create a new bot
agent-channeltalkbot bot create <name>
agent-channeltalkbot bot create "Deploy Bot" --color "#FF5733" --avatar-url "https://example.com/avatar.png"
# Delete a bot (requires --force)
agent-channeltalkbot bot delete <bot-id> --force
Get workspace overview for AI agents (brief by default):
# Brief snapshot (default) — fast, minimal API calls
agent-channeltalkbot snapshot
# Full snapshot — includes messages, managers, bots (slow, large output)
agent-channeltalkbot snapshot --full
# Filtered full snapshots
agent-channeltalkbot snapshot --full --groups-only
agent-channeltalkbot snapshot --full --chats-only
# Limit messages per group/chat (only with --full)
agent-channeltalkbot snapshot --full --limit 10
Default returns brief JSON with:
With --full, returns comprehensive JSON with:
All commands output JSON by default for AI consumption:
{
"id": "msg_abc123",
"chat_id": "uc_def456",
"person_type": "bot",
"plain_text": "Hello world",
"created_at": 1705312200000
}
Use --pretty flag for formatted output:
agent-channeltalkbot group list --pretty
| Option | Description |
|---|---|
--pretty | Human-readable output instead of JSON |
--workspace <id> | Use a specific workspace for this command |
--bot <name> | Use a specific bot name for this command |
See references/common-patterns.md for typical AI agent workflows.
See templates/ directory for runnable examples:
post-message.sh - Send messages with error handlingmonitor-chat.sh - Poll for new UserChatsworkspace-summary.sh - Generate workspace summaryAll commands return consistent error format:
{
"error": "No credentials. Run \"auth set <access-key> <access-secret>\" first."
}
Common errors: No credentials, Workspace not found, Bot name is required, Use --force to confirm deletion.
Credentials stored in ~/.config/agent-messenger/channeltalkbot-credentials.json (0600 permissions). See references/authentication.md for format and security details.
Config format:
{
"current": { "workspace_id": "abc123" },
"workspaces": {
"abc123": {
"workspace_id": "abc123",
"workspace_name": "My Workspace",
"access_key": "...",
"access_secret": "..."
}
},
"default_bot": "Support Bot"
}
| Feature | agent-channeltalk | agent-channeltalkbot |
|---|---|---|
| Auth type | Cookie extraction (browser) | API credentials (access key/secret) |
| Token source | Auto-extracted from session | Channel Talk admin Open API |
| Acts as | Manager (you) | Bot (named identity) |
| Send group messages | Yes | Yes (requires bot name) |
| Send user-chat reply | Yes | Yes |
| Manage bots | No | Yes (create / delete) |
| Workspace snapshot | Yes | Yes |
| Search messages | Yes (UI search) | No (API limitation) |
| CI/CD friendly | Requires browser session | Yes (just set access key/secret) |
agent-channeltalkbot: command not foundagent-channeltalkbot is NOT the npm package name. The npm package is agent-messenger.
If the package is installed globally, use agent-channeltalkbot directly:
agent-channeltalkbot message send abc123-chat-id "Hello"
If the package is NOT installed, run it directly with npx -y:
npx -y agent-messenger channeltalkbot message send abc123-chat-id "Hello"
Note: If the user prefers a different package runner (e.g.,
bunx,pnpx,pnpm dlx), use that instead.
NEVER run npx agent-channeltalkbot, bunx agent-channeltalkbot, or pnpm dlx agent-channeltalkbot. It will fail or install a wrong package since agent-channeltalkbot is not the npm package name.
agent-channeltalkbot auth set <access-key> <access-secret>Channel Talk enforces rate limits on API calls. The CLI automatically retries on rate limit (429) responses using the Retry-After header. For bulk operations, add delays between requests to avoid hitting limits.
Some operations (closing chats, sending messages) require a bot name. Set a default with auth bot <name> or pass --bot <name> per command. The bot must exist in your workspace. Use bot list to see available bots.
For other troubleshooting, see references/authentication.md.
npx claudepluginhub code-yeongyu/agent-messengerInteracts with Channel Talk workspaces via TypeScript CLI: send messages to user chats/groups, read chats, manage groups/bots using API credentials. For support automation and CI/CD.
Build Zoom Team Chat integrations and chatbots using Team Chat API (user-level) or Chatbot API (bot-level with webhooks). Covers OAuth, message cards, slash commands, and production backend control.
Automates Microsoft Teams tasks (messages, channels, meetings, chats, search) via Composio MCP. Requires Rube MCP and OAuth connection.