@acedatacloud/skills 2026.621.0 → 2026.621.1

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acedatacloud/skills",
3
- "version": "2026.621.0",
3
+ "version": "2026.621.1",
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>`.