/discord-list-channels
List all channels in a Discord guild/server via the Discord API. Use this skill when the user wants to see all channels, find specific channels, or audit server structure.
$ npx -y skills add evolution-foundation/evo-nexus --skill discord-list-channels --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition โ
- You can call itInvoke it directly when you want it.
- Slash command
/discord-list-channels
Context preview
The summary Claude sees to decide when to auto-load this skill.
List all channels in a Discord guild/server via the Discord API. Use this skill when the user wants to see all channels, find specific channels, or audit server structure.
SKILL.md
discord-list-channels.SKILL.mdname: discord-list-channels
description: List all channels in a Discord guild/server via the Discord API. Use this skill when the user wants to see all channels, find specific channels, or audit server structure.
Discord List Channels
List all channels in a Discord guild (server) using the Discord API v10. This skill retrieves all channels including text channels, voice channels, categories, announcement channels, and stage channels.
When to Use This Skill
Use this skill when the user wants to:
- List all channels in a Discord server
- Find a specific channel by name
- Get channel IDs for use with other operations
- Audit server channel structure
- Filter channels by type (text, voice, category)
- Export channel list for documentation
Prerequisites
- `DISCORD_BOT_TOKEN` environment variable must be set
- Bot must be a member of the target server
- Bot must have "View Channels" permission (basic permission, usually granted by default)
- Valid Discord guild ID (18-19 digit snowflake ID)
Channel Types
Channels are returned with the following type values:
| Type | Value | Description | |------|-------|-------------| | GUILD_TEXT | 0 | Text channel | | GUILD_VOICE | 2 | Voice channel | | GUILD_CATEGORY | 4 | Category (organizes channels) | | GUILD_ANNOUNCEMENT | 5 | Announcement channel | | GUILD_STAGE_VOICE | 13 | Stage channel | | GUILD_FORUM | 15 | Forum channel |
Instructions
When the user requests to list Discord channels:
1. **Validate Requirements**
- Confirm `DISCORD_BOT_TOKEN` is set in environment
- Verify guild ID is provided (18-19 digit number)
2. **Make the API Request** Use the following curl command structure:
curl -X GET "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}"Replace `{GUILD_ID}` with the actual guild ID.
3. **Process Response**
- Channels are returned as an array
- Each channel includes: id, name, type, position, parent_id, permission_overwrites
- Sort or filter as requested by user
4. **Handle Response Codes**
- 200 Success: Channels retrieved successfully
- 401 Unauthorized: Invalid bot token
- 403 Forbidden: Bot not in server or missing permissions
- 404 Not Found: Guild doesn't exist
5. **Present Results**
- Group channels by category if applicable
- Show channel names, types, and IDs
- Format output in a readable structure
- Highlight requested channels if searching
Response Structure
Each channel object contains:
{
"id": "123456789012345678",
"type": 0,
"guild_id": "987654321098765432",
"position": 0,
"permission_overwrites": [],
"name": "general",
"topic": "General discussion",
"nsfw": false,
"last_message_id": "111222333444555666",
"parent_id": null
}Additional fields for voice channels:
{
"bitrate": 64000,
"user_limit": 0,
"rtc_region": null
}Filtering Channels
By Type
Filter channels to show only specific types:
# Get all channels then filter by type
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq '.[] | select(.type == 0)' # Text channels onlyType filters:
- `.type == 0` - Text channels
- `.type == 2` - Voice channels
- `.type == 4` - Categories
- `.type == 5` - Announcement channels
- `.type == 13` - Stage channels
By Name
Search for channels by name:
# Get channels and search by name
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq '.[] | select(.name | contains("general"))'By Category
List channels in a specific category:
# Get channels in category with parent_id
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq '.[] | select(.parent_id == "category_id_here")'Organizing Output
Group by Category
Organize channels by their parent category:
# List all channels grouped by category
CHANNELS=$(curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}")
# Get categories
echo "$CHANNELS" | jq -r '.[] | select(.type == 4) | .name + " (ID: " + .id + ")"'
# Get channels in each category
for CATEGORY_ID in $(echo "$CHANNELS" | jq -r '.[] | select(.type == 4) | .id'); do
echo "Channels in category $CATEGORY_ID:"
echo "$CHANNELS" | jq -r ".[] | select(.parent_id == \"$CATEGORY_ID\") | \" - \" + .name"
doneSort by Position
Channels have a `position` field for sorting:
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq 'sort_by(.position)'Output Formats
Simple List
Channels in server 123456789012345678:
- general (text)
- announcements (announcement)
- voice-chat (voice)
- Community (category)
Detailed List
=== Text Channels ===
general (ID: 111222333444555666)
Topic: General discussion
NSFW: No
announcements (ID: 111222333444555667)
Topic: Server updates
NSFW: No
=== Voice Channels ===
voice-chat (ID: 111222333444555668)
User Limit: None
Bitrate: 64kbps
=== Categories ===
Community (ID: 111222333444555669)
Hierarchical List
๐ Community (Category)
๐ฌ general-chat (Text)
๐ฌ help (Text)
๐ Voice Room 1 (Voice)
๐ Administration (Category)
๐ฌ mod-chat (Text)
๐ฌ admin-only (Text)
๐ฌ welcome (Text) - No category
๐ข announcements (Announcement) - No category
CSV Export
Channel ID,Name,Type,Category,Topic
111222333444555666,general,text,Community,General discussion
111222333444555667,voice-chat,voice,Community,
111222333444555668,announcements,announcement,,Server updates
Channel Type Labels
When displaying channels, use these labels:
| Type Value | Display Label | Emoji | |------------|---------------|-------|
Read more
name: discord-list-channels description: List all channels in a Discord guild/server via the Discord API. Use this skill when the user wants to see all channels, find specific channels, or audit server structure.
Discord List Channels
List all channels in a Discord guild (server) using the Discord API v10. This skill retrieves all channels including text channels, voice channels, categories, announcement channels, and stage channels.
When to Use This Skill
Use this skill when the user wants to:
- List all channels in a Discord server
- Find a specific channel by name
- Get channel IDs for use with other operations
- Audit server channel structure
- Filter channels by type (text, voice, category)
- Export channel list for documentation
Prerequisites
- `DISCORD_BOT_TOKEN` environment variable must be set
- Bot must be a member of the target server
- Bot must have "View Channels" permission (basic permission, usually granted by default)
- Valid Discord guild ID (18-19 digit snowflake ID)
Channel Types
Channels are returned with the following type values:
| Type | Value | Description | |------|-------|-------------| | GUILD_TEXT | 0 | Text channel | | GUILD_VOICE | 2 | Voice channel | | GUILD_CATEGORY | 4 | Category (organizes channels) | | GUILD_ANNOUNCEMENT | 5 | Announcement channel | | GUILD_STAGE_VOICE | 13 | Stage channel | | GUILD_FORUM | 15 | Forum channel |
Instructions
When the user requests to list Discord channels:
1. **Validate Requirements**
- Confirm `DISCORD_BOT_TOKEN` is set in environment
- Verify guild ID is provided (18-19 digit number)
2. **Make the API Request** Use the following curl command structure:
curl -X GET "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}"Replace `{GUILD_ID}` with the actual guild ID.
3. **Process Response**
- Channels are returned as an array
- Each channel includes: id, name, type, position, parent_id, permission_overwrites
- Sort or filter as requested by user
4. **Handle Response Codes**
- 200 Success: Channels retrieved successfully
- 401 Unauthorized: Invalid bot token
- 403 Forbidden: Bot not in server or missing permissions
- 404 Not Found: Guild doesn't exist
5. **Present Results**
- Group channels by category if applicable
- Show channel names, types, and IDs
- Format output in a readable structure
- Highlight requested channels if searching
Response Structure
Each channel object contains:
{
"id": "123456789012345678",
"type": 0,
"guild_id": "987654321098765432",
"position": 0,
"permission_overwrites": [],
"name": "general",
"topic": "General discussion",
"nsfw": false,
"last_message_id": "111222333444555666",
"parent_id": null
}Additional fields for voice channels:
{
"bitrate": 64000,
"user_limit": 0,
"rtc_region": null
}Filtering Channels
By Type
Filter channels to show only specific types:
# Get all channels then filter by type
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq '.[] | select(.type == 0)' # Text channels onlyType filters:
- `.type == 0` - Text channels
- `.type == 2` - Voice channels
- `.type == 4` - Categories
- `.type == 5` - Announcement channels
- `.type == 13` - Stage channels
By Name
Search for channels by name:
# Get channels and search by name
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq '.[] | select(.name | contains("general"))'By Category
List channels in a specific category:
# Get channels in category with parent_id
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq '.[] | select(.parent_id == "category_id_here")'Organizing Output
Group by Category
Organize channels by their parent category:
# List all channels grouped by category
CHANNELS=$(curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}")
# Get categories
echo "$CHANNELS" | jq -r '.[] | select(.type == 4) | .name + " (ID: " + .id + ")"'
# Get channels in each category
for CATEGORY_ID in $(echo "$CHANNELS" | jq -r '.[] | select(.type == 4) | .id'); do
echo "Channels in category $CATEGORY_ID:"
echo "$CHANNELS" | jq -r ".[] | select(.parent_id == \"$CATEGORY_ID\") | \" - \" + .name"
doneSort by Position
Channels have a `position` field for sorting:
curl -s "https://discord.com/api/v10/guilds/{GUILD_ID}/channels" \
-H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
jq 'sort_by(.position)'Output Formats
Simple List
Channels in server 123456789012345678: - general (text) - announcements (announcement) - voice-chat (voice) - Community (category)
Detailed List
=== Text Channels === general (ID: 111222333444555666) Topic: General discussion NSFW: No announcements (ID: 111222333444555667) Topic: Server updates NSFW: No === Voice Channels === voice-chat (ID: 111222333444555668) User Limit: None Bitrate: 64kbps === Categories === Community (ID: 111222333444555669)
Hierarchical List
๐ Community (Category) ๐ฌ general-chat (Text) ๐ฌ help (Text) ๐ Voice Room 1 (Voice) ๐ Administration (Category) ๐ฌ mod-chat (Text) ๐ฌ admin-only (Text) ๐ฌ welcome (Text) - No category ๐ข announcements (Announcement) - No category
CSV Export
Channel ID,Name,Type,Category,Topic 111222333444555666,general,text,Community,General discussion 111222333444555667,voice-chat,voice,Community, 111222333444555668,announcements,announcement,,Server updates
Channel Type Labels
When displaying channels, use these labels:
| Type Value | Display Label | Emoji | |------------|---------------|-------|
Other skills on evo-nexus.
- /ai-image-creator
Generate PNG images using AI (multiple models via OpenRouter including Gemini, FLUX.2, Riverflow, SeedDream, GPT-5 Image, proxied through Cloudflare AI Gateway BYOK). Also analyze/describe existing images using multimodal AI vision. Use when user asks to "generate an image",
Open skill - /create-agent
Create a new custom agent for the workspace. Guides the user through defining agent name, domain, personality, skills, model, and memory folder. Use when the user says 'create an agent', 'new agent', 'add an agent', 'I need a custom agent', or wants to create a specialized agent
Open skill - /create-command
Create a new slash command for Claude Code. Guides the user through defining the command name, what it does, and generates the markdown file in .claude/commands/. Use when the user says 'create a command', 'new command', 'add a slash command', 'I want a shortcut for', or wants
Open skill - /create-goal
Create a Mission, Project, or Goal (Mission โ Project โ Goal โ Task hierarchy) in EvoNexus. Guides the user through picking a mission, choosing or creating a project, defining a measurable goal with metric_type and target_value. Writes to the SQLite goals tables via POST
Open skill - /create-heartbeat
Create a new heartbeat (proactive agent scheduled with a decision prompt) for EvoNexus. Guides the user through picking an agent, setting interval, wake triggers, and the decision prompt that governs when the agent acts. Writes to config/heartbeats.yaml with pydantic validation.
Open skill - /create-integration
Create a new custom integration (API/service wrapper) for the workspace. Guides the user through defining the integration's slug, display name, description, category, and required env keys. Writes .claude/skills/custom-int-{slug}/SKILL.md via POST /api/integrations/custom. Use
Open skill

