zm-img2-generation-direct@0.1.0
CAUTION· install onlyPublisher claims: "ZM IMG2 直接生图执行。用于通过 happy/gpt-image-2 执行文生图和参考图生图,保留输入、输出、日志和结果 JSON,作为正式视觉生产证据。" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-12 and scored it 77/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Host or code assembled from base64 fragments. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
…ion for acceptance reviews: include the image path, run/batch directory, `result.json` or `batch_result.json`, and the visible proof fields `provider`, `model`, `mode`, `input_images`, `ok`, and `bytes`. ## Acceptance rules A result is acc…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…`task_id`, `task_key`, `worker_id`, `thread_id`, and child `pid` in `queue_state.json`, `task.json`, and final task rows. Completed tasks verify the worker binding before accepting the result; late/orphan output is marked non-ok. ### Statu…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.cp = subprocess.run(cmd, cwd=str(ROOT), text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=30)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.- run-level `state.json` with status, attempt, elapsed time, output, and redacted last error.Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…no image payload.',retryable:true}}); if(item.b64_json){fs.writeFileSync(output,Buffer.from(item.b64_json,'base64'));}else{const img=await fetchWithTimeout(item.url,{},timeoutMs); if(!img.ok) fail({stage:'download_image',htt…Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.…const cfgPath=expandHome(process.env.OPENCLAW_CONFIG_PATH||'~/.openclaw/openclaw.json'); const cfg=JSON.parse(fs.readFileSync(cfgPath,'utf8')); const {apiKey,baseUrl}=resolveProviderConfig(cfg,providerId); fs.mkdirSync(path.dirname(output)…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.- `timed_out`: exceeded `task_timeout_seconds`; queue sent terminate, then kill if neededFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.proc = subprocess.Popen(cmd, cwd=str(WORKSPACE), text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, start_new_session=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.… cmd = self.build_command(task, tdir) write_json(tdir / 'command.json', {'task_id': task_id, 'task_key': task.get('task_key'), 'worker_id': worker_id, 'command': cmd, 'input_images': task.get('input_images') or [], 'prompt_summary': task.g…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.A successful `result.json` must expose enough proof for review: `provider`, `model`, internal `mode`, and `input_images` (empty for text2img / 文生图, populated for img2img / 参考图生图).Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.- `task_timeout_seconds`: `600`; timeout handling is terminate first, then kill if the process ignores terminateFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.- `stdout.txt` / `stderr.txt`: process outputFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
3 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim jerryxn: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Obfuscated code≈ +5 on the totalRemove base64-assembled strings, eval of decoded text and minified blobs. Reviewers and scanners both treat unreadable code as hostile.
- Host or code assembled from base64 fragments≈ +4 on the totalPut hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
- File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.