discord · imoonkey — Claude Code skill: what it does, how to install
Connects AI coding assistants to Discord via openweb commands. Useful for reading chat channels and posting messages directly from the terminal.
npx skills add imoonkey/openweb --skill discord -a claude-codeWhat discord does
This skill integrates Discord messaging capabilities into coding assistants via the openweb tool. It retrieves user profiles, guild channel trees, and direct message threads. Agents can query server discussions with searchMessages, inspect roles, or read channel history with pagination limits.
Writing operations cover sending messages through sendMessage, deleting entries, and managing emoji reactions. Entity creation operations like createServer and createChannel fail because the underlying transport does not supply the X-Super-Properties fingerprint header required by Discord.
What it helps with
- search guild messages matching a specific text query
- post updates and add emoji reactions to Discord channels
- retrieve channel message history and pinned announcements
- inspect server structure, channel lists, and user roles
Example prompts for the agent
- List the last 50 messages from channel
123456789 - Send a message saying "Build succeeded" to channel
123456789 - Search guild
987654321for recent bug discussions
How to install discord
1Skills CLI (Vercel)
npx skills add imoonkey/openweb --skill discord -a claude-code2Manually: put the files in place
~/.claude/skills/discord/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/discord/
1Skills CLI (Vercel)
npx skills add imoonkey/openweb --skill discord -a codex2Manually: put the files in place
.agents/skills/discord/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add imoonkey/openweb --skill discord -a cursor2Manually: put the files in place
.cursor/skills/discord/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install imoonkey/openweb discord2Manually: put the files in place
.github/skills/discord/SKILL.md1Skills CLI (Vercel)
npx skills add imoonkey/openweb --skill discord -a gemini-cli2Platform CLI
gemini skills install https://github.com/imoonkey/openweb --path src/sites/discordManually: put the files in place
.devin/skills/discord/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add imoonkey/openweb --skill discord -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about discord
How to install discord in Claude Code?
Run npx skills add imoonkey/openweb --skill discord -a claude-code in your terminal.
What does the discord skill do?
It gives agents CLI commands to read Discord chats, search servers, post messages, and manage emoji reactions.
Can this skill create new Discord channels or servers?
No, createServer and createChannel are unsupported because Discord requires an X-Super-Properties header that the transport does not produce.
Source text
SKILL.md · MIT
# Discord
## Overview
Real-time messaging platform. Archetype: Messaging.
## Workflows
### Browse server messages
1. `listGuilds` → pick guild → `guildId`
2. `listGuildChannels(guildId)` → pick channel → `channelId`
3. `getChannelMessages(channelId, limit)` → messages with content, author, timestamps
### Search a server
1. `listGuilds` → pick guild → `guildId`
2. `searchMessages(guildId, content)` → matching messages with context
### Send a message & react
1. `listGuilds` → pick guild → `guildId`
2. `listGuildChannels(guildId)` → pick channel → `channelId`
3. `sendMessage(channelId, content)` → message with ID → `messageId`
4. `addReaction(channelId, messageId, emoji)` → 204
### Undo message & reaction
1. `getChannelMessages(channelId)` → `messageId` (or use `messageId ← sendMessage`)
2. `deleteMessage(channelId, messageId)` → 204
3. `removeReaction(channelId, messageId, emoji)` → 204
### Inspect a server
1. `listGuilds` → pick guild → `guildId`
2. `getGuildInfo(guildId)` → server details, member count, features
3. `getGuildRoles(guildId)` → role list with permissions
## Operations
| Operation | Intent | Key Input | Key Output | Notes |
|-----------|--------|-----------|------------|-------|
| getCurrentUser | get my profile | — | username, email, avatar, premium_type | entry point |
| listGuilds | list my servers | — | id, name, icon, owner, permissions | entry point |
| getDirectMessages | list DM channels | — | id, type, recipients, last_message_id | entry point |
| getGuildInfo | server details | guildId ← listGuilds | name, description, owner_id, member count, features, roles | |
| listGuildChannels | channels in server | guildId ← listGuilds | id, name, type, topic, position | |
| getGuildRoles | server roles | guildId ← listGuilds | name, permissions, color, position | |
| searchMessages | search in server | guildId ← listGuilds, content (query) | total_results, messages with context | |
| getChannelInfo | channel details | channelId ← listGuildChannels | name, type, topic, guild_id | |
| getChannelMessages | read messages | channelId ← listGuildChannels | content, author, timestamp, attachments, embeds | paginated (limit, before, after) |
| getPinnedMessages | pinned messages | channelId ← listGuildChannels | content, author, timestamp | no pagination |
| sendMessage | send a message | channelId ← listGuildChannels, content | id, content, author, timestamp | write op |
| addReaction | react to message | channelId, messageId ← getChannelMessages, emoji | 204 no content | write op |
| deleteMessage | delete a message | channelId, messageId ← getChannelMessages | 204 no content | write op, reverses sendMessage |
| removeReaction | remove own reaction | channelId, messageId ← getChannelMessages, emoji | 204 no content | write op, reverses addReaction |
## Quick Start
```bash
# Get current user info
openweb discord exec getCurrentUser '{}'
# List my servers (guilds)
openweb discord exec listGuilds '{}'
# List channels in a server
openweb discord exec listGuildChannels '{"guildId":"GUILD_ID"}'
# Read messages in a channel
openweb discord exec getChannelMessages '{"channelId":"CHANNEL_ID","limit":50}'
# Search messages in a guild
openweb discord exec searchMessages '{"guildId":"GUILD_ID","content":"search term"}'
# Send a message to a channel
openweb discord exec sendMessage '{"channelId":"CHANNEL_ID","content":"Hello!"}'
# React to a message with thumbs up
openweb discord exec addReaction '{"channelId":"CHANNEL_ID","messageId":"MSG_ID","emoji":"👍"}'
# Delete a message
openweb discord exec deleteMessage '{"channelId":"CHANNEL_ID","messageId":"MSG_ID"}'
# Remove own reaction from a message
openweb discord exec removeReaction '{"channelId":"CHANNEL_ID","messageId":"MSG_ID","emoji":"👍"}'
```
## Known Limitations
- `createServer` / `createChannel` — **not supported** (removed from spec, 2026-04-20). Discord requires an `X-Super-Properties` header (base64 client-fingerprint blob) on create-entity endpoints; the page transport does not inject it and there is no discord adapter to synthesize one. All other writes (`sendMessage`, `deleteMessage`, `addReaction`, `removeReaction`) work via the same `webpack_module_walk` Authorization header. Unblock: capture a live super-properties value from the SPA bundle and add it as a constant header (or build a discord adapter).
© imoonkey · MIT · imoonkey/openweb
Similar skills
All skills for Automation and no-code: n8n, Zapier, Make →discord by other authors comes first.