con un clic
con un clic
Show what this AgentLite instance can do — installed skills, available tools, and system info. Read-only. Use when the user asks what the bot can do, what's installed, or runs /capabilities.
Quick read-only health check — session context, workspace mounts, tool availability, and task snapshot. Use when the user asks for system status or runs /status.
Delegate sub-tasks to remote ACP (Agent Client Protocol) peers such as Claude Code or Codex via the built-in acp_* host actions. Use when the user asks to hand work to another agent, wants a second opinion, or needs long / sandboxed execution that shouldn't block this chat.
Add /compact command for manual context compaction. Solves context rot in long sessions by forwarding the SDK's built-in /compact slash command. Main-group or trusted sender only.
Add Gmail integration to AgentLite. Can be configured as a tool (agent reads/sends emails when triggered from WhatsApp) or as a full channel (emails can trigger the agent, schedule tasks, and receive replies). Guides through GCP OAuth setup and implements the integration.
Add image vision to AgentLite agents. Resizes and processes WhatsApp image attachments, then sends them to Claude as multimodal content blocks.
| name | add-discord |
| description | Add Discord bot channel integration to AgentLite. |
This skill adds Discord support to AgentLite, then walks through interactive setup.
Check if src/channels/discord.ts exists. If it does, skip to Phase 3 (Setup). The code changes are already in place.
Use AskUserQuestion to collect configuration:
AskUserQuestion: Do you have a Discord bot token, or do you need to create one?
If they have one, collect it now. If not, we'll create one in Phase 3.
git remote -v
If discord is missing, add it:
git remote add discord https://github.com/qwibitai/agentlite-discord.git
git fetch discord main
git merge discord/main || {
git checkout --theirs package-lock.json
git add package-lock.json
git merge --continue
}
This merges in:
src/channels/discord.ts (DiscordChannel class with self-registration via registerChannel)src/channels/discord.test.ts (unit tests with discord.js mock)import './discord.js' appended to the channel barrel file src/channels/index.tsdiscord.js npm dependency in package.jsonDISCORD_BOT_TOKEN in .env.exampleIf the merge reports conflicts, resolve them by reading the conflicted files and understanding the intent of both sides.
npm install
npm run build
npx vitest run src/channels/discord.test.ts
All tests must pass (including the new Discord tests) and build must be clean before proceeding.
If the user doesn't have a bot token, tell them:
I need you to create a Discord bot:
- Go to the Discord Developer Portal
- Click New Application and give it a name (e.g., "Andy Assistant")
- Go to the Bot tab on the left sidebar
- Click Reset Token to generate a new bot token — copy it immediately (you can only see it once)
- Under Privileged Gateway Intents, enable:
- Message Content Intent (required to read message text)
- Server Members Intent (optional, for member display names)
- Go to OAuth2 > URL Generator:
- Scopes: select
bot- Bot Permissions: select
Send Messages,Read Message History,View Channels- Copy the generated URL and open it in your browser to invite the bot to your server
Wait for the user to provide the token.
Add to .env:
DISCORD_BOT_TOKEN=<their-token>
Channels auto-enable when their credentials are present — no extra configuration needed.
Sync to container environment:
mkdir -p data/env && cp .env data/env/env
The container reads environment from data/env/env, not .env directly.
npm run build
launchctl kickstart -k gui/$(id -u)/com.agentlite
Tell the user:
To get the channel ID for registration:
- In Discord, go to User Settings > Advanced > Enable Developer Mode
- Right-click the text channel you want the bot to respond in
- Click Copy Channel ID
The channel ID will be a long number like
1234567890123456.
Wait for the user to provide the channel ID (format: dc:1234567890123456).
The channel ID, name, and folder name are needed. Use npx tsx setup/index.ts --step register with the appropriate flags.
For a main channel (responds to all messages):
npx tsx setup/index.ts --step register -- --jid "dc:<channel-id>" --name "<server-name> #<channel-name>" --folder "discord_main" --trigger "@${ASSISTANT_NAME}" --channel discord --no-trigger-required --is-main
For additional channels (trigger-only):
npx tsx setup/index.ts --step register -- --jid "dc:<channel-id>" --name "<server-name> #<channel-name>" --folder "discord_<channel-name>" --trigger "@${ASSISTANT_NAME}" --channel discord
Tell the user:
Send a message in your registered Discord channel:
- For main channel: Any message works
- For non-main: @mention the bot in Discord
The bot should respond within a few seconds.
tail -f logs/agentlite.log
DISCORD_BOT_TOKEN is set in .env AND synced to data/env/envsqlite3 store/messages.db "SELECT * FROM registered_groups WHERE jid LIKE 'dc:%'"launchctl list | grep agentliteThis is the default behavior for non-main channels (requiresTrigger: true). To change:
requiresTrigger to falseIf the bot connects but can't read messages, ensure:
If you can't copy the channel ID:
The Discord bot supports:
<@botId> → AgentLite trigger format)