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

webaudio-review

Reviews Web Audio API JavaScript/TypeScript code for correctness, thread safety, and deprecated patterns. Use when the user asks to review AudioWorklet code, check an AudioWorkletProcessor, audit Web Audio graph construction, or diagnose crackling/dropouts in a web audio app. Trigger on phrases like "review my Web Audio code", "check my AudioWorklet", "is my AudioWorkletProcessor safe", or "why does my web audio crackle".

インストール方法を見る

含まれるファイル(2)

  • SKILL.md4.1 KB
  • references/webaudio-violations.md10.0 KB

SKILL.md(原文)

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

Web Audio API Safety Review

Note — JS realtime model differs from native: JavaScript allocation does not look like malloc, but it still creates garbage-collector work and can introduce render-thread jitter. The same cardinal rule applies: avoid allocations and blocking operations inside process().

Invoke audio-dsp-review concepts (no allocations, no blocking) adapted for JavaScript: replace "mutex" with "GC pause" and "malloc" with "object/array creation".

Step 1 — Identify the architecture

Determine which Web Audio pattern is in use before scanning:

PatternWhere audio runsRisk level
AudioWorkletProcessor subclassDedicated worklet threadMedium — GC and message overhead
ScriptProcessorNodeMain threadHigh — deprecated; blocks UI
Main-thread AudioContext onlyMain threadLow — standard graph
OfflineAudioContextOffline renderLow — no real-time deadline

Step 2 — Scan for violations

ViolationLocationRisk
Using ScriptProcessorNodeAnywhereDeprecated; runs on main thread → dropouts under UI load
new Float32Array(...) inside process()AudioWorkletProcessor.process()GC allocation → potential pause during render
Creating objects/arrays/closures inside process()AudioWorkletProcessor.process()GC pressure → jitter
port.postMessage() every process() blockAudioWorkletProcessorHigh overhead; batch updates or use SharedArrayBuffer
Accessing window, document, or DOM from workletprocess() or worklet scopeWorklet thread has no DOM access — throws ReferenceError
Importing non-worklet-safe modules in addModule()Worklet module fileDOM APIs throw; do network/file loading on the main thread and pass data in
Not handling autoplay policyAudioContext creationContext starts suspended; must resume on user gesture
SharedArrayBuffer comms without integer Atomics protocolWorklet ↔ main commsRace-prone shared state — Atomics works on integer typed arrays, not Float32Array
Changing AudioNode graph from worklet threadprocess()connect()/disconnect() are main-thread-only
Assuming a hardcoded render quantum in loops/buffersprocess()Spec and browsers use 128-frame quanta today, but code should use output[channel].length
Forgetting await audioContext.resume()After user gesture handlerStays suspended; no audio output

Step 3 — Write the review

## Web Audio Safety Review: `[file / component]`

### Verdict
[Safe | Has critical violations | Warnings only] — [one sentence summary]

### Critical Violations
**[Category]: [description]**
`file:line` — `offending code`
Why: [realtime or correctness risk]
Fix: [concrete suggestion]

### Warnings
[same format]

### What's Done Well
[correct patterns observed]

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

See references/webaudio-violations.md for BAD/GOOD code examples for every violation above.

Quick fix table

ViolationSafe alternative
ScriptProcessorNodeAudioWorkletProcessor subclass
new Float32Array() in process()Pre-allocate in constructor; reuse across calls
port.postMessage() every blockBatch at lower rate, or use SharedArrayBuffer + integer Atomics
Raw SharedArrayBuffer readsAtomics.load() / Atomics.store() on Int32Array / Uint32Array views
Graph changes from workletQueue a message to main thread; apply in port.onmessage
Context suspendedbutton.addEventListener('click', () => ctx.resume())

レビュー

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

同じリポジトリのスキル

概要と使いどころ

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 のスキルをすべて見る

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