Skip to content
Automation
Skill

/add-discord

Add Discord bot channel integration to ClaudeClaw.

From plugin
claudeclaw
19427 skills

Claude Code

$ npx -y skills add sbusso/claudeclaw --skill add-discord --agent claude-code

SKILL.md

add-discord.SKILL.md
name: add-discord
description: Add Discord bot channel integration to ClaudeClaw.

Add Discord Channel

This skill adds Discord support to ClaudeClaw, then walks through interactive setup.

Phase 1: Pre-flight

Check if already applied

Check if `src/channels/discord.ts` exists. If it does, skip to Phase 3 (Setup). The code changes are already in place.

Ask the user

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.

Phase 2: Apply Code Changes

Ensure channel remote

git remote -v

If `discord` is missing, add it:

git remote add discord https://github.com/qwibitai/claudeclaw-discord.git

Merge the skill branch

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.ts`
  • `discord.js` npm dependency in `package.json`
  • `DISCORD_BOT_TOKEN` in `.env.example`

If the merge reports conflicts, resolve them by reading the conflicted files and understanding the intent of both sides.

Validate code changes

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.

Phase 3: Setup

Create Discord Bot (if needed)

If the user doesn't have a bot token, tell them:

> I need you to create a Discord bot: > > 1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) > 2. Click **New Application** and give it a name (e.g., "Andy Assistant") > 3. Go to the **Bot** tab on the left sidebar > 4. Click **Reset Token** to generate a new bot token — copy it immediately (you can only see it once) > 5. Under **Privileged Gateway Intents**, enable: > - **Message Content Intent** (required to read message text) > - **Server Members Intent** (optional, for member display names) > 6. 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.

Configure environment

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.

> **Service name:** Derived from the directory name: `com.claudeclaw.<dirname>` (macOS) / `claudeclaw-<dirname>` (Linux). For example, if cwd is `my-assistant`, the service is `com.claudeclaw.my-assistant`. Determine the correct service name before running service commands below.

Build and restart

npm run build
launchctl kickstart -k gui/$(id -u)/com.claudeclaw

Phase 4: Registration

Get Channel ID

Tell the user:

> To get the channel ID for registration: > > 1. In Discord, go to **User Settings** > **Advanced** > Enable **Developer Mode** > 2. Right-click the text channel you want the bot to respond in > 3. 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`).

Register the channel

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

Phase 5: Verify

Test the connection

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.

Check logs if needed

tail -f logs/claudeclaw.log

Troubleshooting

Bot not responding

1. Check `DISCORD_BOT_TOKEN` is set in `.env` AND synced to `data/env/env` 2. Check channel is registered: `sqlite3 store/messages.db "SELECT * FROM registered_groups WHERE jid LIKE 'dc:%'"` 3. For non-main channels: message must include trigger pattern (@mention the bot) 4. Service is running: `launchctl list | grep claudeclaw` 5. Verify the bot has been invited to the server (check OAuth2 URL was used)

Bot only responds to @mentions

This is the default behavior for non-main channels (`requiresTrigger: true`). To change:

  • Update the registered group's `requiresTrigger` to `false`
  • Or register the channel as the main channel

Message Content Intent not enabled

If the bot connects but can't read messages, ensure: 1. Go to [Discord Developer Portal](https://discord.com/developers/applications) 2. Select your application > **Bot** tab 3. Under **Privileged Gateway Intents**, enable **Message Content Intent** 4. Restart ClaudeClaw

Getting Channel ID

If you can't copy the channel ID:

  • Ensure **Developer Mode** is enabled: User Settings > Advanced > Developer Mode
  • Right-click the channel name in the server sidebar > Copy Channel ID

After Setup

The Discord bot supports:

  • Te
Read more
@sbusso
Ships withclaudeclaw

Use Claude to orchestrate agents like OpenClaw

Stars on GitHub

Momentum

stars in total
194
Star history of sbusso/claudeclaw on GitHub, a chart by star-history.com

Other skills on claudeclaw.

agent-browser

agent-browser

Browse the web for any task — research topics, read articles, interact with web apps, fill forms, take screenshots, extract data,…

@sbusso@sbussoInstall Skill
add-compact

add-compact

Add /compact command for manual context compaction. Solves context rot in long sessions by forwarding the SDK's built-in /compact…

@sbusso@sbussoInstall Skill
add-gmail

add-gmail

Add Gmail integration to ClaudeClaw. Can be configured as a tool (agent reads/sends emails when triggered from WhatsApp) or as a…

@sbusso@sbussoInstall Skill
add-image-vision

add-image-vision

Add image vision to ClaudeClaw agents. Resizes and processes WhatsApp image attachments, then sends them to Claude as multimodal…

@sbusso@sbussoInstall Skill
add-ollama-tool

add-ollama-tool

Add Ollama MCP server so the container agent can call local models for cheaper/faster tasks like summarization, translation, or…

@sbusso@sbussoInstall Skill

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n12d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about add-discord.

Which coding agents can use add-discord?
add-discord installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.