media-use
Generated source view for the actual executable
in-progress/media-useskill. The durable routing article is Frontend and Design Skills. Source: skills/in-progress/media-use/SKILL.md
Runtime Source
| Field | Value |
|---|---|
| Category | in-progress |
| Origin | unknown |
| Slug | media-use |
| Source slug | media-use |
| Family | Frontend and Design Skills |
| Source | skills/in-progress/media-use/SKILL.md |
Bundled Resources
These files are part of the executable skill folder and must be preserved with the skill source.
| File | Role |
|---|---|
.gitignore |
Bundled resource |
audio/assets/sfx/CREDITS.md |
Bundled resource |
audio/assets/sfx/chime.mp3 |
Bundled resource |
audio/assets/sfx/click-soft.mp3 |
Bundled resource |
audio/assets/sfx/click.mp3 |
Bundled resource |
audio/assets/sfx/error.mp3 |
Bundled resource |
audio/assets/sfx/glitch-1.mp3 |
Bundled resource |
audio/assets/sfx/glitch-2.mp3 |
Bundled resource |
audio/assets/sfx/glitch-3.mp3 |
Bundled resource |
audio/assets/sfx/impact-bass-1.mp3 |
Bundled resource |
audio/assets/sfx/impact-bass-2.mp3 |
Bundled resource |
audio/assets/sfx/key-press.mp3 |
Bundled resource |
audio/assets/sfx/manifest.json |
Bundled resource |
audio/assets/sfx/notification.mp3 |
Bundled resource |
audio/assets/sfx/ping.mp3 |
Bundled resource |
audio/assets/sfx/pop.mp3 |
Bundled resource |
audio/assets/sfx/riser.mp3 |
Bundled resource |
audio/assets/sfx/sparkle.mp3 |
Bundled resource |
audio/assets/sfx/typing.mp3 |
Bundled resource |
audio/assets/sfx/whoosh-cinematic.mp3 |
Bundled resource |
audio/assets/sfx/whoosh-short.mp3 |
Bundled resource |
audio/assets/sfx/whoosh.mp3 |
Bundled resource |
audio/references/bgm.md |
Bundled resource |
audio/references/captions/authoring.md |
Bundled resource |
audio/references/captions/motion.md |
Bundled resource |
audio/references/captions/transcript-handling.md |
Bundled resource |
audio/references/remove-background.md |
Bundled resource |
audio/references/requirements.md |
Bundled resource |
audio/references/sfx.md |
Bundled resource |
audio/references/transcribe.md |
Bundled resource |
audio/references/tts-to-captions.md |
Bundled resource |
audio/references/tts.md |
Bundled resource |
audio/scripts/audio.mjs |
Executable helper |
audio/scripts/audio.test.mjs |
Executable helper |
audio/scripts/heygen-tts.mjs |
Executable helper |
audio/scripts/lib/bgm.mjs |
Executable helper |
audio/scripts/lib/bgm.test.mjs |
Executable helper |
audio/scripts/lib/concurrency.mjs |
Executable helper |
audio/scripts/lib/concurrency.test.mjs |
Executable helper |
audio/scripts/lib/heygen.mjs |
Executable helper |
audio/scripts/lib/heygen.test.mjs |
Executable helper |
audio/scripts/lib/python.mjs |
Executable helper |
audio/scripts/lib/python.test.mjs |
Executable helper |
audio/scripts/lib/sfx.mjs |
Executable helper |
audio/scripts/lib/sfx.test.mjs |
Executable helper |
audio/scripts/lib/tts.mjs |
Executable helper |
audio/scripts/lib/tts.spawn.test.mjs |
Executable helper |
audio/scripts/lib/tts.test.mjs |
Executable helper |
audio/scripts/lyria-recipe.py |
Executable helper |
audio/scripts/wait-bgm.mjs |
Executable helper |
luts/README.md |
Bundled resource |
luts/index.json |
Bundled resource |
references/audio.md |
Progressive reference |
references/grading.md |
Progressive reference |
references/media-treatment-recipes.md |
Progressive reference |
references/media-treatments.md |
Progressive reference |
references/memory.md |
Progressive reference |
references/meta.md |
Progressive reference |
references/operations.md |
Progressive reference |
references/resolve.md |
Progressive reference |
references/setup-providers.md |
Progressive reference |
references/telemetry-dashboard.md |
Progressive reference |
scripts/audio-duck.mjs |
Executable helper |
scripts/dither.mjs |
Executable helper |
scripts/dither.test.mjs |
Executable helper |
scripts/eval.mjs |
Executable helper |
scripts/lib/adopt.mjs |
Executable helper |
scripts/lib/adopt.test.mjs |
Executable helper |
scripts/lib/bgm-provider.mjs |
Executable helper |
scripts/lib/brand-provider.mjs |
Executable helper |
scripts/lib/bundled-sfx-provider.mjs |
Executable helper |
scripts/lib/bundled-sfx-provider.test.mjs |
Executable helper |
scripts/lib/cache.mjs |
Executable helper |
scripts/lib/candidates.mjs |
Executable helper |
scripts/lib/candidates.test.mjs |
Executable helper |
scripts/lib/codex-provider.mjs |
Executable helper |
scripts/lib/codex-provider.test.mjs |
Executable helper |
scripts/lib/coverage.test.mjs |
Executable helper |
scripts/lib/cube-build.mjs |
Executable helper |
scripts/lib/cube-build.test.mjs |
Executable helper |
scripts/lib/cube-validate.mjs |
Executable helper |
scripts/lib/cube-validate.test.mjs |
Executable helper |
scripts/lib/cutlist.mjs |
Executable helper |
scripts/lib/cutlist.test.mjs |
Executable helper |
scripts/lib/duck.mjs |
Executable helper |
scripts/lib/duck.test.mjs |
Executable helper |
scripts/lib/error-diffusion.mjs |
Executable helper |
scripts/lib/error-diffusion.test.mjs |
Executable helper |
scripts/lib/freeze.mjs |
Executable helper |
scripts/lib/freeze.test.mjs |
Executable helper |
scripts/lib/grade-analyzer.mjs |
Executable helper |
scripts/lib/grade-analyzer.test.mjs |
Executable helper |
scripts/lib/heygen-cli.mjs |
Executable helper |
scripts/lib/heygen-cli.test.mjs |
Executable helper |
scripts/lib/heygen-search.mjs |
Executable helper |
scripts/lib/heygen-search.test.mjs |
Executable helper |
scripts/lib/heygen-video-provider.mjs |
Executable helper |
scripts/lib/heygen-video-provider.test.mjs |
Executable helper |
scripts/lib/image-provider.mjs |
Executable helper |
scripts/lib/index-gen.mjs |
Executable helper |
scripts/lib/local-models.mjs |
Executable helper |
scripts/lib/local-models.test.mjs |
Executable helper |
scripts/lib/local-run.mjs |
Executable helper |
scripts/lib/local-run.test.mjs |
Executable helper |
scripts/lib/logo-provider.mjs |
Executable helper |
scripts/lib/logo-provider.test.mjs |
Executable helper |
scripts/lib/ltx-video-provider.mjs |
Executable helper |
scripts/lib/ltx-video-provider.test.mjs |
Executable helper |
scripts/lib/lut-preset-provider.mjs |
Executable helper |
scripts/lib/lut-preset-provider.test.mjs |
Executable helper |
scripts/lib/manifest.mjs |
Executable helper |
scripts/lib/manifest.test.mjs |
Executable helper |
scripts/lib/match.mjs |
Executable helper |
scripts/lib/mflux-provider.mjs |
Executable helper |
scripts/lib/misses.mjs |
Executable helper |
scripts/lib/misses.test.mjs |
Executable helper |
scripts/lib/npx-sync.mjs |
Executable helper |
scripts/lib/npx-sync.test.mjs |
Executable helper |
scripts/lib/parakeet-words.mjs |
Executable helper |
scripts/lib/parakeet-words.test.mjs |
Executable helper |
scripts/lib/prefs-store.mjs |
Executable helper |
scripts/lib/prefs-store.test.mjs |
Executable helper |
scripts/lib/probe.mjs |
Executable helper |
scripts/lib/probe.test.mjs |
Executable helper |
scripts/lib/providers.mjs |
Executable helper |
scripts/lib/recipe-store.mjs |
Executable helper |
scripts/lib/recipe-store.test.mjs |
Executable helper |
scripts/lib/registry.mjs |
Executable helper |
scripts/lib/registry.test.mjs |
Executable helper |
scripts/lib/search.mjs |
Executable helper |
scripts/lib/search.test.mjs |
Executable helper |
scripts/lib/sfx-provider.mjs |
Executable helper |
scripts/lib/specs.mjs |
Executable helper |
scripts/lib/specs.test.mjs |
Executable helper |
scripts/lib/stats.mjs |
Executable helper |
scripts/lib/stats.test.mjs |
Executable helper |
scripts/lib/telemetry.mjs |
Executable helper |
scripts/lib/telemetry.test.mjs |
Executable helper |
scripts/lib/tts-local-provider.mjs |
Executable helper |
scripts/lib/tts-local-provider.test.mjs |
Executable helper |
scripts/lib/usage.mjs |
Executable helper |
scripts/lib/usage.test.mjs |
Executable helper |
scripts/lib/voice-provider.mjs |
Executable helper |
scripts/lib/voice-provider.test.mjs |
Executable helper |
scripts/lib/words.mjs |
Executable helper |
scripts/prefs.mjs |
Executable helper |
scripts/recipe.mjs |
Executable helper |
scripts/resolve.mjs |
Executable helper |
scripts/resolve.test.mjs |
Executable helper |
scripts/transcribe.mjs |
Executable helper |
scripts/transcript-cut.mjs |
Executable helper |
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.
Skill Source
---
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.
---
# 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 `node <SKILL_DIR>/scripts/resolve.mjs --doctor`. Setup and providers: `references/setup-providers.md`.
## Resolve — the one verb
```bash
node <SKILL_DIR>/scripts/resolve.mjs --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) |
| `image` | photos, backgrounds (HeyGen asset search, 75k+ vectors) |
| `icon` | icons, symbols (transparent) |
| `logo` | official brand marks (svgl → simple-icons → GitHub avatar → favicon; never redrawn) |
| `voice` | TTS voiceover (HeyGen free-usage path; optional local Kokoro) |
| `grade` | measured correction candidate; broad polish/stylization follows Media Treatments |
| `lut` | user-provided or explicitly chosen reusable validated `.cube` file |
Before resolving fresh, list reusable candidates with `--candidates` and judge fit yourself — reuse rules, all flags, ingest (`--from`), and adopt are in `references/resolve.md`.
## Treat broad visual feedback as media intent
When a user explicitly asks to fix, polish, stylize, obscure, emphasize, or
reveal photographic media, read `references/media-treatments.md` even if they
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
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`.
Use one progressively escalating workflow. For video, inspect one labeled
early/middle/late contact sheet rather than reading frames separately. Apply one
candidate and inspect one after-sheet for ordinary correction or polish.
Escalate to individual frames or moving draft evidence only when the result is
ambiguous, temporal, stylized, LUT-based, HDR/LOG-sensitive, private, or
brand-critical.
For ordinary correction or polish, persist the final treatment's
preset/adjustment JSON.
Do not generate a `.cube` LUT merely to encode exposure, shadows, contrast, or
warmth. Use a LUT only when the user supplies one or the selected treatment
explicitly owns one. `resolve --type grade --for ... --analyze` is measurement
evidence, not permission to replace the chosen treatment with a generated LUT.
Do not recreate supported vignette, grain, blur, pixelate, color, or treatment
effects with CSS/SVG overlays; that bypasses Studio controls and the canonical
preview/render shader path.
## Be proactive — run a media opportunity pass
The 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.
Surface an opportunity only when a concrete signal is present:
| Signal detected | Offer |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| On-screen text / a script with no voiceover | TTS voiceover (audio engine) |
| Emoji or a `<div>` styled as an icon | resolve real `icon`s |
| 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`) |
| 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 |
Rules 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).
## Where to look — read only the file your task needs
| Task | Read |
| ------------------------------------------------------------------------- | -------------------------------- |
| 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` |
| 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` |
Timeline
- 2026-09-12 | Generated a browseable source page from the actual executable skill file. Source: skills/in-progress/media-use/SKILL.md