Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add kunitoki/sonic-skills --skill game-audio-guidegit clone --depth 1 https://github.com/kunitoki/sonic-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kunitoki/sonic-skills/game-audio-guide)<a href="https://agentmods.dev/skills/kunitoki/sonic-skills/game-audio-guide"><img src="https://agentmods.dev/badge/skills/kunitoki/sonic-skills/game-audio-guide.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00106 | $0.01088 |
| Opus 5 | $0.00053 | $0.00544 |
| Sonnet 5 | $0.00021 | $0.00218 |
| Haiku 4.5 | $0.00011 | $0.00109 |
Grade A, and why
game-audio-guide scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 76 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Game Audio Plugin Implementation Guide
Steps apply to both Wwise and FMOD unless noted.
Step 1 — Choose middleware and plugin type
| Middleware | Effect plugin | Source plugin | Mixer plugin |
|---|---|---|---|
| Wwise | IAkInPlaceEffectPlugin or IAkOutOfPlaceEffectPlugin |
IAkSourcePlugin |
IAkMixerEffectPlugin |
| FMOD | FMOD_DSP_DESCRIPTION (process callback) |
FMOD_DSP_DESCRIPTION (generatetone or read) |
FMOD_DSP_DESCRIPTION on a bus |
- Effect plugins modify an existing signal in place or out of place.
- Source plugins generate audio from scratch (synthesisers, procedural audio).
- Mixer plugins operate on a mix bus and see the summed signal from all inputs.
- Confirm the plugin type before writing any code — changing it later requires reworking the descriptor and callback signatures.
Step 2 — Set up the plugin descriptor
Wwise:
- Declare an
AkPluginInfostruct with your company ID, plugin ID, and plugin type. - Implement
GetPluginInfo()to return it from your plugin class. - Provide a
CreateXxxfactory function and register it withAK::SoundEngine::RegisterPlugin. - Implement a matching
AkPluginParamBasesubclass for parameter storage.
FMOD:
- Declare an
FMOD_DSP_DESCRIPTIONstruct with name, version, channel counts, and all callback pointers. - Fill
FMOD_DSP_PARAMETER_DESCentries for every parameter the DSP exposes. - Export a
FMODGetDSPDescription()function (or pass the struct directly toFMOD::System::createDSP). - Keep the description in static storage — FMOD holds a pointer to it for the lifetime of the DSP.
Step 3 — Implement the audio callback
Wwise (Execute):
- Read channel count and frame count from
AkAudioBufferat runtime — never hardcode. - Use
io_pBuffer->GetChannel(ch)to access per-channel float pointers. - Allocate during
Initwith theAK::IAkPluginMemAlloc*allocator; never allocate insideExecute. - Return early if
uValidFrames == 0to avoid processing silent tail unnecessarily.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 76 lines · 106 tokens per session scan A f8f63b14a9c8
game-audio-guide is a skill published in the GitHub repository kunitoki/sonic-skills (19 stars, last pushed 3mo ago), licensed Unlicense. It adds 106 tokens to every session and 1,088 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
metasounds
Create and modify MetaSound Source assets — add/connect nodes, wire pins, set input defaults, and play procedurally (MetaSoundService). Use when the user asks to create a MetaSound, build or edit a MetaSound graph, add operator/input/output nodes, or generate procedural audio.
pufferlib
Version-aware guidance for PufferLib reinforcement-learning environments, vectorization, policies, PuffeRL training, evaluation, and safe checkpoint review. Use when adapting Gymnasium/PettingZoo environments to published PufferLib 3.0.0 or working with the redesigned native 4.0 source line.
build-world
Builds polished, fully playable 3D game prototypes in Unity, Roblox, or three.js with high-quality (.glb) meshes from the Thrixel API, and publishes finished games to a public thrixel.world link that anyone can play in a browser. Use when the user wants to make a game, build a playable prototype, or generate 3D assets…
game-builder
Convert any topic into playable browser games. Types: trivia, matching, word puzzles, adventure games. Uses Phaser.js or Kaboom.js.
adaptive-music
Use when wiring music stems to game state — combat / explore / boss / tension crossfades on a shared bus. Pairs generated stems with a state machine and AudioBus structure. Trigger on "adaptive music", "dynamic music", "music changes when combat starts", "layered music", "vertical music", "wire stems".
ambient-bed
Use when generating a long looping location ambience — forest at dawn, dungeon air, city street, spaceship hum, cave drip. Non-melodic, low-energy, never draws attention. Wires as a looping AudioStreamPlayer on the Ambient bus with a marked seamless loop. Trigger on "ambient bed", "room tone", "background ambience"…