agentsclimarketplace

Vst3 review

Skill kunitoki/sonic-skills/skills/vst3-review

Modular Markdown-based audio skills for AI agents and developers, covering signal processing, synthesis, effects, analysis, and spatial audio.

Install
npx -y skills add kunitoki/sonic-skills --skill vst3-review

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Reviews VST3 plugin implementations for spec compliance, host compatibility, and correctness. Use when the user asks to review a VST3 plugin, check bus arrangements, audit parameter handling, or verify their process() callback is safe. Trigger on phrases like "review my VST3 plugin", "check VST3 bus arrangement", "is my VST3 process safe", "audit my IAudioProcessor", or when you see IComponent, IAudioProcessor, IEditController, ProcessData, or Vst:: namespaced types in the code.

SKILL.md

4.7 KB, as published. Nobody here has run it

VST3 Plugin Review

VST3's split controller/processor model and bus negotiation are the most common sources of host incompatibility. Issues are rarely compile-time errors — they surface as broken recall, silence, or crashes in specific DAWs.

Step 0 — Run universal checks first

Invoke audio-dsp-review and audio-numerics-review before this skill. This skill adds VST3-specific spec compliance and host compatibility checks on top; it does not replace realtime-safety or numerics reviews.

Step 1 — Identify plugin structure

Locate the three core interfaces and their ownership:

InterfaceThreadResponsibilities
IComponentMain threadBus layout, activation, state save/load, unit info
IAudioProcessorAudio thread in process(); main thread otherwiseBus arrangement negotiation, latency, processing setup
IEditControllerMain threadParameter definitions, UI, MIDI mapping, setComponentState
IConnectionPointMain threadProcessor↔controller messaging via notify()

Step 2 — Scan for VST3-specific violations

ViolationWhereRisk
process() allocating memory or acquiring a lockIAudioProcessor::processRealtime violation — causes xruns and glitches
Latency not reported via getLatencySamples()IAudioProcessorHost delay compensation broken — early mixdown or timing drift
Bus arrangement not matching what was negotiated in setBusArrangementssetBusArrangements / processChannel count mismatch — buffer overread or silent output
ParamID not stable across save/load and plugin versionsIEditControllerParameter recall broken — automation and presets silently map to wrong params
Calling IHostApplication or IComponentHandler from audio threadprocess()Not thread-safe — host component handler is main-thread only
IParamValueQueue not fully consumed each process() callbackprocess()Parameter updates lost — automation steps skipped
Bypass parameter not passing audio through cleanlyIAudioProcessor / controller parameter setupIncorrect bypassed output — artifacts or silence when host automates bypass
kOfflineProcessing mode not handled separately from realtimesetProcessing / processOffline rendering broken — wrong timing, denormal handling, or lookahead
setComponentState not applied by controller on loadIEditController::setComponentStateController shows stale values after preset load
setState / getState on IComponent and IEditController not symmetricBothPreset corruption — one side saves data the other ignores

Step 3 — Write the review

## VST3 Plugin Review: `[file / processor class]`

### Verdict
[Spec-compliant | Has critical violations | Warnings only] — [one sentence summary]

### Critical Violations
**[Category]: [description]**
`file:line` — `offending code`
Why: [one sentence on spec / thread safety / host compat risk]
Fix: [concrete VST3-idiomatic suggestion]

### Warnings
[same format]

### What's Done Well
[correct patterns — clean bus negotiation, stable ParamIDs, latency reported, etc.]

### Recommended Fixes (priority order)
1. ...

Quick fix table

ViolationFix
Allocation in process()Move to setupProcessing() or constructor; use pre-sized buffers
Missing latency reportOverride getLatencySamples() and return a stable value; call restartComponent(kLatencyChanged) if it changes
Bus mismatchStore the accepted arrangement from setBusArrangements; validate numInputs/numOutputs against it in process()
Unstable ParamIDUse a fixed enum or stable CRC of the param name string; never use a container index
Params not consumedIterate inputParameterChanges fully each block; apply at sample-accurate offsets
Unsafe bypassMark the bypass parameter with ParameterInfo::kIsBypass; when bypassed, copy inputs to outputs with no modification and keep consuming parameter changes

For deep detail on bus negotiation, parameter ID stability, latency reporting, controller↔processor communication, and per-DAW compatibility quirks see references/vst3-pitfalls.md.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.