Most static external-command hits are Markdown or JavaScript backtick false positives. Real risks remain because the skill runs Node and npm commands, executes generated Playwright scripts from /tmp, and saves screenshots to shared temporary paths. I found no evidence of prompt injection, hidden external callbacks, or obfuscated payloads in SKILL.md.
Generated Script Execution From Shared Temporary Directory
The workflow tells the agent to write custom Playwright scripts to /tmp and run them with node run.js. This combines generated code execution with shared temporary storage.
The instructions explicitly require /tmp script creation and a Node wrapper command. The risk is contextual and comes from combining these steps.
Capability review items (15)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
This bash block runs node run.js against a generated script in /tmp. Executing generated JavaScript from a shared temp location is real local code execution risk.
cd ${CLAUDE_PLUGIN_ROOT} && node run.js /tmp/playwright-test-{name}.js
The skill directs generated scripts to /tmp and later runs them with Node. Shared temporary paths can be replaced, collide, or expose generated automation code.
This bash block instructs the agent to run a Node one-liner from the plugin directory to detect dev servers. It is intentional external command execution with fixed arguments.
NEVER write test files to plugin directory. Always use `/tmp/playwright-test-*.js`
The skill directs generated scripts to /tmp and later runs them with Node. Shared temporary paths can be replaced, collide, or expose generated automation code.
The skill directs generated scripts to /tmp and later runs them with Node. Shared temporary paths can be replaced, collide, or expose generated automation code.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
- **Use /tmp for scripts** - Write to `/tmp/playwright-test-*.js`, never plugin directory
The skill directs generated scripts to /tmp and later runs them with Node. Shared temporary paths can be replaced, collide, or expose generated automation code.
Most static external-command hits are Markdown or JavaScript backtick false positives. Real risks remain because the skill runs Node and npm commands, executes generated Playwright scripts from /tmp, and saves screenshots to shared temporary paths. I found no evidence of prompt injection, hidden external callbacks, or obfuscated payloads in SKILL.md.
Generated Script Execution From Shared Temporary Directory
The workflow tells the agent to write custom Playwright scripts to /tmp and run them with node run.js. This combines generated code execution with shared temporary storage.
The instructions explicitly require /tmp script creation and a Node wrapper command. The risk is contextual and comes from combining these steps.
Capability review items (15)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
This bash block runs node run.js against a generated script in /tmp. Executing generated JavaScript from a shared temp location is real local code execution risk.
cd ${CLAUDE_PLUGIN_ROOT} && node run.js /tmp/playwright-test-{name}.js
The skill directs generated scripts to /tmp and later runs them with Node. Shared temporary paths can be replaced, collide, or expose generated automation code.
This bash block instructs the agent to run a Node one-liner from the plugin directory to detect dev servers. It is intentional external command execution with fixed arguments.
NEVER write test files to plugin directory. Always use `/tmp/playwright-test-*.js`
The skill directs generated scripts to /tmp and later runs them with Node. Shared temporary paths can be replaced, collide, or expose generated automation code.
The skill directs generated scripts to /tmp and later runs them with Node. Shared temporary paths can be replaced, collide, or expose generated automation code.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
The skill saves browser screenshots under /tmp. Screenshots can contain sensitive page data and predictable temporary paths can be exposed on shared systems.
- **Use /tmp for scripts** - Write to `/tmp/playwright-test-*.js`, never plugin directory
The skill directs generated scripts to /tmp and later runs them with Node. Shared temporary paths can be replaced, collide, or expose generated automation code.
Static analysis flagged many command, network, filesystem, crypto, obfuscation, and path traversal patterns. Review found no malicious intent, no prompt injection attempt, and no real cryptographic or obfuscation behavior, but the skill intentionally guides Playwright script execution with browser network access and /tmp file artifacts.
Intentional External Command Execution for Playwright Scripts
The skill instructs users to run shell commands from the plugin directory and execute generated Playwright JavaScript through node run.js. This is expected for browser automation, but generated scripts can perform browser actions and should be reviewed before execution.
The command execution instructions are explicit and semantically central to the skill. The risk is moderate because the commands support legitimate Playwright automation rather than concealed execution.
Browser Network Access to Local and User-Provided Targets
The examples navigate to localhost targets and inspect links with browser requests. This network access is legitimate for web testing, but it can reach local development services or user-provided sites and may expose authenticated browser state during automation.
The reviewed examples clearly use Playwright navigation and request APIs. I did not find evidence of hardcoded external exfiltration endpoints, so the risk depends on user-selected targets.
The skill repeatedly instructs scripts to write test files and screenshots under /tmp. This is useful for disposable automation artifacts, but screenshots or saved sessions may contain sensitive page data if users test authenticated applications.
The /tmp write locations are explicit and repeated across the guidance. The behavior is normal for screenshots and temporary scripts, but sensitive page contents could be stored locally.
Static false positives ignored (4)
These static matches were dismissed by semantic review or matched schema-only tokens, so they are shown for transparency but do not drive the quality score.
The static weak-crypto hits occur in descriptive text, example paths, viewport data, and helper lists. No evidence found of MD5, SHA1, DES, RC4, or other weak cryptographic API usage in SKILL.md.
Manual review of the cited lines found prose, examples, or helper names instead of cryptographic operations. The scanner appears to have matched substrings rather than real crypto code.
The obfuscation alert points to the Markdown front matter area. No evidence found of JSFuck, encoded payloads, hidden script loaders, or intentionally obfuscated instructions in the reviewed file.
The cited section is normal YAML front matter with metadata and a tag array. There is no executable obfuscated JavaScript at that location.
The path traversal hit is a Markdown link to a relative documentation file, not runtime file access. No evidence found that the skill reads arbitrary parent directories or user-controlled filesystem paths.
The cited ../../API_REFERENCE.md value is used only as a documentation hyperlink. It is not passed to a filesystem API in the reviewed skill file.
The hardcoded URL findings use http://localhost:3847 as an example target for local development testing. No evidence found of fixed third-party endpoints, credential transmission, or exfiltration domains.
Every static URL hit reviewed is a localhost example target. This supports the skill purpose and does not indicate a malicious network destination.
This is a legitimate Playwright browser automation skill. All static findings are false positives: screenshot references are local /tmp writes, hardcoded URLs are localhost placeholders for dev testing, temp directory access is intentional for script isolation, and backticks are markdown code block delimiters. No malicious patterns, exfiltration, or dangerous command execution found.
2
Files scanned
738
Lines analyzed
5
Review items
0
False positives ignored
Capability review items (1)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
This is a legitimate Playwright browser automation skill. All static findings are false positives: screenshot references are local /tmp writes, hardcoded URLs are localhost placeholders for dev testing, temp directory access is intentional for script isolation, and backticks are markdown code block delimiters. No malicious patterns, exfiltration, or dangerous command execution found.
2
Files scanned
738
Lines analyzed
5
Review items
0
False positives ignored
Capability review items (1)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
This is a legitimate browser automation skill using Playwright. It writes test scripts to /tmp and executes them via Node.js to perform web testing, screenshot capture, form interaction, and accessibility audits. All functionality aligns with stated purpose.
1
Files scanned
463
Lines analyzed
7
Review items
0
False positives ignored
Capability review items (3)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
The skill writes JavaScript files to /tmp and executes them with Node.js. This is standard behavior for a browser automation tool. Scripts are executed only when explicitly requested by the user. Lines 76-77 show: 'node run.js /tmp/playwright-test-{name}.js'
The skill makes HTTP requests to check links and navigate to web pages. Lines 203-212 show HTTP HEAD requests to validate links: 'await page.request.head(href)'
The skill writes test scripts and screenshots to /tmp directory. Lines 41 and 62 document writing scripts and screenshots: 'NEVER write test files to plugin directory. Always use /tmp/playwright-test-*.js'
This is a legitimate browser automation skill using Playwright. It writes test scripts to /tmp and executes them via Node.js to perform web testing, screenshot capture, form interaction, and accessibility audits. All functionality aligns with stated purpose.
1
Files scanned
463
Lines analyzed
7
Review items
0
False positives ignored
Capability review items (3)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
The skill writes JavaScript files to /tmp and executes them with Node.js. This is standard behavior for a browser automation tool. Scripts are executed only when explicitly requested by the user. Lines 76-77 show: 'node run.js /tmp/playwright-test-{name}.js'
The skill makes HTTP requests to check links and navigate to web pages. Lines 203-212 show HTTP HEAD requests to validate links: 'await page.request.head(href)'
The skill writes test scripts and screenshots to /tmp directory. Lines 41 and 62 document writing scripts and screenshots: 'NEVER write test files to plugin directory. Always use /tmp/playwright-test-*.js'
This is a legitimate browser automation skill using Playwright. It writes test scripts to /tmp and executes them via Node.js to perform web testing, screenshot capture, form interaction, and accessibility audits. All functionality aligns with stated purpose.
1
Files scanned
463
Lines analyzed
7
Review items
0
False positives ignored
Capability review items (3)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
The skill writes JavaScript files to /tmp and executes them with Node.js. This is standard behavior for a browser automation tool. Scripts are executed only when explicitly requested by the user. Lines 76-77 show: 'node run.js /tmp/playwright-test-{name}.js'
The skill makes HTTP requests to check links and navigate to web pages. Lines 203-212 show HTTP HEAD requests to validate links: 'await page.request.head(href)'
The skill writes test scripts and screenshots to /tmp directory. Lines 41 and 62 document writing scripts and screenshots: 'NEVER write test files to plugin directory. Always use /tmp/playwright-test-*.js'