agentsclimarketplace

Au review

Skill kunitoki/sonic-skills/skills/au-review

Modular Markdown-based audio skills for AI agents and developers, covering signal processing, synthesis, effects, analysis, and spatial audio.

Install
npx -y skills add kunitoki/sonic-skills --skill au-review

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Reviews AudioUnit v2/v3 plugin implementations for spec compliance, thread safety, and correctness. Use when the user asks to review an AudioUnit plugin, check an AUv3 app extension, audit property or parameter handling, or asks "is my AUComponent thread-safe?" or "why does my AU crash in Logic?". Trigger on phrases like "review my AudioUnit", "check my AUv3", "is my render block safe?", or when you see AURenderCallback, internalRenderBlock, kAudioUnitProperty_*, or AUAudioUnit in the code.

SKILL.md

5.5 KB, as published. Nobody here has run it

AudioUnit (AUv2 / AUv3) Review

AUv2 runs in-process inside the host; AUv3 runs in a sandboxed XPC extension. Both share the same realtime-callback constraints, but AUv3 adds ObjC/Swift runtime exposure and app-extension lifecycle rules that introduce a distinct class of violations.

Step 0 — Run universal checks first

Invoke audio-dsp-review and audio-numerics-review before this skill. This skill adds AU-specific checks on top; it does not replace realtime-safety or numerics reviews.

Step 1 — Identify AU version and structure

Determine which AU variant is under review:

VariantEntry pointRender surface
AUv2 (Component Manager)AudioComponentRegister / AUMIDIEffectFactoryAURenderCallback
AUv3 (App Extension)AUAudioUnit subclass, NSExtensionPrincipalClassinternalRenderBlock

Locate: the render callback / render block, allocateRenderResourcesAndReturnError:, deallocateRenderResources, supportedViewConfigurations, and all kAudioUnitProperty_* / AUParameter access sites.

Step 2 — Scan for AU-specific violations

ViolationWhere to lookRisk
ObjC message send ([obj msg] / .property) in render callbackAURenderCallback body, internalRenderBlock capture bodyObjC runtime uses locks and may allocate; not realtime-safe
Render block calls through self, weak references, Swift closures, or ObjC propertiesAUv3 render blockRuntime calls and weak-reference loads are not realtime-safe
kAudioUnitProperty_* read/written from render threadAny render-path property accessAudioUnitGetProperty / SetProperty are not thread-safe
Parameter ramps not applied sample-accuratelyAUParameterEvent handling, AUv2 renderProcParameter jumps produce zipper noise on DAW automation
Tail time not reported via kAudioUnitProperty_TailTimeReverb, delay, convolution AUsHost silences the AU before tail has decayed
AUv3 extension missing com.apple.security.app-sandbox entitlementXcode target entitlementsApp Store / Notarisation rejection; Logic refuses to load
NSFileManager, NSUserDefaults, or UserDefaults accessed from render blockAUv3 internalRenderBlockMain-thread-only / file-I/O APIs; realtime violation and potential deadlock
AUAudioUnit subclass not calling super in allocateRenderResourcesallocateRenderResourcesAndReturnError: overrideResources for format negotiation never initialised; silent misrender
Format negotiation not honouring outputBusses[n].format before allocatingallocateRenderResourcesMismatch between agreed and actual format; distortion or crash
auval failures not addressedOverall AU implementationPlugin rejected or silently disabled by Logic, GarageBand, and MainStage

Step 3 — Write the review

Same format as audio-dsp-review / audio-numerics-review: Verdict · Critical Violations (category, file:line, Why, Fix) · Warnings · What's Done Well · Recommended Fixes (priority order) Prefix the header with AudioUnit Review: [file / class].

auval checklist

Run auval -a to list registered AUs; validate with type/subtype/manufacturer codes: auval -v aufx MYFX MFGR (effect) · auval -v aumu MYSY MFGR (instrument)

Common auval failureCauseFix
AU does not support kAudioUnitProperty_CocoaUIMissing NSView-based UI factoryImplement AUCocoaViewInfo + property handler
Render returned errorNon-zero OSStatus from render callbackValidate stream format; guard every render call
TailTime not setReverb/delay returns 0 tail timeReturn duration from kAudioUnitProperty_TailTime
Latency reported as 0Plugin adds latency but reports noneReturn correct samples from kAudioUnitProperty_Latency
Parameter not in rangeDefault value outside AUParameterInfo min/maxClamp default inside declared range

Quick fix table

ViolationFix
ObjC call in render blockCache plain C/C++ DSP objects, buffers, and atomics before returning the block; call ObjC only outside callback
self / weak-self use in render blockCapture raw C++ kernel pointers or __unsafe_unretained ivars once; do not load weak refs or call properties per render
Property access from render threadUse std::atomic<> or lock-free FIFO; read/write properties only from main/audio-graph thread
No sample-accurate parameter rampsProcess AUParameterEvent list per-sample; use a one-pole smoother for missing events
Missing tail timeAUv2: implement kAudioUnitProperty_TailTime; AUv3: override tailTime in seconds
Sandbox entitlement missingEnable the AUv3 app-extension sandbox; add file/network entitlements only when the extension actually needs them
NSUserDefaults in render blockStore params via AUParameter tree; load defaults only in init / allocateRenderResources

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.