@acedatacloud/skills 2026.705.1 → 2026.705.3
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 +1 -1
- package/skills/acedatacloud/SKILL.md +4 -1
- package/skills/bilibili/SKILL.md +18 -12
- package/skills/bluesky/SKILL.md +4 -1
- package/skills/csdn/SKILL.md +13 -8
- package/skills/didi-ride/SKILL.md +5 -2
- package/skills/juejin/SKILL.md +13 -8
- package/skills/medium/SKILL.md +13 -8
- package/skills/personal-wechat/SKILL.md +5 -2
- package/skills/substack/SKILL.md +13 -8
- package/skills/telegram/SKILL.md +4 -1
- package/skills/tencentcloud-cls/SKILL.md +4 -1
- package/skills/tencentcloud-cls-alarm/SKILL.md +20 -17
- package/skills/tencentcloud-cos/SKILL.md +4 -1
- package/skills/tencentcloud-dns/SKILL.md +4 -1
- package/skills/tencentcloud-edgeone/SKILL.md +4 -1
- package/skills/tencentcloud-tke/SKILL.md +4 -1
- package/skills/weibo/SKILL.md +11 -6
- package/skills/x/SKILL.md +5 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acedatacloud/skills",
|
|
3
|
-
"version": "2026.705.
|
|
3
|
+
"version": "2026.705.3",
|
|
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",
|
|
@@ -62,7 +62,10 @@ The skill ships [`scripts/acedatacloud.py`](scripts/acedatacloud.py) — a self-
|
|
|
62
62
|
CLI (stdlib only) for the most common operations.
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
|
-
|
|
65
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
66
|
+
# script (re-run this at the top of every fresh-shell Bash block).
|
|
67
|
+
ADC="$SKILL_DIR/scripts/acedatacloud.py"; [ -f "$ADC" ] || ADC=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/acedatacloud.py' 2>/dev/null | head -1)
|
|
68
|
+
[ -f "$ADC" ] || { echo "acedatacloud script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
66
69
|
|
|
67
70
|
# Read
|
|
68
71
|
python3 $ADC balance # remaining credits per subscription
|
package/skills/bilibili/SKILL.md
CHANGED
|
@@ -34,11 +34,14 @@ The connector injects the cookie jar as an env var:
|
|
|
34
34
|
The skill ships [`scripts/bilibili.py`](scripts/bilibili.py) — self-contained, stdlib only.
|
|
35
35
|
|
|
36
36
|
```sh
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
python3 $BILI
|
|
37
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
38
|
+
# script, and re-run this at the top of every Bash block (fresh shell each time).
|
|
39
|
+
BILI="$SKILL_DIR/scripts/bilibili.py"; [ -f "$BILI" ] || BILI=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/bilibili.py' 2>/dev/null | head -1)
|
|
40
|
+
[ -f "$BILI" ] || { echo "bilibili script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
41
|
+
python3 "$BILI" whoami # who is logged in (mid, name)
|
|
42
|
+
python3 "$BILI" articles --limit 20 # my 专栏 articles + stats
|
|
43
|
+
python3 "$BILI" article <cvid> # one article's stats (cv id)
|
|
44
|
+
python3 "$BILI" drafts --limit 50 # list saved drafts (aid + title)
|
|
42
45
|
```
|
|
43
46
|
|
|
44
47
|
Stats come straight from Bilibili: `view` (阅读), `like` (点赞), `reply` (评论),
|
|
@@ -47,7 +50,8 @@ Stats come straight from Bilibili: `view` (阅读), `like` (点赞), `reply` (
|
|
|
47
50
|
## Verify the connection first
|
|
48
51
|
|
|
49
52
|
```sh
|
|
50
|
-
|
|
53
|
+
BILI="$SKILL_DIR/scripts/bilibili.py"; [ -f "$BILI" ] || BILI=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/bilibili.py' 2>/dev/null | head -1)
|
|
54
|
+
python3 "$BILI" whoami
|
|
51
55
|
# → {"mid": 91207595, "name": "...", "level": 4}
|
|
52
56
|
```
|
|
53
57
|
|
|
@@ -61,9 +65,10 @@ trailing `--confirm` it dry-runs. `--confirm` is honored **only as the last
|
|
|
61
65
|
argument**. Always show the dry-run, get an explicit "yes", then re-run.
|
|
62
66
|
|
|
63
67
|
```sh
|
|
64
|
-
|
|
65
|
-
python3 $BILI publish --title "标题" --content-file a.html
|
|
66
|
-
python3 $BILI publish --title "标题" --content-file a.html --confirm
|
|
68
|
+
BILI="$SKILL_DIR/scripts/bilibili.py"; [ -f "$BILI" ] || BILI=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/bilibili.py' 2>/dev/null | head -1)
|
|
69
|
+
python3 "$BILI" publish --title "标题" --content-file a.html # dry-run
|
|
70
|
+
python3 "$BILI" publish --title "标题" --content-file a.html --draft-only --confirm # save a draft
|
|
71
|
+
python3 "$BILI" publish --title "标题" --content-file a.html --confirm # save draft + submit (publish)
|
|
67
72
|
```
|
|
68
73
|
|
|
69
74
|
- `--draft-only` saves a draft (no submit) — safe; finish/publish in the editor.
|
|
@@ -77,9 +82,10 @@ Bilibili caps 专栏 drafts at **999**; once full, saving a new draft fails with
|
|
|
77
82
|
`code 37106 草稿数已达最大上限`. List drafts and delete the ones you don't need:
|
|
78
83
|
|
|
79
84
|
```sh
|
|
80
|
-
|
|
81
|
-
python3 $BILI
|
|
82
|
-
python3 $BILI delete-draft <aid> <aid2> ...
|
|
85
|
+
BILI="$SKILL_DIR/scripts/bilibili.py"; [ -f "$BILI" ] || BILI=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/bilibili.py' 2>/dev/null | head -1)
|
|
86
|
+
python3 "$BILI" drafts --limit 50 # list (aid + title)
|
|
87
|
+
python3 "$BILI" delete-draft <aid> <aid2> ... # dry-run (shows what would delete)
|
|
88
|
+
python3 "$BILI" delete-draft <aid> <aid2> ... --confirm # PERMANENTLY delete those drafts
|
|
83
89
|
```
|
|
84
90
|
|
|
85
91
|
- `delete-draft` is **GATED** (dry-run unless trailing `--confirm`) and deletion
|
package/skills/bluesky/SKILL.md
CHANGED
|
@@ -31,7 +31,10 @@ Three connector credentials are injected: `$BLUESKY_HANDLE`
|
|
|
31
31
|
them from the env — never echo them.
|
|
32
32
|
|
|
33
33
|
```sh
|
|
34
|
-
|
|
34
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
35
|
+
# script (re-run this at the top of every fresh-shell Bash block below).
|
|
36
|
+
BSKY="$SKILL_DIR/scripts/bluesky.py"; [ -f "$BSKY" ] || BSKY=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/bluesky.py' 2>/dev/null | head -1)
|
|
37
|
+
[ -f "$BSKY" ] || { echo "bluesky script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
35
38
|
python3 "$BSKY" whoami # verify the session → {did, handle, service}
|
|
36
39
|
```
|
|
37
40
|
|
package/skills/csdn/SKILL.md
CHANGED
|
@@ -36,10 +36,13 @@ The connector injects the cookie jar as an env var:
|
|
|
36
36
|
The skill ships [`scripts/csdn.py`](scripts/csdn.py) — self-contained, stdlib only.
|
|
37
37
|
|
|
38
38
|
```sh
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
40
|
+
# script, and re-run this at the top of every Bash block (fresh shell each time).
|
|
41
|
+
CSDN="$SKILL_DIR/scripts/csdn.py"; [ -f "$CSDN" ] || CSDN=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/csdn.py' 2>/dev/null | head -1)
|
|
42
|
+
[ -f "$CSDN" ] || { echo "csdn script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
43
|
+
python3 "$CSDN" whoami # who is logged in (+ total article count)
|
|
44
|
+
python3 "$CSDN" articles --limit 20 # my published articles + stats
|
|
45
|
+
python3 "$CSDN" article <article-id> # one article's stats
|
|
43
46
|
```
|
|
44
47
|
|
|
45
48
|
Stats come straight from CSDN: `view_count` (阅读), `digg_count` (点赞),
|
|
@@ -48,7 +51,8 @@ Stats come straight from CSDN: `view_count` (阅读), `digg_count` (点赞),
|
|
|
48
51
|
## Verify the connection first
|
|
49
52
|
|
|
50
53
|
```sh
|
|
51
|
-
|
|
54
|
+
CSDN="$SKILL_DIR/scripts/csdn.py"; [ -f "$CSDN" ] || CSDN=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/csdn.py' 2>/dev/null | head -1)
|
|
55
|
+
python3 "$CSDN" whoami
|
|
52
56
|
# → {"username": "...", "nickname": "...", "articles_total": 1597}
|
|
53
57
|
```
|
|
54
58
|
|
|
@@ -63,9 +67,10 @@ argument**. Always show the dry-run, get an explicit "yes", then re-run with
|
|
|
63
67
|
`--confirm` last.
|
|
64
68
|
|
|
65
69
|
```sh
|
|
66
|
-
|
|
67
|
-
python3 $CSDN publish --title "标题" --content-file a.md
|
|
68
|
-
python3 $CSDN publish --title "标题" --content-file a.md --
|
|
70
|
+
CSDN="$SKILL_DIR/scripts/csdn.py"; [ -f "$CSDN" ] || CSDN=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/csdn.py' 2>/dev/null | head -1)
|
|
71
|
+
python3 "$CSDN" publish --title "标题" --content-file a.md # dry-run
|
|
72
|
+
python3 "$CSDN" publish --title "标题" --content-file a.md --draft-only --confirm # private draft (status=2)
|
|
73
|
+
python3 "$CSDN" publish --title "标题" --content-file a.md --tags "AI,Python" --confirm # PUBLIC, goes live
|
|
69
74
|
```
|
|
70
75
|
|
|
71
76
|
- `--draft-only` saves a private draft (CSDN `status=2`) — safe, nothing public.
|
|
@@ -34,10 +34,13 @@ If `DIDI_MCP_KEY` is missing, tell the user to connect the DiDi connector at
|
|
|
34
34
|
## CLI
|
|
35
35
|
|
|
36
36
|
The skill ships a stdlib-only helper that speaks the MCP Streamable-HTTP
|
|
37
|
-
protocol to DiDi.
|
|
37
|
+
protocol to DiDi. **Run this resolver at the top of every Bash block below** —
|
|
38
|
+
each Bash call is a fresh shell, and `$SKILL_DIR` points at the LAST skill loaded
|
|
39
|
+
this turn, so anchor on our own script:
|
|
38
40
|
|
|
39
41
|
```bash
|
|
40
|
-
DIDI
|
|
42
|
+
DIDI="$SKILL_DIR/scripts/didi.py"; [ -f "$DIDI" ] || DIDI=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/didi.py' 2>/dev/null | head -1)
|
|
43
|
+
[ -f "$DIDI" ] || { echo "didi-ride script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
41
44
|
```
|
|
42
45
|
|
|
43
46
|
Two commands:
|
package/skills/juejin/SKILL.md
CHANGED
|
@@ -30,10 +30,13 @@ The connector injects the cookie jar as an env var:
|
|
|
30
30
|
The skill ships [`scripts/juejin.py`](scripts/juejin.py) — self-contained, stdlib only.
|
|
31
31
|
|
|
32
32
|
```sh
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
34
|
+
# script, and re-run this at the top of every Bash block (fresh shell each time).
|
|
35
|
+
JJ="$SKILL_DIR/scripts/juejin.py"; [ -f "$JJ" ] || JJ=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/juejin.py' 2>/dev/null | head -1)
|
|
36
|
+
[ -f "$JJ" ] || { echo "juejin script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
37
|
+
python3 "$JJ" whoami # who is logged in (+ totals)
|
|
38
|
+
python3 "$JJ" articles --limit 20 # my published articles + stats
|
|
39
|
+
python3 "$JJ" article <article-id> # one article's stats
|
|
37
40
|
```
|
|
38
41
|
|
|
39
42
|
Stats come straight from 掘金: `view_count` (阅读), `digg_count` (点赞),
|
|
@@ -42,7 +45,8 @@ Stats come straight from 掘金: `view_count` (阅读), `digg_count` (点赞),
|
|
|
42
45
|
## Verify the connection first
|
|
43
46
|
|
|
44
47
|
```sh
|
|
45
|
-
|
|
48
|
+
JJ="$SKILL_DIR/scripts/juejin.py"; [ -f "$JJ" ] || JJ=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/juejin.py' 2>/dev/null | head -1)
|
|
49
|
+
python3 "$JJ" whoami
|
|
46
50
|
# → {"user_id": "...", "name": "...", "post_article_count": 336}
|
|
47
51
|
```
|
|
48
52
|
|
|
@@ -56,9 +60,10 @@ trailing `--confirm` it dry-runs. `--confirm` is honored **only as the last
|
|
|
56
60
|
argument**. Always show the dry-run, get an explicit "yes", then re-run.
|
|
57
61
|
|
|
58
62
|
```sh
|
|
59
|
-
|
|
60
|
-
python3 $JJ publish --title "标题" --content-file a.md
|
|
61
|
-
python3 $JJ publish --title "标题" --content-file a.md
|
|
63
|
+
JJ="$SKILL_DIR/scripts/juejin.py"; [ -f "$JJ" ] || JJ=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/juejin.py' 2>/dev/null | head -1)
|
|
64
|
+
python3 "$JJ" publish --title "标题" --content-file a.md # dry-run
|
|
65
|
+
python3 "$JJ" publish --title "标题" --content-file a.md --draft-only --confirm # private draft
|
|
66
|
+
python3 "$JJ" publish --title "标题" --content-file a.md \
|
|
62
67
|
--category-id 6809637769959178254 --tag-ids 6809640407484334093 --confirm # PUBLIC
|
|
63
68
|
```
|
|
64
69
|
|
package/skills/medium/SKILL.md
CHANGED
|
@@ -34,16 +34,20 @@ The connector injects the cookie jar as an env var:
|
|
|
34
34
|
The skill ships [`scripts/medium.py`](scripts/medium.py) — self-contained, stdlib only.
|
|
35
35
|
|
|
36
36
|
```sh
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
38
|
+
# script, and re-run this at the top of every Bash block (fresh shell each time).
|
|
39
|
+
MED="$SKILL_DIR/scripts/medium.py"; [ -f "$MED" ] || MED=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/medium.py' 2>/dev/null | head -1)
|
|
40
|
+
[ -f "$MED" ] || { echo "medium script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
41
|
+
python3 "$MED" whoami # who is logged in
|
|
42
|
+
python3 "$MED" articles --limit 20 # my posts + clap/response stats
|
|
43
|
+
python3 "$MED" article <post-id> # one post's details
|
|
41
44
|
```
|
|
42
45
|
|
|
43
46
|
## Verify the connection first
|
|
44
47
|
|
|
45
48
|
```sh
|
|
46
|
-
|
|
49
|
+
MED="$SKILL_DIR/scripts/medium.py"; [ -f "$MED" ] || MED=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/medium.py' 2>/dev/null | head -1)
|
|
50
|
+
python3 "$MED" whoami
|
|
47
51
|
# → {"user_id": "...", "name": "...", "username": "..."}
|
|
48
52
|
```
|
|
49
53
|
|
|
@@ -62,9 +66,10 @@ Without a trailing `--confirm` it dry-runs. `--confirm` is honored **only as the
|
|
|
62
66
|
last argument**. Always show the dry-run, get an explicit "yes", then re-run.
|
|
63
67
|
|
|
64
68
|
```sh
|
|
65
|
-
|
|
66
|
-
python3 $MED publish --title "Title" --content-file a.md
|
|
67
|
-
python3 $MED publish --title "Title" --content-file a.md --confirm
|
|
69
|
+
MED="$SKILL_DIR/scripts/medium.py"; [ -f "$MED" ] || MED=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/medium.py' 2>/dev/null | head -1)
|
|
70
|
+
python3 "$MED" publish --title "Title" --content-file a.md # dry-run
|
|
71
|
+
python3 "$MED" publish --title "Title" --content-file a.md --draft-only --confirm # private draft
|
|
72
|
+
python3 "$MED" publish --title "Title" --content-file a.md --confirm # PUBLIC story
|
|
68
73
|
```
|
|
69
74
|
|
|
70
75
|
Publishing is Medium's multi-step editor flow (new-story → write deltas →
|
|
@@ -37,10 +37,13 @@ after the user explicitly approves the exact target and content.
|
|
|
37
37
|
|
|
38
38
|
## CLI
|
|
39
39
|
|
|
40
|
-
The skill ships a stdlib-only helper
|
|
40
|
+
The skill ships a stdlib-only helper. **Run this resolver at the top of every
|
|
41
|
+
Bash block below** — each Bash call is a fresh shell, and `$SKILL_DIR` points at
|
|
42
|
+
the LAST skill loaded this turn, so anchor on our own script:
|
|
41
43
|
|
|
42
44
|
```bash
|
|
43
|
-
WX
|
|
45
|
+
WX="$SKILL_DIR/scripts/personal_wechat.py"; [ -f "$WX" ] || WX=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/personal_wechat.py' 2>/dev/null | head -1)
|
|
46
|
+
[ -f "$WX" ] || { echo "personal-wechat script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
44
47
|
```
|
|
45
48
|
|
|
46
49
|
## Verify Connection First
|
package/skills/substack/SKILL.md
CHANGED
|
@@ -34,15 +34,19 @@ The connector injects the cookie jar as an env var:
|
|
|
34
34
|
The skill ships [`scripts/substack.py`](scripts/substack.py) — self-contained, stdlib only.
|
|
35
35
|
|
|
36
36
|
```sh
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
38
|
+
# script, and re-run this at the top of every Bash block (fresh shell each time).
|
|
39
|
+
SUB="$SKILL_DIR/scripts/substack.py"; [ -f "$SUB" ] || SUB=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/substack.py' 2>/dev/null | head -1)
|
|
40
|
+
[ -f "$SUB" ] || { echo "substack script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
41
|
+
python3 "$SUB" whoami # who is logged in + primary publication
|
|
42
|
+
python3 "$SUB" articles --limit 20 # my published posts + stats
|
|
40
43
|
```
|
|
41
44
|
|
|
42
45
|
## Verify the connection first
|
|
43
46
|
|
|
44
47
|
```sh
|
|
45
|
-
|
|
48
|
+
SUB="$SKILL_DIR/scripts/substack.py"; [ -f "$SUB" ] || SUB=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/substack.py' 2>/dev/null | head -1)
|
|
49
|
+
python3 "$SUB" whoami
|
|
46
50
|
# → {"user_id": ..., "name": "...", "handle": "...", "publication": "...", "publication_url": "https://<sub>.substack.com"}
|
|
47
51
|
```
|
|
48
52
|
|
|
@@ -61,17 +65,18 @@ Without a trailing `--confirm` it dry-runs. `--confirm` is honored **only as the
|
|
|
61
65
|
last argument**. Always show the dry-run, get an explicit "yes", then re-run.
|
|
62
66
|
|
|
63
67
|
```sh
|
|
68
|
+
SUB="$SKILL_DIR/scripts/substack.py"; [ -f "$SUB" ] || SUB=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/substack.py' 2>/dev/null | head -1)
|
|
64
69
|
# dry-run (shows the plan, writes nothing)
|
|
65
|
-
python3 $SUB publish --title "Title" --content-file post.md
|
|
70
|
+
python3 "$SUB" publish --title "Title" --content-file post.md
|
|
66
71
|
|
|
67
72
|
# private draft (visible only in the user's dashboard)
|
|
68
|
-
python3 $SUB publish --title "Title" --content-file post.md --draft-only --confirm
|
|
73
|
+
python3 "$SUB" publish --title "Title" --content-file post.md --draft-only --confirm
|
|
69
74
|
|
|
70
75
|
# go LIVE on the web (does NOT email subscribers)
|
|
71
|
-
python3 $SUB publish --title "Title" --content-file post.md --confirm
|
|
76
|
+
python3 "$SUB" publish --title "Title" --content-file post.md --confirm
|
|
72
77
|
|
|
73
78
|
# go LIVE and email subscribers (use only when the user explicitly asks)
|
|
74
|
-
python3 $SUB publish --title "Title" --content-file post.md --send-email --confirm
|
|
79
|
+
python3 "$SUB" publish --title "Title" --content-file post.md --send-email --confirm
|
|
75
80
|
```
|
|
76
81
|
|
|
77
82
|
- `--draft-only` stops at a draft — **default to this** unless the user asked to
|
package/skills/telegram/SKILL.md
CHANGED
|
@@ -34,7 +34,10 @@ The skill ships [`scripts/tg.py`](scripts/tg.py) — self-contained (the only th
|
|
|
34
34
|
to re-create per turn, so a multi-step flow (dry-run → confirm) can't lose the helper between calls:
|
|
35
35
|
|
|
36
36
|
```sh
|
|
37
|
-
|
|
37
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
38
|
+
# script (re-run this at the top of every fresh-shell Bash block below).
|
|
39
|
+
TG="$SKILL_DIR/scripts/tg.py"; [ -f "$TG" ] || TG=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/tg.py' 2>/dev/null | head -1)
|
|
40
|
+
[ -f "$TG" ] || { echo "telegram script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
38
41
|
python3 "$TG" whoami
|
|
39
42
|
```
|
|
40
43
|
|
|
@@ -26,7 +26,10 @@ Search and run CQL / SQL analytics over Tencent Cloud CLS log topics.
|
|
|
26
26
|
The skill ships [`scripts/cls.py`](scripts/cls.py) — a self-contained CLI for the most common operations.
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
|
|
29
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
30
|
+
# script (re-run this at the top of every fresh-shell Bash block).
|
|
31
|
+
CLS="$SKILL_DIR/scripts/cls.py"; [ -f "$CLS" ] || CLS=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/cls.py' 2>/dev/null | head -1)
|
|
32
|
+
[ -f "$CLS" ] || { echo "tencentcloud-cls script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
30
33
|
|
|
31
34
|
python3 $CLS topics # list topics
|
|
32
35
|
python3 $CLS search --topic <topic-id> --query 'level:ERROR' --time 1h
|
|
@@ -27,23 +27,26 @@ CRUD on CLS alarm policies, notice groups, mute shields, and the alarm execution
|
|
|
27
27
|
The skill ships [`scripts/cls_alarm.py`](scripts/cls_alarm.py) — wraps every alarm / notice / shield operation as a subcommand.
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
python3 $
|
|
36
|
-
python3 $
|
|
37
|
-
python3 $
|
|
38
|
-
python3 $
|
|
39
|
-
|
|
40
|
-
python3 $
|
|
41
|
-
python3 $
|
|
42
|
-
|
|
43
|
-
python3 $
|
|
44
|
-
python3 $
|
|
45
|
-
|
|
46
|
-
python3 $
|
|
30
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
31
|
+
# script (re-run this at the top of every fresh-shell Bash block).
|
|
32
|
+
CLSA="$SKILL_DIR/scripts/cls_alarm.py"; [ -f "$CLSA" ] || CLSA=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/cls_alarm.py' 2>/dev/null | head -1)
|
|
33
|
+
[ -f "$CLSA" ] || { echo "tencentcloud-cls-alarm script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
34
|
+
|
|
35
|
+
python3 "$CLSA" alarms # list policies
|
|
36
|
+
python3 "$CLSA" alarm <alarm-id> # full detail
|
|
37
|
+
python3 "$CLSA" alarm-disable <alarm-id> # quick mute (Status=false)
|
|
38
|
+
python3 "$CLSA" alarm-enable <alarm-id>
|
|
39
|
+
python3 "$CLSA" alarm-create --json /tmp/alarm.json --dry-run
|
|
40
|
+
python3 "$CLSA" alarm-modify <alarm-id> --condition '$1.cnt > 20'
|
|
41
|
+
python3 "$CLSA" alarm-delete <alarm-id> --yes # destructive
|
|
42
|
+
|
|
43
|
+
python3 "$CLSA" notices # notice groups
|
|
44
|
+
python3 "$CLSA" notice <notice-id>
|
|
45
|
+
|
|
46
|
+
python3 "$CLSA" shields # mute rules
|
|
47
|
+
python3 "$CLSA" shield-create --notice-id <notice-id> --start $(date +%s) --end $(date -v+2H +%s) --type 1 --reason "deploy"
|
|
48
|
+
|
|
49
|
+
python3 "$CLSA" alarm-log --time 6h # firing history
|
|
47
50
|
```
|
|
48
51
|
|
|
49
52
|
For the rare schema field the CLI doesn't surface, fall through to the raw SDK examples below.
|
|
@@ -24,7 +24,10 @@ Manage Tencent Cloud COS buckets and objects via the official `cos-python-sdk-v5
|
|
|
24
24
|
The skill ships [`scripts/cos.py`](scripts/cos.py) — a self-contained CLI that wraps every COS operation below. **Prefer this over hand-rolled SDK calls** when the user's request maps cleanly onto one of its subcommands; it's what the maintained code paths exercise.
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
|
|
27
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
28
|
+
# script (re-run this at the top of every fresh-shell Bash block).
|
|
29
|
+
COS="$SKILL_DIR/scripts/cos.py"; [ -f "$COS" ] || COS=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/cos.py' 2>/dev/null | head -1)
|
|
30
|
+
[ -f "$COS" ] || { echo "tencentcloud-cos script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
28
31
|
|
|
29
32
|
python3 $COS buckets # list all buckets
|
|
30
33
|
python3 $COS ls mydata-1250000000 --prefix images/ # list objects
|
|
@@ -26,7 +26,10 @@ Manage DNS records via the DNSPod API.
|
|
|
26
26
|
The skill ships [`scripts/dns.py`](scripts/dns.py) — wraps every common DNSPod v3 operation.
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
|
|
29
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
30
|
+
# script (re-run this at the top of every fresh-shell Bash block).
|
|
31
|
+
DNS="$SKILL_DIR/scripts/dns.py"; [ -f "$DNS" ] || DNS=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/dns.py' 2>/dev/null | head -1)
|
|
32
|
+
[ -f "$DNS" ] || { echo "tencentcloud-dns script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
30
33
|
|
|
31
34
|
python3 $DNS domains # list domains
|
|
32
35
|
python3 $DNS list example.com # records on one domain
|
|
@@ -25,7 +25,10 @@ Manage EdgeOne zones — purge cache, prefetch URLs, manage DNS records on the z
|
|
|
25
25
|
The skill ships [`scripts/edgeone.py`](scripts/edgeone.py) — wraps zone discovery, purge / prefetch, task tracking, EdgeOne DNS records, and WAF inspection.
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
|
|
28
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
29
|
+
# script (re-run this at the top of every fresh-shell Bash block).
|
|
30
|
+
EO="$SKILL_DIR/scripts/edgeone.py"; [ -f "$EO" ] || EO=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/edgeone.py' 2>/dev/null | head -1)
|
|
31
|
+
[ -f "$EO" ] || { echo "tencentcloud-edgeone script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
29
32
|
|
|
30
33
|
python3 $EO zones # list zones
|
|
31
34
|
python3 $EO zone zone-xxxxxxxx # one zone's details
|
|
@@ -25,7 +25,10 @@ Manage TKE clusters and the workloads inside them.
|
|
|
25
25
|
The skill ships [`scripts/tke.py`](scripts/tke.py) — wraps cluster discovery, kubeconfig retrieval, and the most common in-cluster operations.
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
|
|
28
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
29
|
+
# script (re-run this at the top of every fresh-shell Bash block).
|
|
30
|
+
TKE="$SKILL_DIR/scripts/tke.py"; [ -f "$TKE" ] || TKE=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/tke.py' 2>/dev/null | head -1)
|
|
31
|
+
[ -f "$TKE" ] || { echo "tencentcloud-tke script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
29
32
|
|
|
30
33
|
python3 $TKE clusters # list clusters
|
|
31
34
|
python3 $TKE cluster cls-xxxxxxxx # one cluster's details
|
package/skills/weibo/SKILL.md
CHANGED
|
@@ -37,9 +37,12 @@ The connector injects the cookie jar as an env var:
|
|
|
37
37
|
The skill ships [`scripts/weibo.py`](scripts/weibo.py) — self-contained, stdlib only.
|
|
38
38
|
|
|
39
39
|
```sh
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
41
|
+
# script, and re-run this at the top of every Bash block (fresh shell each time).
|
|
42
|
+
WB="$SKILL_DIR/scripts/weibo.py"; [ -f "$WB" ] || WB=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/weibo.py' 2>/dev/null | head -1)
|
|
43
|
+
[ -f "$WB" ] || { echo "weibo script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
44
|
+
python3 "$WB" whoami # who is logged in (+ counts)
|
|
45
|
+
python3 "$WB" posts --limit 20 # my recent 微博 + engagement
|
|
43
46
|
```
|
|
44
47
|
|
|
45
48
|
Engagement comes straight from 微博: `reposts_count` (转发), `comments_count`
|
|
@@ -48,7 +51,8 @@ Engagement comes straight from 微博: `reposts_count` (转发), `comments_count
|
|
|
48
51
|
## Verify the connection first
|
|
49
52
|
|
|
50
53
|
```sh
|
|
51
|
-
|
|
54
|
+
WB="$SKILL_DIR/scripts/weibo.py"; [ -f "$WB" ] || WB=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/weibo.py' 2>/dev/null | head -1)
|
|
55
|
+
python3 "$WB" whoami
|
|
52
56
|
# → {"uid": "...", "name": "...", "statuses_count": ...}
|
|
53
57
|
```
|
|
54
58
|
|
|
@@ -62,8 +66,9 @@ Without a trailing `--confirm` it dry-runs. `--confirm` is honored **only as the
|
|
|
62
66
|
last argument**. Always show the dry-run, get an explicit "yes", then re-run.
|
|
63
67
|
|
|
64
68
|
```sh
|
|
65
|
-
|
|
66
|
-
python3 $WB post --content "你好,这是一条微博"
|
|
69
|
+
WB="$SKILL_DIR/scripts/weibo.py"; [ -f "$WB" ] || WB=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/weibo.py' 2>/dev/null | head -1)
|
|
70
|
+
python3 "$WB" post --content "你好,这是一条微博" # dry-run
|
|
71
|
+
python3 "$WB" post --content "你好,这是一条微博" --confirm # PUBLIC 微博 (immediate)
|
|
67
72
|
```
|
|
68
73
|
|
|
69
74
|
- There is **no draft and no private mode** on 微博 — a confirmed post is
|
package/skills/x/SKILL.md
CHANGED
|
@@ -38,8 +38,11 @@ skill), then call the shipped CLI:
|
|
|
38
38
|
|
|
39
39
|
```sh
|
|
40
40
|
python3 -c "import twikit" 2>/dev/null || pip install --user --quiet twikit 2>/dev/null || true
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
|
|
42
|
+
# script (re-run this setup at the top of every fresh-shell Bash block below).
|
|
43
|
+
X="$SKILL_DIR/scripts/x.py"; [ -f "$X" ] || X=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/x.py' 2>/dev/null | head -1)
|
|
44
|
+
[ -f "$X" ] || { echo "x script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
|
|
45
|
+
python3 "$X" whoami # who is logged in
|
|
43
46
|
```
|
|
44
47
|
|
|
45
48
|
## Read commands (run directly)
|