buy-domain-helper
Skill has multiple undeclared shell execution patterns, supply-chain risk from npx -y arbitrary package execution, and potential command injection from unsanitized user inputs passed to wrangler CLI.
site.js performs execSync('which cloudflared'), execSync('brew install cloudflared'), execSync(wrangler ...), spawn('cloudflared'...), spawn('npx'...) — all shell execution — but SKILL.md declares env:[] and only lists bins:[node,cloudflared,wrangler] with no shell or network declarations.
site.js:70-71, 90, 102 Why this conclusion was reached
2/4 dimensions flagged4 undeclared or violating capabilities were inferred.
8 lower-risk artifacts were extracted and still need context.
The report includes 0 attack-chain steps and 2 severe findings.
1 dependency or supply-chain issues need attention.
What drove the risk score up
site.js uses execSync extensively but SKILL.md env:[] and bins:[node,cloudflared,wrangler] declare no shell execution capability. wrangler and brew are not declared as allowed tools.
site.js line 90: spawn('npx', ['-y', 'serve', target, ...]) downloads and executes an arbitrary unpinned npm package at runtime. Not mentioned in SKILL.md or README.
site.js reads CF_API_TOKEN, CF_ACCOUNT_ID, CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID from process.env, but SKILL.md declares env:[]. Also reads full process.env inherited to child processes.
skill relies on npx serve being available from npm registry with no version pinning or lockfile.
projectName and dir are interpolated into execSync shell strings without sanitization (lines 102, 103). Malformed input could alter wrangler behavior.
Most important evidence
Undeclared shell execution via execSync and spawn
site.js performs execSync('which cloudflared'), execSync('brew install cloudflared'), execSync(wrangler ...), spawn('cloudflared'...), spawn('npx'...) — all shell execution — but SKILL.md declares env:[] and only lists bins:[node,cloudflared,wrangler] with no shell or network declarations.
site.js:70-71, 90, 102 npx -y serve downloads and executes arbitrary unpinned npm package at runtime
site.js line 90 executes 'npx -y serve' to serve static files before tunneling. This downloads and runs the latest 'serve' package from npm without version pinning, creating a supply-chain attack vector. The serve package is not in package.json dependencies.
site.js:90 NETA_TOKEN environment variable declared in package.json but absent from SKILL.md
package.json clawhub.env section declares a required NETA_TOKEN env var for 'Neta AI API token', but SKILL.md declares env:[] (empty array). This undeclared environment dependency is a doc-to-code mismatch.
package.json:7 Command injection risk: unsanitized user inputs in shell commands
execSync on line 102-103 interpolates projectName and dir (from user-provided CLI args) directly into a shell command string passed to wrangler. While wrangler likely handles this safely, passing arbitrary strings to shell without validation is risky.
site.js:102 Full process.env inherited by child processes
site.js line 104 passes the entire process.env to wrangler via env:{...process.env, CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID}. This exposes all environment variables (including potentially sensitive ones) to the child process.
site.js:104 Declared capability vs actual capability
site.js:70 execSync('which cloudflared'); site.js:71 execSync('brew install cloudflared'); site.js:102 execSync(wrangler command) site.js:26 fetches api.cloudflare.com; site.js:90 spawns npx which reaches npm registry site.js:29-30 reads CF_API_TOKEN, CF_ACCOUNT_ID; site.js:104 passes full process.env to child process site.js:90 npx serve writes to disk in /tmp; wrangler deploy writes build artifacts Suspicious artifacts and egress
https://abc.trycloudflare.com README.md:41
https://*.trycloudflare.com README.md:65
https://dash.cloudflare.com/profile/api-tokens README.md:81
https://abc123.my-site.pages.dev README.md:88
https://dash.cloudflare.com/ README.md:110
https://mysite.com README.md:149
https://www.neta.art/open/ package.json:9
https://api.cloudflare.com/client/v4 site.js:26
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| serve | unpinned | npm (via npx -y) | No | Not listed in package.json; downloaded at runtime via npx -y without version pin — supply-chain risk |
| cloudflared | unpinned | Homebrew | No | Installed via brew install if missing, not declared in package.json |
| wrangler | unpinned | npm/global | No | Required binary, not declared in package.json |
File composition
site.js README.md package.json