Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Manage and update Discord channels via the Discord API. Use this skill when the user wants to modify channel properties, update names/topics, change permissions, or delete channels.
.claude/skills/evolution-foundation-discord-manage-channel/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 280% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 226% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 630% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 146% | 0% |
Manage and update Discord channels using the Discord API v10. This skill supports modifying channel properties including name, topic, position, permissions, and deleting channels.
Use this skill when the user wants to:
DISCORD_BOT_TOKEN environment variable must be setWhen the user requests to manage a Discord channel:
DISCORD_BOT_TOKEN is set in environmentInclude only the fields you want to change:
name: New channel name (2-100 chars, lowercase, hyphens/underscores)topic: New topic (max 1024 chars for text channels)position: New sort position (integer)parent_id: Move to different category (category channel ID or null)nsfw: Toggle NSFW status (true/false)permission_overwrites: Update permissions (array)user_limit: Voice channel user limit (0-99, 0 = unlimited)bitrate: Voice channel bitrate (8000-96000 for non-boosted servers)Update Channel (PATCH): bash curl -X PATCH "https://discord.com/api/v10/channels/{CHANNEL_ID}" \ -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "name": "new-channel-name", "topic": "New channel topic" }'
Delete Channel (DELETE): bash curl -X DELETE "https://discord.com/api/v10/channels/{CHANNEL_ID}" \ -H "Authorization: Bot ${DISCORD_BOT_TOKEN}"
| Property | Type | Description | Validation | |----------|------|-------------|------------| | name | string | Channel name | 2-100 chars, lowercase, hyphens/underscores | | topic | string | Channel topic | Max 1024 characters | | position | integer | Sort position | Positive integer | | parent_id | snowflake | Category ID | Valid category ID or null | | nsfw | boolean | NSFW status | true or false | | permission_overwrites | array | Permission overrides | Array of permission objects |
| Property | Type | Description | Validation | |----------|------|-------------|------------| | name | string | Channel name | 2-100 chars | | position | integer | Sort position | Positive integer | | parent_id | snowflake | Category ID | Valid category ID or null | | user_limit | integer | Max users | 0-99 (0 = unlimited) | | bitrate | integer | Audio quality | 8000-96000 (higher for boosted) | | permission_overwrites | array | Permission overrides | Array of permission objects |
| Property | Type | Description | Validation | |----------|------|-------------|------------| | name | string | Category name | 2-100 chars | | position | integer | Sort position | Positive integer | | permission_overwrites | array | Permission overrides | Array of permission objects |
json{ "name": "new-channel-name" }
json{ "topic": "New channel description or topic" }
json{ "parent_id": "123456789012345678" }
json{ "parent_id": null }
json{ "nsfw": true }
json{ "user_limit": 10, "bitrate": 64000 }
json{ "position": 5 }
To update channel permissions:
json{ "permission_overwrites": [ { "id": "role_or_user_id", "type": 0, "allow": "1024", "deny": "2048" } ] }
Permission structure:
id: Role ID or User IDtype: 0 for role, 1 for userallow: Bitwise permission value (permissions to grant)deny: Bitwise permission value (permissions to deny)Common permission bits:
1024 (0x400): VIEW_CHANNEL2048 (0x800): SEND_MESSAGES4096 (0x1000): SEND_TTS_MESSAGES8192 (0x2000): MANAGE_MESSAGES16384 (0x4000): EMBED_LINKS32768 (0x8000): ATTACH_FILES65536 (0x10000): READ_MESSAGE_HISTORY1048576 (0x100000): CONNECT (voice)2097152 (0x200000): SPEAK (voice)IMPORTANT: Channel deletion is permanent and cannot be undone.
Before deleting:
Delete command:
bashcurl -X DELETE "https://discord.com/api/v10/channels/{CHANNEL_ID}" \ -H "Authorization: Bot ${DISCORD_BOT_TOKEN}"
400 Bad Request - Invalid Name
json{ "code": 50035, "errors": { "name": { "_errors": [{ "code": "BASE_TYPE_BAD_LENGTH", "message": "Must be between 2 and 100 in length." }] } } }
403 Forbidden - Missing Permissions
json{ "code": 50013, "message": "Missing Permissions" }
404 Not Found - Channel Doesn't Exist
json{ "code": 10003, "message": "Unknown Channel" }
400 Bad Request - Invalid Parent
json{ "code": 50035, "message": "Invalid Form Body - parent_id: Unknown category" }
Channel management actions are recorded in the server's audit log:
Returns the updated channel object with all properties.
Returns empty response on successful deletion.
See examples.md for detailed usage scenarios.
PATCH /channels/{channel.id}DELETE /channels/{channel.id}| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 6,016 | 2,500 | -58% | 1 | 1 | 0% | 1,159 | 2,855 | +146% | 0 | 0 | — |
case-02 | pass→pass | 5,550 | 2,761 | -50% | 1 | 1 | 0% | 965 | 2,970 | +208% | 0 | 0 | — |
case-03 | pass→pass | 10,077 | 4,537 | -55% | 1 | 1 | 0% | 1,881 | 3,279 | +74% | 0 | 0 | — |
case-04 | pass→pass | 3,581 | 3,466 | -3% | 1 | 1 | 0% | 660 | 3,126 | +374% | 0 | 0 | — |
case-05 | pass→pass | 5,272 | 2,666 | -49% | 1 | 1 | 0% | 1,021 | 2,937 | +188% | 0 | 0 | — |
case-06 | pass→pass | 2,622 | 2,185 | -17% | 1 | 1 | 0% | 546 | 2,842 | +421% | 0 | 0 | — |
case-07 | pass→pass | 3,788 | 2,490 | -34% | 1 | 1 | 0% | 828 | 2,939 | +255% | 0 | 0 | — |
case-08 | pass→pass | 5,151 | 2,754 | -47% | 1 | 1 | 0% | 930 | 2,937 | +216% | 0 | 0 | — |
case-09 | fail→pass | 4,554 | 4,541 | -0% | 1 | 1 | 0% | 894 | 3,399 | +280% | 0 | 0 | — |
case-10 | fail→pass | 7,114 | 5,377 | -24% | 1 | 1 | 0% | 1,075 | 3,500 | +226% | 0 | 0 | — |
case-11 | fail→pass | 12,466 | 3,375 | -73% | 1 | 1 | 0% | 2,067 | 2,925 | +42% | 0 | 0 | — |
case-12 | pass→pass | 5,660 | 1,462 | -74% | 1 | 1 | 0% | 1,128 | 2,667 | +136% | 0 | 0 | — |
case-13 | pass→pass | 6,348 | 4,291 | -32% | 1 | 1 | 0% | 1,073 | 3,105 | +189% | 0 | 0 | — |
case-14 | pass→pass | 6,520 | 2,758 | -58% | 1 | 1 | 0% | 1,134 | 2,847 | +151% | 0 | 0 | — |
case-15 | pass→pass | 6,116 | 2,814 | -54% | 1 | 1 | 0% | 992 | 2,900 | +192% | 0 | 0 | — |
case-16 | fail→pass | 3,082 | 1,719 | -44% | 1 | 1 | 0% | 359 | 2,619 | +630% | 0 | 0 | — |
case-17 | pass→pass | 2,447 | 1,547 | -37% | 1 | 1 | 0% | 345 | 2,608 | +656% | 0 | 0 | — |
case-18 | pass→pass | 3,643 | 2,200 | -40% | 1 | 1 | 0% | 680 | 2,731 | +302% | 0 | 0 | — |
case-19 | pass→pass | 5,478 | 2,201 | -60% | 1 | 1 | 0% | 920 | 2,712 | +195% | 0 | 0 | — |
case-20 | pass→pass | 1,749 | 1,653 | -5% | 1 | 1 | 0% | 234 | 2,655 | +1035% | 0 | 0 | — |
case-21 | pass→pass | 5,505 | 2,618 | -52% | 1 | 1 | 0% | 907 | 2,815 | +210% | 0 | 0 | — |
case-22 | pass→pass | 3,535 | 4,136 | +17% | 1 | 1 | 0% | 690 | 3,208 | +365% | 0 | 0 | — |
case-23 | pass→pass | 3,030 | 3,156 | +4% | 1 | 1 | 0% | 603 | 3,006 | +399% | 0 | 0 | — |
case-24 | pass→pass | 3,318 | 3,053 | -8% | 1 | 1 | 0% | 584 | 3,020 | +417% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 24 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.