academic-figures@7.4.1
VERIFIED· install 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: 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-07 and scored it 82/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.Σ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.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.Σ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.| `--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+Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.ΔFVCFix: 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.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.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.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.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.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.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.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.| `--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.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.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.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.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.ΔRMSTFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.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.