tweet-monitor-pro
The skill is a non-functional commercial tweet scraping tool whose primary capability — all fetch operations — delegates to a non-existent external Python script via undeclared shell execution, making it operationally broken but not actively malicious.
为什么得出这个结论
1/4 个维度触发发现 3 项声明之外的能力或越权行为。
提取到 2 个一般风险产物,需要结合上下文判断。
没有形成明确的恶意路径。
没有完整依赖信息,供应链判断需要保留弹性。
风险分是怎么被拉高的
index.js uses execSync to invoke a Python script, but SKILL.md never mentions subprocess or shell usage
All fetch functions call /root/.openclaw/workspace/skills/x-tweet-fetcher/scripts/fetch_tweet.py which is not bundled and does not exist
SKILL.md claims 'zero-dependency basics' and describes HTTP fetching, but code delegates to external Python subprocess
最关键的证据
Undeclared shell execution via execSync
SKILL.md describes the skill as using 'FxTwitter public endpoint' with zero dependencies, but index.js actually executes a Python script via child_process.execSync. This shell execution is never declared in the documentation.
index.js:98 Hardcoded reference to non-existent external script
All three main fetch functions (fetchTweet, fetchTimeline, monitorUser) call execSync with a hardcoded absolute path /root/.openclaw/workspace/skills/x-tweet-fetcher/scripts/fetch_tweet.py. This script is not bundled with the skill, does not exist in the file tree, and references a completely different skill directory ('x-tweet-fetcher'). All fetch operations will fail at runtime.
index.js:97 False claim of 'zero-dependency'
SKILL.md advertises 'Zero-dependency basics: Fetch single tweets without Camofox', but the implementation depends on an external Python script and a Camofox browser plugin for advanced features. The 'zero-dependency' claim is misleading.
SKILL.md:5 Undeclared environment variable read
index.js reads process.env.QUOTA_DB to determine the quota database path. While the default is a relative path (quotas.json), any operator-configured QUOTA_DB environment variable is not declared in documentation.
index.js:15 声明能力 vs 实际能力
index.js:98 — execSync(args.join(' ')) index.js:32 — fs.readFileSync(QUOTA_DB); index.js:37 — fs.writeFileSync(QUOTA_DB) Indirect — fetch delegated to external Python script (unverified) index.js:15 — process.env.QUOTA_DB 可疑产物与外联
https://x.com/user/status/123456 README.md:49
https://skillpay.me README.md:92
依赖与供应链
没有结构化依赖告警。
文件构成
index.js SKILL.md README.md