← Blog

Discord Bot Skill for Claude: Build or Connect a Bot

October 29, 2026

AI Agents & ToolsAI Coding

A "discord bot skill" for Claude means one of two things, and it's worth knowing which one you want before you install anything:

  • A skill that helps Claude build a Discord bot. It teaches Claude Code the patterns for discord.js or Pycord, so the bot it writes uses slash commands, the right intents, and a token loaded from the environment.
  • A skill or plugin that lets Claude act in Discord. Claude reads channels, replies to messages, and reacts, through a bot you own.

For the second job, the most solid option today is Anthropic's own Discord plugin for Claude Code, which ships as a "channel" in research preview. For the first, a community skill called discord-bot-architect is a good starting point. And because a skill is just a folder of instructions, writing your own is quick.

We checked every repo below on GitHub on 2026-10-29: that it exists, what its SKILL.md or README actually says, its licence, and when it last changed. Anything we couldn't verify isn't in this post.

Discord Bot Skills and Plugins for Claude at a Glance

NameJobTypeLicenceWhat it needs
Discord plugin (claude-plugins-official)Act in Discord: chat with Claude Code from DiscordClaude Code plugin + channelApache-2.0Bun, a bot token, --channels flag
discord-bot-architect (claude-code-templates)Build a bot with discord.js v14 or PycordSkill (SKILL.md only)MIT repo; skill credits an Apache-2.0 sourceNothing; it's instructions
discord-skill (idanbeck/claude-skills)Act in Discord: send, read, reply, react via a Python scriptSkill + Python scriptNo licence filePython 3.9+, requests, a bot token
Your own SKILL.mdBuild a bot your waySkillYoursNothing

If you're new to the format, a skill is a folder with a SKILL.md file that Claude loads when the task matches its description. Our guide to Claude skills covers the basics, and Claude skills vs MCP explains why the official Discord option is a plugin with an MCP server rather than a plain skill.

Skills That Let Claude Act in Discord

Anthropic's official Discord plugin (channels)

The Discord plugin lives in Anthropic's claude-plugins-official marketplace. Its README describes it in one line: connect a Discord bot to Claude Code with an MCP server. When the bot gets a message, the server forwards it into your running Claude Code session, and Claude replies through the bot.

It's built on channels, a Claude Code feature that pushes outside events into a session you already have open. Anthropic's docs list Telegram, Discord, and iMessage as the channels included in the research preview. In practice that means you can DM your bot from your phone, and Claude does the work on your machine against your real files.

The README lists five tools the plugin gives Claude:

ToolWhat it does
replySend a message to a channel, optionally as a threaded reply, with up to 10 file attachments
reactAdd an emoji reaction to a message
edit_messageEdit a message the bot already sent, handy for "working..." progress updates
fetch_messagesPull up to 100 recent messages from a channel
download_attachmentSave a message's attachments locally so Claude can read them

Setup follows Anthropic's docs: create an application in the Discord Developer Portal, enable the Message Content intent, invite the bot with a short list of permissions, install the plugin, save the token with /discord:configure, then relaunch Claude Code with --channels plugin:discord@claude-plugins-official. You DM the bot, it replies with a pairing code, and you approve the code in your session.

A few things to know before you rely on it:

  • It's a research preview. Anthropic says the flag syntax and protocol may change.
  • It needs Bun, because the channel server is a Bun script.
  • Events only arrive while the session is open. For an always-on bot you run Claude Code in a persistent terminal or background process.
  • Team and Enterprise organizations must turn channels on. On claude.ai Team and Enterprise, channels are blocked until an Owner enables them.
  • Lock it down after pairing. The README tells you to switch the access policy to allowlist so strangers don't get pairing-code replies.

That last point matters more than it looks. Anthropic's docs warn that anyone who can reply through a channel with permission relay turned on can approve or deny tool use in your session. Only allowlist people you'd trust at your keyboard.

idanbeck/claude-skills: discord-skill

discord-skill is a community skill in Idan Beck's claude-skills collection. It's a plain skill with a Python script behind it, so it doesn't need channels or Bun. Its SKILL.md lists commands to list servers and channels, read recent messages, send, reply, DM, search a server, and add reactions. Everything outputs JSON.

Two parts of its SKILL.md are worth copying into any Discord skill you write:

  1. A confirmation rule. Before sending any message, Claude must show the account, the channel, and the full text, then wait for an explicit yes.
  2. A clear recommendation to use a bot token. It also offers a user OAuth login, but its own comparison table marks that option as a "gray area" for Discord's terms. Stick with the bot.

The caveats: the repo has no licence file, so ask the author before reusing the code beyond your own setup. And the skill keeps its credentials.json and tokens inside the skill folder (~/.claude/skills/discord-skill/). That's fine on your own machine, but it means you should never zip up, commit, or share that folder.

Skills That Help Claude Build a Discord Bot

claude-code-templates: discord-bot-architect

claude-code-templates by Daniel Avila is one of the bigger community collections of Claude Code components, MIT-licensed and updated this week. Its discord-bot-architect skill describes itself as a skill for building production-ready Discord bots with discord.js (JavaScript) and Pycord (Python).

What it covers:

  • Starter patterns for a discord.js v14 bot and a Pycord bot, with commands and events in separate files
  • Interactive components: buttons, select menus, and modals
  • Anti-patterns: reading message content for commands instead of using slash commands, re-registering commands on every start, and blocking the event loop
  • "Sharp edges" such as acknowledging interactions immediately, deploying commands from a separate script, using guild commands while developing, and never hardcoding tokens

Its starter code asks for only the Guilds intent and comments out Message Content as "PRIVILEGED - avoid if possible." That's the right default.

One honest note: a few code samples in the SKILL.md stop mid-block, so treat it as a checklist of patterns rather than copy-paste code. Claude fills the gaps well, but you'll get better results pairing it with the official discord.js guide.

Also note the library. If you specifically want discord.py rather than Pycord, this skill won't match. Pycord is a separate fork with a different command API, which is a good reason to write your own skill.

Build Your Own Discord Bot Skill for Claude

A skill is just instructions, so the fastest way to get the bot you want is to write one. Per Anthropic's skills documentation, personal skills go in ~/.claude/skills/<skill-name>/SKILL.md and load in every project. Project skills go in .claude/skills/<skill-name>/SKILL.md and can be committed so your team gets them too. Claude decides when to load a skill from its description, so put the use case first. You can also run it directly by typing /discord-bot.

Here's a working starting point for a discord.js bot. Save it as ~/.claude/skills/discord-bot/SKILL.md:

---
name: discord-bot
description: Build or extend a Discord bot with discord.js v14 and slash commands. Use when the user asks to create a Discord bot, add a slash command, or fix a bot's intents or permissions.
allowed-tools: Read Write Edit Bash(npm *) Bash(node *)
---

# Discord bot conventions

## Stack
- Node 20+, discord.js v14, dotenv. One file per command in src/commands/.
- Register slash commands from a separate script (scripts/deploy-commands.js),
  never on startup. Use guild commands while developing; go global only when asked.

## Secrets
- Read the token from process.env.DISCORD_TOKEN. Never write a token into code,
  this file, a commit, or chat output.
- Create .env.example with DISCORD_TOKEN= and CLIENT_ID= placeholders.
- Make sure .gitignore contains .env before the first commit.

## Intents and permissions
- Start with GatewayIntentBits.Guilds only.
- Before adding a privileged intent (MessageContent, GuildMembers, GuildPresences),
  explain why it's needed and ask me first.
- Generate the invite URL with the minimum bot permissions for the commands that exist.

## Behaviour
- Reply to every interaction within 3 seconds; use deferReply() for slow work.
- Handle errors in each command and reply with a short message instead of crashing.

## Before you finish
- Run the bot once and show me the startup log.
- List any new permissions or intents the change needs.

Swap the stack section for discord.py if that's your library. The rest of the file stays the same.

Two habits make a skill like this better over time. Keep it short, because Claude reads all of it every time it loads. And when Claude gets something wrong twice, add one line to the skill instead of correcting it in chat again.

Security Rules for Any Discord Bot Skill

Discord's own getting started guide is blunt about tokens: they authorize API requests with your app's permissions, so they're highly sensitive, and you should never share one or check it into version control. Here's how that applies to Claude skills:

RuleWhy
Token in the environment, never in SKILL.mdSkills get committed, copied, and shared. A token in the file leaks with it. Use .env or a shell variable.
Keep .env out of gitAdd it to .gitignore before the first commit, not after.
Least-privilege intentsDiscord treats Message Content, Server Members, and Presence as privileged intents. Only enable what the bot needs.
Minimal invite permissionsPick only the bot permissions your commands use in the OAuth2 URL Generator. Administrator is almost never the answer.
Confirm before sendingA skill that can post should show you the message and wait for a yes, like idanbeck's discord-skill does.
Allowlist who can talk to ClaudeWith the channel plugin, switch to allowlist after pairing. A stranger who can message your bot is messaging your Claude Code session.
Reset a leaked token right awayUse Reset Token on the Bot page of the Developer Portal. The old one stops working.

On intents specifically, Discord's Gateway documentation says apps without the Message Content intent get empty values in content fields, with a few exceptions: messages the app sends, DMs with the app, and messages that mention it. So a bot that only answers slash commands, DMs, or @mentions often doesn't need the privileged intent at all. Apps that reach verification (required at 100 servers) also need Discord's approval for privileged intents.

Which Option Should You Use?

  • You want to talk to Claude Code from Discord: use the official Discord plugin. It's maintained by Anthropic and has pairing and allowlists built in.
  • You want Claude to post or read in a server as part of a task: idanbeck's discord-skill is a simple, readable example. Or ask Claude to write a smaller version with only the commands you need.
  • You want Claude to build you a bot: start with discord-bot-architect, then turn your own preferences into a personal SKILL.md like the one above.

If you'd rather browse ready-made skills than assemble them, our roundup of the best Claude skills is a good next stop.

And if the setup step is where you keep stalling, Taku mirrors a working AI setup into a desktop workspace and runs it, so you can use a power user's configuration without reproducing their environment first. You can browse what's already there in the Taku marketplace. Taku is in Beta, and the Mac app is available now.

FAQ

Is there an official Claude Discord skill?

Anthropic publishes a Discord plugin, not a standalone skill. It's in the claude-plugins-official marketplace and works through Claude Code channels, which are in research preview. The plugin includes two small skills of its own for configuring the token and managing access.

How do I make a Discord bot with Claude?

Ask Claude Code to build one, ideally with a skill loaded that sets your conventions: discord.js or discord.py, slash commands, the token from an environment variable, and minimal intents. Then create the application and bot in the Discord Developer Portal, put the token in .env, and invite the bot with only the permissions it needs.

Can Claude Code run as a Discord bot?

Yes, with the official Discord channel plugin. Messages you send the bot arrive in your running Claude Code session, and Claude replies through the bot. The session has to stay open for messages to arrive.

What's the difference between a Claude skill for Discord and an MCP server?

A skill is instructions in a SKILL.md file, sometimes with a script. An MCP server is a running program that gives Claude tools. The official Discord plugin bundles an MCP server with skills; idanbeck's discord-skill is a skill that calls a Python script.

Do I need the Message Content intent?

Only if your bot reads ordinary messages in server channels that don't mention it. Discord's docs say DMs and mentions still include content without it. The official plugin's setup asks you to enable it, because it relays general messages to Claude.

Is it safe to put my Discord bot token in a skill?

No. Keep it in an environment variable or a .env file that's in .gitignore. Skills are meant to be shared, so treat anything inside the skill folder as public.

Key Points

  • "Discord bot skill" covers two jobs: helping Claude build a bot, and letting Claude act in Discord.
  • Anthropic's Discord plugin (research preview) bridges Discord and a running Claude Code session, with pairing and allowlists.
  • discord-bot-architect teaches discord.js v14 and Pycord patterns; idanbeck's discord-skill sends, reads, and reacts through a Python script.
  • Writing your own SKILL.md is quick, and it's the best way to lock in your library, intents, and token rules.
  • Token in the environment, never in SKILL.md. Least-privilege intents and permissions. Confirm before Claude posts.