← All skills
detecting-command-injection-patterns
97 / 100 · Low risk
Fine to try. Some of what it can do is expected: a coding skill usually runs build and test commands.
By jeremylongshore/tons-of-skills-marketplace (GitHub) · coding · 2,921 stars · scanned at commit 8dc06f0
Scan a source tree for command-injection vulnerable patterns:
shell=True calls in Python subprocess, os.system / os.popen with
interpolated strings, Node child_process.exec with template
literals, Ruby backticks / Kernel#system / Kernel#exec with
interpolation, Go exec.Command with shell wrapping, PHP system /
passthru / shell_exec / backticks with $-interpolation, Java
Runtime.exec with concatenated args.
Use when: pre-commit gate on code that calls out to shell utilities,
audit of file-proces…
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
This is disclosed by the author in the skill's SKILL.md or README. Expected for a coding skill.
Found in 41 places.
Show 17 more
- skills/.curated/detecting-command-injection-patterns/SKILL.md, line 61
| Node `child_process.exec(...)` with template literal | **CRITICAL** | `${...}` in the command string | CWE-78 | - skills/.curated/detecting-command-injection-patterns/SKILL.md, line 62
| Node `child_process.execSync(...)` with template | **CRITICAL** | same | CWE-78 | - skills/.curated/detecting-command-injection-patterns/SKILL.md, line 79
python3 ${CLAUDE_PLUGIN_ROOT}/skills/detecting-command-injection-patterns/scripts/scan_cmdi.py /path/to/repo - skills/.curated/detecting-command-injection-patterns/SKILL.md, line 114
python3 ${CLAUDE_PLUGIN_ROOT}/skills/detecting-command-injection-patterns/scripts/scan_cmdi.py \ - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 12
subprocess.run(f"convert {filename} out.png", shell=True) - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 19
subprocess.run(["convert", filename, "out.png"], check=True) - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 26
subprocess.run(f"cat {filename} | grep error", shell=True) - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 29
with subprocess.Popen(["cat", filename], stdout=subprocess.PIPE) as p1: - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 30
subprocess.run(["grep", "error"], stdin=p1.stdout, check=True) - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 36
result = subprocess.run( - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 48
const { exec } = require('child_process'); - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 55
const { execFile } = require('child_process'); - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 62
const { spawn } = require('child_process'); - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 71
import { execFile as execFileCallback } from 'child_process'; - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 140
Runtime.getRuntime().exec("convert " + filename + " out.png"); - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 245
you wanted one, you'd have to explicitly invoke `sh -c` yourself. - skills/.curated/detecting-command-injection-patterns/references/PLAYBOOK.md, line 300
findings on `shell=True` with verified static-string arguments are
and 21 more places
Other copies in this repository
jeremylongshore/tons-of-skills-marketplace has 1 more folder with a skill named detecting-command-injection-patterns. This page shows the lowest-scoring copy.
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'detecting-command-injection-patterns' ] || [ -L ~/.agents/skills/'detecting-command-injection-patterns' ]; then echo 'A skill folder named detecting-command-injection-patterns already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/jeremylongshore/tons-of-skills-marketplace' "$d" && git -C "$d" checkout --quiet '8dc06f02eb00b7d8d1c0e69dfb3add2fd9500979' -- 'skills/.curated/detecting-command-injection-patterns' && mkdir -p ~/.agents/skills && cp -R "$d"/'skills/.curated/detecting-command-injection-patterns' ~/.agents/skills/'detecting-command-injection-patterns' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'detecting-command-injection-patterns' ~/.claude/skills/'detecting-command-injection-patterns' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for jeremylongshore/tons-of-skills-marketplace shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/jeremylongshore/tons-of-skills-marketplace/)
Score history
| Date | Version | Score |
|---|
| 2026-11-14 | 8dc06f0 | 97 |
| 2026-11-08 | 0500b27 | 97 |
| 2026-11-07 | 0500b27 | 97 |