Trust Assessment
finishing-branch received a trust score of 10/100, placing it in the Untrusted category. This skill has significant security findings that require attention before use in production.
SkillShield's automated analysis identified 12 findings: 5 critical, 7 high, 0 medium, and 0 low severity. Key findings include Arbitrary command execution, Dangerous call: subprocess.run(), Arbitrary command execution via `shell=True` in test runner.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The Manifest Analysis layer scored lowest at 0/100, indicating areas for improvement.
Last analyzed on February 14, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings12
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/wpank/finishing-branch/scripts/cleanup_branches.py:20 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/wpank/finishing-branch/scripts/cleanup_branches.py:27 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/wpank/finishing-branch/scripts/finish_branch.py:22 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/wpank/finishing-branch/scripts/finish_branch.py:34 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/wpank/finishing-branch/scripts/finish_branch.py:97 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'run_git'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/wpank/finishing-branch/scripts/cleanup_branches.py:20 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'run_git_rc'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/wpank/finishing-branch/scripts/cleanup_branches.py:27 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'run_git'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/wpank/finishing-branch/scripts/finish_branch.py:22 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'run_git_rc'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/wpank/finishing-branch/scripts/finish_branch.py:34 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'run_tests'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/wpank/finishing-branch/scripts/finish_branch.py:97 | |
| HIGH | Arbitrary command execution via `shell=True` in test runner The `run_tests` function in `scripts/finish_branch.py` executes test commands using `subprocess.run(runner, shell=True)`. The `runner` command (e.g., `npm test`, `make test`, `tox`) is determined by detecting project files like `package.json` or `Makefile`. If a malicious `package.json` or `Makefile` is present in the repository, it could define a `test` script or target containing arbitrary shell commands. When `run_tests` is invoked, these malicious commands would be executed with the privileges of the skill, leading to arbitrary code execution. Avoid `shell=True` when executing commands derived from untrusted project files. Instead, parse the project files (e.g., `package.json`, `Makefile`) to extract the specific command and execute it more safely by passing arguments as a list to `subprocess.run` (e.g., `subprocess.run(["npm", "test"])`) or by sanitizing the command string if `shell=True` is absolutely necessary. Alternatively, run tests in an isolated, sandboxed environment. | LLM | scripts/finish_branch.py:100 | |
| HIGH | Potential command injection through unescaped placeholders in shell commands The `SKILL.md` defines several shell commands that use placeholders such as `<base-branch>`, `<feature-branch>`, `<title>`, and `<worktree-path>`. If the AI agent (LLM) fills these placeholders with user-controlled input or context-derived values that contain shell metacharacters (e.g., `;`, `&`, `|`, `$()`, `` ` ``), without proper escaping, it could lead to arbitrary command execution. For example, if `<feature-branch>` is replaced with `my_feature; rm -rf /`, the `git branch -d` command would execute `rm -rf /`. The `gh pr create --title "<title>"` command is also vulnerable if `<title>` contains unescaped double quotes or command substitutions. When generating shell commands from templates, ensure all variables derived from user input or potentially untrusted sources are properly escaped for the shell context (e.g., using `shlex.quote` in Python, or equivalent for other languages/contexts). For `gh pr create`, ensure the title is properly quoted and the body content is handled safely within the here-document. | LLM | SKILL.md:49 |
Scan History
Embed Code
[](https://skillshield.io/report/e22a71301599dcf3)
Powered by SkillShield