本文へ移動
cccskills
無料GitHub で公開

vst3-review

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.

インストール方法を見る

含まれるファイル(2)

  • SKILL.md4.7 KB
  • references/vst3-pitfalls.md8.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

au-review

無料

Reviews AudioUnit v2/v3 plugin implementations for spec compliance, thread safety, and correctness. Use when the user asks to review an AudioUnit plugin, check an AUv3 app extension, audit property or parameter handling, or asks "is my AUComponent thread-safe?" or "why does my AU crash in Logic?". Trigger on phrases like "review my AudioUnit", "check my AUv3", "is my render block safe?", or when you see AURenderCallback, internalRenderBlock, kAudioUnitProperty_*, or AUAudioUnit in the code.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Systematic checklist for diagnosing audio artifacts. Use when the user describes a sound quality problem — clicks, pops, crackling, silence, DC offset, aliasing, phase issues, or latency problems. Trigger on phrases like "why do I hear clicks?", "my output has DC offset", "there's aliasing in my oscillator", "phase is wrong in mono", "dropout when CPU spikes". Pairs with audio-dsp-review (realtime safety) and audio-numerics-review (numeric correctness) — use those to fix once the cause is found.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Reviews audio DSP and audio processing code for realtime safety violations. Use whenever the user asks to review, audit, or check audio processing code — including plugin process callbacks, audio engine render functions, DSP implementations, or any code that runs on the audio thread. Trigger on phrases like "review my processBlock", "check this DSP code", "is this safe for the audio thread?", "review my JUCE plugin", or when you see an audio callback and spot potential realtime violations. Flag issues proactively even when the user hasn't explicitly asked for a review.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Explains DSP math concepts to developers who need the theory behind an algorithm. Use whenever the user asks how a signal-processing concept works, wants intuition behind a formula, or hits a math-shaped bug. Trigger on phrases like "how does a Fourier transform work", "explain z-transforms", "what is convolution", "why does my biquad ring", "what is windowing for", "what causes aliasing", or "how do I convert gain to dB". Also trigger when the user pastes DSP code and asks why it behaves a certain way.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Reviews audio DSP code for numerical correctness. Use when the user asks to review, audit, or check DSP code for correctness issues — filters, feedback loops, fixed-point arithmetic, accumulation loops, or any numeric computation in audio code. Trigger on "check this filter for NaN", "why does my reverb blow up?", "is this numerically stable?", "why do I hear DC in my output?". Pairs with audio-dsp-review (realtime safety); this skill covers numeric correctness. Flag issues proactively.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Profiling strategy for audio CPU issues — xruns, spikes, and buffer underruns. Use when the user reports CPU overload, audio glitches under load, or performance regressions. Trigger on phrases like "I'm getting xruns", "my plugin causes CPU spikes", "dropouts under high voice count", "audio thread is too slow", "how do I profile my DSP". References audio-numerics-review for denormal slowdown and audio-dsp-review for lock contention.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

kunitoki のスキルをすべて見る

このスキルの問題を報告する