skills/discord/SKILL.md
Send and receive Discord messages via bot. Use for Discord channel communication. Trigger words - discord, send discord.
npx skillsauth add svenflow/dispatch discordInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Send and receive messages in Discord channels via a bot integration.
~/.claude/skills/discord/scripts/send-discord <channel_id> "message"
# From ~/transcripts/discord/{channel_id}/
~/.claude/skills/sms-assistant/scripts/reply "message"
~/.claude/skills/discord/scripts/read-discord <channel_id> # Last 25 messages
~/.claude/skills/discord/scripts/read-discord <channel_id> --limit 50 # Last 50 messages
~/.claude/skills/discord/scripts/read-discord <channel_id> --before <message_id> # Before a message
~/.claude/skills/discord/scripts/read-discord <channel_id> --after <message_id> # After a message
~/.claude/skills/discord/scripts/read-discord <channel_id> --json # Raw JSON output
Use this to get context when you are tagged — read the last N messages to understand what the conversation is about before responding.
~/.claude/skills/discord/scripts/discord-react <channel_id> <message_id> "🦀"
To get message IDs, fetch recent messages via the Discord API:
httpx.get(f"https://discord.com/api/v10/channels/{channel_id}/messages?limit=10",
headers={"Authorization": f"Bot {token}"})
Use reactions to add personality — react to funny messages, acknowledge things without a full reply, etc.
~/transcripts/discord/{channel_id}/Discord config lives in ~/dispatch/config.local.yaml:
discord:
channel_ids:
- "1234567890"
bot_role_ids: # Role IDs that trigger the bot when @mentioned
- "BOT_ROLE_ID"
bot_names: # Name strings that trigger the bot (case-insensitive)
- "sven"
users:
"DISCORD_USER_ID":
name: "Name"
tier: "admin"
The listener only queues messages that are directed at the bot:
bot_role_idsbot_names)All other messages are silently dropped at the listener level (zero token cost).
Bot token stored in macOS Keychain as discord_bot_token.
Stored in keychain:
# Store
security add-generic-password -s discord_bot_token -a sven -w "TOKEN"
# Read
security find-generic-password -s discord_bot_token -w
Default: respond only when tagged (@bot). Do not reply to every message in a channel.
Exception — active turn-based games: If context from recent messages makes it clearly your turn (e.g., a game prompt directed at you, the previous player completed their turn), respond without requiring a tag. Read game state from the last several messages to determine if it is your turn before acting.
Discord sessions recognize dot-commands (e.g., .imdb, .help) as special bot commands.
.imdb <title>Looks up movie or TV show information using the imdb-lookup skill CLI.
~/.claude/skills/imdb-lookup/scripts/imdb-lookup "<title>" --format discord
--format discord for markdown-formatted output suitable for Discord channelsdevelopment
Use when building React/Next.js components, dashboards, admin panels, apps, or any web interface. Trigger words - react, frontend, ui, dashboard, component, interface, web app, polish, audit, design review.
tools
Track flight status and get FlightAware links. Use when asked about flights, flight status, arrival times, or flight tracking. Trigger words - flight, flying, UA, AA, DL, landing, arriving, departure.
development
Query real-time locations of people sharing via Find My. Look up where someone is, reverse geocode GPS coordinates, set up geofence alerts. Trigger words - findmy, find my, location, where is, geofence, track location.
tools
Access Figma designs via MCP or Chrome. Use when asked about Figma files, design mockups, wireframes, or UI designs. Trigger words - figma, design, mockup, wireframe, UI design, FigJam.