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.
Why this conclusion was reached
1/4 dimensions flagged3 undeclared or violating capabilities were inferred.
2 lower-risk artifacts were extracted and still need context.
There is no explicit malicious chain in the report.
Dependency information is incomplete, so supply-chain confidence stays limited.
What drove the risk score up
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
Most important evidence
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 Declared capability vs actual capability
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 Suspicious artifacts and egress
https://x.com/user/status/123456 README.md:49
https://skillpay.me README.md:92
Dependencies and supply chain
There are no structured dependency warnings.
File composition
index.js SKILL.md README.md