本文へ移動
cccskills
無料GitHub で公開

au-review

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.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md5.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Systematic checklist for diagnosing audio artifacts. Use when the user describes a sound quality problem — clicks, pops, crackling, silence, DC offset, aliasing, phase issues, or latency problems. Trigger on phrases like "why do I hear clicks?", "my output has DC offset", "there's aliasing in my oscillator", "phase is wrong in mono", "dropout when CPU spikes". Pairs with audio-dsp-review (realtime safety) and audio-numerics-review (numeric correctness) — use those to fix once the cause is found.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Reviews audio DSP and audio processing code for realtime safety violations. Use whenever the user asks to review, audit, or check audio processing code — including plugin process callbacks, audio engine render functions, DSP implementations, or any code that runs on the audio thread. Trigger on phrases like "review my processBlock", "check this DSP code", "is this safe for the audio thread?", "review my JUCE plugin", or when you see an audio callback and spot potential realtime violations. Flag issues proactively even when the user hasn't explicitly asked for a review.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Explains DSP math concepts to developers who need the theory behind an algorithm. Use whenever the user asks how a signal-processing concept works, wants intuition behind a formula, or hits a math-shaped bug. Trigger on phrases like "how does a Fourier transform work", "explain z-transforms", "what is convolution", "why does my biquad ring", "what is windowing for", "what causes aliasing", or "how do I convert gain to dB". Also trigger when the user pastes DSP code and asks why it behaves a certain way.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Reviews audio DSP code for numerical correctness. Use when the user asks to review, audit, or check DSP code for correctness issues — filters, feedback loops, fixed-point arithmetic, accumulation loops, or any numeric computation in audio code. Trigger on "check this filter for NaN", "why does my reverb blow up?", "is this numerically stable?", "why do I hear DC in my output?". Pairs with audio-dsp-review (realtime safety); this skill covers numeric correctness. Flag issues proactively.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Profiling strategy for audio CPU issues — xruns, spikes, and buffer underruns. Use when the user reports CPU overload, audio glitches under load, or performance regressions. Trigger on phrases like "I'm getting xruns", "my plugin causes CPU spikes", "dropouts under high voice count", "audio thread is too slow", "how do I profile my DSP". References audio-numerics-review for denormal slowdown and audio-dsp-review for lock contention.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Traces and documents signal paths, bus/aux architecture, and sidechain connections in audio systems. Surfaces hidden coupling between audio components. Use when the user asks to trace a signal chain, explain audio routing, understand an audio graph, locate sidechain sources, or describe how audio flows through a plugin or engine. Trigger on phrases like "trace this signal chain", "explain this audio routing", "what calls what in this audio graph", "where does the sidechain come from", "how does audio flow through this plugin".

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

kunitoki のスキルをすべて見る

このスキルの問題を報告する