vcv-rack-plugin
VCV Rack Plugin Development
You are helping build a plugin for VCV Rack v2 — a open-source Eurorack modular synthesizer simulator. Plugins are C++ shared libraries (.dylib/.so/.dll) that Rack loads at runtime.
How VCV Rack Plugins Work
A plugin is a collection of modules. Each module has two halves:
- Module (engine) — subclasses
rack::Module, holds state and DSP logic. Theprocess()method is called every audio sample. - ModuleWidget (UI) — subclasses
rack::ModuleWidget, lays out the panel with knobs, ports, lights, and displays.
These are always paired: one Module struct and one ModuleWidget struct, registered together via createModel<>().
Project Structure
A VCV Rack plugin follows this layout:
More from shortwavlabs/agent-skills
plugdata-patch
Create, modify, and generate Pure Data / plugdata audio patches (.pd files) programmatically. Use this skill whenever the user wants to build synthesizers, audio effects, MIDI processors, DSP patches, or any audio signal processing in Pure Data or plugdata — even if they just say "make a synth" or "create an audio effect" without naming plugdata explicitly. Also use when the user mentions .pd files, Pure Data, patching, or visual audio programming.
3juce-plugin
Build JUCE audio plugins (VST3, AU, AAX, Standalone, LV2) in C++ with CMake. Covers the full development workflow from project scaffolding to multi-format builds, including AudioProcessor lifecycle, parameter management with APVTS, DSP module chains, custom editor GUIs, state serialization, real-time audio safety, and cross-platform CI/CD. Use this skill whenever the user mentions JUCE, audio plugins, VST plugins, AU plugins, audio effects, synthesizers, MIDI processors, AudioProcessor, AudioProcessorEditor, Projucer, or wants to create audio software — even if they just say "make a plugin" or "audio plugin". Also applies when users are working in an existing JUCE codebase (files like PluginProcessor.cpp, PluginEditor.cpp, CMakeLists.txt with juce_add_plugin).
3vult-dsp
Write DSP algorithms in the Vult language for audio plugins, VCV Rack modules, embedded audio, and real-time signal processing. Vult transcompiles to C/C++ with zero-cost abstractions for stateful DSP. Use this skill whenever the user mentions Vult, vultc, Vult DSP code generation, writing audio DSP for VCV Rack plugins with Vult, embedded audio on Teensy/Arduino with Vult, fixed-point audio DSP, or any task involving transcompiling DSP to C/C++. Also use when the user asks about implementing filters, oscillators, envelopes, effects, or synthesizers using the Vult language.
2dsp
Digital signal processing algorithms and techniques for real-time audio. Covers filter design (biquad, Moog ladder, SVF, FIR, Linkwitz-Riley), audio effects (delay, reverb, dynamics, modulation, distortion, stereo processing), sound synthesis (oscillators, bandlimited waveforms, FM/PM, noise generation, envelopes), spectral analysis (FFT, envelope detection, beat detection), and DSP utilities (fast math, interpolation, denormal prevention, dithering). Use this skill whenever implementing audio DSP in C/C++, building synthesizers or effects, writing filter code, generating waveforms, or any task involving digital audio processing — even if the user doesn't explicitly mention "DSP.
2faust-dsp
Write DSP algorithms in the Faust programming language for real-time audio processing and synthesis. Faust (Functional Audio Stream) is a functional, block-diagram language that compiles to optimized C/C++, WebAssembly, LLVM IR, and more — targeting VST/AU plugins, standalone JACK apps, PureData/Max externals, WebAudio, embedded platforms (Teensy, ESP32, Bela), and more. Use this skill whenever the user asks about Faust, faust code, .dsp files, Faust libraries, faust2xx scripts, or any real-time audio DSP that could be expressed as a signal processing block diagram. Also use when the user mentions functional audio programming, compiling DSP to plugins, or cross-platform audio signal processing from a single source.
2