DEM0NHUB [ SKILLS FOR CLAUDE ]

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 INVITE

Scaffold 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

  1. 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.
  2. Company name and company URL (used in the generated plist / JucePlugin_Manufacturer).
  3. Plugin type — one of: synth, effect, sampler, midi-effect, analyzer.
  4. Aesthetic presetdark, light, or custom. If custom, ask for 3–5 hex colors with semantic roles: background, surface, primary, accent, text.
  5. Fonts — either a path to a local .ttf file, or a Google Font name (e.g., "Inter", "Space Grotesk"). Accept multiple fonts with roles (heading, body).
  6. Background image/SVG (optional) — path to a local file. Skip if not provided.
  7. AI features (multi-select) — preset-generator, neural-inference, param-morph, or none.
  8. Parameters — suggest defaults based on plugin type (see table below), then ask if the user wants to override, add, or remove any.
  9. 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:

  1. Create the output directory at the user's chosen path. Fail if it already exists.
  2. Copy the files from templates/<plugin-type>/ into the output directory.
  3. 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 (with 0xff prefix 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.
  4. Copy theming/CustomLookAndFeel.h.tmpl and .cpp.tmpl into Source/Theme/, substituting placeholders.
  5. Copy each selected AI module's files from ai-modules/<module>/ into Source/AI/.
  6. If the user provided font paths, copy them to Source/BinaryData/. For Google Fonts, fetch via https://fonts.googleapis.com/css2?family=<Name> resolution to a .ttf URL and download.
  7. If a background image was provided, copy it to Source/BinaryData/.
  8. Generate Source/BinaryData/CMakeLists-files.txt listing all embedded assets for juce_add_binary_data.
  9. Emit README.md using the README.md.tmpl in the templates, listing build instructions and any required external deps (Claude API key file location, ONNX Runtime install).
  10. Emit .gitignore.
  11. 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

downloads ![downloads](https://dem0n.vip/s/glo/scaffold-vst/badge.svg)

VERSIONS

  • 0.1.0 — 16.5 KB — c8921eda2522

COMMENTS (0)

LOGIN TO COMMENT