artifacts-skill@0.4.0
CAUTION· startup onlyPublisher claims: "A local-first verification and evidence-generation engine for AI-generated documents: inspect, plan, execute, render, verify, and receipt PDF/PPTX/DOCX/XLSX/image/HTML/SVG artifacts, locally." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Startup only; authenticated tool behavior not tested.- Tested
- second launch with the clock 45 days ahead · server startup over stdio (initialize sent) · every file read, file written and host contacted by what ran
- Not tested
- the tool list (the server exited before answering) · what the tools do when called with real credentials
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (3 scenarios; startup only; authenticated tool behavior not tested) on 2026-11-12 and scored it 72/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: Hidden zero-width characters detected; Hex-encoded string detected; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 21 s · 3 scenarios · 0 deviationsStatic findings
# the header's first cell (e.g. "name" became "name"), silentlyFix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent._CFB_MAGIC = b"\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1"Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.# "../../../../../../etc/passwd") makes resolve_href()Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.proc = subprocess.run( # noqa: S603Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.`kajisho5/ffmpeg-skill`'s own installer uses (`npx ffmpeg-skill` copiesFix: Pin versions and sources; vendor anything fetched at install time.`<iframe src="file:///etc/passwd">`, and have its content end up inFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log("Then check status with: npx artifacts-skill doctor\n");Fix: Pin versions and sources; vendor anything fetched at install time.problem: a hostile document referencing `file:///etc/passwd` (orFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.proc = subprocess.run( # noqa: S603Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.process supervisor's graceful-stop signal, or plain `kill <pid>`) isFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.* Thin npx wrapper. The real engine is Python (`src/artifact_skill`) —Fix: Pin versions and sources; vendor anything fetched at install time.actually exploit (a member name like `../../etc/passwd`). It is notFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.`subprocess.run()` already kills its child on any Python-levelFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.// no pip install done yet (exactly the "try npx first" scenario this stepFix: Pin versions and sources; vendor anything fetched at install time.except Exception as exc: # noqa: BLE001 - last-resort boundary: never let a tool call kill the stdio sessionFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for artifacts-skill@0.4.0 as of 42 h ago. This is the package itself, not its dependencies.
What would make this Verified
8 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim kajisho5: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Hidden zero-width characters detected≈ +4 on the totalKeep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
- Hex-encoded string detected≈ +4 on the totalPut hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.