web-scraping-automation
github.com/aaaaqwq/claude-code-skillsVerdict: Generally safe
0 critical2 high3 medium
B
SCORE 75 / 100
$skillox install web-scraping-automationSoon
Sign in to followFollowing emails you when a re-scan drops the grade. Opt-out is per-creator on /account/billing.
Why grade B?
score · 75 / 100The current grade reflects 2 high-severity findings (any HIGH → B).
0 CRIT2 HIGH3 MED0 LOW
To reach a higher grade
- AReach Atarget score 95
Resolve all 2 HIGH + 1 of 3 MED (cap is 2).
Thresholds are documented at /docs/grading. Source-of-truth is the grade() function in @skillox/scanner.
Latest scan findings
Scan crawl-hn8nizu4c5tghhf7yv4q7047 · Thu, 28 May 2026 17:28:30 GMT · 1ms
highShell-injection vector: Python subprocess with f-string + shell=True candidateThe skill constructs a shell command by interpolating into a string passed to an exec-family function (`Python subprocess with f-string + shell=True candidate`). If the interpolated value comes from agent context or user input, this is direct command injection. Use parameterized APIs (`spawn` with an arg-array, `subprocess.run([...])` without `shell=True`).▾
Shell-injection vector: Python subprocess with f-string + shell=True candidate
The skill constructs a shell command by interpolating into a string passed to an exec-family function (`Python subprocess with f-string + shell=True candidate`). If the interpolated value comes from agent context or user input, this is direct command injection. Use parameterized APIs (`spawn` with an arg-array, `subprocess.run([...])` without `shell=True`).
42 # ⚠️ 强制清理残留进程
43 import subprocess
44 subprocess.run(['pkill', '-f', 'chrome'], capture_output=True)← Python subprocess with f-string + shell=True candidate — use a parameterized API instead
45
46# Selenium 示例
highShell-injection vector: Python subprocess with f-string + shell=True candidateThe skill constructs a shell command by interpolating into a string passed to an exec-family function (`Python subprocess with f-string + shell=True candidate`). If the interpolated value comes from agent context or user input, this is direct command injection. Use parameterized APIs (`spawn` with an arg-array, `subprocess.run([...])` without `shell=True`).▾
Shell-injection vector: Python subprocess with f-string + shell=True candidate
The skill constructs a shell command by interpolating into a string passed to an exec-family function (`Python subprocess with f-string + shell=True candidate`). If the interpolated value comes from agent context or user input, this is direct command injection. Use parameterized APIs (`spawn` with an arg-array, `subprocess.run([...])` without `shell=True`).
55 # ⚠️ 确保清理
56 import subprocess
57 subprocess.run(['pkill', '-f', 'chrome'], capture_output=True)← Python subprocess with f-string + shell=True candidate — use a parameterized API instead
58```
59
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
42 # ⚠️ 强制清理残留进程
43 import subprocess
44 subprocess.run(['pkill', '-f', 'chrome'], capture_output=True)← spawns a subprocess outside declared capabilities
45
46# Selenium 示例
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
55 # ⚠️ 确保清理
56 import subprocess
57 subprocess.run(['pkill', '-f', 'chrome'], capture_output=True)← spawns a subprocess outside declared capabilities
58```
59
medNo capability manifest declaredThe skill ships without a `manifest.yaml` or `capabilities` block in its frontmatter. Without a manifest, the runtime cannot enforce what this skill is permitted to do.rule: no-manifest▾
No capability manifest declared
The skill ships without a `manifest.yaml` or `capabilities` block in its frontmatter. Without a manifest, the runtime cannot enforce what this skill is permitted to do.
rule:
no-manifestskillox.io/c/web-scraping-automation