[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71HRYC2DHHAZCJS8ZE247JY":3,"skill-same:01M71HRYC2DHHAZCJS8ZE247JY":79},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M71HRYC2DHHAZCJS8ZE247JY","discord",null,"Post announcements and messages to Discord channels. Use when sharing updates, releases, or team communications.","JSGforever\u002Fskillguard","JSGforever","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F85541948?v=4","01M71FQD3E132VMR5F4TAYX3YS","01M71FQD4DYW0XJ4XQ4YQH75Y9",2,"GPL-3.0","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__civitai--discord\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28],"messages","use","when","updates","team","channels","communications","post","releases","team communications","sharing","2026-11-10 10:12:30",false,"---\nname: discord\ndescription: Post announcements and messages to Discord channels. Use when sharing updates, releases, or team communications.\n---\n\n# Discord\n\nPost messages and announcements to Discord channels via the REST API. Navigate channels by name, send formatted messages with embeds, manage reactions, threads, and more.\n\n## Setup\n\nRun the setup script to authenticate via Discord:\n\n```bash\nnode .claude\u002Fskills\u002Fdiscord\u002Fsetup.mjs https:\u002F\u002Fdiscord-proxy.civitai.com\n```\n\nThis will:\n1. Open your browser for Discord authentication\n2. Verify you're in the team server\n3. Save your personal API token to `.env`\n\n### Admin Only: Direct Bot Token\n\nIf you manage the bot directly and need to bypass the proxy:\n\n1. Copy `.env.example` to `.env` in this skill directory\n2. Uncomment and set `DISCORD_BOT_TOKEN`\n3. Optionally set `DISCORD_GUILD` for auto-detection\n\n```bash\ncp .claude\u002Fskills\u002Fdiscord\u002F.env.example .claude\u002Fskills\u002Fdiscord\u002F.env\n```\n\n## Running Commands\n\n```bash\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs \u003Ccommand> [options]\n```\n\n### Commands\n\n| Command | Description |\n|---------|-------------|\n| `guilds` | List all guilds (servers) the bot is in |\n| `channels [guild]` | List text channels in a guild |\n| `send \u003Cchannel> \"message\"` | Send a plain text message |\n| `announce \u003Cchannel> \"message\"` | Send a formatted announcement embed |\n| `me` | Show bot information |\n| `users` | List all members in the guild |\n| `user \u003Cname\\|id>` | Get user info and mention format |\n| `roles` | List all roles in the guild |\n| `role \u003Cname\\|id>` | Get role info and mention format |\n| `messages \u003Cchannel>` | Get recent messages from a channel |\n| `edit \u003Cmsg_link> \"content\"` | Edit a message (bot's own only) |\n| `delete \u003Cmsg_link>` | Delete a message |\n| `reply \u003Cmsg_link> \"content\"` | Reply to a message |\n| `rich-embed \u003Cchannel>` | Send embed with structured fields |\n| `react \u003Cmsg_link> \u003Cemoji>` | Add reaction to a message |\n| `unreact \u003Cmsg_link> \u003Cemoji>` | Remove reaction from a message |\n| `pin \u003Cmsg_link>` | Pin a message |\n| `unpin \u003Cmsg_link>` | Unpin a message |\n| `pins \u003Cchannel>` | List pinned messages in a channel |\n| `thread \u003Cchannel> --thread \"name\"` | Create a thread |\n| `dm \u003Cuser> \"message\"` | Send a direct message to a user |\n| `dm-messages \u003Cuser>` | Read DM history with a user |\n\n### Options\n\n| Flag | Description |\n|------|-------------|\n| `--json` | Output raw JSON response |\n| `--title \"text\"` | Set embed title |\n| `--color \u003Chex>` | Set embed color (default: #1E88E5 blue) |\n| `--footer \"text\"` | Set embed footer text |\n| `--url \"link\"` | Add a URL to the embed title |\n| `--limit, -n \u003CN>` | Limit results (users: default 100, messages: default 20) |\n| `--field \"Name\\|Value\\|inline\"` | Add field to rich embed (repeatable) |\n| `--thumbnail \"url\"` | Add thumbnail image to embed |\n| `--image \"url\"` | Add large image to embed |\n| `--thread \"name\"` | Thread name (for thread command) |\n\n## Examples\n\n### Send Messages\n\n```bash\n# Send to channel by name\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs send dev-general \"Deployment complete!\"\n\n# Send to channel by ID\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs send 966054537880289330 \"Build passed\"\n```\n\n### Send Announcements\n\n```bash\n# Basic announcement with auto-formatting\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs announce dev-alerts \"New feature deployed!\"\n\n# Announcement with custom title and color\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs announce deployments \"v5.0.1381 released\" --title \"Release\" --color \"#00C853\"\n```\n\n### Rich Embeds with Fields\n\n```bash\n# Structured release announcement\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs rich-embed dev-general \"New release is live!\" \\\n  --title \"Release v5.0.1382\" \\\n  --field \"Version|5.0.1382|inline\" \\\n  --field \"Author|@justin|inline\" \\\n  --field \"Changes|3 files modified\" \\\n  --footer \"Civitai\" \\\n  --color \"#00C853\"\n```\n\n### Edit Messages\n\n```bash\n# Edit using message link\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs edit \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F955...\u002F966...\u002F123...\" \"Updated content\"\n\n# Edit using channel + message ID\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs edit dev-general 1234567890 \"Updated content\"\n```\n\n### Delete Messages\n\n```bash\n# Delete using message link\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs delete \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F955...\u002F966...\u002F123...\"\n\n# Delete using channel + message ID\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs delete dev-general 1234567890\n```\n\n### Reply to Messages\n\n```bash\n# Reply using message link\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs reply \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F955...\u002F966...\u002F123...\" \"Thanks for the update!\"\n\n# Reply using channel + message ID\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs reply dev-general 1234567890 \"Got it!\"\n```\n\n### Reactions\n\n```bash\n# Add a reaction (use Unicode emoji)\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs react \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F...\" \"U+2705\"\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs react dev-general 1234567890 \"U+1F44D\"\n\n# Remove a reaction\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs unreact \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F...\" \"U+2705\"\n```\n\n### Pin\u002FUnpin Messages\n\n```bash\n# Pin a message\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs pin \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F...\"\n\n# Unpin a message\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs unpin \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F...\"\n\n# List pinned messages\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs pins dev-general\n```\n\n### Threads\n\n```bash\n# Create thread from a message\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs thread \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F...\" --thread \"Discussion\"\n\n# Create thread in channel (no parent message)\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs thread dev-general --thread \"New Topic\"\n```\n\n### Direct Messages\n\n```bash\n# Send DM to a user by name\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs dm justin \"Hey, can you review this PR?\"\n\n# Send DM to a user by ID\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs dm 303445765865603073 \"Quick question about the deployment\"\n\n# Read DM history with a user\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs dm-messages justin\n\n# Read last 50 DMs\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs dm-messages justin --limit 50\n```\n\n### Users and Roles\n\n```bash\n# List users\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs users --limit 50\n\n# Find user to get mention format\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs user justin\n# Output: Mention: \u003C@303445765865603073>\n\n# List roles\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs roles\n\n# Find role to get mention format\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs role devs\n# Output: Mention: \u003C@&955572624992382996>\n```\n\n### Mention Users and Roles\n\n```bash\n# Mention a user in a message\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs send dev-general \"\u003C@303445765865603073> check this PR\"\n\n# Mention a role\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs announce dev-general \"\u003C@&955572624992382996> new release!\" --title \"Attention Devs\"\n```\n\n### Read Messages\n\n```bash\n# Get last 20 messages (default)\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs messages dev-general\n\n# Get last 50 messages\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs messages dev-general --limit 50\n```\n\n## Message Links\n\nMost commands accept Discord message links directly:\n- Format: `https:\u002F\u002Fdiscord.com\u002Fchannels\u002FGUILD_ID\u002FCHANNEL_ID\u002FMESSAGE_ID`\n- Right-click any message in Discord > \"Copy Message Link\"\n\nCommands that accept message links: `edit`, `delete`, `reply`, `react`, `unreact`, `pin`, `unpin`, `thread`\n\n## Channel Name Matching\n\nChannel names are matched flexibly:\n- Exact match: `dev-general`\n- Partial match: `dev-gen` matches `dev-general`\n- With or without emoji prefix: `team` matches `team`\n- Case insensitive: `DEV-GENERAL` matches `dev-general`\n\n## When to Use\n\n- **Deployments**: Announce releases to `deployments` or `dev-alerts`\n- **Bug fixes**: Share fixes with the team in `dev-general`\n- **Feature announcements**: Post to relevant channels\n- **Team updates**: Share progress in `team` or project-specific channels\n- **Automated notifications**: Post from CI\u002FCD or scripts\n- **Mentioning users**: Look up user IDs with `user` command, then @mention them\n- **Mentioning roles**: Look up role IDs with `role` command, then @mention them\n- **Reading context**: Check recent messages with `messages` command\n- **Reactions**: Acknowledge messages with emoji reactions\n- **Organizing discussions**: Create threads for focused conversations\n- **Direct messages**: Send private DMs to team members, read DM history\n\n## Tips\n\n- Use `announce` for important updates (creates rich embed)\n- Use `send` for quick messages or automated notifications\n- Use `rich-embed` for structured data with multiple fields\n- Channel names are cached after first lookup\n- Bot must have appropriate permissions in target channel\n- Use `--json` for scripting or piping to other tools\n- Message links work across all message-targeting commands\n\n## Permissions Required\n\nThe bot needs these Discord permissions:\n- `View Channels` - to list and find channels\n- `Send Messages` - to post messages\n- `Embed Links` - for rich announcements\n- `Read Message History` - to read channel messages\n- `Add Reactions` - to add reactions\n- `Manage Messages` - to pin\u002Funpin and delete messages\n- `Create Public Threads` - to create threads\n- Server Members Intent - enabled in Discord Developer Portal (for listing members)\n","# Discord\n\nPost messages and announcements to Discord channels via the REST API. Navigate channels by name, send formatted messages with embeds, manage reactions, threads, and more.\n\n## Setup\n\nRun the setup script to authenticate via Discord:\n\n```bash\nnode .claude\u002Fskills\u002Fdiscord\u002Fsetup.mjs https:\u002F\u002Fdiscord-proxy.civitai.com\n```\n\nThis will:\n1. Open your browser for Discord authentication\n2. Verify you're in the team server\n3. Save your personal API token to `.env`\n\n### Admin Only: Direct Bot Token\n\nIf you manage the bot directly and need to bypass the proxy:\n\n1. Copy `.env.example` to `.env` in this skill directory\n2. Uncomment and set `DISCORD_BOT_TOKEN`\n3. Optionally set `DISCORD_GUILD` for auto-detection\n\n```bash\ncp .claude\u002Fskills\u002Fdiscord\u002F.env.example .claude\u002Fskills\u002Fdiscord\u002F.env\n```\n\n## Running Commands\n\n```bash\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs \u003Ccommand> [options]\n```\n\n### Commands\n\n| Command | Description |\n|---------|-------------|\n| `guilds` | List all guilds (servers) the bot is in |\n| `channels [guild]` | List text channels in a guild |\n| `send \u003Cchannel> \"message\"` | Send a plain text message |\n| `announce \u003Cchannel> \"message\"` | Send a formatted announcement embed |\n| `me` | Show bot information |\n| `users` | List all members in the guild |\n| `user \u003Cname\\|id>` | Get user info and mention format |\n| `roles` | List all roles in the guild |\n| `role \u003Cname\\|id>` | Get role info and mention format |\n| `messages \u003Cchannel>` | Get recent messages from a channel |\n| `edit \u003Cmsg_link> \"content\"` | Edit a message (bot's own only) |\n| `delete \u003Cmsg_link>` | Delete a message |\n| `reply \u003Cmsg_link> \"content\"` | Reply to a message |\n| `rich-embed \u003Cchannel>` | Send embed with structured fields |\n| `react \u003Cmsg_link> \u003Cemoji>` | Add reaction to a message |\n| `unreact \u003Cmsg_link> \u003Cemoji>` | Remove reaction from a message |\n| `pin \u003Cmsg_link>` | Pin a message |\n| `unpin \u003Cmsg_link>` | Unpin a message |\n| `pins \u003Cchannel>` | List pinned messages in a channel |\n| `thread \u003Cchannel> --thread \"name\"` | Create a thread |\n| `dm \u003Cuser> \"message\"` | Send a direct message to a user |\n| `dm-messages \u003Cuser>` | Read DM history with a user |\n\n### Options\n\n| Flag | Description |\n|------|-------------|\n| `--json` | Output raw JSON response |\n| `--title \"text\"` | Set embed title |\n| `--color \u003Chex>` | Set embed color (default: #1E88E5 blue) |\n| `--footer \"text\"` | Set embed footer text |\n| `--url \"link\"` | Add a URL to the embed title |\n| `--limit, -n \u003CN>` | Limit results (users: default 100, messages: default 20) |\n| `--field \"Name\\|Value\\|inline\"` | Add field to rich embed (repeatable) |\n| `--thumbnail \"url\"` | Add thumbnail image to embed |\n| `--image \"url\"` | Add large image to embed |\n| `--thread \"name\"` | Thread name (for thread command) |\n\n## Examples\n\n### Send Messages\n\n```bash\n# Send to channel by name\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs send dev-general \"Deployment complete!\"\n\n# Send to channel by ID\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs send 966054537880289330 \"Build passed\"\n```\n\n### Send Announcements\n\n```bash\n# Basic announcement with auto-formatting\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs announce dev-alerts \"New feature deployed!\"\n\n# Announcement with custom title and color\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs announce deployments \"v5.0.1381 released\" --title \"Release\" --color \"#00C853\"\n```\n\n### Rich Embeds with Fields\n\n```bash\n# Structured release announcement\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs rich-embed dev-general \"New release is live!\" \\\n  --title \"Release v5.0.1382\" \\\n  --field \"Version|5.0.1382|inline\" \\\n  --field \"Author|@justin|inline\" \\\n  --field \"Changes|3 files modified\" \\\n  --footer \"Civitai\" \\\n  --color \"#00C853\"\n```\n\n### Edit Messages\n\n```bash\n# Edit using message link\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs edit \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F955...\u002F966...\u002F123...\" \"Updated content\"\n\n# Edit using channel + message ID\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs edit dev-general 1234567890 \"Updated content\"\n```\n\n### Delete Messages\n\n```bash\n# Delete using message link\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs delete \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F955...\u002F966...\u002F123...\"\n\n# Delete using channel + message ID\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs delete dev-general 1234567890\n```\n\n### Reply to Messages\n\n```bash\n# Reply using message link\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs reply \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F955...\u002F966...\u002F123...\" \"Thanks for the update!\"\n\n# Reply using channel + message ID\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs reply dev-general 1234567890 \"Got it!\"\n```\n\n### Reactions\n\n```bash\n# Add a reaction (use Unicode emoji)\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs react \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F...\" \"U+2705\"\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs react dev-general 1234567890 \"U+1F44D\"\n\n# Remove a reaction\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs unreact \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F...\" \"U+2705\"\n```\n\n### Pin\u002FUnpin Messages\n\n```bash\n# Pin a message\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs pin \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F...\"\n\n# Unpin a message\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs unpin \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F...\"\n\n# List pinned messages\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs pins dev-general\n```\n\n### Threads\n\n```bash\n# Create thread from a message\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs thread \"https:\u002F\u002Fdiscord.com\u002Fchannels\u002F...\" --thread \"Discussion\"\n\n# Create thread in channel (no parent message)\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs thread dev-general --thread \"New Topic\"\n```\n\n### Direct Messages\n\n```bash\n# Send DM to a user by name\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs dm justin \"Hey, can you review this PR?\"\n\n# Send DM to a user by ID\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs dm 303445765865603073 \"Quick question about the deployment\"\n\n# Read DM history with a user\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs dm-messages justin\n\n# Read last 50 DMs\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs dm-messages justin --limit 50\n```\n\n### Users and Roles\n\n```bash\n# List users\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs users --limit 50\n\n# Find user to get mention format\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs user justin\n# Output: Mention: \u003C@303445765865603073>\n\n# List roles\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs roles\n\n# Find role to get mention format\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs role devs\n# Output: Mention: \u003C@&955572624992382996>\n```\n\n### Mention Users and Roles\n\n```bash\n# Mention a user in a message\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs send dev-general \"\u003C@303445765865603073> check this PR\"\n\n# Mention a role\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs announce dev-general \"\u003C@&955572624992382996> new release!\" --title \"Attention Devs\"\n```\n\n### Read Messages\n\n```bash\n# Get last 20 messages (default)\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs messages dev-general\n\n# Get last 50 messages\nnode .claude\u002Fskills\u002Fdiscord\u002Fquery.mjs messages dev-general --limit 50\n```\n\n## Message Links\n\nMost commands accept Discord message links directly:\n- Format: `https:\u002F\u002Fdiscord.com\u002Fchannels\u002FGUILD_ID\u002FCHANNEL_ID\u002FMESSAGE_ID`\n- Right-click any message in Discord > \"Copy Message Link\"\n\nCommands that accept message links: `edit`, `delete`, `reply`, `react`, `unreact`, `pin`, `unpin`, `thread`\n\n## Channel Name Matching\n\nChannel names are matched flexibly:\n- Exact match: `dev-general`\n- Partial match: `dev-gen` matches `dev-general`\n- With or without emoji prefix: `team` matches `team`\n- Case insensitive: `DEV-GENERAL` matches `dev-general`\n\n## When to Use\n\n- **Deployments**: Announce releases to `deployments` or `dev-alerts`\n- **Bug fixes**: Share fixes with the team in `dev-general`\n- **Feature announcements**: Post to relevant channels\n- **Team updates**: Share progress in `team` or project-specific channels\n- **Automated notifications**: Post from CI\u002FCD or scripts\n- **Mentioning users**: Look up user IDs with `user` command, then @mention them\n- **Mentioning roles**: Look up role IDs with `role` command, then @mention them\n- **Reading context**: Check recent messages with `messages` command\n- **Reactions**: Acknowledge messages with emoji reactions\n- **Organizing discussions**: Create threads for focused conversations\n- **Direct messages**: Send private DMs to team members, read DM history\n\n## Tips\n\n- Use `announce` for important updates (creates rich embed)\n- Use `send` for quick messages or automated notifications\n- Use `rich-embed` for structured data with multiple fields\n- Channel names are cached after first lookup\n- Bot must have appropriate permissions in target channel\n- Use `--json` for scripting or piping to other tools\n- Message links work across all message-targeting commands\n\n## Permissions Required\n\nThe bot needs these Discord permissions:\n- `View Channels` - to list and find channels\n- `Send Messages` - to post messages\n- `Embed Links` - for rich announcements\n- `Read Message History` - to read channel messages\n- `Add Reactions` - to add reactions\n- `Manage Messages` - to pin\u002Funpin and delete messages\n- `Create Public Threads` - to create threads\n- Server Members Intent - enabled in Discord Developer Portal (for listing members)\n",{"name":5,"description":7},"main","f2ec4b3b9133d34eeaf9b38e4b0a97e8e5705a7f","benchmarks\u002Ffinal\u002Fskills\u002Fasset1__civitai--discord",0,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard","https:\u002F\u002Fgithub.com\u002FJSGforever","2026-08-29 18:27:56",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add JSGforever\u002Fskillguard --skill discord",{"tool":47,"command":48},"bunx","bunx skills add JSGforever\u002Fskillguard --skill discord",{"tool":50,"command":51},"pnpm","pnpm dlx skills add JSGforever\u002Fskillguard --skill discord","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__civitai--discord\u002FSKILL.md",true,[55,61,65,71,75],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},".env.example","OTHER","其他",705,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__civitai--discord\u002F.env.example",{"path":62,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":63,"sourceHtmlUrl":64},".gitignore",5,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__civitai--discord\u002F.gitignore",{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"api\u002Fclient.mjs","SCRIPT","脚本",16080,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__civitai--discord\u002Fapi\u002Fclient.mjs",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"query.mjs",31020,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__civitai--discord\u002Fquery.mjs",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"setup.mjs",7299,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__civitai--discord\u002Fsetup.mjs",[80,111,127,153,175,196],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":91,"publishedAt":29},"01M71HY2SNXBA9Q00WZDTZQ31Z","skillguard-codex-scanner","Hybrid deterministic+LLM agent-skill security scanner. Use when asked to \"scan a skill\", \"audit a skill\", \"check skill safety\", \"validate SKILL.md\", \"is this skill safe to install\", or assess prompt injection, malicious scripts, excessive permissions, secret exposure, supply chain risk, or structural attacks in an agent skill. Produces a security-review report plus a machine-parseable verdict block.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fsrc\u002Fskillguard\u002Fstatic_scanner\u002Fskillguard-codex-scanner\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[92,93,94,95,96,97,98,99,100,101,102,103,20,104,105,106,107,108,109,110],"scanner","skillguard codex scanner","skillguard","codex","chain","skill security","security-review","review report","structural","secret","prompt injection","security scanner","review","malicious","permissions","exposure","audit","scripts","safe",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":115,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":123,"publishedAt":29},"01M71HY0SPKTT3S27BC2HPAC5M","data-exfiltrator","Analyzes data files","MIT","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Fsmoke-one-skill\u002Fasset1__cisco-ai-defense--data-exfiltrator\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[124,125,126],"data","data exfiltrator","files",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":29},"01M71HXVS9EMN44BGDW215FZ72","real-time-collaboration-engine","Build real-time collaborative editing with WebSockets, OT\u002FCRDT conflict resolution, and presence awareness. Implements cursor tracking, optimistic updates, and offline sync. Use for collaborative editors, whiteboards, video editing. Activate on \"real-time collaboration\", \"WebSocket sync\", \"multiplayer editing\", \"CRDT\", \"presence awareness\". NOT for simple chat, request-response APIs, or single-user apps.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--real-time-collaboration-engine\u002FSKILL.md",[],[134,135,136,137,138,139,140,141,142,143,144,145,146,147,21,148,149,150,151,152],"time","real time collaboration engine","real time collaboration","collaboration","engine","real time","Video","reliability","video editing","performance","conflict resolution","presence","access","apps","Bash","activate","optimizer","react","streaming",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":162,"publishedAt":29},"01M71HXP6CTY4KFN0QVMMN0V7J","react-performance-optimizer","Optimize React apps for 60fps performance. Implements memoization, virtualization, code splitting, bundle optimization. Use for slow renders, large lists, bundle bloat. Activate on \"React performance\", \"slow render\", \"useMemo\", \"bundle size\", \"virtualization\". NOT for backend optimization, non-React frameworks, or premature optimization.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--react-performance-optimizer\u002FSKILL.md",[159],{"categoryNo":160,"categoryName":161,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000009","前端开发",[143,163,150,151,164,165,166,167,168,169,134,170,171,147,148,172,149,152,173,174],"react performance optimizer","react performance","performance optimizer","app","nextjs","expert","re","render","2025","code","router","strategies",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":182,"publishedAt":29},"01M71HXH7QXSQB4QTDZ7SP7YXQ","llm-streaming-response-handler","Build production LLM streaming UIs with Server-Sent Events, real-time token display, cancellation, error recovery. Handles OpenAI\u002FAnthropic\u002FClaude streaming APIs. Use for chatbots, AI assistants, real-time text generation. Activate on \"LLM streaming\", \"SSE\", \"token stream\", \"chat UI\", \"real-time AI\". NOT for batch processing, non-streaming APIs, or WebSocket bidirectional chat.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--llm-streaming-response-handler\u002FSKILL.md",[181],{"categoryNo":160,"categoryName":161,"taxonomyType":89,"taxonomyTypeDesc":90},[183,152,184,185,186,187,143,134,188,189,190,148,149,150,191,151,192,193,194,195],"llm streaming response handler","handler","error","processing","retry","chat ui","error recovery","critical","batch","display","text","server","read",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":200,"categories":201,"keywords":209,"publishedAt":29},"01M71HXCB0E1YRKYW1Y8T0Y106","github-actions-pipeline-builder","Build production CI\u002FCD pipelines with GitHub Actions. Implements matrix builds, caching, deployments, testing, security scanning. Use for automated testing, deployments, release workflows. Activate on \"GitHub Actions\", \"CI\u002FCD\", \"workflow\", \"deployment pipeline\", \"automated testing\". NOT for Jenkins\u002FCircleCI, manual deployments, or non-GitHub repositories.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--github-actions-pipeline-builder\u002FSKILL.md",[202,205,208],{"categoryNo":203,"categoryName":204,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":206,"categoryName":207,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[210,211,212,213,214,215,216,141,168,217,218,219,149,174,220,195,221,222,223,224],"github actions pipeline builder","actions","github actions","pipeline builder","github","builder","pipeline","testing","ci","workflows","run","release","write","edit","git"]