Update to JuicyLucy Ads
Snapshot Oct 24, 2026 · 13:24 UTC · version 0.33.2
Collection source: downloaded plugin package. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.
Instructions updated for media-use
Full description — Now says: OS for a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger...
Observed in instructions or declared skills. Runtime behavior has not been tested.
Up to 3 plugins free · no card required.
All fields and original values.
Full description
Sep 30, 2026 · 23:16 UTC
OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via T...
Oct 24, 2026 · 13:24 UTC
OS for a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the cat...
Skill instructions
Sep 30, 2026 · 23:16 UTC
OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via T...
Oct 24, 2026 · 13:24 UTC
OS for a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the cat...
Supporting files
Sep 30, 2026 · 23:16 UTC
[{"relative_path":".gitignore","size_in_bytes":17},{"relative_path":"audio/assets/sfx/CREDITS.md","size_in_bytes":1183},{"relative_path":"audio/assets/sfx/chime.mp3","size_in_bytes":27309},{"relative_path":"audio/assets/sfx/click-soft.mp...
Oct 24, 2026 · 13:24 UTC
[{"relative_path":".gitignore","size_in_bytes":17},{"relative_path":"audio/references/captions/authoring.md","size_in_bytes":10198},{"relative_path":"audio/references/captions/motion.md","size_in_bytes":5656},{"relative_path":"audio/refe...
Compare saved observations
Download comparison JSONSKILL.md text changes
− removed · + added
--- before +++ after @@ -1,33 +1,33 @@ --- name: media-use -description: Agent Media OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal. +description: Agent Media OS for a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal. In this plugin, music and voiceover come from `juicy`; sound effects come from the bundled library (`resolve --type sfx --local-only`), with no account. --- -> Modified by Juicy Lucy AI, UAB for JuicyLucy Ads: CLI invocation, the review-approval reference and/or frontmatter (description layout, upstream-only metadata) adjusted at build time. See the plugin root NOTICE for details. +> Modified by Juicy Lucy AI, UAB for JuicyLucy Ads: CLI invocations (pointed at the installed launchers, never npm latest), the review-approval reference, the pointer to HyperFrames' own plugin rules, third-party install instructions, references to omitted provider integrations and usage telemetry, unpinned install and HeyGen video instructions, the environment a script passes to its local preview server and the pattern it reads Chrome's local address with, one line break and/or frontmatter (description layout, upstream-only metadata) adjusted at build time. See the plugin root NOTICE for details. # media-use The media OS for HyperFrames: resolve · generate · operate · remember — every media type, one skill, zero context noise. -First run: install and sign in to the `heygen` CLI (the free-usage path), then verify with `hyperframes media-use resolve --doctor`. Setup and providers: `references/setup-providers.md`. +In this plugin, music and voiceover come from the `juicy` command (the `juicy-cli` skill), and `~/.juicylucy/bin/hyperframes media-use resolve --type sfx --local-only` resolves sound effects from the renderer's own bundled library with no sign-in. Always pass `--local-only` for a sound effect: without it the resolve searches Openverse first and can return a sound licensed CC BY, whose credit an ad cannot carry. Never install or sign in to another media provider for an ad. Verify with `~/.juicylucy/bin/hyperframes media-use resolve --doctor`. ## Resolve — the one verb ```bash -hyperframes media-use resolve --type <type> --intent "<description>" --project <dir> +~/.juicylucy/bin/hyperframes media-use resolve --type <type> --intent "<description>" --project <dir> ``` Returns one line: `resolved <id> → <path> (<type>, <metadata>)`. All search noise stays on disk. | Type | One-line intent | | ------- | -------------------------------------------------------------------------------- | -| `bgm` | background music (HeyGen catalog, 10k+ tracks) | -| `sfx` | sound effects (bundled 19-file library + catalog) | +| `bgm` | not here: music comes from `~/.juicylucy/bin/juicy audio music` | +| `sfx` | sound effects (the renderer's bundled library, with `--local-only`; no sign-in) | | `image` | photos, backgrounds (HeyGen asset search, 75k+ vectors) | | `icon` | icons, symbols (transparent) | | `logo` | official brand marks (theSVG → GitHub avatar → favicon; never redrawn) | -| `voice` | TTS voiceover (HeyGen free-usage path; optional local Kokoro) | +| `voice` | not here: voiceover comes from `~/.juicylucy/bin/juicy audio voiceover` | | `grade` | measured correction candidate; broad polish/stylization follows Media Treatments | | `lut` | user-provided or explicitly chosen reusable validated `.cube` file | @@ -40,14 +40,14 @@ do not name color grading or an effect. Inspect the real `<img>`/`<video>`, choose one primary intent, then use deterministic persistence and verification. Use a matching recipe as an optional tested seed, or inspect -`hyperframes media-treatment --capabilities --json`, then request one relevant +`~/.juicylucy/bin/hyperframes media-treatment --capabilities --json`, then request one relevant family/effect with `--capability <id>` and assemble a custom treatment from canonical controls. Never load `--all` for ordinary authoring. A treatment may compose correction, a preset, finishing, compatible shader effects, supported keyframes, and optional Registry overlays. Add only source-justified bounded tuning and compatible parts, never effects merely to make the result look more sophisticated. Persist the final combined payload with -`hyperframes media-treatment`. +`~/.juicylucy/bin/hyperframes media-treatment`. Use one progressively escalating workflow. For video, inspect one labeled early/middle/late contact sheet rather than reading frames separately. Apply one @@ -79,7 +79,7 @@ | Image that is a placeholder, tiny, or upscaled-looking | a better `image` (and/or upscale — see `references/operations.md`) | | Hard scene cuts / transitions with no sound | transition `sfx` | | A piece over ~10s with no music bed | `bgm` | -| Footage that reads under/over-exposed or color-cast | a corrective grade (inspect it with `hyperframes media-treatment --selector '#hero' --analyze --json`) | +| Footage that reads under/over-exposed or color-cast | a corrective grade (inspect it with `~/.juicylucy/bin/hyperframes media-treatment --selector '#hero' --analyze --json`) | | Photographic media that feels visually flat or off-topic | one specific source-appropriate preset or custom treatment, with the intended target named | | A meaningful media entrance/reveal that feels static | one supported seek-safe treatment animation; preserve color unless the request also justifies a preset | @@ -91,9 +91,8 @@ | ------------------------------------------------------------------------- | -------------------------------- | | resolve / reuse / adopt / ingest, flags, cascade, inventory | `references/resolve.md` | | color grading, LUTs, smart grade (`--for`), grade-compare | `references/grading.md` | -| voiceover / TTS, music, SFX, captions, transcription (audio engine) | `references/audio.md` | +| captions, transcription | `audio/references/transcribe.md` | | cut / reframe / transform existing media, exact error diffusion, HEVC | `references/operations.md` | | source-aware creative treatments, realtime effects, overlays, reveals | `references/media-treatments.md` | -| install + auth, provider table, RAM ladders, `--local-only`, `--provider` | `references/setup-providers.md` | | remembered preferences + frozen recipes (user memory) | `references/memory.md` | | ownership matrix, usage stats, telemetry, privacy (maintainer-facing) | `references/meta.md` |
Full technical diff · 3 changed fields
changed /description
"Agent Media OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal."
"Agent Media OS for a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal. In this plugin, music and voiceover come from `juicy`; sound effects come from the bundled library (`resolve --type sfx --local-only`), with no account."
changed /included_files
[
{
"relative_path": ".gitignore",
"size_in_bytes": 17
},
{
"relative_path": "audio/assets/sfx/CREDITS.md",
"size_in_bytes": 1183
},
{
"relative_path": "audio/assets/sfx/chime.mp3",
"size_in_bytes": 27309
},
{
"relative_path": "audio/assets/sfx/click-soft.mp3",
"size_in_bytes": 11702
},
{
"relative_path": "audio/assets/sfx/click.mp3",
"size_in_bytes": 11702
},
{
"relative_path": "audio/assets/sfx/error.mp3",
"size_in_bytes": 51827
},
{
"relative_path": "audio/assets/sfx/glitch-1.mp3",
"size_in_bytes": 84427
},
{
"relative_path": "audio/assets/sfx/glitch-2.mp3",
"size_in_bytes": 112128
},
{
"relative_path": "audio/assets/sfx/glitch-3.mp3",
"size_in_bytes": 99072
},
{
"relative_path": "audio/assets/sfx/impact-bass-1.mp3",
"size_in_bytes": 67709
},
{
"relative_path": "audio/assets/sfx/impact-bass-2.mp3",
"size_in_bytes": 82944
},
{
"relative_path": "audio/assets/sfx/key-press.mp3",
"size_in_bytes": 3909
},
{
"relative_path": "audio/assets/sfx/manifest.json",
"size_in_bytes": 3721
},
{
"relative_path": "audio/assets/sfx/notification.mp3",
"size_in_bytes": 78576
},
{
"relative_path": "audio/assets/sfx/ping.mp3",
"size_in_bytes": 26400
},
{
"relative_path": "audio/assets/sfx/pop.mp3",
"size_in_bytes": 23040
},
{
"relative_path": "audio/assets/sfx/riser.mp3",
"size_in_bytes": 321024
},
{
"relative_path": "audio/assets/sfx/sparkle.mp3",
"size_in_bytes": 57678
},
{
"relative_path": "audio/assets/sfx/typing.mp3",
"size_in_bytes": 26852
},
{
"relative_path": "audio/assets/sfx/whoosh-cinematic.mp3",
"size_in_bytes": 177408
},
{
"relative_path": "audio/assets/sfx/whoosh-short.mp3",
"size_in_bytes": 18390
},
{
"relative_path": "audio/assets/sfx/whoosh.mp3",
"size_in_bytes": 18390
},
{
"relative_path": "audio/references/bgm.md",
"size_in_bytes": 8178
},
{
"relative_path": "audio/references/captions/authoring.md",
"size_in_bytes": 9757
},
{
"relative_path": "audio/references/captions/motion.md",
"size_in_bytes": 5656
},
{
"relative_path": "audio/references/captions/transcript-handling.md",
"size_in_bytes": 5655
},
{
"relative_path": "audio/references/remove-background.md",
"size_in_bytes": 8669
},
{
"relative_path": "audio/references/requirements.md",
"size_in_bytes": 4563
},
{
"relative_path": "audio/references/sfx.md",
"size_in_bytes": 3727
},
{
"relative_path": "audio/references/transcribe.md",
"size_in_bytes": 2987
},
{
"relative_path": "audio/references/tts-to-captions.md",
"size_in_bytes": 1975
},
{
"relative_path": "audio/references/tts.md",
"size_in_bytes": 12940
},
{
"relative_path": "audio/scripts/audio.mjs",
"size_in_bytes": 13014
},
{
"relative_path": "audio/scripts/heygen-tts.mjs",
"size_in_bytes": 4277
},
{
"relative_path": "audio/scripts/lib/audio-meta.mjs",
"size_in_bytes": 1166
},
{
"relative_path": "audio/scripts/lib/bgm-volume.mjs",
"size_in_bytes": 236
},
{
"relative_path": "audio/scripts/lib/bgm.mjs",
"size_in_bytes": 11257
},
{
"relative_path": "audio/scripts/lib/concurrency.mjs",
"size_in_bytes": 527
},
{
"relative_path": "audio/scripts/lib/gemini-auth.mjs",
"size_in_bytes": 1610
},
{
"relative_path": "audio/scripts/lib/gemini-auth.py",
"size_in_bytes": 1981
},
{
"relative_path": "audio/scripts/lib/gemini-auth_test.py",
"size_in_bytes": 4430
},
{
"relative_path": "audio/scripts/lib/gemini-tts.mjs",
"size_in_bytes": 4711
},
{
"relative_path": "audio/scripts/lib/heygen.mjs",
"size_in_bytes": 7363
},
{
"relative_path": "audio/scripts/lib/python.mjs",
"size_in_bytes": 2574
},
{
"relative_path": "audio/scripts/lib/sfx.mjs",
"size_in_bytes": 5435
},
{
"relative_path": "audio/scripts/lib/tts.mjs",
"size_in_bytes": 17346
},
{
"relative_path": "audio/scripts/lyria-recipe.py",
"size_in_bytes": 5023
},
{
"relative_path": "audio/scripts/wait-bgm.mjs",
"size_in_bytes": 5544
},
{
"relative_path": "luts/README.md",
"size_in_bytes": 1087
},
{
"relative_path": "luts/index.json",
"size_in_bytes": 1997
},
{
"relative_path": "references/audio.md",
"size_in_bytes": 2458
},
{
"relative_path": "references/grading.md",
"size_in_bytes": 6922
},
{
"relative_path": "references/media-treatment-recipes.md",
"size_in_bytes": 36072
},
{
"relative_path": "references/media-treatments.md",
"size_in_bytes": 13920
},
{
"relative_path": "references/memory.md",
"size_in_bytes": 3328
},
{
"relative_path": "references/meta.md",
"size_in_bytes": 7004
},
{
"relative_path": "references/operations.md",
"size_in_bytes": 14877
},
{
"relative_path": "references/resolve.md",
"size_in_bytes": 9793
},
{
"relative_path": "references/setup-providers.md",
"size_in_bytes": 7495
},
{
"relative_path": "references/telemetry-dashboard.md",
"size_in_bytes": 4200
},
{
"relative_path": "scripts/audio-duck.mjs",
"size_in_bytes": 4069
},
{
"relative_path": "scripts/dither.mjs",
"size_in_bytes": 9969
},
{
"relative_path": "scripts/eval.mjs",
"size_in_bytes": 14891
},
{
"relative_path": "scripts/lib/cutlist.mjs",
"size_in_bytes": 6095
},
{
"relative_path": "scripts/lib/duck.mjs",
"size_in_bytes": 3266
},
{
"relative_path": "scripts/lib/error-diffusion.mjs",
"size_in_bytes": 6631
},
{
"relative_path": "scripts/lib/index-gen.mjs",
"size_in_bytes": 1920
},
{
"relative_path": "scripts/lib/manifest.mjs",
"size_in_bytes": 7146
},
{
"relative_path": "scripts/lib/media-fetch.mjs",
"size_in_bytes": 2838
},
{
"relative_path": "scripts/lib/npx-sync.mjs",
"size_in_bytes": 2328
},
{
"relative_path": "scripts/lib/parakeet-words.mjs",
"size_in_bytes": 1149
},
{
"relative_path": "scripts/lib/prefs-store.mjs",
"size_in_bytes": 6604
},
{
"relative_path": "scripts/lib/recipe-store.mjs",
"size_in_bytes": 13020
},
{
"relative_path": "scripts/lib/telemetry.mjs",
"size_in_bytes": 6476
},
{
"relative_path": "scripts/lib/transcriptCutFade.mjs",
"size_in_bytes": 911
},
{
"relative_path": "scripts/lib/words.mjs",
"size_in_bytes": 764
},
{
"relative_path": "scripts/prefs.mjs",
"size_in_bytes": 2407
},
{
"relative_path": "scripts/recipe.mjs",
"size_in_bytes": 4040
},
{
"relative_path": "scripts/resolve.mjs",
"size_in_bytes": 657
},
{
"relative_path": "scripts/transcribe.mjs",
"size_in_bytes": 6664
},
{
"relative_path": "scripts/transcript-cut.mjs",
"size_in_bytes": 9137
}
][
{
"relative_path": ".gitignore",
"size_in_bytes": 17
},
{
"relative_path": "audio/references/captions/authoring.md",
"size_in_bytes": 10198
},
{
"relative_path": "audio/references/captions/motion.md",
"size_in_bytes": 5656
},
{
"relative_path": "audio/references/captions/transcript-handling.md",
"size_in_bytes": 5389
},
{
"relative_path": "audio/references/remove-background.md",
"size_in_bytes": 9157
},
{
"relative_path": "audio/references/transcribe.md",
"size_in_bytes": 3296
},
{
"relative_path": "luts/README.md",
"size_in_bytes": 1087
},
{
"relative_path": "luts/index.json",
"size_in_bytes": 1997
},
{
"relative_path": "references/grading.md",
"size_in_bytes": 7810
},
{
"relative_path": "references/media-treatment-recipes.md",
"size_in_bytes": 36607
},
{
"relative_path": "references/media-treatments.md",
"size_in_bytes": 14877
},
{
"relative_path": "references/memory.md",
"size_in_bytes": 4225
},
{
"relative_path": "references/meta.md",
"size_in_bytes": 5548
},
{
"relative_path": "references/operations.md",
"size_in_bytes": 10942
},
{
"relative_path": "references/resolve.md",
"size_in_bytes": 10342
},
{
"relative_path": "scripts/audio-duck.mjs",
"size_in_bytes": 4697
},
{
"relative_path": "scripts/dither.mjs",
"size_in_bytes": 9969
},
{
"relative_path": "scripts/eval.mjs",
"size_in_bytes": 14891
},
{
"relative_path": "scripts/lib/config-lock.mjs",
"size_in_bytes": 1520
},
{
"relative_path": "scripts/lib/cutlist.mjs",
"size_in_bytes": 6381
},
{
"relative_path": "scripts/lib/duck.mjs",
"size_in_bytes": 3345
},
{
"relative_path": "scripts/lib/error-diffusion.mjs",
"size_in_bytes": 6631
},
{
"relative_path": "scripts/lib/index-gen.mjs",
"size_in_bytes": 1924
},
{
"relative_path": "scripts/lib/manifest.mjs",
"size_in_bytes": 9424
},
{
"relative_path": "scripts/lib/media-fetch.mjs",
"size_in_bytes": 2838
},
{
"relative_path": "scripts/lib/media-home.mjs",
"size_in_bytes": 730
},
{
"relative_path": "scripts/lib/parakeet-words.mjs",
"size_in_bytes": 1149
},
{
"relative_path": "scripts/lib/prefs-store.mjs",
"size_in_bytes": 6617
},
{
"relative_path": "scripts/lib/recipe-store.mjs",
"size_in_bytes": 13205
},
{
"relative_path": "scripts/lib/transcriptCutFade.mjs",
"size_in_bytes": 911
},
{
"relative_path": "scripts/lib/words.mjs",
"size_in_bytes": 728
},
{
"relative_path": "scripts/prefs.mjs",
"size_in_bytes": 2407
},
{
"relative_path": "scripts/recipe.mjs",
"size_in_bytes": 4040
},
{
"relative_path": "scripts/resolve.mjs",
"size_in_bytes": 1633
},
{
"relative_path": "scripts/transcribe.mjs",
"size_in_bytes": 7824
},
{
"relative_path": "scripts/transcript-cut.mjs",
"size_in_bytes": 10894
}
]changed /skill_md_contents
"---\nname: media-use\ndescription: Agent Media OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal.\n---\n\n> Modified by Juicy Lucy AI, UAB for JuicyLucy Ads: CLI invocation, the review-approval reference and/or frontmatter (description layout, upstream-only metadata) adjusted at build time. See the plugin root NOTICE for details.\n\n\n# media-use\n\nThe media OS for HyperFrames: resolve · generate · operate · remember — every media type, one skill, zero context noise.\n\nFirst run: install and sign in to the `heygen` CLI (the free-usage path), then verify with `hyperframes media-use resolve --doctor`. Setup and providers: `references/setup-providers.md`.\n\n## Resolve — the one verb\n\n```bash\nhyperframes media-use resolve --type <type> --intent \"<description>\" --project <dir>\n```\n\nReturns one line: `resolved <id> → <path> (<type>, <metadata>)`. All search noise stays on disk.\n\n| Type | One-line intent |\n| ------- | -------------------------------------------------------------------------------- |\n| `bgm` | background music (HeyGen catalog, 10k+ tracks) |\n| `sfx` | sound effects (bundled 19-file library + catalog) |\n| `image` | photos, backgrounds (HeyGen asset search, 75k+ vectors) |\n| `icon` | icons, symbols (transparent) |\n| `logo` | official brand marks (theSVG → GitHub avatar → favicon; never redrawn) |\n| `voice` | TTS voiceover (HeyGen free-usage path; optional local Kokoro) |\n| `grade` | measured correction candidate; broad polish/stylization follows Media Treatments |\n| `lut` | user-provided or explicitly chosen reusable validated `.cube` file |\n\nBefore resolving fresh, list reusable candidates with `--candidates` and judge fit yourself — reuse rules, all flags, ingest (`--from`), and adopt are in `references/resolve.md`.\n\n## Treat broad visual feedback as media intent\n\nWhen a user explicitly asks to fix, polish, stylize, obscure, emphasize, or\nreveal photographic media, read `references/media-treatments.md` even if they\ndo not name color grading or an effect. Inspect the real `<img>`/`<video>`,\nchoose one primary intent, then use deterministic persistence and verification.\nUse a matching recipe as an optional tested seed, or inspect\n`hyperframes media-treatment --capabilities --json`, then request one relevant\nfamily/effect with `--capability <id>` and assemble a custom treatment from\ncanonical controls. Never load `--all` for ordinary authoring. A treatment may\ncompose correction, a preset, finishing, compatible shader effects, supported\nkeyframes, and optional Registry overlays. Add only source-justified bounded\ntuning and compatible parts, never effects merely to make the result look more\nsophisticated. Persist the final combined payload with\n`hyperframes media-treatment`.\n\nUse one progressively escalating workflow. For video, inspect one labeled\nearly/middle/late contact sheet rather than reading frames separately. Apply one\ncandidate and inspect one after-sheet for ordinary correction or polish.\nEscalate to individual frames or moving draft evidence only when the result is\nambiguous, temporal, stylized, LUT-based, HDR/LOG-sensitive, private, or\nbrand-critical.\n\nFor ordinary correction or polish, persist the final treatment's\npreset/adjustment JSON.\nDo not generate a `.cube` LUT merely to encode exposure, shadows, contrast, or\nwarmth. Use a LUT only when the user supplies one or the selected treatment\nexplicitly owns one. `resolve --type grade --for ... --analyze` is measurement\nevidence, not permission to replace the chosen treatment with a generated LUT.\nDo not recreate supported vignette, grain, blur, pixelate, color, or treatment\neffects with CSS/SVG overlays; that bypasses Studio controls and the canonical\npreview/render shader path.\n\n## Be proactive — run a media opportunity pass\n\nThe human usually can't tell which media would lift the piece. You can. When you build or review a composition, do **one** grounded scan and then **ask once** — don't silently add, and don't nag per asset.\n\nSurface an opportunity only when a concrete signal is present:\n\n| Signal detected | Offer |\n| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |\n| On-screen text / a script with no voiceover | TTS voiceover (audio engine) |\n| Emoji or a `<div>` styled as an icon | resolve real `icon`s |\n| Image that is a placeholder, tiny, or upscaled-looking | a better `image` (and/or upscale — see `references/operations.md`) |\n| Hard scene cuts / transitions with no sound | transition `sfx` |\n| A piece over ~10s with no music bed | `bgm` |\n| Footage that reads under/over-exposed or color-cast | a corrective grade (inspect it with `hyperframes media-treatment --selector '#hero' --analyze --json`) |\n| Photographic media that feels visually flat or off-topic | one specific source-appropriate preset or custom treatment, with the intended target named |\n| A meaningful media entrance/reveal that feels static | one supported seek-safe treatment animation; preserve color unless the request also justifies a preset |\n\nRules that keep this a help, not nagware: **grounded, not generic** (no signal → no suggestion); **opinionated + concrete** (propose the specific fix with defaults chosen — the human approves **all / some / none**); **once per project** (one consolidated ask; respect \"leave it\"); **surface, never silently mutate** (color grades especially: propose and preview — a gray-world \"correction\" ruins an intentional sunset or neon look).\n\n## Where to look — read only the file your task needs\n\n| Task | Read |\n| ------------------------------------------------------------------------- | -------------------------------- |\n| resolve / reuse / adopt / ingest, flags, cascade, inventory | `references/resolve.md` |\n| color grading, LUTs, smart grade (`--for`), grade-compare | `references/grading.md` |\n| voiceover / TTS, music, SFX, captions, transcription (audio engine) | `references/audio.md` |\n| cut / reframe / transform existing media, exact error diffusion, HEVC | `references/operations.md` |\n| source-aware creative treatments, realtime effects, overlays, reveals | `references/media-treatments.md` |\n| install + auth, provider table, RAM ladders, `--local-only`, `--provider` | `references/setup-providers.md` |\n| remembered preferences + frozen recipes (user memory) | `references/memory.md` |\n| ownership matrix, usage stats, telemetry, privacy (maintainer-facing) | `references/meta.md` |\n"
"---\nname: media-use\ndescription: Agent Media OS for a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal. In this plugin, music and voiceover come from `juicy`; sound effects come from the bundled library (`resolve --type sfx --local-only`), with no account.\n---\n\n> Modified by Juicy Lucy AI, UAB for JuicyLucy Ads: CLI invocations (pointed at the installed launchers, never npm latest), the review-approval reference, the pointer to HyperFrames' own plugin rules, third-party install instructions, references to omitted provider integrations and usage telemetry, unpinned install and HeyGen video instructions, the environment a script passes to its local preview server and the pattern it reads Chrome's local address with, one line break and/or frontmatter (description layout, upstream-only metadata) adjusted at build time. See the plugin root NOTICE for details.\n\n\n# media-use\n\nThe media OS for HyperFrames: resolve · generate · operate · remember — every media type, one skill, zero context noise.\n\nIn this plugin, music and voiceover come from the `juicy` command (the `juicy-cli` skill), and `~/.juicylucy/bin/hyperframes media-use resolve --type sfx --local-only` resolves sound effects from the renderer's own bundled library with no sign-in. Always pass `--local-only` for a sound effect: without it the resolve searches Openverse first and can return a sound licensed CC BY, whose credit an ad cannot carry. Never install or sign in to another media provider for an ad. Verify with `~/.juicylucy/bin/hyperframes media-use resolve --doctor`.\n\n## Resolve — the one verb\n\n```bash\n~/.juicylucy/bin/hyperframes media-use resolve --type <type> --intent \"<description>\" --project <dir>\n```\n\nReturns one line: `resolved <id> → <path> (<type>, <metadata>)`. All search noise stays on disk.\n\n| Type | One-line intent |\n| ------- | -------------------------------------------------------------------------------- |\n| `bgm` | not here: music comes from `~/.juicylucy/bin/juicy audio music` |\n| `sfx` | sound effects (the renderer's bundled library, with `--local-only`; no sign-in) |\n| `image` | photos, backgrounds (HeyGen asset search, 75k+ vectors) |\n| `icon` | icons, symbols (transparent) |\n| `logo` | official brand marks (theSVG → GitHub avatar → favicon; never redrawn) |\n| `voice` | not here: voiceover comes from `~/.juicylucy/bin/juicy audio voiceover` |\n| `grade` | measured correction candidate; broad polish/stylization follows Media Treatments |\n| `lut` | user-provided or explicitly chosen reusable validated `.cube` file |\n\nBefore resolving fresh, list reusable candidates with `--candidates` and judge fit yourself — reuse rules, all flags, ingest (`--from`), and adopt are in `references/resolve.md`.\n\n## Treat broad visual feedback as media intent\n\nWhen a user explicitly asks to fix, polish, stylize, obscure, emphasize, or\nreveal photographic media, read `references/media-treatments.md` even if they\ndo not name color grading or an effect. Inspect the real `<img>`/`<video>`,\nchoose one primary intent, then use deterministic persistence and verification.\nUse a matching recipe as an optional tested seed, or inspect\n`~/.juicylucy/bin/hyperframes media-treatment --capabilities --json`, then request one relevant\nfamily/effect with `--capability <id>` and assemble a custom treatment from\ncanonical controls. Never load `--all` for ordinary authoring. A treatment may\ncompose correction, a preset, finishing, compatible shader effects, supported\nkeyframes, and optional Registry overlays. Add only source-justified bounded\ntuning and compatible parts, never effects merely to make the result look more\nsophisticated. Persist the final combined payload with\n`~/.juicylucy/bin/hyperframes media-treatment`.\n\nUse one progressively escalating workflow. For video, inspect one labeled\nearly/middle/late contact sheet rather than reading frames separately. Apply one\ncandidate and inspect one after-sheet for ordinary correction or polish.\nEscalate to individual frames or moving draft evidence only when the result is\nambiguous, temporal, stylized, LUT-based, HDR/LOG-sensitive, private, or\nbrand-critical.\n\nFor ordinary correction or polish, persist the final treatment's\npreset/adjustment JSON.\nDo not generate a `.cube` LUT merely to encode exposure, shadows, contrast, or\nwarmth. Use a LUT only when the user supplies one or the selected treatment\nexplicitly owns one. `resolve --type grade --for ... --analyze` is measurement\nevidence, not permission to replace the chosen treatment with a generated LUT.\nDo not recreate supported vignette, grain, blur, pixelate, color, or treatment\neffects with CSS/SVG overlays; that bypasses Studio controls and the canonical\npreview/render shader path.\n\n## Be proactive — run a media opportunity pass\n\nThe human usually can't tell which media would lift the piece. You can. When you build or review a composition, do **one** grounded scan and then **ask once** — don't silently add, and don't nag per asset.\n\nSurface an opportunity only when a concrete signal is present:\n\n| Signal detected | Offer |\n| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |\n| On-screen text / a script with no voiceover | TTS voiceover (audio engine) |\n| Emoji or a `<div>` styled as an icon | resolve real `icon`s |\n| Image that is a placeholder, tiny, or upscaled-looking | a better `image` (and/or upscale — see `references/operations.md`) |\n| Hard scene cuts / transitions with no sound | transition `sfx` |\n| A piece over ~10s with no music bed | `bgm` |\n| Footage that reads under/over-exposed or color-cast | a corrective grade (inspect it with `~/.juicylucy/bin/hyperframes media-treatment --selector '#hero' --analyze --json`) |\n| Photographic media that feels visually flat or off-topic | one specific source-appropriate preset or custom treatment, with the intended target named |\n| A meaningful media entrance/reveal that feels static | one supported seek-safe treatment animation; preserve color unless the request also justifies a preset |\n\nRules that keep this a help, not nagware: **grounded, not generic** (no signal → no suggestion); **opinionated + concrete** (propose the specific fix with defaults chosen — the human approves **all / some / none**); **once per project** (one consolidated ask; respect \"leave it\"); **surface, never silently mutate** (color grades especially: propose and preview — a gray-world \"correction\" ruins an intentional sunset or neon look).\n\n## Where to look — read only the file your task needs\n\n| Task | Read |\n| ------------------------------------------------------------------------- | -------------------------------- |\n| resolve / reuse / adopt / ingest, flags, cascade, inventory | `references/resolve.md` |\n| color grading, LUTs, smart grade (`--for`), grade-compare | `references/grading.md` |\n| captions, transcription | `audio/references/transcribe.md` |\n| cut / reframe / transform existing media, exact error diffusion, HEVC | `references/operations.md` |\n| source-aware creative treatments, realtime effects, overlays, reveals | `references/media-treatments.md` |\n| remembered preferences + frozen recipes (user memory) | `references/memory.md` |\n| ownership matrix, usage stats, telemetry, privacy (maintainer-facing) | `references/meta.md` |\n"
Full snapshot data
{
"description": "Agent Media OS for a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal. In this plugin, music and voiceover come from `juicy`; sound effects come from the bundled library (`resolve --type sfx --local-only`), with no account.",
"included_files": [
{
"relative_path": ".gitignore",
"size_in_bytes": 17
},
{
"relative_path": "audio/references/captions/authoring.md",
"size_in_bytes": 10198
},
{
"relative_path": "audio/references/captions/motion.md",
"size_in_bytes": 5656
},
{
"relative_path": "audio/references/captions/transcript-handling.md",
"size_in_bytes": 5389
},
{
"relative_path": "audio/references/remove-background.md",
"size_in_bytes": 9157
},
{
"relative_path": "audio/references/transcribe.md",
"size_in_bytes": 3296
},
{
"relative_path": "luts/README.md",
"size_in_bytes": 1087
},
{
"relative_path": "luts/index.json",
"size_in_bytes": 1997
},
{
"relative_path": "references/grading.md",
"size_in_bytes": 7810
},
{
"relative_path": "references/media-treatment-recipes.md",
"size_in_bytes": 36607
},
{
"relative_path": "references/media-treatments.md",
"size_in_bytes": 14877
},
{
"relative_path": "references/memory.md",
"size_in_bytes": 4225
},
{
"relative_path": "references/meta.md",
"size_in_bytes": 5548
},
{
"relative_path": "references/operations.md",
"size_in_bytes": 10942
},
{
"relative_path": "references/resolve.md",
"size_in_bytes": 10342
},
{
"relative_path": "scripts/audio-duck.mjs",
"size_in_bytes": 4697
},
{
"relative_path": "scripts/dither.mjs",
"size_in_bytes": 9969
},
{
"relative_path": "scripts/eval.mjs",
"size_in_bytes": 14891
},
{
"relative_path": "scripts/lib/config-lock.mjs",
"size_in_bytes": 1520
},
{
"relative_path": "scripts/lib/cutlist.mjs",
"size_in_bytes": 6381
},
{
"relative_path": "scripts/lib/duck.mjs",
"size_in_bytes": 3345
},
{
"relative_path": "scripts/lib/error-diffusion.mjs",
"size_in_bytes": 6631
},
{
"relative_path": "scripts/lib/index-gen.mjs",
"size_in_bytes": 1924
},
{
"relative_path": "scripts/lib/manifest.mjs",
"size_in_bytes": 9424
},
{
"relative_path": "scripts/lib/media-fetch.mjs",
"size_in_bytes": 2838
},
{
"relative_path": "scripts/lib/media-home.mjs",
"size_in_bytes": 730
},
{
"relative_path": "scripts/lib/parakeet-words.mjs",
"size_in_bytes": 1149
},
{
"relative_path": "scripts/lib/prefs-store.mjs",
"size_in_bytes": 6617
},
{
"relative_path": "scripts/lib/recipe-store.mjs",
"size_in_bytes": 13205
},
{
"relative_path": "scripts/lib/transcriptCutFade.mjs",
"size_in_bytes": 911
},
{
"relative_path": "scripts/lib/words.mjs",
"size_in_bytes": 728
},
{
"relative_path": "scripts/prefs.mjs",
"size_in_bytes": 2407
},
{
"relative_path": "scripts/recipe.mjs",
"size_in_bytes": 4040
},
{
"relative_path": "scripts/resolve.mjs",
"size_in_bytes": 1633
},
{
"relative_path": "scripts/transcribe.mjs",
"size_in_bytes": 7824
},
{
"relative_path": "scripts/transcript-cut.mjs",
"size_in_bytes": 10894
}
],
"name": "media-use",
"skill_md_contents": "---\nname: media-use\ndescription: Agent Media OS for a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal. In this plugin, music and voiceover come from `juicy`; sound effects come from the bundled library (`resolve --type sfx --local-only`), with no account.\n---\n\n> Modified by Juicy Lucy AI, UAB for JuicyLucy Ads: CLI invocations (pointed at the installed launchers, never npm latest), the review-approval reference, the pointer to HyperFrames' own plugin rules, third-party install instructions, references to omitted provider integrations and usage telemetry, unpinned install and HeyGen video instructions, the environment a script passes to its local preview server and the pattern it reads Chrome's local address with, one line break and/or frontmatter (description layout, upstream-only metadata) adjusted at build time. See the plugin root NOTICE for details.\n\n\n# media-use\n\nThe media OS for HyperFrames: resolve · generate · operate · remember — every media type, one skill, zero context noise.\n\nIn this plugin, music and voiceover come from the `juicy` command (the `juicy-cli` skill), and `~/.juicylucy/bin/hyperframes media-use resolve --type sfx --local-only` resolves sound effects from the renderer's own bundled library with no sign-in. Always pass `--local-only` for a sound effect: without it the resolve searches Openverse first and can return a sound licensed CC BY, whose credit an ad cannot carry. Never install or sign in to another media provider for an ad. Verify with `~/.juicylucy/bin/hyperframes media-use resolve --doctor`.\n\n## Resolve — the one verb\n\n```bash\n~/.juicylucy/bin/hyperframes media-use resolve --type <type> --intent \"<description>\" --project <dir>\n```\n\nReturns one line: `resolved <id> → <path> (<type>, <metadata>)`. All search noise stays on disk.\n\n| Type | One-line intent |\n| ------- | -------------------------------------------------------------------------------- |\n| `bgm` | not here: music comes from `~/.juicylucy/bin/juicy audio music` |\n| `sfx` | sound effects (the renderer's bundled library, with `--local-only`; no sign-in) |\n| `image` | photos, backgrounds (HeyGen asset search, 75k+ vectors) |\n| `icon` | icons, symbols (transparent) |\n| `logo` | official brand marks (theSVG → GitHub avatar → favicon; never redrawn) |\n| `voice` | not here: voiceover comes from `~/.juicylucy/bin/juicy audio voiceover` |\n| `grade` | measured correction candidate; broad polish/stylization follows Media Treatments |\n| `lut` | user-provided or explicitly chosen reusable validated `.cube` file |\n\nBefore resolving fresh, list reusable candidates with `--candidates` and judge fit yourself — reuse rules, all flags, ingest (`--from`), and adopt are in `references/resolve.md`.\n\n## Treat broad visual feedback as media intent\n\nWhen a user explicitly asks to fix, polish, stylize, obscure, emphasize, or\nreveal photographic media, read `references/media-treatments.md` even if they\ndo not name color grading or an effect. Inspect the real `<img>`/`<video>`,\nchoose one primary intent, then use deterministic persistence and verification.\nUse a matching recipe as an optional tested seed, or inspect\n`~/.juicylucy/bin/hyperframes media-treatment --capabilities --json`, then request one relevant\nfamily/effect with `--capability <id>` and assemble a custom treatment from\ncanonical controls. Never load `--all` for ordinary authoring. A treatment may\ncompose correction, a preset, finishing, compatible shader effects, supported\nkeyframes, and optional Registry overlays. Add only source-justified bounded\ntuning and compatible parts, never effects merely to make the result look more\nsophisticated. Persist the final combined payload with\n`~/.juicylucy/bin/hyperframes media-treatment`.\n\nUse one progressively escalating workflow. For video, inspect one labeled\nearly/middle/late contact sheet rather than reading frames separately. Apply one\ncandidate and inspect one after-sheet for ordinary correction or polish.\nEscalate to individual frames or moving draft evidence only when the result is\nambiguous, temporal, stylized, LUT-based, HDR/LOG-sensitive, private, or\nbrand-critical.\n\nFor ordinary correction or polish, persist the final treatment's\npreset/adjustment JSON.\nDo not generate a `.cube` LUT merely to encode exposure, shadows, contrast, or\nwarmth. Use a LUT only when the user supplies one or the selected treatment\nexplicitly owns one. `resolve --type grade --for ... --analyze` is measurement\nevidence, not permission to replace the chosen treatment with a generated LUT.\nDo not recreate supported vignette, grain, blur, pixelate, color, or treatment\neffects with CSS/SVG overlays; that bypasses Studio controls and the canonical\npreview/render shader path.\n\n## Be proactive — run a media opportunity pass\n\nThe human usually can't tell which media would lift the piece. You can. When you build or review a composition, do **one** grounded scan and then **ask once** — don't silently add, and don't nag per asset.\n\nSurface an opportunity only when a concrete signal is present:\n\n| Signal detected | Offer |\n| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |\n| On-screen text / a script with no voiceover | TTS voiceover (audio engine) |\n| Emoji or a `<div>` styled as an icon | resolve real `icon`s |\n| Image that is a placeholder, tiny, or upscaled-looking | a better `image` (and/or upscale — see `references/operations.md`) |\n| Hard scene cuts / transitions with no sound | transition `sfx` |\n| A piece over ~10s with no music bed | `bgm` |\n| Footage that reads under/over-exposed or color-cast | a corrective grade (inspect it with `~/.juicylucy/bin/hyperframes media-treatment --selector '#hero' --analyze --json`) |\n| Photographic media that feels visually flat or off-topic | one specific source-appropriate preset or custom treatment, with the intended target named |\n| A meaningful media entrance/reveal that feels static | one supported seek-safe treatment animation; preserve color unless the request also justifies a preset |\n\nRules that keep this a help, not nagware: **grounded, not generic** (no signal → no suggestion); **opinionated + concrete** (propose the specific fix with defaults chosen — the human approves **all / some / none**); **once per project** (one consolidated ask; respect \"leave it\"); **surface, never silently mutate** (color grades especially: propose and preview — a gray-world \"correction\" ruins an intentional sunset or neon look).\n\n## Where to look — read only the file your task needs\n\n| Task | Read |\n| ------------------------------------------------------------------------- | -------------------------------- |\n| resolve / reuse / adopt / ingest, flags, cascade, inventory | `references/resolve.md` |\n| color grading, LUTs, smart grade (`--for`), grade-compare | `references/grading.md` |\n| captions, transcription | `audio/references/transcribe.md` |\n| cut / reframe / transform existing media, exact error diffusion, HEVC | `references/operations.md` |\n| source-aware creative treatments, realtime effects, overlays, reveals | `references/media-treatments.md` |\n| remembered preferences + frozen recipes (user memory) | `references/memory.md` |\n| ownership matrix, usage stats, telemetry, privacy (maintainer-facing) | `references/meta.md` |\n"
}SHA-256 of public snapshot: 90f7d189bc6848a90d1e0006b203e833bb374db6e281e8c1164cce1b867e2531