بنقرة واحدة
add-discord
Add Discord as a messaging channel. Can replace WhatsApp or run alongside it and Telegram.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Add Discord as a messaging channel. Can replace WhatsApp or run alongside it and Telegram.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Generate presentation slide decks from markdown content using the Gamma API. Use when user says "create slides", "make a presentation", "build a deck", "generate a slide deck", or asks to turn content into slides. Run with /gamma-slides.
Package any combination of skills into a distributable Claude Code / Cowork plugin. Builds the correct directory structure, rewrites frontmatter, creates slash commands, generates marketplace.json, and zips for upload. Trigger with "build a plugin", "package these skills as a plugin", "create a plugin from", or "turn these skills into a plugin".
Create or update a skill that packages a workflow into a self-contained SKILL.md with scripts, references, and assets. Use when user says "create a skill", "make a new skill", "crystallize this workflow", "turn this into a skill", or asks to build a reusable process.
Debug container agent issues. Use when things aren't working, container fails, authentication problems, or to understand how the container system works. Covers logs, environment variables, mounts, and common issues.
Generate images using Gemini via scripts/generate-image.js. Creates technical diagrams, architecture visuals, blog headers, and branded graphics. Use when the user asks to "create an image", "generate a diagram", "make a visual", or "create a graphic". Triggers on "generate image", "create image", "make diagram", "create visual", "architecture diagram".
Generate images using Gemini via scripts/generate-image.js. Creates technical diagrams, architecture visuals, blog headers, and branded graphics. Use when the user asks to "create an image", "generate a diagram", "make a visual", or "create a graphic". Triggers on "generate image", "create image", "make diagram", "create visual", "architecture diagram".
| name | add-discord |
| description | Add Discord as a messaging channel. Can replace WhatsApp or run alongside it and Telegram. |
| allowed-tools | Bash(*), Read, Edit, Write, Glob, Grep, AskUserQuestion |
UX Rule: Use AskUserQuestion for ALL interactions with the user. Never just output questions as text — always use the tool so the user gets structured prompts with selectable options.
Add Discord bot integration to BastionClaw using discord.js.
Verify the Discord channel code is properly integrated:
# 1. Channel implementation exists
ls src/channels/discord.ts
# 2. DiscordChannel is imported in the orchestrator
grep -q "DiscordChannel" src/index.ts && echo "OK: import present" || echo "MISSING: DiscordChannel import"
# 3. Config vars exist
grep -q "DISCORD_BOT_TOKEN" src/config.ts && echo "OK: config present" || echo "MISSING: DISCORD_BOT_TOKEN config"
If any check fails, the Discord integration code may not be applied. Tell the user to run /update to get the latest codebase.
Use AskUserQuestion to collect configuration:
AskUserQuestion: Should Discord replace WhatsApp or run alongside it?
AskUserQuestion: Do you have a Discord bot token, or do you need to create one?
If they need to create one, walk them through the full setup below.
AskUserQuestion: Do you already have a Discord server for this bot, or do you need to create one?
You now have a server that only you can see. Do not share the invite link with anyone yet — see the Security section below first.
The bot will read and respond to every message in channels it can see. Create a dedicated channel for it:
bot or assistantOnly you (the server owner) can see this channel now. After the bot is invited to your server (Phase 4), you must grant it access to this private channel:
You only need ONE bot. Name it whatever you want — "Kai", "BastionClaw", "My Assistant", etc. If you plan to use agent swarms later, the swarm uses webhooks to give each subagent its own appearance through this single bot. The bot name is just its default identity.
IMPORTANT — do this before configuring the Bot tab, or saves will fail with a 500 error.
Do this BEFORE copying the token — the invite URL doesn't require the token, and doing it in this order avoids having to reset the token later.
botView Channels, Send Messages, Send Messages in Threads, Create Public Threads, Read Message HistoryThe skill will save it to .env:
DISCORD_BOT_TOKEN=your_token_here
If replacing WhatsApp:
DISCORD_ONLY=true
Present this warning to the user before proceeding:
SECURITY WARNING: Anyone who can type in a channel the bot monitors can command it.
Unlike Telegram (where only your DM with the bot is private by default), Discord bots read messages from channels — and anyone with access to that channel can trigger the bot. The bot runs with your Claude API credentials and has access to your agent's tools, memory, and scheduled tasks.
What this means:
- If you add someone to your server and they can see the bot channel, they can use your bot
- They can trigger agent containers that run with your API key
- They can potentially read your agent's memory and conversation history
- The main channel has admin privileges (register groups, schedule tasks, manage all groups)
Recommendations:
- Keep the bot channel private (only you can see it)
- If you want others to use the bot, create a separate non-main channel for them (with
requiresTrigger: true) — this limits them to trigger-word interactions only, no admin access- Never give anyone the server Administrator permission — they can see all channels including private ones
- If you must share access, use Discord's role permissions to restrict who can see which channels
Walk the user through verifying their channel permissions:
If the user wants others to interact with the bot in a separate channel:
team-bot)requires_trigger: 1 — users must @mention the botEnable Developer Mode to get channel IDs:
Then:
The JID format is dc:<channelId>.
AskUserQuestion: Is this your main (admin) channel, or a secondary group channel?
requires_trigger: 0)requires_trigger: 1)Register via the database (substitute the values):
sqlite3 store/messages.db "INSERT INTO registered_groups (jid, name, folder, trigger_pattern, requires_trigger, channel, added_at) VALUES ('dc:CHANNEL_ID', 'CHANNEL_NAME', 'FOLDER_NAME', '@ASSISTANT_NAME', REQUIRES_TRIGGER, 'discord', '$(date -u +%Y-%m-%dT%H:%M:%S.000Z)')"
Create the group folder:
mkdir -p groups/FOLDER_NAME/logs
./scripts/restart.sh --build
Check logs:
tail -20 logs/bastionclaw.log | grep -i discord
You should see Discord bot connected with the bot's tag.
Send a test message in the Discord channel mentioning the bot (@BotName hello). The bot should respond.
/add-discord-swarm)grep -q "DiscordChannel" dist/index.js — if no match, rebuild with npm run buildDISCORD_BOT_TOKEN in .env and verify the token is valid in the Discord Developer Portalmessage.author.bot — this shouldn't happen. Check logs for errors.