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

clap-review

Reviews CLAP plugin implementations for spec compliance, thread safety, and correctness. Use when the user asks to review a CLAP plugin, audit a CLAP extension, or check whether their process() callback follows the CLAP threading model. Trigger on phrases like "review my CLAP plugin", "check CLAP extension", "is my CLAP process() safe", "audit my clap_plugin_t", or when you see clap_plugin_t, clap_process_t, or CLAP extension structs in the code.

インストール方法を見る

含まれるファイル(2)

  • SKILL.md4.8 KB
  • references/clap-spec-checklist.md8.4 KB

SKILL.md(原文)

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

CLAP Plugin Review

CLAP's threading model is explicit by design — every host method and extension entry point is tagged with a thread requirement. Violations are silent at compile time and often only surface under specific host implementations.

Step 0 — Run universal checks first

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

Step 1 — Identify plugin structure

Locate and characterize the plugin's registered interfaces:

ItemWhat to check
clap_plugin_tprocess, activate, deactivate, start_processing, stop_processing implemented
Extensions returned by get_extensionWhich of: audio-ports, params, state, gui, note-ports, log, timer-support, posix-fd-support
Host extensions queried in initWhich host callbacks are cached; which thread they may be called from
clap_plugin_descriptor_tid is stable and reverse-DNS formatted; features declared correctly

Step 2 — Scan for CLAP-specific violations

ViolationWhereRisk
Holding clap_event_* pointer after callback returnsprocess()Use-after-free — events are host-owned, lifetime ends when process() returns
Calling a host method from the wrong thread contextaudio↔main boundarySpec violation — obey each method's [main-thread], [audio-thread], or [thread-safe] tag
State save/restore doing I/O on wrong threadsave/load in state extensionThread safety violation — state methods run on main thread, not audio thread
Extension methods not guarded by thread_checkany extension handlerData race — extensions have per-method thread requirements; check each one
process() returning wrong clap_process_statusprocess()Host misinterprets plugin state — CLAP_PROCESS_SLEEP vs CLAP_PROCESS_CONTINUE affects scheduling
Param IDs not stable across save/load cyclesparams extensionBroken parameter recall — param IDs must be stable for the lifetime of the plugin ID
Audio port channel counts mismatched at runtime vs declaredaudio-ports extensionBuffer overread/underwrite — host allocates buffers based on declared port config
Calling host params->request_flush() from process()params extensionSpec violation — request_flush is [thread-safe, !audio-thread]; emit output events during process() instead
Querying plugin extensions before plugin->init()host/plugin setupSpec violation — get_extension() is forbidden before init, but allowed during and after init
Not handling CLAP_EVENT_TRANSPORT when transport-awareprocess()Incorrect playback position — transport events must be consumed each process call

Step 3 — Write the review

## CLAP Plugin Review: `[file / plugin id]`

### Verdict
[Spec-compliant | Has critical violations | Warnings only] — [one sentence summary]

### Critical Violations
**[Category]: [description]**
`file:line` — `offending code`
Why: [one sentence on the spec / thread safety risk]
Fix: [concrete CLAP-idiomatic suggestion]

### Warnings
[same format]

### What's Done Well
[correct patterns — proper event copying, thread_check guards, correct status codes, etc.]

### Recommended Fixes (priority order)
1. ...

Quick fix table

ViolationFix
Storing clap_event_* pointerCopy the event struct by value before process() returns
Host call from wrong threadUse only methods allowed for the current thread, or queue host->request_callback() and handle main-thread work in on_main_thread()
Wrong clap_process_statusReturn CLAP_PROCESS_SLEEP only when all voices are done; CLAP_PROCESS_CONTINUE otherwise
Unstable param IDsUse a fixed enum or stable hash derived from param name, never an index
Port count mismatchValidate audio_inputs_count / audio_outputs_count in process() against declared ports
Missing thread_check guardWrap host calls with host_thread_check->is_main_thread(host) before calling

For the full CLAP audit checklist organized by extension, threading rules, and BAD/GOOD code patterns see references/clap-spec-checklist.md.

レビュー

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

同じリポジトリのスキル

概要と使いどころ

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.

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

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

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日 更新

kunitoki のスキルをすべて見る

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