@acedatacloud/skills 2026.505.0 → 2026.606.0

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/AGENTS.md CHANGED
@@ -27,7 +27,7 @@ Skills are located in the `skills/` directory (also mirrored to `.agents/skills/
27
27
  - **wan-video** — Generate videos with Alibaba Wan
28
28
 
29
29
  ### AI Chat & Tools
30
- - **ai-chat** — Unified LLM gateway — GPT, Claude, Gemini, DeepSeek, Grok (50+ models)
30
+ - **ai-chat** — Unified LLM gateway — GPT, Claude, Gemini, Kimi, Grok (50+ models)
31
31
  - **google-search** — Search the web, images, news, maps, places, and videos via Google
32
32
  - **face-transform** — Face analysis, beautification, age/gender transform, swap, cartoon
33
33
  - **short-url** — Create and manage short URLs
package/README.md CHANGED
@@ -46,7 +46,7 @@ Compatible with **30+ AI coding agents** via the [agentskills.io](https://agents
46
46
 
47
47
  | Skill | Description |
48
48
  |-------|-------------|
49
- | [ai-chat](skills/ai-chat/) | Unified LLM gateway — GPT, Claude, Gemini, DeepSeek, Grok (50+ models) |
49
+ | [ai-chat](skills/ai-chat/) | Unified LLM gateway — GPT, Claude, Gemini, Kimi, Grok (50+ models) |
50
50
  | [google-search](skills/google-search/) | Search the web, images, news, maps, places, and videos via Google |
51
51
  | [face-transform](skills/face-transform/) | Face analysis, beautification, age/gender transform, swap, cartoon |
52
52
  | [short-url](skills/short-url/) | Create and manage short URLs |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acedatacloud/skills",
3
- "version": "2026.505.0",
3
+ "version": "2026.606.0",
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",
@@ -111,7 +111,7 @@ Error response format:
111
111
 
112
112
  | Category | Services | Base Path |
113
113
  |----------|----------|-----------|
114
- | **AI Chat** | GPT, Claude, Gemini, DeepSeek, Grok | `/v1/chat/completions` |
114
+ | **AI Chat** | GPT, Claude, Gemini, Kimi, Grok | `/v1/chat/completions` |
115
115
  | **Image Gen** | Midjourney, Flux, Seedream, NanoBanana | `/midjourney/*`, `/flux/*`, etc. |
116
116
  | **Video Gen** | Luma, Sora, Veo, Kling, Hailuo, Seedance, Wan | `/luma/*`, `/sora/*`, etc. |
117
117
  | **Music Gen** | Suno, Producer, Fish Audio | `/suno/*`, `/producer/*`, `/fish/*` |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ai-chat
3
- description: Access 50+ LLM models through a unified OpenAI-compatible API via AceDataCloud. Use when you need chat completions from GPT, Claude, Gemini, DeepSeek, Grok, or other models through a single endpoint. Supports streaming, function calling, and vision.
3
+ description: Access 50+ LLM models through a unified OpenAI-compatible API via AceDataCloud. Use when you need chat completions from GPT, Claude, Gemini, Kimi, Grok, or other models through a single endpoint. Supports streaming, function calling, and vision.
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: acedatacloud
@@ -62,6 +62,7 @@ print(response.choices[0].message.content)
62
62
 
63
63
  | Model | Type | Best For |
64
64
  |-------|------|----------|
65
+ | `claude-opus-4-8` | Latest Opus | Highest capability |
65
66
  | `claude-opus-4-6` | Latest Opus | Highest capability |
66
67
  | `claude-sonnet-4-6` | Latest Sonnet | Balanced quality/speed |
67
68
  | `claude-opus-4-5-20251101` | Opus 4.5 | Premium tasks |
@@ -78,15 +79,6 @@ print(response.choices[0].message.content)
78
79
  | `gemini-1.5-pro` | Long context, complex tasks |
79
80
  | `gemini-1.5-flash` | Fast, efficient |
80
81
 
81
- ### DeepSeek
82
-
83
- | Model | Best For |
84
- |-------|----------|
85
- | `deepseek-r1` | Deep reasoning |
86
- | `deepseek-r1-0528` | Latest reasoning |
87
- | `deepseek-v3` | General-purpose |
88
- | `deepseek-v3-250324` | Latest general |
89
-
90
82
  ### xAI Grok
91
83
 
92
84
  | Model | Best For |
@@ -192,10 +184,10 @@ POST /v1/chat/completions
192
184
 
193
185
  ## Stateful Conversations Endpoint
194
186
 
195
- For stateful, session-based chat (no need to send the full history each time), use the `/aichat/conversations` endpoint:
187
+ For stateful, session-based chat (no need to send the full history each time), use `POST /aichat2/conversations` (recommended). `POST /aichat/conversations` remains available for legacy compatibility.
196
188
 
197
189
  ```bash
198
- curl -X POST https://api.acedata.cloud/aichat/conversations \
190
+ curl -X POST https://api.acedata.cloud/aichat2/conversations \
199
191
  -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
200
192
  -H "Content-Type: application/json" \
201
193
  -d '{"model": "gpt-4.1", "question": "What is quantum computing?", "stateful": true}'
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: flux-image
3
- description: Generate and edit images with Flux (Black Forest Labs) via AceDataCloud API. Use when creating images from text prompts, editing existing images with text instructions, or when high-quality image generation is needed. Supports multiple Flux models including dev, pro, ultra, and kontext for editing.
3
+ description: Generate and edit images with Flux (Black Forest Labs) via AceDataCloud API. Use when creating images from text prompts, editing existing images with text instructions, or when high-quality image generation is needed. Supports multiple Flux models including dev, pro, Flux 2 variants, and kontext for editing.
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: acedatacloud
@@ -23,7 +23,7 @@ curl -X POST https://api.acedata.cloud/flux/images \
23
23
  -d '{"prompt": "a cat wearing a space helmet, photorealistic", "model": "flux-dev", "callback_url": "https://api.acedata.cloud/health"}'
24
24
  ```
25
25
 
26
- > **Async:** See [async task polling](../_shared/async-tasks.md). Poll via `POST /flux/tasks` with `{"task_id": "..."}`.
26
+ > **Async:** See [async task polling](../_shared/async-tasks.md). Poll via `POST /flux/tasks` with `{"id": "..."}`.
27
27
 
28
28
  ## Models
29
29
 
@@ -31,8 +31,9 @@ curl -X POST https://api.acedata.cloud/flux/images \
31
31
  |-------|---------|-------|-------|----------|
32
32
  | `flux-dev` | Good | Fast | 256–1440px | Quick generation (default) |
33
33
  | `flux-pro` | High | Medium | 256–1440px | Production work |
34
- | `flux-pro-1.1` | Higher | Medium | 256–1440px | Better prompt following |
35
- | `flux-pro-1.1-ultra` | Highest | Slow | Aspect ratios | Maximum quality |
34
+ | `flux-2-flex` | High | Fast | 256–1440px | Faster high-quality generation |
35
+ | `flux-2-pro` | Higher | Medium | 256–1440px | Better prompt following |
36
+ | `flux-2-max` | Highest | Slow | 256–1440px | Maximum quality generation |
36
37
  | `flux-kontext-pro` | High | Medium | Aspect ratios | Image editing |
37
38
  | `flux-kontext-max` | Highest | Slow | Aspect ratios | Complex editing |
38
39
 
@@ -43,7 +44,7 @@ POST /flux/images
43
44
  {
44
45
  "prompt": "a minimalist logo of a mountain",
45
46
  "action": "generate",
46
- "model": "flux-pro-1.1",
47
+ "model": "flux-2-pro",
47
48
  "size": "1024x1024",
48
49
  "count": 1
49
50
  }
@@ -51,10 +52,10 @@ POST /flux/images
51
52
 
52
53
  ### Size Options
53
54
 
54
- **For dev/pro/pro-1.1** (pixel dimensions):
55
+ **For dev/pro/flux-2** (pixel dimensions):
55
56
  - `"1024x1024"`, `"1344x768"`, `"768x1344"`, `"1024x576"`, `"576x1024"`
56
57
 
57
- **For ultra/kontext** (aspect ratios):
58
+ **For kontext** (aspect ratios):
58
59
  - `"1:1"`, `"16:9"`, `"9:16"`, `"4:3"`, `"3:4"`, `"3:2"`, `"2:3"`, `"21:9"`, `"9:21"`
59
60
 
60
61
  ## Edit Images
@@ -73,10 +74,10 @@ POST /flux/images
73
74
 
74
75
  ## Gotchas
75
76
 
76
- - Use pixel dimensions (e.g., `"1024x1024"`) with dev/pro models, aspect ratios (e.g., `"16:9"`) with ultra/kontext models
77
+ - Use pixel dimensions (e.g., `"1024x1024"`) with dev/pro/flux-2 models, aspect ratios (e.g., `"16:9"`) with kontext models
77
78
  - Editing requires kontext models (`flux-kontext-pro` or `flux-kontext-max`) — other models only support generation
78
79
  - `count` parameter generates multiple images in one request (increases cost proportionally)
79
- - Ultra model produces highest quality but is slowest — use dev for iteration, ultra for final output
80
- - All generation is async — always set `"callback_url"` to get a `task_id` immediately, then poll `/flux/tasks`
80
+ - `flux-2-max` produces highest quality but is slowest — use dev/flex for iteration and max for final output
81
+ - All generation is async — always set `"callback_url"` to get a task id immediately, then poll `/flux/tasks` using `{"id":"<task_id>"}` or `{"ids":[...],"action":"retrieve_batch"}`
81
82
 
82
83
  > **MCP:** `pip install mcp-flux-pro` | Hosted: `https://flux.mcp.acedata.cloud/mcp` | See [all MCP servers](../_shared/mcp-servers.md)
@@ -132,9 +132,17 @@ curl -sS -H "Authorization: Bearer $GOOGLE_GMAIL_TOKEN" \
132
132
  --get "https://gmail.googleapis.com/gmail/v1/users/me/messages" \
133
133
  --data-urlencode 'q=is:unread in:inbox newer_than:7d' \
134
134
  --data-urlencode 'maxResults=20' \
135
- | jq '.messages[]'
135
+ | jq '.messages // [] | .[]'
136
136
  ```
137
137
 
138
+ **Always default `.messages` to `[]`** — Gmail's `messages.list` omits the
139
+ field entirely when there are zero matches (the response is just
140
+ `{"resultSizeEstimate": 0}`), so a bare `.messages[]` will crash jq
141
+ with `Cannot iterate over null (null)` and exit 5. Same applies to
142
+ `.threads`, `.labels`, `.drafts` on their list endpoints. If the result
143
+ is empty, tell the user plainly (e.g. "No unread mail in the last 7
144
+ days") instead of retrying.
145
+
138
146
  The `messages.list` endpoint returns only `{id, threadId}` — you have
139
147
  to fan out to `messages.get` for headers / body. Cheap pattern: list
140
148
  ids → get with `format=metadata&metadataHeaders=From,Subject,Date` for
@@ -147,8 +155,10 @@ IDS=$(curl -sS -H "Authorization: Bearer $GOOGLE_GMAIL_TOKEN" \
147
155
  --get "https://gmail.googleapis.com/gmail/v1/users/me/messages" \
148
156
  --data-urlencode 'q=is:unread in:inbox' \
149
157
  --data-urlencode 'maxResults=10' \
150
- | jq -r '.messages[].id')
158
+ | jq -r '.messages // [] | .[].id')
151
159
 
160
+ # If $IDS is empty the for-loop below runs zero times — tell the user
161
+ # "no unread mail" rather than echoing an empty result.
152
162
  for ID in $IDS; do
153
163
  curl -sS -H "Authorization: Bearer $GOOGLE_GMAIL_TOKEN" \
154
164
  --get "https://gmail.googleapis.com/gmail/v1/users/me/messages/$ID" \
@@ -195,7 +205,7 @@ curl -sS -H "Authorization: Bearer $GOOGLE_GMAIL_TOKEN" \
195
205
  --data-urlencode 'metadataHeaders=From' \
196
206
  --data-urlencode 'metadataHeaders=Subject' \
197
207
  --data-urlencode 'metadataHeaders=Date' \
198
- | jq '{id, historyId, messages: [.messages[] | {id, snippet, from: (.payload.headers | from_entries.From), date: (.payload.headers | from_entries.Date)}]}'
208
+ | jq '{id, historyId, messages: [(.messages // [])[] | {id, snippet, from: (.payload.headers | from_entries.From), date: (.payload.headers | from_entries.Date)}]}'
199
209
  ```
200
210
 
201
211
  ### Search by Gmail query
@@ -23,7 +23,7 @@ curl -X POST https://api.acedata.cloud/suno/audios \
23
23
  -d '{"prompt": "a happy pop song about coding", "model": "chirp-v5-5", "callback_url": "https://api.acedata.cloud/health"}'
24
24
  ```
25
25
 
26
- > **Async:** All generation is async. See [async task polling](../_shared/async-tasks.md). Poll via `POST /suno/tasks` with `{"task_id": "..."}` every 3-5 seconds.
26
+ > **Async:** All generation is async. See [async task polling](../_shared/async-tasks.md). Poll via `POST /suno/tasks` with `{"id": "<task_id>"}` every 3-5 seconds.
27
27
 
28
28
  ## Available Models
29
29
 
@@ -103,7 +103,7 @@ For best results follow this multi-step workflow:
103
103
  1. **Generate lyrics** — `POST /suno/lyrics` with a topic/prompt
104
104
  2. **Optimize style** — `POST /suno/style` to refine style description
105
105
  3. **Generate music** — `POST /suno/audios` with custom action, lyrics + style
106
- 4. **Poll task** — `POST /suno/tasks` with task_id until status is complete
106
+ 4. **Poll task** — `POST /suno/tasks` with `id` (or `ids` for batch) until status is complete
107
107
  5. **Optional: Extend** — Use extend action to add more sections
108
108
  6. **Optional: Concat** — Use concat action to merge extended segments
109
109
  7. **Optional: Convert** — Get WAV (`/suno/wav`), MIDI (`/suno/midi`), or MP4 (`/suno/mp4`)
@@ -149,7 +149,7 @@ For best results follow this multi-step workflow:
149
149
 
150
150
  | Parameter | Type | Description |
151
151
  |-----------|------|-------------|
152
- | `lyric_prompt` | string | Prompt for auto-generating lyrics (used when `custom: true` without explicit `lyric`) |
152
+ | `lyric_prompt` | object | Structured prompt payload for auto-generating lyrics (used when `custom: true` without explicit `lyric`) |
153
153
  | `style_negative` | string | Style tags to avoid (e.g., `"heavy metal, distortion"`) |
154
154
  | `style_influence` | number | Strength of style influence (advanced custom mode, v5+ only) |
155
155
  | `audio_weight` | number | Weight for audio reference when covering (advanced, v5+ only) |
@@ -174,7 +174,7 @@ Ending lyrics
174
174
 
175
175
  ## Gotchas
176
176
 
177
- - All generation is **async** — always set `"callback_url"` to get a `task_id` immediately, then poll `/suno/tasks`
177
+ - All generation is **async** — always set `"callback_url"` to get a task id immediately, then poll `/suno/tasks` using `{"id":"<task_id>"}` or `{"ids":[...],"action":"retrieve_batch"}`
178
178
  - **CRITICAL:** Check the `state` field — only `state: "complete"` with `success: true` means done. During `pending`, the API may return intermediate `audio_url` values (streaming previews). Do NOT stop polling just because `audio_url` is non-empty
179
179
  - Lyrics max ~3000 characters. For longer songs, use the **extend** workflow
180
180
  - Style tags are descriptive phrases, not enum values (e.g., "Synthwave, Electronic, Dreamy")