
Discord
Wire your coding agent to send, read, moderate, and rich-post in Discord servers using one documented message-tool contract.
Overview
Discord is an agent skill for the Build phase that routes Discord send, read, edit, react, poll, thread, search, presence, and media or component actions through the message tool with channel discord.
Install
npx skills add https://github.com/steipete/clawdis --skill discordWhat is this skill?
- Single message tool surface for send, read, edit, delete, react, poll, pin, thread, search, presence, and media
- Explicit targeting with guildId, channelId, messageId, userId plus optional multi-account accountId
- Respects channels.discord.actions.* config gates before each action class runs
- Components v2 payloads for rich UI with a hard rule not to mix v2 components with legacy embeds
- Documented to/user addressing: channel:<id> and user:<id> with <@USER_ID> mentions
- Operations documented via one message tool with channel discord
- Components v2 UI pattern with no mixing of v2 components and legacy embeds
Adoption & trust: 2k installs on skills.sh; 378k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want your agent to act in Discord but every session improvises different payloads, IDs, and UI patterns that break gates or pollute channels.
Who is it for?
Solo builders running OpenClaw or message-tool agents who already have channels.discord.token and need reliable Discord ops from the same session that writes code.
Skip if: Teams without Discord token config, builders who need a hosted bot framework outside the message tool, or workflows that require only email or Slack with no Discord surface.
When should I use this skill?
When the agent must perform Discord operations and channels.discord.token is configured, using the message tool with channel discord.
What do I get? / Deliverables
The agent follows gated, ID-explicit JSON actions for Discord so messages, reactions, threads, and components v2 posts match your OpenClaw channel config.
- Discord messages sent, edited, or deleted via documented actions
- Reactions, polls, pins, threads, and component v2 posts executed with explicit channel and message IDs
Recommended Skills
Journey fit
Discord ops are channel integrations you add while building agent-backed products and community touchpoints, so Build is the canonical shelf. The skill documents JSON actions against channel discord via the message tool—classic third-party channel integration, not a standalone launch or analytics workflow.
How it compares
A procedural integration skill for the message tool—not a Discord MCP server or standalone bot runtime.
Common Questions / FAQ
Who is discord for?
Discord is for solo and indie builders whose agent stack already exposes the message tool and who operate communities, support, or product alerts in Discord servers.
When should I use discord?
Use discord during Build when wiring agent integrations—posting deploy notices, reading channel history, reacting to tickets—or during Grow support when the agent must thread, poll, or pin in an existing Discord community.
Is discord safe to install?
Treat it like any channel skill: it expects a Discord token in config and network-backed message actions. Review the Security Audits panel on this Prism page and scope channels.discord.actions gates before granting production tokens.
SKILL.md
READMESKILL.md - Discord
# Discord Use the `message` tool with `channel: "discord"`. No separate Discord tool. ## Rules - Respect `channels.discord.actions.*` gates. - Prefer explicit `guildId`, `channelId`, `messageId`, `userId`. - Multi-account: pass `accountId` when needed. - Send targets: `to: "channel:<id>"` or `to: "user:<id>"`. - Mention users as `<@USER_ID>`. - Avoid Markdown tables in outbound Discord messages. - Prefer components v2 for rich UI; do not mix v2 `components` with legacy `embeds`. ## Common actions Send: ```json { "action": "send", "channel": "discord", "to": "channel:123", "message": "hello", "silent": true } ``` Send media: ```json { "action": "send", "channel": "discord", "to": "channel:123", "message": "see attachment", "media": "file:///tmp/example.png" } ``` Components v2: ```json { "action": "send", "channel": "discord", "to": "channel:123", "message": "Status", "components": "[Carbon v2 components]" } ``` React: ```json { "action": "react", "channel": "discord", "channelId": "123", "messageId": "456", "emoji": "👍" } ``` Read: ```json { "action": "read", "channel": "discord", "to": "channel:123", "limit": 20 } ``` Edit/delete: ```json { "action": "edit", "channel": "discord", "channelId": "123", "messageId": "456", "message": "fixed typo" } ``` ```json { "action": "delete", "channel": "discord", "channelId": "123", "messageId": "456" } ``` Poll: ```json { "action": "poll", "channel": "discord", "to": "channel:123", "pollQuestion": "Lunch?", "pollOption": ["Pizza", "Sushi"], "pollDurationHours": 24 } ``` Pin: ```json { "action": "pin", "channel": "discord", "channelId": "123", "messageId": "456" } ``` Thread: ```json { "action": "thread-create", "channel": "discord", "channelId": "123", "messageId": "456", "threadName": "bug triage" } ``` Search: ```json { "action": "search", "channel": "discord", "guildId": "999", "query": "release notes", "channelIds": ["123"], "limit": 10 } ``` Presence, often gated: ```json { "action": "set-presence", "channel": "discord", "activityType": "playing", "activityName": "OpenClaw", "status": "online" } ```