← UnityCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Unity
Snapshot Sep 30, 2026 · 23:16 UTC · version 0.1.6-beta
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Scans the scene and audio assets to appropriately route Audio Sources into existing Audio Mixer Groups, classifying each source by what it plays. Use when the user asks about cleaning up mixer assignments, routing audio through a mixer, or which group a sound belongs in. Creating mixers and groups, and setting volumes, are not automated — the skill inventories what exists and asks the user to add anything missing.",
"included_files": [
{
"relative_path": "references/api.md",
"size_in_bytes": 8279
}
],
"name": "audio-setup-mixers",
"skill_md_contents": "---\nname: audio-setup-mixers\ndescription: Scans the scene and audio assets to appropriately route Audio Sources into existing Audio Mixer Groups, classifying each source by what it plays. Use when the user asks about cleaning up mixer assignments, routing audio through a mixer, or which group a sound belongs in. Creating mixers and groups, and setting volumes, are not automated — the skill inventories what exists and asks the user to add anything missing.\n---\n# Audio Mixer Setup\n\nRouting an Audio Source to a mixer group is a scene edit that only a running Editor can\nmake, so this skill needs a live Editor it can execute C# in. Step 0 establishes that\nbefore anything else.\n\n**What this skill automates, and what it hands back to you.** Inspecting mixers and\nrouting Audio Sources into groups is entirely public Unity API, and that is the tedious\npart — walking dozens of sources and classifying them by what they play. Creating a mixer\nor a group has no public API; it exists only on types Unity does not commit to keeping\nstable. So this skill will not create groups behind your back. It inventories what exists,\nproposes the routing, asks you to add any missing group in the Audio Mixer window, and\nthen does all the routing itself.\n\nThat is a deliberate limit, not a gap to work around. Do not reach for reflection to\ncreate groups, and do not hand-edit a `.mixer` file — mixer structure is not safely\nauthorable blind.\n\n## Step 0: Confirm you can run C# in the Editor\n\nEvery C# step below runs inside a live Editor through the Unity CLI. **The `unity-cli` skill\nowns getting you there** — installing the CLI, confirming a connected Editor, adding the\nproject's `com.unity.pipeline` package, telling a genuinely absent Editor apart from one\nstuck in Safe Mode, and discovering the Editor's command catalog. Follow it first; don't\nre-derive any of it here.\n\nTwo things it can't know for you:\n\n- **You need `eval` in particular**, not just a reachable Editor. Confirm it appears in the\n catalog. Its presence depends on the Pipeline package version, not on the CLI, so a\n healthy install can still lack it — if it's missing, say so and stop.\n- **Do not fall back to editing `.mixer` files by hand.** Mixer routing is not safely\n authorable blind, so an unreachable Editor is a stop, not a cue to improvise.\n\nOnce `eval` is available, that is how each C# step below runs.\n\nRun C# through the connected Editor with the `eval` command. Discover its parameter shape\nfrom `unity command --format json` rather than assuming one — the inline form is\n`unity command eval --caller plugin --skill audio-setup-mixers --code '<snippet>'`, and some Pipeline versions also register\n`eval_file` for running a snippet from a file. **Check the catalog before reaching for\n`eval_file`; it is frequently absent.** `unity command` defaults to a 30 second timeout.\n\n### Passing C# to `eval`\n\n`eval` compiles a **statement block, not a file**. Two consequences, both of which cause a\ncompile error rather than a warning:\n\n- **No `using` directives.** The compiler reads `using UnityEngine;` as a resource-disposal\n statement and rejects it (`CS0210`).\n- **Types must be fully qualified.** A bare `AssetDatabase` or `Volume` does not resolve\n (`CS0246` / `CS0103`), and a bare `Object` is ambiguous with `object` (`CS0104`).\n\nWhere a snippet below is written as a file — with usings, for readability, or because it is\nmeant to be saved into the project — qualify the types before passing it to `eval`.\n\n## Step 1: Pre-flight\nIf the user hasn't explicitly asked for Audio Mixers, confirm that they want to proceed with setting them up.\n\nThen inventory what already exists with the mixer-inventory snippet in\n[references/api.md](references/api.md), run through the Editor as described in Step 0. That gives\nyou every mixer in the project and the group names in each.\n\nIt returns a flat list of groups, not the parent/child tree. That is enough to route into, and it\nis all the public API exposes. If the hierarchy matters for the conversation, ask the user to look\nat the Audio Mixer window and describe it — don't reach for the non-public tree API to find out.\n\n**If the project has no mixer at all,** say so and stop rather than improvising one: creating a\nmixer has no public API. Ask the user to create one (Window → Audio → Audio Mixer, then the **+**\nnext to Mixers), and pick up from here once it exists.\n\n## Step 2: Find scene references\nFind all Audio Source components, look at their assigned Generator asset names, and generalize a fitting class or category of the sound name, ideally something already existing. \nExamples for Audio Clip asset names:\n- \"FootStep4_Sound\" -> Foley\n- \"Dialogue_Female_Scene4\" -> Vox/Voice/Dialogue\n- \"GunShot\" -> SFX\n- \"Menu_Theme_Variation\" -> Music\n\nIf the assigned asset isn't descriptive or non-existing, try to look at the GameObject name or potential adjacent MonoBehaviour names.\nAsk to create an Uncategorized group if it seems hard or confidence is low in classifying how an Audio Source is being used.\n\n## Step 3: Agree the group list, and get any missing groups created\nPresent the classification from Step 2 as a proposed routing — each Audio Source and the group you\nintend to send it to — and revise it with the user.\n\n**WAIT for the user to respond before proceeding.**\n\nPrefer an existing group when it genuinely covers the category, even if you'd have named it\ndifferently. But **don't collapse categories that a mixing engineer would keep apart** — Foley is a\nsubset of SFX, not another word for it, so a gunshot does not belong in a `Foley` group just because\none exists. When the existing groups only partly cover your categories, say which ones fit and which\nneed a new group, and let the user decide.\n\nFor categories with no matching group, you cannot create the group — there is no public API for it.\nHand it over precisely, naming the mixer and the exact group names, as shown at the end of\n[references/api.md](references/api.md). Then **re-run the inventory snippet to confirm the groups\nexist and check their spelling** before routing. Don't assume the user did it, and don't assume\nthey spelled it the way you asked.\n\n## Step 4: Route the Audio Sources\nWith the group list settled and confirmed present, assign each Audio Source's output group using the\nrouting snippet in [references/api.md](references/api.md). It is public API throughout, and it wraps\nthe whole pass in a single undo step so the user can back all of it out at once.\n\n**Key the mapping on the identifier you classified by.** Step 2 reads the clip asset name first and\nonly falls back to the GameObject name, so the mapping accepts either — the two are different\nidentifiers and keying on the wrong one drops sources.\n\nThree things to report rather than assume:\n\n- **Any `NO SUCH GROUP` entries the snippet returns.** That means a group you expected is not in the\n mixer — usually a spelling difference. Resolve it with the user, don't silently skip the source.\n- **Any `NOT IN THE MAPPING` entries.** Those are Audio Sources your classification missed. Reporting\n a successful routing while sources were quietly left unrouted is the worst outcome here, because it\n reads as success.\n- **The scene was modified, not the mixer asset.** Routing lives on the Audio Source, so it only\n persists once the scene is saved. Tell the user, and save only with their agreement.\n\n**Volume, effects, and re-parenting are out of scope.** Those live on non-public API. If the user\nasks for them, say the routing is done and point them at the Audio Mixer window for the mix itself.\n\n## References\nSee [references/api.md](references/api.md)"
}SHA-256 of public snapshot: 2a6f29ad58b222a50528f37dcb5dea5cd44361b121ecf5629c3ff5d32a205455