$npx -y skills add iPlug3/audio-plugin-dev-skills --skill validate-pluginvalValidate VST3 (.vst3) and AudioUnit (.component) plugins with pluginval at configurable strictness levels. Use when user says "run pluginval", "validate plugin", or wants comprehensive cross-format testing. Does NOT support .clap files. For multi-bus VST3 plugins that crash, use
| 1 | # pluginval |
| 2 | |
| 3 | Cross-platform validator for VST3 and AudioUnit plugins. |
| 4 | |
| 5 | ## Plugin Install Locations |
| 6 | |
| 7 | `pluginval` accepts a direct path. These are the standard install locations by format. |
| 8 | |
| 9 | **AudioUnit (.component)** — macOS only: |
| 10 | |
| 11 | | Location | Scope | |
| 12 | |----------|-------| |
| 13 | | `~/Library/Audio/Plug-Ins/Components/` | Current user only | |
| 14 | | `/Library/Audio/Plug-Ins/Components/` | All users | |
| 15 | |
| 16 | **VST3 (.vst3)**: |
| 17 | |
| 18 | | Platform | User Location | System Location | |
| 19 | |----------|--------------|-----------------| |
| 20 | | macOS | `~/Library/Audio/Plug-Ins/VST3/` | `/Library/Audio/Plug-Ins/VST3/` | |
| 21 | | Windows | `%LOCALAPPDATA%\Programs\Common\VST3\` | `C:\Program Files\Common Files\VST3\` | |
| 22 | | Linux | `~/.vst3/` | `/usr/lib/vst3/` or `/usr/local/lib/vst3/` | |
| 23 | |
| 24 | ## Instructions |
| 25 | |
| 26 | 1. Install pluginval (see Installation below) |
| 27 | 2. Locate the built plugin (`.vst3` or `.component`) in your build output directory or one of the standard locations above |
| 28 | 3. Run at strictness level 5 (recommended minimum): |
| 29 | - macOS: `/Applications/pluginval.app/Contents/MacOS/pluginval --strictness-level 5 /path/to/plugin` |
| 30 | - Windows: `pluginval.exe --strictness-level 5 "C:\path\to\plugin.vst3"` |
| 31 | - Linux: `pluginval --strictness-level 5 /path/to/plugin.vst3` |
| 32 | 4. If it crashes on a multi-bus VST3, use `validate-vst3` instead |
| 33 | 5. For CI, add `--skip-gui-tests` for headless environments |
| 34 | |
| 35 | ## Installation |
| 36 | |
| 37 | Download from [GitHub Releases](https://github.com/Tracktion/pluginval/releases). |
| 38 | |
| 39 | | Platform | Setup | |
| 40 | |----------|-------| |
| 41 | | macOS | Extract and move `pluginval.app` to `/Applications/` | |
| 42 | | Windows | Extract `pluginval.exe` and add to `PATH` or use full path | |
| 43 | | Linux | Extract `pluginval` binary, `chmod +x`, place in `/usr/local/bin/` | |
| 44 | |
| 45 | **Verify installation:** |
| 46 | ```bash |
| 47 | # macOS |
| 48 | /Applications/pluginval.app/Contents/MacOS/pluginval --help |
| 49 | |
| 50 | # Windows |
| 51 | pluginval.exe --help |
| 52 | |
| 53 | # Linux |
| 54 | pluginval --help |
| 55 | ``` |
| 56 | |
| 57 | ## Basic Usage |
| 58 | |
| 59 | ```bash |
| 60 | # macOS |
| 61 | /Applications/pluginval.app/Contents/MacOS/pluginval --strictness-level 5 /path/to/plugin |
| 62 | |
| 63 | # Windows |
| 64 | pluginval.exe --strictness-level 5 "C:\path\to\plugin.vst3" |
| 65 | |
| 66 | # Linux |
| 67 | pluginval --strictness-level 5 /path/to/plugin.vst3 |
| 68 | ``` |
| 69 | |
| 70 | ## Strictness Levels |
| 71 | |
| 72 | | Level | Description | |
| 73 | |-------|-------------| |
| 74 | | 1-4 | Basic tests | |
| 75 | | 5 | **Recommended minimum** for host compatibility | |
| 76 | | 6-9 | Increasingly thorough tests | |
| 77 | | 10 | Most comprehensive (may take a long time) | |
| 78 | |
| 79 | At levels 5+, pluginval automatically runs `auval` for AudioUnits and VST3 `validator` for VST3. |
| 80 | |
| 81 | ## Command Line Options |
| 82 | |
| 83 | ```bash |
| 84 | # Set strictness level (1-10) |
| 85 | --strictness-level 5 |
| 86 | |
| 87 | # Skip GUI tests (useful for headless CI) |
| 88 | --skip-gui-tests |
| 89 | |
| 90 | # Set timeout in milliseconds (use "-1" to disable) |
| 91 | --timeout-ms 30000 |
| 92 | |
| 93 | # Output logs to directory |
| 94 | --output-dir /path/to/logs |
| 95 | |
| 96 | # Set log filename (within output-dir or current directory) |
| 97 | --output-filename results.log |
| 98 | |
| 99 | # Repeat tests multiple times |
| 100 | --repeat 3 |
| 101 | |
| 102 | # Randomize test order |
| 103 | --randomise |
| 104 | |
| 105 | # Use specific random seed (for reproducibility) |
| 106 | --seed 0x374115a |
| 107 | |
| 108 | # Verbose output |
| 109 | --verbose |
| 110 | |
| 111 | # Custom sample rates (comma-separated, default: 44100,48000,96000) |
| 112 | --sample-rates 44100,48000,96000,192000 |
| 113 | |
| 114 | # Custom block sizes (comma-separated, default: 64,128,256,512,1024) |
| 115 | --block-sizes 64,128,256,512,1024 |
| 116 | |
| 117 | # Provide a data file for test configuration |
| 118 | --data-file /path/to/config.txt |
| 119 | |
| 120 | # Disable specific tests (file with one test name per line) |
| 121 | --disabled-tests /path/to/disabled.txt |
| 122 | |
| 123 | # Specify path to VST3 validator (run as part of test process) |
| 124 | --vst3validator /path/to/validator |
| 125 | ``` |
| 126 | |
| 127 | ## Environment Variables |
| 128 | |
| 129 | All command line options can be set as environment variables by removing the `--` prefix, converting dashes to underscores, and uppercasing. Command line options override environment variables. |
| 130 | |
| 131 | ```bash |
| 132 | # Examples |
| 133 | export STRICTNESS_LEVEL=5 |
| 134 | export SKIP_GUI_TESTS=1 |
| 135 | export TIMEOUT_MS=30000 |
| 136 | export SAMPLE_RATES="44100,48000,96000" |
| 137 | export BLOCK_SIZES="64,128,256,512,1024" |
| 138 | ``` |
| 139 | |
| 140 | ## CI Integration |
| 141 | |
| 142 | ### macOS / Linux |
| 143 | |
| 144 | ```bash |
| 145 | pluginval --strictness-level 5 --skip-gui-tests --timeout-ms 60000 /path/to/plugin.vst3 |
| 146 | |
| 147 | if [ $? -ne 0 ]; then |
| 148 | echo "Plugin validation failed!" |
| 149 | exit 1 |
| 150 | fi |
| 151 | ``` |
| 152 | |
| 153 | ### Windows (PowerShell) |
| 154 | |
| 155 | ```powershell |
| 156 | & pluginval.exe --strictness-level 5 --skip-gui-tests --timeout-ms 60000 "C:\path\to\plugin.vst3" |
| 157 | |
| 158 | if ($LASTEXITCODE -ne 0) { |
| 159 | Write-Error "Plugin validation failed!" |
| 160 | exit 1 |
| 161 | } |
| 162 | ``` |
| 163 | |
| 164 | ## Reproducing Failures |
| 165 | |
| 166 | pluginval uses randomness for some tests. To reproduce a failure: |
| 167 | |
| 168 | 1. Note the random seed from the log (e.g., `Random seed: 0x374115a`) |
| 169 | 2. Re-run with that seed: |
| 170 | ` |