media-use@r12
VERIFIED· install onlyPublisher claims: "Get or make any media for a HyperFrames video - music, sound effects, images, icons, logos, voiceover, avatar and generated video, transcripts, cutouts, colour grades and looks - with HeyGen or free local tools, and mix placed audio. Also for footage that looks dark, flat or dull, or should be stylized or hidden." 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 media-use@r12 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-11 and scored it 81/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
…les](../hyperframes/references/plugin-installation.md). **Usage beacon:** run `npx hyperframes events --skill=media-use` once as this skill starts. It sends the skill's name …Fix: Pin versions and sources; vendor anything fetched at install time.| Voiceover (`voice`) | Voice Turbo, Free plan: 3 min a month | Voice Turbo on a paid plan, other HeyGen voices, cloning | `npx hyperframes tts` (Kokoro on device) |Fix: Pin versions and sources; vendor anything fetched at install time.npx hyperframes media-use resolve --type <type> --intent "<what you need>" --project <dir>Fix: Pin versions and sources; vendor anything fetched at install time.// Walk up ≤5 dirs from startDir; load the first .env (shell env always wins).Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// A missing `.env`, or a `.env` folder (some home dirs have one), is no env file: null. Read without checking first,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// A project .env may supply provider keys and harmless settings only, the same policy as the CLI. EverythingFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// $HYPERFRAMES_API_KEY (or a nearby .env) → the API key saved inFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.test("loadEnvFromDir skips a .env folder and loads the .env file above it", () => {Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log(`✓ ${output}${durStr}${wordCount ? ` · ${wordsPath} (${wordCount} words)` : ""}`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// runs that same build with the same Node instead of whatever npx resolves from the project.Fix: Pin versions and sources; vendor anything fetched at install time.return "This needs a HyperFrames plan. Run `npx hyperframes billing subscribe --skill media-use`: it opens the page and waits.";Fix: Pin versions and sources; vendor anything fetched at install time.return synthResult(r, wavAbs, "kokoro (npx hyperframes tts)");Fix: Pin versions and sources; vendor anything fetched at install time.// A HyperFrames CLI that launches this code hands over its own entry file, so `npx hyperframes`Fix: Pin versions and sources; vendor anything fetched at install time.const label = provider === "elevenlabs" ? "elevenlabs (python)" : "kokoro (npx hyperframes tts)";Fix: Pin versions and sources; vendor anything fetched at install time.test("resolveSpawnCommand preserves Windows npx shell metacharacters as argv data", () => {Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.`HeyGen credentials at ${cred.unreadable.file} can't be read (${cred.unreadable.code}) — fix or remove that path, then run \`npx hyperframes auth login\``,Fix: Pin versions and sources; vendor anything fetched at install time.result = subprocess.run(cmd, capture_output=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.| Cutouts | | Video: `--type cutout` | `npx hyperframes remove-background` |Fix: Pin versions and sources; vendor anything fetched at install time.test("spawnP uses the resolved node+npx-cli command for npx on win32", async () => {Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.// ── audio_meta.json (output, id-keyed) ───────────────────────────────────────Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// On Windows, npx resolves to npx.cmd, which Node cannot execute directly.Fix: Pin versions and sources; vendor anything fetched at install time.// Kokoro shells out to `npx hyperframes tts`; a fake npx on PATH records the argvFix: Pin versions and sources; vendor anything fetched at install time.writeFileSync(join(dir, ".env"), "");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// Regression: on Windows, npx resolves to npx.cmd, which spawn() cannot execFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.fs.writeFileSync(output + ".json", JSON.stringify({ input, text, consumed, args }));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.test("spawnP does not enable shell for npx on darwin/linux", async () => {Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."This needs a HyperFrames plan. Run `npx hyperframes billing subscribe --skill media-use`: it opens the page and waits.",Fix: Pin versions and sources; vendor anything fetched at install time.test("resolveSpawnCommand routes npx through node+npx-cli on win32 without shell:true", () => {Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.test("a project's .env supplies provider keys only, never programs, runtime options or another account", () => {Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.writeFileSync(join(root, ".env"), "ELEVENLABS_API_KEY=from-parent\n");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// ── audio_request.json (input) ────────────────────────────────────────────────Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why."Out of HyperFrames credits. Run `npx hyperframes billing add-credits --skill media-use`: it opens the page and waits.",Fix: Pin versions and sources; vendor anything fetched at install time."no HyperFrames credentials — set $HEYGEN_API_KEY, or run `npx hyperframes auth login` (writes ~/.hyperframes/credentials)",Fix: Pin versions and sources; vendor anything fetched at install time."HeyGen OAuth token expired — run `npx hyperframes auth refresh` (or `npx hyperframes auth login`)",Fix: Pin versions and sources; vendor anything fetched at install time.return Response.json({status:'completed', steps:[{type:'model_output', content:[Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.parser.add_argument("-o", "--output", default="audio-data.json", help="Output JSON path")Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.mkdirSync(join(project, ".env"), { recursive: true });Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.| Transcripts | `npx hyperframes transcribe` (Parakeet or whisper) | | |Fix: Pin versions and sources; vendor anything fetched at install time.const res = synthResult({ status: 2 }, "/tmp/none.wav", "kokoro (npx hyperframes tts)");Fix: Pin versions and sources; vendor anything fetched at install time.// synthesizeOne really builds, so a dropped flag fails here. Windows runs npx viaFix: Pin versions and sources; vendor anything fetched at install time.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.