@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.
|
|
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:
|
|
3
|
-
description: Read and publish on
|
|
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
|
-
#
|
|
18
|
+
# zhihu — read & 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
|
|
97
|
-
|
|
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
|
-
|
|
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="
|
|
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).
|
package/skills/sentry/SKILL.md
DELETED
|
@@ -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.
|