3 min read

A Claude Code Plugin for Building JUCE Audio Plugins

TL;DR: If you want to build audio apps/plugins on macOS (with GPU UIs via Metal), try the juce-dev Claude Code plugin. It automates all the boilerplate so you can go from zero to a compiling plugin with one command.

A while back I wrote about how to start developing audio apps and plugins on macOS using the JUCE-Plugin-Starter I created. That template automates a lot of the tedious setup β€” dependency installation, project scaffolding, code signing, Xcode project generation β€” through a set of shell scripts.

I've since turned that workflow into a Claude Code plugin called juce-dev. Instead of running scripts in your terminal and answering prompts, you type /juce-dev:create "My Plugin" in Claude Code and it walks you through the whole thing interactively.

What it does

The plugin's create command handles the full project setup:

  • Checks that your Mac has the required tools (Xcode CLT, Homebrew, CMake) and offers to install anything missing
  • Finds your JUCE-Plugin-Starter template and checks if your JUCE version is current
  • Pulls your developer settings (Apple ID, Team ID, certificates) from the template's .env so you don't re-enter them for every project
  • Generates all the derived values β€” class names, bundle IDs, 4-letter JUCE plugin codes β€” from the plugin name you provide
  • Creates a new project folder, replaces template placeholders, initializes git, and optionally creates a public or private GitHub repo
  • Optionally sets up DiagnosticKit a Swift app that can collect user bugs and publish diagnostics with attachments via GitHub Issues (and walks you through configuring the token you'll need to configure that repo)

There are also commands for building (/juce-dev:build) and adding Visage or iOS targets to existing projects.

Visage GPU UI

The plugin has built-in support for Visage, a GPU-accelerated UI framework that renders via Metal. Pass --visage when creating a project and the plugin will clone my Visage fork (which includes iOS touch support and several DAW compatibility patches), copy the JUCE↔Visage bridge files, wire up CMake, and give you a project that renders with Metal out of the box.

The plugin includes a companion skill called juce-visage that provides detailed guidance for working with Visage inside JUCE β€” things like embedding an MTKView in a plugin window, bridging keyboard and mouse events between JUCE and Visage, handling focus in DAW hosts, building popups and modals inside the GPU layer, and managing the tricky destruction ordering that Metal's display link requires.

Who this is for

Primarily people who are developing macOS or iOS audio apps and:

  • Want to build an audio plugin but haven't set up their Mac for it yet
  • Have never worked with JUCE before and want to skip the boilerplate
  • Want to get from zero to a compiling, running plugin as quickly as possible

You don't need an Apple Developer account to build and test locally. If you do have one, the plugin will configure code signing and notarization so your builds are ready to distribute.

If you already know JUCE well, the plugin still saves time on the repetitive project setup β€” generating Xcode projects, managing .env configurations, and wiring up optional dependencies like Visage.

Codex users

The plugin is for Claude Code, but if you use OpenAI's Codex CLI, there's a standalone juce-visage skill you can install. It provides the same Visage integration guidance (Metal embedding, event bridging, iOS touch handling, etc.) but not the automated project creation commands.

Install it with a sparse checkout:

mkdir -p ~/.codex/skills
cd ~/.codex/skills

git clone --no-checkout --depth 1 --filter=blob:none --sparse \
  https://github.com/danielraffel/generous-corp-marketplace.git tmp-juce-visage
cd tmp-juce-visage

git sparse-checkout set skills/codex/juce-visage
git checkout

mv skills/codex/juce-visage ~/.codex/skills/

cd ~/.codex/skills
rm -rf tmp-juce-visage