Claude Code, Skill
Skills
Skills, a skill listed in the PlugVet directory.
Compatibility: Not stated.
Grade D
Two or more Medium findings, or a High. Only try it in a sandbox.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
INSTALL_LIFECYCLE_HOOK NETWORK_HOST_FROM_INPUT
Why this grade
- INSTALL_LIFECYCLE_HOOK Medium
A package install hook (preinstall, install, postinstall or prepare) runs a script.
package.json, line 57
postinstall - NETWORK_HOST_FROM_INPUT Medium
A file takes a URL or endpoint as input and has no fixed host list.
clawhub/api-guide/SKILL.md, line 77
curl -X POST https://api.acedata.cloud/serp/google \
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
If you think this grade is wrong, email [email protected] with the entry link and your evidence. We aim to acknowledge within two working days and decide within seven. If we confirm an error, we aim to correct it within 24 hours of confirming it. These are aims, not guarantees.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
scripts/build_clawhub_catalog.py, line 186
commit = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=REPO, text=True).strip()
scripts/build_clawhub_catalog.py, line 188
dirty = subprocess.check_output(["git", "status", "--porcelain", "--untracked-files=all", "--", *inputs], cwd=REPO, text=True).strip()
scripts/build_clawhub_catalog.py, line 205
result = subprocess.run(command, text=True, capture_output=True)
Show more
scripts/publish_clawhub.py, line 17
result = subprocess.run(args, cwd=cwd, text=True, capture_output=True)
skills/apple-notes/scripts/notes.py, line 226
proc = subprocess.run(
skills/onepage-pdf/scripts/onepage_pdf.py, line 112
subprocess.run(cmd, check=True, timeout=180,
skills/onepage-pdf/scripts/onepage_pdf.py, line 283
shutil.rmtree(workdir, ignore_errors=True)
skills/telegram/scripts/tg.py, line 72
os.remove(path)
skills/tencentcloud-tke/SKILL.md, line 133
return subprocess.run(
skills/tencentcloud-tke/scripts/tke.py, line 214
result = subprocess.run(cmd, capture_output=True, text=True, timeout=30)
Install and update
Concern
runs a script at install time.
INSTALL_LIFECYCLE_HOOK
package.json, line 57
postinstall
Network
Serious
accepts a host from input, with no fixed list in this file.
NETWORK_HOST_FROM_INPUT
clawhub/api-guide/SKILL.md, line 77
curl -X POST https://api.acedata.cloud/serp/google \
scripts/build_clawhub_catalog.py, line 158
tibility:.*$", "compatibility: Requires curl and an Ace service API key. OpenClaw nat
skills/_shared/async-tasks.md, line 13
curl -X POST https://api.acedata.cloud/<service>/<resource> \
Show more
skills/_shared/async-tasks.md, line 27
curl -X POST https://api.acedata.cloud/<service>/tasks \
skills/_shared/async-tasks.md, line 36
curl -X POST https://api.acedata.cloud/<service>/tasks \
skills/_shared/authentication.md, line 48
curl -X POST https://api.acedata.cloud/<endpoint> \
skills/acedatacloud/SKILL.md, line 55
curl -H "authorization: Bearer $ACEDATACLOUD_PLATFORM_TOKEN" \
skills/acedatacloud/SKILL.md, line 139
curl -H "authorization: Bearer $ACEDATACLOUD_PLATFORM_TOKEN" \
skills/acedatacloud/scripts/acedatacloud.py, line 57
with urllib.request.urlopen(req, timeout=args.timeout) as resp:
skills/ai-chat/SKILL.md, line 41
curl -X POST https://api.acedata.cloud/aichat2/conversations \
skills/ai-chat/SKILL.md, line 180
curl -X POST https://api.acedata.cloud/v1/messages \
skills/bilibili/scripts/bilibili.py, line 143
with urllib.request.urlopen(req, timeout=30) as resp:
skills/bilibili/scripts/bilibili.py, line 414
with urllib.request.urlopen(req, timeout=60) as r:
skills/blogger/SKILL.md, line 30
curl -sS -H "Authorization: Bearer $GOOGLE_BLOGGER_TOKEN" \
skills/blogger/SKILL.md, line 47
| curl -sS -X POST \
skills/cos-upload/SKILL.md, line 18
curl -s -X POST https://platform.acedata.cloud/api/v1/files/ \
skills/personal-wechat/scripts/personal_wechat.py, line 58
with urllib.request.urlopen(req, timeout=45) as response:
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
scripts/build_clawhub_catalog.py, line 70
也可以只在 `~/.openclaw/.env` 设置 `ACEDATACLOUD_API_TOKEN=你的服务密钥`。选择一种方式,保护文件权限(例如 `chmod 600`),重启 Gateway 并开始新会话。
scripts/build_clawhub_catalog.py, line 126
_TOKEN=your_service_key` in `~/.openclaw/.env`. Choose one method, protect file permi
skills/_shared/tencentcloud.md, line 34
set -a; source .env; set +a
Show more
skills/_shared/wecom.md, line 59
set -a; source .env; set +a
skills/acedatacloud/scripts/acedatacloud.py, line 47
token = args.token or os.environ.get("ACEDATACLOUD_PLATFORM_TOKEN", "")
skills/cnblogs/scripts/cnblogs.py, line 48
token = os.environ.get("CNBLOGS_TOKEN", "").strip()
skills/didi-ride/scripts/didi.py, line 34
MCP_KEY = os.environ.get("DIDI_MCP_KEY", "").strip()
skills/discord/scripts/discord_user.py, line 54
tok = os.environ.get("DISCORD_USER_TOKEN")
skills/discordbot/scripts/discordbot.py, line 61
token = os.environ.get("DISCORDBOT_TOKEN", "").strip()
skills/ghost/scripts/ghost.py, line 55
key = os.environ.get("GHOST_ADMIN_API_KEY", "").strip()
skills/kuaishou/scripts/kuaishou.py, line 58
token = os.environ.get("KUAISHOU_TOKEN", "").strip()
skills/linkedin-company-page/scripts/linkedin_company_page.py, line 70
token = os.environ.get("LINKEDIN_COMPANY_PAGE_TOKEN", "")
README.md, line 36
Follow the selected service's guide: **Ace registration/sign-in → Applications / General application → check service access, balance and current price → copy or create a dedicated
README.md, line 72
Put this line in `~/.openclaw/.env` on the machine running the OpenClaw Gateway, replacing the placeholder with your key:
README.md, line 78
OpenClaw [loads this global `.env` file](https://docs.openclaw.ai/help/faq/env-vars#how-does-openclaw-load-environment-variables) even when its Gateway runs as a service. Restart t
claude-plugins/gpt-image-by-ace-data-cloud/README.md, line 34
Enable the plugin. In `/plugin` → **Installed** → **gpt-image-by-ace-data-cloud** → **Configure options**, paste the raw token into **Ace Data Cloud API Token**. Current Claude plu
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit c3d1703f0bc9. can delete files. runs a script at install time. accepts a host from input, with no fixed list in this file. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: c3d1703f0bc9a76c9cd9a1a8efc3a0a63b2edd36
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.