academic-figures@7.8.2
CAUTION· static onlyPublisher claims: "Publication-ready scientific figures from one command — 40 chart types (bar, slope, volcano, ridgeline, dumbbell, grouped bar, scatter, heatmap, forest plot (incl. Cox), KM survival curve with risk table, competing-risk cumulative incidence (Aalen-Johansen), ROC, calibration curve, decision curve (DCA), nomogram, RCS spline, subgroup forest, violin, box, composite panels, PRISMA 2020 flow, funnel, Galbraith radial, Bland-Altman, PCA, venn 2-4 sets, upset set intersections (5+ sets), oncology waterfall (RECIST), raincloud, swimmer, clustered heatmap, dual-axis), 9 themes (colorblind-safe Okabe-Ito, NEJM/Lancet/Science), 9 journal presets, YAML pipeline, TIFF/PNG/PDF, Python API, --wizard, render watchdog, overlap gate, 600dpi. 100% local, data never leaves the machine. Use for — paper/submission figures, data files to publication charts, batch re-rendering. Skip when — text polishing, translation or rewriting (writing tools); business dashboards or slide/poster decoration; diagrams with no data behind them." Observed in sandbox: static analysis only — behavior not yet observed.
Coverage
Static only; nothing was run yet.The label rests on the code, the instruction files and the publisher. The honeypot run replaces this verdict when it completes.
Is [email protected] safe to install?
KillerSkills analysed it statically (a sandbox run is pending) on 2026-11-14 and scored it 60/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: Latin word with Cyrillic or Greek look-alike letters (homoglyph); Latin word with Cyrillic or Greek look-alike letters (homoglyph); Latin word with Cyrillic or Greek look-alike letters (homoglyph). Summary: static analysis only — behavior not yet observed.
Behavior trace
Queued for honeypot run · static analysis onlyThis version has not been detonated yet. The score above counts behavior as unknown (50/100), so it cannot read Verified until the honeypot run completes and replaces this verdict.
Static findings
ΣCIFFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.═══ Metadata archive (2026-09-13 frontmatter normalization; compressed 2026-10-14) ═══ ZCode skill auto-discovery reads ONLY the frontmatter whitelist keys (namFix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.ΣCIFFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.| `--debug` | On failure write `<output>.debug.json` sidecar (input fingerprint / field mapping / diagnosis suggestions — programmatic troubleshooting, v6.4) |Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.result = subprocess.run([sys.executable, detect], capture_output=True, text=True, timeout=30)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.Popen([sys.executable, script] + sys.argv[1:], env=env)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run([sys.executable, GEN, "-t", t, "--data", p,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.…utput; exit 2 on overlaps | | `--audit` / `--repro` | `--audit`: `<output>.audit.json` number-check sidecar (stats recomputed from input, v5.0); `--repro`: `<output>.repro/` reproduce bundle (command+data copy+figure copy+audit+README, v5.…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.ΔFVCFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.proc = subprocess.run(argv, capture_output=True, text=True, timeout=300)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.p = subprocess.run(cmd, capture_output=True, text=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(cmd, capture_output=True, text=True, timeout=180)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.return subprocess.run(cmd, capture_output=True, text=True, timeout=timeout).returncode == 0Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.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
20 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim docsor1212: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Hidden instructions≈ +6 on the totalRemove HTML comments, zero-width characters and white-on-white text that carry instructions. Everything the agent is meant to read should be visible to the person reading the file.
- 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.