con un clic
module-testing
Automated validation suite for VCV Rack modules
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Automated validation suite for VCV Rack modules
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Build coordination wrapper for VCV Rack modules using Makefile
Load module context from handoff files to resume work
Multi-agent parallel investigation for complex VCV Rack problems
Validate panel ↔ creative brief consistency, catch design drift
Adaptive brainstorming for VCV Rack module concepts and improvements
Version management, bug fixes, feature additions for VCV Rack modules
| name | module-testing |
| description | Automated validation suite for VCV Rack modules |
| allowed-tools | ["Read","Bash","Task"] |
| preconditions | ["Module must exist","Module status must NOT be 💡 (must have implementation)"] |
Purpose: Validate VCV Rack modules through build verification, configuration validation, and manual testing protocols.
This skill provides validation modes for VCV Rack modules:
Note: VCV Rack has no equivalent to pluginval. Manual testing is the primary validation method.
Input: User invokes /test [ModuleName] or asks to test a module
Steps:
MODULES.mdIf mode not specified, present decision menu:
How would you like to test [ModuleName]?
1. Build verification (~1 min)
→ Quick check that module compiles successfully
→ Requires: Source code, Makefile, RACK_DIR set
2. Configuration validation (~2 min)
→ Validate plugin.json format and SVG panel dimensions
→ Check: Slug format, version format, panel dimensions
→ Requires: plugin.json, SVG panel file
3. Manual testing protocol (~30-60 min) ⭐ RECOMMENDED
→ Guided checklist for real-world testing
→ Tests: Polyphony, CV modulation, sample rates, sonic quality
→ Requires: VCV Rack installed
4. Skip testing (NOT RECOMMENDED)
→ Proceed to installation without validation
Choose (1-4): _
Recommendation logic:
Parse shorthand commands:
/test [ModuleName] build → Jump to Mode 1/test [ModuleName] config → Jump to Mode 2/test [ModuleName] manual → Jump to Mode 3Purpose: Quickly verify that module compiles without errors
Prerequisites check:
# Check RACK_DIR environment variable
if [[ -z "$RACK_DIR" ]]; then
echo "RACK_DIR not set - run /setup first"
exit 1
fi
# Check for Makefile
test -f "modules/$MODULE_NAME/Makefile"
# Check for main source file
test -f "modules/$MODULE_NAME/src/$MODULE_NAME.cpp"
If missing: Inform user that build verification requires proper VCV Rack environment and suggest /setup.
Build module:
cd modules/$MODULE_NAME
make clean
make -j$(nproc) 2>&1 | tee build.log
BUILD_EXIT_CODE=${PIPESTATUS[0]}
Parse build output:
Report format:
Build succeeds:
✅ Build PASSED
Module: [ModuleName]
Platform: [mac-arm64 | mac-x64 | linux-x64 | win-x64]
Output: dist/[ModuleName]-[version]-[platform].vcvplugin
Build time: [duration]
Compiler warnings: [count]
Module ready for testing in VCV Rack.
Build fails:
❌ Build FAILED
Compilation errors detected:
[Error 1]
File: src/[ModuleName].cpp:42
Error: 'inputs' was not declared in this scope
[Error 2]
File: src/[ModuleName].cpp:87
Error: no matching function for call to 'setVoltage'
What would you like to do?
1. Investigate failures (detailed analysis)
2. Show full build output (complete logs)
3. Continue anyway (NOT RECOMMENDED - module won't load)
4. I'll fix manually
5. Other
Choose (1-5): _
After results, offer next steps (see Phase 3)
Purpose: Validate plugin.json format and SVG panel specifications
Load configuration:
# Read plugin.json
cat "modules/$MODULE_NAME/plugin.json"
Validation checks:
1. plugin.json Structure:
{
"slug": "ModuleName",
"name": "Module Display Name",
"version": "1.0.0",
"license": "GPL-3.0-or-later",
"brand": "Brand Name",
"author": "Author Name",
"authorEmail": "email@example.com",
"authorUrl": "https://example.com",
"pluginUrl": "https://example.com/ModuleName",
"manualUrl": "https://example.com/ModuleName/manual",
"sourceUrl": "https://github.com/username/ModuleName",
"donateUrl": "",
"changelogUrl": "",
"modules": [
{
"slug": "ModuleName",
"name": "Module Display Name",
"description": "Description",
"tags": ["Category1", "Category2"]
}
]
}
Validate:
slug matches module name (alphanumeric + hyphens only)version follows semver format (X.Y.Z)modules array contains at least one entrymodules array matches top-level slugtags are valid VCV Rack categories2. SVG Panel Validation:
# Find SVG panel file
SVG_FILE="modules/$MODULE_NAME/res/$MODULE_NAME.svg"
test -f "$SVG_FILE"
Validate SVG dimensions:
<!-- SVG must have correct dimensions for module HP -->
<!-- Formula: width = HP × 5.08mm -->
<!-- Height must be 128.5mm -->
<svg width="30.48mm" height="128.5mm" viewBox="0 0 30.48 128.5">
<!-- 6 HP module -->
</svg>
Validation rules:
Report format:
All validations pass:
✅ Configuration VALID
plugin.json:
- Slug: [slug] ✓
- Version: [version] ✓
- Module count: [count] ✓
- Valid tags: [tags] ✓
SVG Panel (res/[ModuleName].svg):
- Width: [HP] HP ([width]mm) ✓
- Height: 128.5mm ✓
- viewBox: correct ✓
- Component layer: present ✓
Configuration ready for VCV Rack Library submission.
Some validations fail:
❌ Configuration INVALID
plugin.json issues:
✗ Slug contains invalid characters (use alphanumeric + hyphens only)
✗ Version "1.0" doesn't follow semver (must be X.Y.Z)
✓ Module count: 1
✗ Invalid tag: "Distortion" (not a valid VCV category)
SVG Panel issues:
✗ Width is 31mm but should be 30.48mm for 6 HP
✓ Height: 128.5mm
✗ viewBox doesn't match dimensions
What would you like to do?
1. Show me the plugin.json file
2. Show me the SVG panel file
3. Auto-fix common issues (recommended)
4. I'll fix manually
5. Other
Choose (1-5): _
After results, offer next steps (see Phase 3)
Purpose: Comprehensive real-world testing in VCV Rack
Load module configuration:
# Read plugin.json to extract module info
cat "modules/$MODULE_NAME/plugin.json"
Generate customized checklist:
Checklist structure:
# Manual Testing Protocol: [ModuleName]
## Test Environment
- VCV Rack version: [version]
- Platform: [mac/linux/windows]
- Plugin location: ~/Documents/Rack2/plugins-[platform]-[arch]/
## Setup
- [ ] Launch VCV Rack
- [ ] Verify module appears in library browser
- [ ] Add module to patch
- [ ] Module loads without errors
- [ ] Panel displays correctly
## Parameter Testing
### [Parameter 1: Frequency]
- [ ] Knob responds smoothly to mouse drag
- [ ] Right-click menu shows correct range (min: [min], max: [max])
- [ ] Default value is correct: [default]
- [ ] CV input modulates parameter correctly
- [ ] Tooltip displays current value
[Repeat for each parameter]
## Input/Output Testing
### [Input 1: CV_IN]
- [ ] Input accepts cable connection
- [ ] Polyphony: Test with mono cable (1 channel)
- [ ] Polyphony: Test with poly cable (4, 8, 16 channels)
- [ ] Voltage range: Test with -10V to +10V signals
- [ ] No audio bleed when disconnected
### [Output 1: AUDIO_OUT]
- [ ] Output produces signal when expected
- [ ] Polyphony: Output channel count matches input
- [ ] Voltage range: Output stays within -10V to +10V
- [ ] No DC offset (use Scope module to check)
- [ ] No clipping at normal levels
[Repeat for each input/output]
## Sample Rate Testing
- [ ] 44.1 kHz: Module processes correctly
- [ ] 48 kHz: Module processes correctly
- [ ] 96 kHz: Module processes correctly
- [ ] 192 kHz: Module processes correctly (if supported)
- [ ] Sample rate changes don't cause clicks/pops
## Polyphony Testing
- [ ] 1 channel: Mono operation works correctly
- [ ] 4 channels: Polyphonic operation stable
- [ ] 8 channels: All channels process independently
- [ ] 16 channels: Maximum polyphony stable
- [ ] Channel count changes smoothly (no glitches)
## CV Modulation Testing
### [Parameter: Frequency]
- [ ] Slow LFO (0.1 Hz): Smooth modulation
- [ ] Audio rate (440 Hz): Clean FM response
- [ ] Polyphonic CV: Each channel modulates independently
- [ ] CV attenuverter: Positive and negative modulation
- [ ] No zipper noise during modulation
[Repeat for each CV-controllable parameter]
## State Management
- [ ] Save patch: Module state saves correctly
- [ ] Load patch: Module state restores correctly
- [ ] Parameter values persist after save/load
- [ ] Cable connections restore correctly
- [ ] Initialize command resets to defaults
## Edge Cases
- [ ] Disconnected inputs: No crashes or unexpected behavior
- [ ] Extreme parameter values: No instability at min/max
- [ ] Feedback loops: Module handles audio feedback gracefully
- [ ] Rapid parameter changes: No clicks or instability
- [ ] Multiple instances: 10+ modules can coexist without issues
## Performance Testing
- [ ] CPU meter: Module uses reasonable CPU (<5% for basic modules)
- [ ] Memory: No memory leaks during extended use
- [ ] Real-time: Module processes in real-time at all sample rates
- [ ] Stability: No crashes during 10-minute stress test
## Sonic Quality
- [ ] Output sounds clean (no unexpected artifacts)
- [ ] Frequency response: Full bandwidth (20 Hz - 20 kHz)
- [ ] Dynamic range: Good signal-to-noise ratio
- [ ] Aliasing: No audible aliasing at high frequencies
- [ ] Transient response: Clean attack/decay characteristics
## Cross-Platform Testing (Optional)
- [ ] macOS (arm64): Module loads and works
- [ ] macOS (x64): Module loads and works
- [ ] Linux (x64): Module loads and works
- [ ] Windows (x64): Module loads and works
## Final Verification
- [ ] All critical tests passed
- [ ] No crashes or errors during testing
- [ ] Module performs as expected
- [ ] Ready for release
## Issues Found
[List any issues discovered during testing]
1. [Issue description]
- Severity: [Critical/High/Medium/Low]
- Steps to reproduce: [Steps]
- Expected behavior: [Description]
- Actual behavior: [Description]
## Notes
[Additional observations or comments]
User confirms checklist completion, then offer next steps (see Phase 3)
After Mode 1 (build verification) passes:
✓ Build verification passed
What's next?
1. Validate configuration (plugin.json + SVG) (recommended)
2. Run manual testing protocol
3. Install module (/install-module)
4. Review build warnings
5. Other
Choose (1-5): _
After Mode 2 (configuration validation) passes:
✓ Configuration validation passed
What's next?
1. Run manual testing protocol (recommended)
2. Install module to VCV Rack
3. Review configuration files
4. Continue to next stage (if in workflow)
5. Other
Choose (1-5): _
After Mode 3 (manual testing) complete:
✓ Manual testing complete
What's next?
1. Install module (/install-module) → Ready for production use
2. Mark module as release-ready (update MODULES.md status)
3. Report issues found (if any)
4. Run additional build verification
5. Other
Choose (1-5): _
When user chooses "Investigate failures":
For each failed test:
Task agent with deep-research to find root causeExample investigation output:
Investigating build failure: "'inputs' was not declared in this scope"...
Root cause: Missing VCV Rack API includes or incorrect namespace
The module is trying to access 'inputs' but hasn't properly inherited from rack::Module.
Fix:
1. Open src/[ModuleName].cpp
2. Verify struct declaration inherits from rack::Module:
struct ModuleName : Module {
// Your code here
}
3. Ensure you're accessing inputs correctly:
inputs[INPUT_ID].getVoltage()
4. Check that you've declared input enums:
enum InputIds {
INPUT_ID,
INPUTS_LEN
};
This ensures proper VCV Rack Module API usage.
Would you like me to:
1. Show the current module structure
2. Launch deep-research agent to scan codebase
3. I'll fix it myself
4. Other
Choose (1-4): _
Save detailed logs for every test run:
Location: logs/[ModuleName]/test_[timestamp].log
Log format:
================================================================================
Test Report: [ModuleName]
================================================================================
Date: 2025-11-12 14:32:17
Mode: [Mode 1 / Mode 2 / Mode 3]
Module: [ModuleName] v1.0.0
Platform: [mac-arm64 | mac-x64 | linux-x64 | win-x64]
[Mode-specific details]
Test Results:
[Pass/fail summary]
Total time: [duration]
Conclusion: [Module ready / Failures detected]
================================================================================
[Full output below]
...
Update state files:
.continue-here.md → Mark testing complete, update next stepMODULES.md → Update test status (last tested date, results)Testing is successful when:
logs/[ModuleName]/)NOT required for success:
Invoked by:
/test [ModuleName] command/test [ModuleName] build → Direct to mode 1/test [ModuleName] config → Direct to mode 2/test [ModuleName] manual → Direct to mode 3module-workflow skill → After Stages 4, 5, 6module-improve skill → After implementing changesInvokes:
deep-research skill → When user chooses "Investigate failures"Creates:
logs/[ModuleName]/test_[timestamp].logmodules/[ModuleName]/dist/Updates:
.continue-here.md → Testing checkpointMODULES.md → Test statusBlocks:
/install-module) → Recommends testing first if not done recentlyVCV Rack supports up to 16 polyphonic channels per cable. Testing must verify:
VCV Rack supports multiple sample rates. Testing must verify:
VCV Rack uses -10V to +10V voltage range. Testing must verify:
VCV Rack modules use HP (Horizontal Pitch) units:
VCV Rack modules must run in real-time:
references/test-specifications.md - Detailed test implementationsreferences/manual-testing-guide.md - VCV Rack testing methodologyreferences/troubleshooting.md - Common issues and fixesassets/manual-testing-checklist.md - VCV Rack testing template