$npx -y skills add iPlug3/audio-plugin-dev-skills --skill validate-vst3Validate VST3 plugins (.vst3 bundles) using Steinberg's official validator tool. Use when user says "run VST3 validator", "validate VST3", "test the .vst3", or needs Steinberg-specific test suites. Prefer this over pluginval for multi-bus VST3 plugins.
| 1 | # VST3 Validator |
| 2 | |
| 3 | ## Plugin Install Locations |
| 4 | |
| 5 | The `validator` accepts a direct path, but `validator -list` only scans standard locations. |
| 6 | |
| 7 | | Platform | User Location | System Location | |
| 8 | |----------|--------------|-----------------| |
| 9 | | macOS | `~/Library/Audio/Plug-Ins/VST3/` | `/Library/Audio/Plug-Ins/VST3/` | |
| 10 | | Windows | `%LOCALAPPDATA%\Programs\Common\VST3\` | `C:\Program Files\Common Files\VST3\` | |
| 11 | | Linux | `~/.vst3/` | `/usr/lib/vst3/` or `/usr/local/lib/vst3/` | |
| 12 | |
| 13 | ## Instructions |
| 14 | |
| 15 | 1. Locate the built `.vst3` bundle (in your build output directory or one of the standard locations above) |
| 16 | 2. Locate the `validator` binary (see Common Binary Locations below) |
| 17 | 3. Run: `validator /path/to/plugin.vst3` |
| 18 | 4. For thorough testing add `-e`: `validator -e /path/to/plugin.vst3` |
| 19 | 5. Check output for FAILED lines — see Common Issues below for fixes |
| 20 | |
| 21 | ## Basic Usage |
| 22 | |
| 23 | ```bash |
| 24 | # Validate a VST3 plugin (validator location depends on your VST3 SDK build) |
| 25 | validator /path/to/plugin.vst3 |
| 26 | ``` |
| 27 | |
| 28 | ### Common Binary Locations |
| 29 | |
| 30 | | Platform | Path | |
| 31 | |----------|------| |
| 32 | | macOS | `<vst3sdk>/build/bin/Release/validator` or `/usr/local/bin/validator` | |
| 33 | | Windows | `<vst3sdk>\build\bin\Release\validator.exe` | |
| 34 | | Linux | `<vst3sdk>/build/bin/Release/validator` | |
| 35 | |
| 36 | ## Options |
| 37 | |
| 38 | ```bash |
| 39 | # Run extensive tests (takes longer but more thorough) |
| 40 | validator -e /path/to/plugin.vst3 |
| 41 | |
| 42 | # Quiet mode - only print errors |
| 43 | validator -q /path/to/plugin.vst3 |
| 44 | |
| 45 | # Run only a specific test suite |
| 46 | validator -suite "General Tests" /path/to/plugin.vst3 |
| 47 | |
| 48 | # Test only a specific processor class ID |
| 49 | validator -cid "ABCD1234..." /path/to/plugin.vst3 |
| 50 | |
| 51 | # Use local instance per test (isolates tests) |
| 52 | validator -l /path/to/plugin.vst3 |
| 53 | ``` |
| 54 | |
| 55 | ## Listing Plugins |
| 56 | |
| 57 | ```bash |
| 58 | # List all installed VST3 plugins |
| 59 | validator -list |
| 60 | |
| 61 | # List snapshots from all installed plugins |
| 62 | validator -snapshots |
| 63 | ``` |
| 64 | |
| 65 | ## Test Suites |
| 66 | |
| 67 | | Suite | Description | |
| 68 | |-------|-------------| |
| 69 | | General Tests | Basic plugin loading and info | |
| 70 | | Single Precision | 32-bit audio processing | |
| 71 | | Double Precision | 64-bit audio processing | |
| 72 | | Bus Activation | Bus enable/disable handling | |
| 73 | | Bus Arrangement | Channel configuration | |
| 74 | | Parameters | Parameter handling and automation | |
| 75 | | State | Preset save/restore | |
| 76 | | Editor | UI creation/destruction | |
| 77 | | Process Context | Transport and tempo handling | |
| 78 | |
| 79 | ## Building the Validator |
| 80 | |
| 81 | Clone the [VST3 SDK](https://github.com/steinbergmedia/vst3sdk) if you don't have it, then build: |
| 82 | |
| 83 | ```bash |
| 84 | cd <vst3sdk> |
| 85 | cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release |
| 86 | cmake --build build --target validator |
| 87 | ``` |
| 88 | |
| 89 | ## Common Issues |
| 90 | |
| 91 | ### Plugin Not Loading |
| 92 | - Check the binary architecture matches (arm64 vs x86_64 on macOS, x64 vs x86 on Windows) |
| 93 | - Verify all dependencies are bundled or available |
| 94 | - Check logs: Console.app (macOS), Event Viewer (Windows), or stderr (Linux) |
| 95 | |
| 96 | ### Test Failures |
| 97 | - **State tests**: Ensure `getState`/`setState` are implemented correctly |
| 98 | - **Parameter tests**: Check parameter IDs are stable and unique |
| 99 | - **Bus tests**: Verify channel configurations are valid |
| 100 | |
| 101 | ### Extensive Test Failures |
| 102 | The `-e` flag runs stress tests that may reveal: |
| 103 | - Memory leaks |
| 104 | - Thread safety issues |
| 105 | - Edge cases in parameter handling |