@acedatacloud/skills 2026.621.0 → 2026.621.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/discord/SKILL.md +74 -0
- package/skills/discordbot/SKILL.md +117 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acedatacloud/skills",
|
|
3
|
-
"version": "2026.621.
|
|
3
|
+
"version": "2026.621.2",
|
|
4
4
|
"description": "Agent Skills for AceDataCloud AI services — music, image, video generation, LLM chat, web search. Compatible with Claude Code, GitHub Copilot, Gemini CLI, OpenAI Codex, and 30+ AI coding agents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-skills",
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: discord
|
|
3
|
+
description: Read your Discord identity and the list of servers (guilds) you belong to via the Discord API. Use when the user mentions Discord, asks which servers/guilds they are in, or wants their Discord account info.
|
|
4
|
+
when_to_use: |
|
|
5
|
+
Trigger when the user wants to read their Discord account identity
|
|
6
|
+
(username, avatar, email) or list the servers (guilds) their connected
|
|
7
|
+
Discord account belongs to. This connection is read-only identity +
|
|
8
|
+
guild list; it CANNOT read or send channel messages.
|
|
9
|
+
connections: [discord]
|
|
10
|
+
allowed_tools: [Bash]
|
|
11
|
+
license: Apache-2.0
|
|
12
|
+
metadata:
|
|
13
|
+
author: acedatacloud
|
|
14
|
+
version: "1.0"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
We drive the [Discord API](https://discord.com/developers/docs/reference)
|
|
18
|
+
with `curl + jq`. The user's OAuth bearer token is in `$DISCORD_TOKEN`;
|
|
19
|
+
every call needs it as `Authorization: Bearer $DISCORD_TOKEN`. Use the
|
|
20
|
+
versioned base URL `https://discord.com/api/v10`.
|
|
21
|
+
|
|
22
|
+
Discord returns standard JSON. Errors look like
|
|
23
|
+
`{"code": <n>, "message": "<reason>"}`. A `401 Unauthorized` means the
|
|
24
|
+
token expired or the connection was revoked — tell the user to re-connect
|
|
25
|
+
Discord at `auth.acedata.cloud/user/connections`. A `429` carries a
|
|
26
|
+
`retry_after` (seconds) field — sleep that long, then retry; never
|
|
27
|
+
parallelize.
|
|
28
|
+
|
|
29
|
+
**Scope is read-only `identify` + `email` + `guilds`.** This OAuth
|
|
30
|
+
connection can ONLY read the account's identity and the list of guilds it
|
|
31
|
+
belongs to. It CANNOT read/send channel messages, list a guild's channels
|
|
32
|
+
or members, or manage anything — those require a **Discord Bot** (bot
|
|
33
|
+
token + gateway), which this connector does not provide. Do not call
|
|
34
|
+
`/guilds/{id}/channels`, `/channels/...`, or `/guilds/{id}/members` — they
|
|
35
|
+
return 401/403 with a user OAuth token. If the user asks for those, say it
|
|
36
|
+
needs a Discord bot integration, which isn't set up.
|
|
37
|
+
|
|
38
|
+
## Recipes
|
|
39
|
+
|
|
40
|
+
### Verify auth + identity (always run first)
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
curl -sS -H "Authorization: Bearer $DISCORD_TOKEN" \
|
|
44
|
+
"https://discord.com/api/v10/users/@me" \
|
|
45
|
+
| jq '{id, username, global_name, email, avatar}'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### List the servers (guilds) the user is in
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
curl -sS -H "Authorization: Bearer $DISCORD_TOKEN" \
|
|
52
|
+
"https://discord.com/api/v10/users/@me/guilds" \
|
|
53
|
+
| jq 'map({id, name, owner, approximate_member_count})'
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Add `?with_counts=true` to include `approximate_member_count` /
|
|
57
|
+
`approximate_presence_count`:
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
curl -sS -H "Authorization: Bearer $DISCORD_TOKEN" \
|
|
61
|
+
"https://discord.com/api/v10/users/@me/guilds?with_counts=true" \
|
|
62
|
+
| jq 'map({id, name, owner, members: .approximate_member_count})'
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Notes
|
|
66
|
+
|
|
67
|
+
- A "server" in the UI is a "guild" in the API. `owner: true` means the
|
|
68
|
+
user owns that guild.
|
|
69
|
+
- Guild icon URL (when `icon` is non-null):
|
|
70
|
+
`https://cdn.discordapp.com/icons/<guild_id>/<icon>.png` (use `.gif` if
|
|
71
|
+
the icon hash starts with `a_`).
|
|
72
|
+
- The guild list paginates at 200; the typical user is in far fewer, so a
|
|
73
|
+
single call is usually enough. If you ever hit 200, paginate with
|
|
74
|
+
`?after=<last_guild_id>`.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: discordbot
|
|
3
|
+
description: List channels, read recent messages, and send messages on Discord using the user's own bot, via the Discord REST API. Use when the user wants their Discord BOT to post a message, read a channel, or list servers/channels — anything that acts in a server the bot was invited to.
|
|
4
|
+
when_to_use: |
|
|
5
|
+
Trigger when the user wants to send, read, or list things on Discord
|
|
6
|
+
through their bot: list the servers/channels the bot can see, read recent
|
|
7
|
+
messages in a channel, or post / reply in a channel. Messages are sent as
|
|
8
|
+
the BOT, not the user's personal account, and only in servers the bot has
|
|
9
|
+
been invited to with the right permissions.
|
|
10
|
+
connections: [discordbot]
|
|
11
|
+
allowed_tools: [Bash]
|
|
12
|
+
license: Apache-2.0
|
|
13
|
+
metadata:
|
|
14
|
+
author: acedatacloud
|
|
15
|
+
version: "1.0"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
We drive the [Discord API](https://discord.com/developers/docs/reference)
|
|
19
|
+
with `curl + jq` using the user's **bot** token in `$DISCORDBOT_TOKEN`. The
|
|
20
|
+
auth header is `Authorization: Bot $DISCORDBOT_TOKEN` — note the literal
|
|
21
|
+
`Bot ` prefix (NOT `Bearer`). Base URL is `https://discord.com/api/v10`.
|
|
22
|
+
|
|
23
|
+
This acts as the user's registered **bot**, so it can only see and act in
|
|
24
|
+
servers (guilds) the bot has been **invited to** and only where it has the
|
|
25
|
+
relevant permission (View Channels / Send Messages / Read Message History).
|
|
26
|
+
A `403 Forbidden` (code 50001 "Missing Access" / 50013 "Missing
|
|
27
|
+
Permissions") almost always means the bot isn't in that server or lacks the
|
|
28
|
+
permission — tell the user to invite the bot or grant the permission rather
|
|
29
|
+
than retrying.
|
|
30
|
+
|
|
31
|
+
Errors are JSON `{"code": <n>, "message": "<reason>"}`. A `401` means the
|
|
32
|
+
bot token is wrong/reset — ask the user to re-paste it at
|
|
33
|
+
`auth.acedata.cloud/user/connections`. A `429` carries `retry_after`
|
|
34
|
+
(seconds) — sleep that long, then retry; never parallelize.
|
|
35
|
+
|
|
36
|
+
**Before sending a message, confirm the exact channel and content with the
|
|
37
|
+
user.** Sending is irreversible and public to that channel.
|
|
38
|
+
|
|
39
|
+
## Recipes
|
|
40
|
+
|
|
41
|
+
### Verify the bot (always run first)
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
curl -sS -H "Authorization: Bot $DISCORDBOT_TOKEN" \
|
|
45
|
+
"https://discord.com/api/v10/users/@me" \
|
|
46
|
+
| jq '{id, username, bot}'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### List servers (guilds) the bot is in
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
curl -sS -H "Authorization: Bot $DISCORDBOT_TOKEN" \
|
|
53
|
+
"https://discord.com/api/v10/users/@me/guilds" \
|
|
54
|
+
| jq 'map({id, name})'
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### List text channels in a server
|
|
58
|
+
|
|
59
|
+
Channel `type` 0 = text, 5 = announcement; 2 = voice, 4 = category (skip
|
|
60
|
+
those for messaging). You need a guild id from the call above.
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
GUILD_ID="123456789012345678"
|
|
64
|
+
curl -sS -H "Authorization: Bot $DISCORDBOT_TOKEN" \
|
|
65
|
+
"https://discord.com/api/v10/guilds/$GUILD_ID/channels" \
|
|
66
|
+
| jq 'map(select(.type==0 or .type==5) | {id, name, type})'
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Read recent messages in a channel
|
|
70
|
+
|
|
71
|
+
Reading message **content** requires the **Message Content Intent** to be
|
|
72
|
+
enabled on the bot (Developer Portal → Bot → Privileged Gateway Intents).
|
|
73
|
+
Without it, `content` comes back empty for messages that don't mention the
|
|
74
|
+
bot. Needs the *Read Message History* permission in that channel.
|
|
75
|
+
|
|
76
|
+
```sh
|
|
77
|
+
CHANNEL_ID="123456789012345678"
|
|
78
|
+
curl -sS -H "Authorization: Bot $DISCORDBOT_TOKEN" \
|
|
79
|
+
"https://discord.com/api/v10/channels/$CHANNEL_ID/messages?limit=20" \
|
|
80
|
+
| jq 'map({author: .author.username, ts: .timestamp, content})'
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Send a message to a channel
|
|
84
|
+
|
|
85
|
+
```sh
|
|
86
|
+
CHANNEL_ID="123456789012345678"
|
|
87
|
+
curl -sS -X POST \
|
|
88
|
+
-H "Authorization: Bot $DISCORDBOT_TOKEN" \
|
|
89
|
+
-H "Content-Type: application/json" \
|
|
90
|
+
"https://discord.com/api/v10/channels/$CHANNEL_ID/messages" \
|
|
91
|
+
-d "$(jq -nc --arg c "Hello from the bot." '{content: $c}')"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Reply to a specific message
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
CHANNEL_ID="123456789012345678"; MESSAGE_ID="987654321098765432"
|
|
98
|
+
curl -sS -X POST \
|
|
99
|
+
-H "Authorization: Bot $DISCORDBOT_TOKEN" \
|
|
100
|
+
-H "Content-Type: application/json" \
|
|
101
|
+
"https://discord.com/api/v10/channels/$CHANNEL_ID/messages" \
|
|
102
|
+
-d "$(jq -nc --arg c "On it!" --arg m "$MESSAGE_ID" \
|
|
103
|
+
'{content: $c, message_reference: {message_id: $m}}')"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Notes
|
|
107
|
+
|
|
108
|
+
- A "server" in the UI is a "guild" in the API; messages live in channels
|
|
109
|
+
inside guilds. Always: list guilds → list that guild's channels → act on a
|
|
110
|
+
channel id. Don't invent ids.
|
|
111
|
+
- The bot only sees servers it was invited to. To add it: Developer Portal →
|
|
112
|
+
OAuth2 → URL Generator → scope `bot` + the permissions you need → open the
|
|
113
|
+
URL → pick a server (the user needs *Manage Server* there).
|
|
114
|
+
- This is a bot, not the user's account — it cannot read the user's DMs or
|
|
115
|
+
the user's full server list, only what the bot itself can access.
|
|
116
|
+
- Mentions: `<@USER_ID>` pings a user, `<#CHANNEL_ID>` links a channel. Plain
|
|
117
|
+
text is fine for normal messages.
|