Skip to content

Skills

Skills are Markdown playbooks that teach an AI coding agent how to work on a specific part of Pulp — the conventions, the gotchas, and the exact commands for a subsystem. They live in .agents/skills/<name>/SKILL.md, ship with the Pulp Claude Code plugin (plugin.json points at that directory), and are read by both Claude Code and Codex from the same source of truth — there is no separate per-agent copy.

You rarely invoke a skill by name. Each one activates automatically when your request matches what it covers (its description lists the triggers), and many also have a matching /slash-command. The table below is the full catalog of the 65 skills Pulp ships; open a skill's SKILL.md for its complete, authoritative guidance.

Skill What it does
aax Optional AAX support for Pulp, including developer-supplied Avid SDK setup, CMake enablement, DigiShell/AAX Validator workflows, and local AAX builds on macOS or Windows.
ableton-link Configure, implement, and test Pulp's optional desktop Ableton Link tempo-sync adapter while preserving the developer-supplied SDK, licensing, realtime, latency-compensation, and no-install boundaries.
agent-capabilities Maintain Pulp's installed design-time agent capability manifest and public-surface ledger.
android Android platform development for Pulp — NDK cross-compilation, Oboe audio, Dawn/Skia GPU rendering, JNI bridge, touch interaction, emulator workflows, and end-to-end smoke validation.
ara Optional ARA support for Pulp, including developer-supplied ARA SDK setup, CMake enablement, adapter companion APIs, validation, and ARA-aware plugin implementation guidance.
audio-harness The measurement surface for ALL Pulp DSP and audio-pipeline work — read it BEFORE writing or gating DSP, not only when something already sounds wrong.
audio-headless-debug Reproduce and debug "only happens in a DAW" audio plugin bugs (cutouts, glitches, parameter-change failures) entirely offline — headless Processor scenes for DSP bugs and a standalone AudioUnit host probe for adapter/host-interaction bugs.
auv2 Audio Unit v2 adapter work for Pulp — picking the right AU component type (aufx/aumf/aumi/aumu) and its matching entry macro, wiring MIDI input and output (including the aumi MIDI-processor adapter), sharing the base-class-free adapter surface, and avoiding the DAW-side component cache that silently masks repackaging.
auv3 Audio Unit v3 (AUAudioUnit) format adapter for Pulp — render-block wiring, parameter tree bridging, MIDI / sysex via AURenderEvent, sidechain pulls, state persistence, iOS extension surface, and the pitfalls discovered while wiring the adapter.
ci Local and cloud CI for Pulp — validate branches, create PRs, merge on green.
clap CLAP format adapter for Pulp — how Processor bridges to clap_plugin_t, how parameters / modulation / sidechain / MPE / UMP / sysex flow, and the pitfalls discovered while wiring the adapter.
cli-maintenance Checklist and decision tree for adding, modifying, or removing CLI commands.
cmajor-external Use Pulp's MIT-safe Cmajor support lane via source-owned patches, an external cmaj toolchain, and explicit generated-artifact workflows.
code-comments How to write source comments, doc comments, and test names/tags that have lasting value — and what to never write.
content Validate, install, update, list, rescan, remove, and reveal data-only Pulp content packs for installed plugins.
contrib-intake Maintainer side of an outside contribution — find what has arrived (fork PR, issue, or patches sent out-of-band), adopt it into an in-repo branch with authorship intact, review it against the repo's bar, and ship it through the normal merge path.
contribute Prepare an outside contribution to Pulp or Forge that a maintainer can land with minimal rework — routing (Core vs Forge), local build and test on a plain Mac, the checks that are worth running without Shipyard/Tart/VMs, and the handoff format.
daw-smoke Real-DAW (REAPER) functional smoke for reload/editor/format-adapter changes — opt-in, scoped, headless-safe, zero-pollution
decide Ask Daniel a blocking decision as options with a recommendation and honest pros/cons, rather than prose.
engine Query, recommend, and switch the Pulp JS engine backend (QuickJS, JavaScriptCore, V8).
faust Create FAUST DSP plugins in Pulp using offline codegen, pre-generated C++ headers, and the FaustProcessor template wrapper.
forge-app-delivery Building and shipping a Forge app (Modular, Instrument, MIDI, FX, and the sequencer work to come) as a signed installer somebody else can actually use.
forge-modular Forge Modular's generator, patch checker, module pack and Forge-worktree seam — the traps that make green results untrue
friction-report Turn a moment of friction — a conflicting PR, a wedged runner, a mysterious red check, a repeated manual chore — into a durable, actionable report.
handoff Coordinate a cross-session or cross-machine handoff — snapshot the open work, write a status doc to the pulp-planning repo on main, and emit a ready-to-paste goal prompt that links it, so a fresh session (often on another machine) can pick up and finish.
heritage-profile Research, author, validate, render, and archive data-only Pulp Sample Heritage profiles.
hosting Load, run, and test VST3 / AU / CLAP / LV2 plugins from Pulp code.
import-design Import designs from Figma, Stitch, v0, Pencil, React Native, or Claude Design into Pulp web-compat JS with automated visual validation.
installable-tools The acceptance bar for anything Pulp can install (a pulp tool registry entry, pulp add package, or any downloadable).
intel-canary Maintain Pulp's macOS Intel (x86_64) portability lint and CI tiering — the PULP_INTEL_CANARY configure gate, intel_canary_lint.py + its allowlist, and the Tier 0-3 workflows (build.yml canary step, intel-portability.yml, nightly-intel.yml, release-cli.yml universal gate).
ios iOS platform development for Pulp — iPhone/iPad AUv3 app extensions, iOS Simulator builds, UIKit window host, CoreAudio IO audio, touch & Apple Pencil input, XcodeBuildMCP automation.
jsfx-subset Work in Pulp's bounded JSFX lane using source-only examples, subset validation, and explicit exclusions like no @gfx.
kits Search, inspect, plan, apply, remove, pack, and scaffold local Pulp package manifests.
moonbase Optional Moonbase license-activation integration for Pulp — load-bearing compile settings, OpenSSL-at-configure caveat, the moonbase-pulp User-Agent contract, audio-thread gating + click-free fade, async start/pump, the interactive native (no-WebView) activation editor (frame-tick polling + the don't-rebuild-mid-event trap), loadable plugin/standalone formats, and headless screenshots.
motion Debug or validate Pulp animations / transitions / scroll behavior using in-process motion fixtures and offline visual analysis.
mpe Build an MPE-aware Pulp synth — opt into MPE via PluginDescriptor, consume per-note pitch bend / pressure / timbre from MpeBuffer, and route voices through MpeVoiceAllocator without reinventing channel tracking.
packages Search, suggest, add, and browse third-party audio packages.
playback Pulp timeline transport, immutable compiled playback programs, bounded arrangement audio rendering, block-level publication latches, stable shells, and ProcessContext projection.
pr-batching Decide whether several finished branches ship as ONE PR or stay separate.
pr-review-sweep Sweep a PR's automated + human review comments and act on them — especially for material (large / logic-bearing) PRs.
prototype-loop Leveraged-prototype dev loop (pulp loop) — focus marker plus normal watch/rebuild loop, with AOT analyzer guidance and deferred ar-swap/PR-monitor playbook.
prove-before-showing Prove a UI or generation feature actually works before asking a human to look at it.
pulp-vellum-change-routing Route repository-qualified changes across Pulp and Vellum using Pulp's exact ownership projection.
pulp-web-demo Generate and maintain browser demos of Pulp audio plugins (both web ABIs — WAM and WCLAP) from one declarative config, so every demo mounts the SAME shared player and the two ABIs stay in lockstep.
render-toolchain-update Update Pulp's pinned Skia, Dawn, and optional V8 prebuilts as one milestone-matched render-toolchain release.
screenshot Capture faithful PNGs of Pulp view trees / imported UIs headlessly.
screenshot-sync Keep a plugin/demo repo's screenshots in sync with its UX.
sdf-text Work with Pulp's SDF / MSDF / PSDF glyph atlases — building, sampling via SkSL, and the shared text-layout helpers.
ship Sign, notarize, package, and distribute Pulp plugins and apps across macOS, Windows, and Android
skia-gpu-build Enable a Skia + Dawn GPU build of Pulp (MacGpuWindowHost, Skia Graphite).
streams Pick the right Pulp Stream for a given I/O task, wire async callbacks correctly without deadlocking the worker, and avoid the backpressure / cancellation footguns in pulp::runtime::AsyncStream.
stretch Offline time-stretch / pitch / varispeed — character modes, fine-tune presets, A/B toolkit, and the honest quality state, so an agent can pick a mode, dial it in, and ship a plugin with it.
tart-ci Stand up a fast, cached, isolated, disposable macOS CI lane on Tart — layered golden VM images, ephemeral per-job GitHub Actions runners, host-mounted caches, and a reusable per-repo vm-image manifest.
threejs-bridge Build or iterate on Pulp's native Dawn-backed Three.js workflow using the real three.webgpu.js renderer, focused bridge tests, and native demo capture.
timebase Pulp musical/media time primitives, exact beat divisions, tempo and meter maps, transport-range grid projection, order-preserving groove kernels, coordinate randomness, streaming cursors, and quantization arithmetic.
timeline Build, edit, validate, explain, render, import, or integrate Pulp timeline projects through the CLI, MCP tools, or C++ SDK.
trace-analysis The investigation harness for "why is this slow?" over a Pulp Perfetto trace (.pftrace).
trace-sql SQL discipline for querying Pulp Perfetto traces (.pftrace) with trace_processor — idempotent CREATE OR REPLACE PERFETTO views, GLOB not LIKE, dur = -1 incomplete-slice handling, EXTRACT_ARG for span args, joining on stable utid/upid, SPAN_JOIN PARTITIONED, and the draft→validate→execute loop.
update-demos Rebuild, re-pin, and republish Pulp's downstream demo/example repos against a new or the latest SDK.
upgrade Guide users through pulp upgrade — discover new CLI releases, interpret migration notes for the hop they're performing, and apply breaking-change fixes (CMake macro renames, API surface changes, config file moves).
video-proof Record, compose, publish, serve, and review short desktop validation video proofs for Pulp UX/test-harness work.
view-bridge Editor lifecycle and multi-view attach for Pulp plugins — when to override Processor::create_view(), the open → notify_attached → resize → close protocol, release_view() ownership rules, and secondary-view roles.
vst3 VST3 format adapter for Pulp — SingleComponentEffect wiring, bus arrangement negotiation, parameter / MIDI event routing, state round-trip, and the pitfalls discovered while wiring the adapter against Steinberg's SDK.
web-plugins Pulp in the browser — the WAM v2 and WebCLAP adapters, the wasm runtime, the Skia/WebGL2 browser window host, and the WebGPU (emdawnwebgpu) GPU-audio lane.
webview-ui Build or iterate on a Pulp WebView UI using the native WebView bridge, embedded assets, directory-backed dev resources, and focused WebView validation.

This catalog is generated from each skill's SKILL.md frontmatter by tools/scripts/skills_doc_check.py. Do not edit it by hand — after adding or changing a skill, regenerate it with:

python3 tools/scripts/skills_doc_check.py --write