au-review
Reviews AudioUnit v2/v3 plugin implementations for spec compliance, thread safety, and correctness. Use when the user asks to…
Step-by-step guide for building a YUP audio plugin from scratch. Use when the user asks "how do I create a YUP plugin", "set up a YUP project", "add parameters to my YUP plugin", "package my CLAP or VST3", or "how do I wire up AudioParameterHandle". Trigger on phrases like
Claude Code
$ npx -y skills add kunitoki/sonic-skills --skill yup-guide --agent claude-code
Codex
$ npx skills add kunitoki/sonic-skills --skill yup-guide -a codex -y
Cursor
$ npx skills add kunitoki/sonic-skills --skill yup-guide -a cursor -y
Gemini CLI
$ npx skills add kunitoki/sonic-skills --skill yup-guide -a gemini-cli -y
GitHub Copilot
$ npx skills add kunitoki/sonic-skills --skill yup-guide -a github-copilot -y
OpenCode
$ npx skills add kunitoki/sonic-skills --skill yup-guide -a opencode -y
Windsurf
$ npx skills add kunitoki/sonic-skills --skill yup-guide -a windsurf -y
name: yup-guide description: > Step-by-step guide for building a YUP audio plugin from scratch. Use when the user asks "how do I create a YUP plugin", "set up a YUP project", "add parameters to my YUP plugin", "package my CLAP or VST3", or "how do I wire up AudioParameterHandle". Trigger on phrases like "create a YUP plugin", "YUP CMake setup", "yup_audio_plugin", "AudioParameterBuilder", "AudioParameterHandle", or "createPluginProcessor".
Five steps from empty folder to a working CLAP/VST3/standalone plugin. Do each step in order; skip none.
`AudioProcessor ("MyPlugin", yup::AudioBusLayout ({}, { yup::AudioBus ("main", yup::AudioBus::Audio, yup::AudioBus::Output, 2) }))`.
extern "C" yup::AudioProcessor* createPluginProcessor()
{
return new MyPluginProcessor();
}| Pitfall | Correct approach | |---------|------------------| | Reading raw `AudioParameter` values directly for smoothed DSP | Use `AudioParameterHandle` initialised in `prepareToPlay` | | Forgetting `updateNextAudioBlock()` | Call it once at the top of each audio block before `getNextValue()` or `skip()` | | Calling `setValueNotifyingHost()` from `processBlock` | Use it from UI/host-control paths; keep audio-thread changes local or lock-free | | Allocating MIDI voices on note-on | Preallocate a bounded voice pool in `prepareToPlay` | | Hard-coding stereo processing without matching `AudioBusLayout` | Declare the layout explicitly and guard channel access | | Missing state methods | Implement `loadStateFromMemory` / `saveStateIntoMemory`; hosts depend on them for recall | | Holding `getProcessLock()` from UI/background work | Keep state swaps short; the CLAP wrapper uses a try-lock around processing | | Leaving state stale after `prepareToPlay` or `flush()` | Reset voices, smoothers, filter history, delay buffers, and pending MIDI unconditionally |
Use the `yup-review` skill to audit finished processor code for YUP-specific thread, parameter, wrapper, and bus-layout issues.
Precision audio-engineering skills for AI agents. Sonic Skills is a curated pack of Markdown skills for reviewing, debugging, explaining, and implementing audio software.
Reviews AudioUnit v2/v3 plugin implementations for spec compliance, thread safety, and correctness. Use when the user asks to…
Systematic checklist for diagnosing audio artifacts. Use when the user describes a sound quality problem — clicks, pops,…
Reviews audio DSP and audio processing code for realtime safety violations. Use whenever the user asks to review, audit, or check…
Explains DSP math concepts to developers who need the theory behind an algorithm. Use whenever the user asks how a…
Reviews audio DSP code for numerical correctness. Use when the user asks to review, audit, or check DSP code for correctness…
Profiling strategy for audio CPU issues — xruns, spikes, and buffer underruns. Use when the user reports CPU overload, audio…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.