scaffold-vst
BY @GLO — 12 DOWNLOADS — AUDIO
Use when the user asks to "scaffold a vst", "make a vst plugin", "new vst project", "create a synth plugin", or similar. Walks the user through interactive questions (name, plugin type, aesthetic, fonts, AI features, parameters, output dir) and generates a complete buildable JUCE/C++ VST project.
CLI INSTALL
curl -sS https://dem0n.vip/s/glo/scaffold-vst/SKILL.md -o ~/.claude/skills/scaffold-vst/SKILL.md --create-dirs
DOWNLOAD ALL gives you a single .zip containing SKILL.md + the tar.gz — drag it into Claude Code in one go.
Sign up to see the full skill
Get the source, install command, comments, and version history
GET AN INVITEScaffold VST
When to use
Trigger whenever the user wants to create a new VST/audio plugin project from scratch and wants the scaffolder to guide the setup. Do NOT trigger for modifying an existing plugin project — that's out of scope for v1.
Process
Ask the questions below ONE AT A TIME. Use multiple-choice form when possible. Do not skip ahead. After all answers are collected, present a summary and ask for confirmation before writing any files.
Questions
- Project name (human-readable, e.g., "Vicky Synth") and 4-character plugin code (unique identifier, e.g., "Vcky"). JUCE requires exactly 4 characters for the code.
- Company name and company URL (used in the generated plist /
JucePlugin_Manufacturer). - Plugin type — one of:
synth,effect,sampler,midi-effect,analyzer. - Aesthetic preset —
dark,light, orcustom. Ifcustom, ask for 3–5 hex colors with semantic roles:background,surface,primary,accent,text. - Fonts — either a path to a local
.ttffile, or a Google Font name (e.g., "Inter", "Space Grotesk"). Accept multiple fonts with roles (heading, body). - Background image/SVG (optional) — path to a local file. Skip if not provided.
- AI features (multi-select) —
preset-generator,neural-inference,param-morph, ornone. - Parameters — suggest defaults based on plugin type (see table below), then ask if the user wants to override, add, or remove any.
- Output directory — absolute path. Refuse to overwrite an existing directory.
Default parameter sets
- synth:
osc1_shape,osc2_shape,osc_mix,filter_cutoff,filter_resonance,amp_attack,amp_decay,amp_sustain,amp_release,master_gain. - effect:
drive,tone,dry_wet,output_gain. - sampler:
sample_start,sample_end,pitch,amp_attack,amp_release,master_gain. - midi-effect:
transpose,velocity_curve,channel_filter. - analyzer:
fft_size,smoothing,db_floor,db_ceiling.
Generation
After the user confirms the summary:
- Create the output directory at the user's chosen path. Fail if it already exists.
- Copy the files from
templates/<plugin-type>/into the output directory. - For every file, substitute placeholders:
{{PROJECT_NAME}}— the human-readable project name.{{PROJECT_SLUG}}— lowercase, hyphenated (e.g., "vicky-synth").{{PLUGIN_CODE}}— 4-char code.{{COMPANY_NAME}}and{{COMPANY_URL}}.{{COLOR_BACKGROUND}},{{COLOR_SURFACE}},{{COLOR_PRIMARY}},{{COLOR_ACCENT}},{{COLOR_TEXT}}— hex values (with0xffprefix when emitted to C++).{{FONT_PRIMARY_FILENAME}},{{FONT_SECONDARY_FILENAME}}— basenames of TTF files.{{PARAMETER_DEFS}}— C++ code block registering the user's APVTS parameters.{{AI_INCLUDES}},{{AI_MEMBERS}},{{AI_INIT}}— injected blocks if AI modules are selected.
- Copy
theming/CustomLookAndFeel.h.tmpland.cpp.tmplintoSource/Theme/, substituting placeholders. - Copy each selected AI module's files from
ai-modules/<module>/intoSource/AI/. - If the user provided font paths, copy them to
Source/BinaryData/. For Google Fonts, fetch viahttps://fonts.googleapis.com/css2?family=<Name>resolution to a.ttfURL and download. - If a background image was provided, copy it to
Source/BinaryData/. - Generate
Source/BinaryData/CMakeLists-files.txtlisting all embedded assets forjuce_add_binary_data. - Emit
README.mdusing theREADME.md.tmplin the templates, listing build instructions and any required external deps (Claude API key file location, ONNX Runtime install). - Emit
.gitignore. - Print a final summary showing the output directory and the exact commands to build:
cd <output-dir>
cmake -B build
cmake --build build
Error handling
- If plugin code is not exactly 4 characters, re-prompt.
- If project name is empty, re-prompt.
- If output directory exists, abort with a clear message listing its contents.
- If a specified font file is missing, fall back to JUCE's default font and print a warning.
- If AI features are selected, ensure the generated README clearly documents the extra setup.
BADGE

VERSIONS
- 0.1.0 — 16.5 KB — c8921eda2522
COMMENTS (0)
LOGIN TO COMMENT