@acedatacloud/skills 2026.703.12 → 2026.703.14
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.703.
|
|
3
|
+
"version": "2026.703.14",
|
|
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",
|
package/skills/bluesky/SKILL.md
CHANGED
|
@@ -22,20 +22,33 @@ Privacy and Security → App Passwords**, NOT the account login password) and
|
|
|
22
22
|
`$BLUESKY_SERVICE` (the PDS base URL, default `https://bsky.social`).
|
|
23
23
|
|
|
24
24
|
Errors come back as JSON `{"error":"<name>","message":"<detail>"}` — show it
|
|
25
|
-
verbatim. A `401 {"error":"AuthenticationRequired"
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
verbatim. A `401 {"error":"AuthenticationRequired","message":"Invalid identifier
|
|
26
|
+
or password"}` on session creation means the identifier or App Password is
|
|
27
|
+
wrong/revoked. The **#1 cause is a bare handle**: the identifier must be the
|
|
28
|
+
FULL handle (`alice.bsky.social`), a DID, or the account email — a bare
|
|
29
|
+
`alice` will NOT resolve. Step 1 auto-appends `.bsky.social` to a bare handle
|
|
30
|
+
on the default PDS; if it still fails, the user must re-connect the Bluesky
|
|
31
|
+
connector with the full handle (or generate a fresh App Password).
|
|
28
32
|
|
|
29
33
|
## Step 1 — always create a session first
|
|
30
34
|
|
|
31
35
|
Everything needs a short-lived `accessJwt` and your account `did`. Do this once
|
|
32
|
-
per task and reuse the values
|
|
36
|
+
per task and reuse the values. The identifier must be a full handle, DID or
|
|
37
|
+
email — normalize a bare username (no `.` / `@`) to `<name>.bsky.social` when
|
|
38
|
+
using the default PDS, otherwise `createSession` returns `AuthenticationRequired`:
|
|
33
39
|
|
|
34
40
|
```bash
|
|
35
41
|
SVC="${BLUESKY_SERVICE:-https://bsky.social}"
|
|
42
|
+
ID="$BLUESKY_HANDLE"
|
|
43
|
+
# Bare username → full handle on the default bsky.social PDS. A dotted handle
|
|
44
|
+
# (custom domain), a DID (`did:...`) or an email are already valid — leave them.
|
|
45
|
+
case "$ID" in
|
|
46
|
+
*.* | *@* | did:*) : ;;
|
|
47
|
+
*) [ "$SVC" = "https://bsky.social" ] && ID="$ID.bsky.social" ;;
|
|
48
|
+
esac
|
|
36
49
|
SESSION=$(curl -sS -X POST "$SVC/xrpc/com.atproto.server.createSession" \
|
|
37
50
|
-H "Content-Type: application/json" \
|
|
38
|
-
-d "$(jq -n --arg id "$
|
|
51
|
+
-d "$(jq -n --arg id "$ID" --arg pw "$BLUESKY_APP_PASSWORD" \
|
|
39
52
|
'{identifier:$id, password:$pw}')")
|
|
40
53
|
echo "$SESSION" | jq '{did, handle, active}'
|
|
41
54
|
JWT=$(echo "$SESSION" | jq -r .accessJwt)
|
|
@@ -43,7 +56,9 @@ DID=$(echo "$SESSION" | jq -r .did)
|
|
|
43
56
|
```
|
|
44
57
|
|
|
45
58
|
If `JWT` / `DID` are empty or `null`, print the raw `$SESSION` (it contains the
|
|
46
|
-
error) and stop — do not continue to post.
|
|
59
|
+
error) and stop — do not continue to post. On `AuthenticationRequired`, tell the
|
|
60
|
+
user to reconnect the connector using their **full** handle (e.g.
|
|
61
|
+
`name.bsky.social`, not `name`) and a valid App Password.
|
|
47
62
|
|
|
48
63
|
## Post to Bluesky
|
|
49
64
|
|
|
@@ -64,8 +79,9 @@ curl -sS -X POST "$SVC/xrpc/com.atproto.repo.createRecord" \
|
|
|
64
79
|
```
|
|
65
80
|
|
|
66
81
|
The returned `uri` looks like `at://did:plc:xxxx/app.bsky.feed.post/<rkey>`. The
|
|
67
|
-
public web URL is `https://bsky.app/profile/$
|
|
68
|
-
`<rkey>` is the last path
|
|
82
|
+
public web URL is `https://bsky.app/profile/$ID/post/<rkey>` where `$ID` is the
|
|
83
|
+
normalized handle from Step 1 (or use the `did`) and `<rkey>` is the last path
|
|
84
|
+
segment of the `uri`.
|
|
69
85
|
|
|
70
86
|
### Clickable links, mentions and hashtags (facets)
|
|
71
87
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: nano-banana-image
|
|
3
|
-
description: Generate and edit AI images with NanoBanana (Gemini-based) via AceDataCloud API. Use when creating images from text prompts or editing existing images with text instructions. Supports nano-banana, nano-banana-2,
|
|
3
|
+
description: Generate and edit AI images with NanoBanana (Gemini-based) via AceDataCloud API. Use when creating images from text prompts or editing existing images with text instructions. Supports nano-banana, nano-banana-2, nano-banana-pro and their :official variants.
|
|
4
4
|
license: Apache-2.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: acedatacloud
|
|
@@ -31,6 +31,9 @@ curl -X POST https://api.acedata.cloud/nano-banana/images \
|
|
|
31
31
|
| `nano-banana` | Standard image generation (default) |
|
|
32
32
|
| `nano-banana-2` | Improved quality, second generation |
|
|
33
33
|
| `nano-banana-pro` | Highest quality, most detailed output |
|
|
34
|
+
| `nano-banana:official` | Official channel variant of `nano-banana` |
|
|
35
|
+
| `nano-banana-2:official` | Official channel variant of `nano-banana-2` |
|
|
36
|
+
| `nano-banana-pro:official` | Official channel variant of `nano-banana-pro` |
|
|
34
37
|
|
|
35
38
|
## Workflows
|
|
36
39
|
|
|
@@ -66,7 +69,7 @@ POST /nano-banana/images
|
|
|
66
69
|
| Parameter | Values | Description |
|
|
67
70
|
|-----------|--------|-------------|
|
|
68
71
|
| `action` | `"generate"`, `"edit"` | Operation mode |
|
|
69
|
-
| `model` | `"nano-banana"`, `"nano-banana-2"`, `"nano-banana-pro"` | Model to use |
|
|
72
|
+
| `model` | `"nano-banana"`, `"nano-banana-2"`, `"nano-banana-pro"`, `"nano-banana:official"`, `"nano-banana-2:official"`, `"nano-banana-pro:official"` | Model to use |
|
|
70
73
|
| `prompt` | string | Image description or editing instruction |
|
|
71
74
|
| `image_urls` | array of strings | Source image URLs (required for edit action) |
|
|
72
75
|
| `aspect_ratio` | `"1:1"`, `"3:2"`, `"2:3"`, `"16:9"`, `"9:16"`, `"4:3"`, `"3:4"` | Output aspect ratio |
|
|
@@ -78,6 +81,7 @@ POST /nano-banana/images
|
|
|
78
81
|
- Editing does **NOT** require a mask — just describe the change in natural language
|
|
79
82
|
- Editing uses the same `/nano-banana/images` endpoint with `action: "edit"` and `image_urls` array (not a separate `/edit` path)
|
|
80
83
|
- `nano-banana-2` is the second-generation model; `nano-banana-pro` offers the highest quality
|
|
84
|
+
- `:official` variants (e.g., `nano-banana:official`) route through the official channel
|
|
81
85
|
- Task polling uses `id` (not `task_id`) in the `/nano-banana/tasks` request body
|
|
82
86
|
- Aspect ratio uses colon notation (e.g., `"16:9"`) not pixel dimensions
|
|
83
87
|
- The Gemini-based model excels at understanding complex, conversational editing instructions
|