@acedatacloud/skills 2026.621.5 → 2026.621.7

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.5",
3
+ "version": "2026.621.7",
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",
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: cn-blog
3
- description: Read and publish on Chinese content platforms with the user's own login cookies (BYOC) — list their published articles with vote/comment stats, inspect one article, and publish a new article. Use when the user mentions 知乎 / Zhihu, "我的知乎文章", reading their article stats (点赞/评论), or publishing/发文 to Zhihu.
2
+ name: zhihu
3
+ description: Read and publish on Zhihu (知乎) with the user's own login cookies (BYOC) — list their published articles with vote/comment stats, inspect one article, and publish a new article. Use when the user mentions 知乎 / Zhihu, "我的知乎文章", reading their article stats (点赞/评论), or publishing/发文 to Zhihu.
4
4
  when_to_use: |
5
5
  Trigger for anything on the user's Zhihu (知乎) account driven by their own
6
6
  login cookie: show who they are, list their published articles with
@@ -15,7 +15,7 @@ metadata:
15
15
  version: "1.0"
16
16
  ---
17
17
 
18
- # cn-blog — Zhihu via your own cookies
18
+ # zhihuread & publish on Zhihu via your own cookies
19
19
 
20
20
  Drives the user's **real** Zhihu account through the same web APIs the site's
21
21
  own editor uses, authenticated by the login cookie they captured with the ACE
@@ -93,5 +93,6 @@ python3 $BLOG publish --title "标题" --content-file article.html --confirm
93
93
  acts on the user's own account with their own captured cookie; the user owns
94
94
  that risk. Never use it to scrape other people's content at scale.
95
95
  - **Never print `ZHIHU_COOKIES`** — it is full account access.
96
- - **Scope today**: Zhihu only. 掘金 / CSDN connectors exist in the vault and are
97
- planned next; this skill will grow a `--platform` switch for them.
96
+ - **Scope**: Zhihu only. Other Chinese platforms (掘金 / CSDN / …) ship as their
97
+ own per-platform skills (e.g. `csdn`, `juejin`), each with its own connector —
98
+ not a `--platform` switch here.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- cn-blog — read & publish on Chinese content platforms with the user's own
3
+ zhihu — read & publish on Zhihu (知乎) with the user's own
4
4
  login cookies (BYOC). Standard-library only (urllib), no third-party deps,
5
5
  so it runs in the bare sandbox without an image change.
6
6
 
@@ -319,7 +319,7 @@ COMMANDS = {
319
319
 
320
320
 
321
321
  def main() -> None:
322
- p = argparse.ArgumentParser(prog="blog.py", description="cn-blog cookie CLI")
322
+ p = argparse.ArgumentParser(prog="blog.py", description="zhihu cookie CLI")
323
323
  p.add_argument("--platform", default="zhihu", choices=["zhihu"],
324
324
  help="content platform (only zhihu is implemented today)")
325
325
  sub = p.add_subparsers(dest="command", required=True)
@@ -1,75 +0,0 @@
1
- ---
2
- name: cloudflare
3
- description: Manage Cloudflare zones, DNS records, cache purge and Workers via the API v4. Use when the user mentions Cloudflare, a DNS record on a Cloudflare-hosted domain, purging / clearing the CDN cache, a zone's settings, WAF / firewall rules, or listing Workers.
4
- when_to_use: |
5
- Trigger when the user wants to list Cloudflare zones, read or change
6
- DNS records, purge the cache, inspect Workers, or review firewall
7
- rules. The connector stores a scoped Cloudflare API token; confirm
8
- before any write (DNS create/update/delete, cache purge) and prefer
9
- the smallest-blast-radius action.
10
- connections: [cloudflare]
11
- allowed_tools: [Bash]
12
- license: Apache-2.0
13
- metadata:
14
- author: acedatacloud
15
- version: "1.0"
16
- ---
17
-
18
- Call the **Cloudflare API v4** with `curl + jq`. The user's **scoped** token is
19
- in `$CLOUDFLARE_API_TOKEN` (optionally `$CLOUDFLARE_ACCOUNT_ID` /
20
- `$CLOUDFLARE_ZONE_ID`); every call needs `Authorization: Bearer
21
- $CLOUDFLARE_API_TOKEN`. Base URL: `https://api.cloudflare.com/client/v4`.
22
-
23
- Every response has `{"success": bool, "errors": [...], "result": ...}`. On
24
- `success:false` show `.errors` verbatim. `403`/`9109` means the token lacks the
25
- permission for that resource → the user must re-mint the token with the right
26
- scope (zone DNS edit, cache purge, etc.).
27
-
28
- ```bash
29
- AUTH=(-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN")
30
- API="https://api.cloudflare.com/client/v4"
31
- # Zones the token can see
32
- curl -sS "${AUTH[@]}" "$API/zones" | jq '.result[] | {id, name, status, plan: .plan.name}'
33
- ```
34
-
35
- ## DNS records
36
-
37
- ```bash
38
- ZONE="${CLOUDFLARE_ZONE_ID:?set or pick from the zones list}"
39
- # List (filter with ?type=A&name=foo.example.com)
40
- curl -sS "${AUTH[@]}" "$API/zones/$ZONE/dns_records?per_page=100" \
41
- | jq '.result[] | {id, type, name, content, proxied, ttl}'
42
-
43
- # Create (confirm first)
44
- curl -sS -X POST "${AUTH[@]}" -H "Content-Type: application/json" \
45
- -d '{"type":"CNAME","name":"www","content":"example.com","proxied":true}' \
46
- "$API/zones/$ZONE/dns_records" | jq '.success, .result.id'
47
-
48
- # Update PATCH /dns_records/{id} ; delete DELETE /dns_records/{id}
49
- ```
50
-
51
- ## Purge cache (confirm first)
52
-
53
- ```bash
54
- # Targeted purge by URL (preferred); use {"purge_everything":true} only if asked
55
- curl -sS -X POST "${AUTH[@]}" -H "Content-Type: application/json" \
56
- -d '{"files":["https://example.com/path"]}' \
57
- "$API/zones/$ZONE/purge_cache" | jq '.success'
58
- ```
59
-
60
- ## Workers & firewall
61
-
62
- ```bash
63
- ACCT="${CLOUDFLARE_ACCOUNT_ID:?needed for account-scoped resources}"
64
- curl -sS "${AUTH[@]}" "$API/accounts/$ACCT/workers/scripts" | jq '.result[] | {id, modified_on}'
65
- # Firewall / WAF custom rules live under /zones/$ZONE/firewall/rules and rulesets.
66
- ```
67
-
68
- ## Gotchas
69
-
70
- - Insist on a **scoped API token**, never the legacy Global API Key (the connect
71
- form's help says so) — a Global Key can do anything on the account.
72
- - `proxied:true` = orange-cloud (CDN/WAF on); `false` = DNS-only. Changing it can
73
- break TLS/origin expectations — confirm intent.
74
- - Account-scoped calls (Workers, some analytics) need `$CLOUDFLARE_ACCOUNT_ID`;
75
- zone-scoped calls need a zone id (pick from `/zones` if env unset).
@@ -1,80 +0,0 @@
1
- ---
2
- name: sentry
3
- description: Monitor errors, issues, releases and projects in Sentry via the REST API v0. Use when the user mentions Sentry, error tracking, an unresolved issue, a stack trace / crash, error rate, a release, or wants to triage / resolve / assign issues across their Sentry projects.
4
- when_to_use: |
5
- Trigger when the user wants to list or search Sentry issues, read a
6
- crash's latest event + stack trace, list projects or releases, or
7
- resolve / assign an issue. The connector stores a Sentry auth token
8
- with the granted org scope — confirm before any write (resolve /
9
- assign / delete), and prefer read-only triage first.
10
- connections: [sentry]
11
- allowed_tools: [Bash]
12
- license: Apache-2.0
13
- metadata:
14
- author: acedatacloud
15
- version: "1.0"
16
- ---
17
-
18
- Call the **Sentry REST API v0** with `curl + jq`. The user's auth token is in
19
- `$SENTRY_AUTH_TOKEN` and their org slug in `$SENTRY_ORG_SLUG`; every call needs
20
- `Authorization: Bearer $SENTRY_AUTH_TOKEN`. Base URL: `https://sentry.io/api/0`
21
- (SaaS). For a self-hosted Sentry the user supplies `$SENTRY_BASE_URL` — use it
22
- instead when set.
23
-
24
- Errors come back as JSON with a `detail` field — show it verbatim. `401` means
25
- the token is invalid → the user must re-connect Sentry. `403` means the token
26
- lacks the scope for that action (e.g. write) → ask them to re-connect with a
27
- broader token.
28
-
29
- Always confirm the org + list projects first:
30
-
31
- ```bash
32
- BASE="${SENTRY_BASE_URL:-https://sentry.io/api/0}"
33
- curl -sS -H "Authorization: Bearer $SENTRY_AUTH_TOKEN" \
34
- "$BASE/organizations/$SENTRY_ORG_SLUG/projects/" \
35
- | jq '.[] | {slug, name, platform}'
36
- ```
37
-
38
- ## Search & read issues
39
-
40
- ```bash
41
- # Unresolved issues for a project, most frequent first.
42
- curl -sS -H "Authorization: Bearer $SENTRY_AUTH_TOKEN" \
43
- "$BASE/projects/$SENTRY_ORG_SLUG/PROJECT_SLUG/issues/?query=is:unresolved&sort=freq" \
44
- | jq '.[] | {id, shortId, title, count, userCount, lastSeen}'
45
-
46
- # A single issue + its latest event (stack trace, tags, breadcrumbs).
47
- curl -sS -H "Authorization: Bearer $SENTRY_AUTH_TOKEN" \
48
- "$BASE/issues/ISSUE_ID/" | jq '{shortId, title, status, count, firstSeen, lastSeen}'
49
- curl -sS -H "Authorization: Bearer $SENTRY_AUTH_TOKEN" \
50
- "$BASE/issues/ISSUE_ID/events/latest/" \
51
- | jq '{message, culprit, entries: [.entries[] | .type]}'
52
- ```
53
-
54
- `query=` uses Sentry's search syntax: `is:unresolved`, `is:assigned`,
55
- `environment:production`, `release:1.2.3`, free-text, etc.
56
-
57
- ## Releases
58
-
59
- ```bash
60
- curl -sS -H "Authorization: Bearer $SENTRY_AUTH_TOKEN" \
61
- "$BASE/organizations/$SENTRY_ORG_SLUG/releases/?per_page=20" \
62
- | jq '.[] | {version, dateCreated, newGroups, projects: [.projects[].slug]}'
63
- ```
64
-
65
- ## Triage (writes — confirm first)
66
-
67
- ```bash
68
- # Resolve (or set status: unresolved | ignored). Assign with assignedTo (username/email).
69
- curl -sS -X PUT -H "Authorization: Bearer $SENTRY_AUTH_TOKEN" \
70
- -H "Content-Type: application/json" -d '{"status":"resolved"}' \
71
- "$BASE/issues/ISSUE_ID/" | jq '{shortId, status}'
72
- ```
73
-
74
- ## Gotchas
75
-
76
- - **Pagination** is `Link` header cursor-based (`per_page` max 100). For "all
77
- issues" follow the `rel="next"; results="true"` cursor.
78
- - **Org/project slugs**, not numeric ids, in the issue-search URL; the issue
79
- detail/triage routes take the numeric/short issue id.
80
- - Don't dump tokens or PII from event payloads back to the user unprompted.