daw-smoke

daw-smoke is a skill for Claude Code, Codex from Generous-Corp/pulp. It costs 37 tokens per session (5,212 once invoked), scanned A, original, MIT.

A smoke-testing tool for checking reload, editor, and format-adapter behaviour inside REAPER, a digital audio workstation. It runs selected functional checks in the real host rather than only checking whether a plugin can be scanned and loaded.

In plain words
What is it for?
Use it to verify plugin reloads, live plugin swaps, and related editor or format-adapter flows in REAPER, including headless-safe checks.
Why use it?
It catches host-level behaviour that validator tools may miss, while keeping the test opt-in and limited to the relevant changes.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/generous-corp/pulp/daw-smoke
Any agent
npx skills add Generous-Corp/pulp --skill daw-smoke
Clone the repo
git clone --depth 1 https://github.com/Generous-Corp/pulp

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for daw-smoke

README.md
[![agentmods](https://agentmods.dev/badge/skills/generous-corp/pulp/daw-smoke.svg)](https://agentmods.dev/skills/generous-corp/pulp/daw-smoke)
Your own site
<a href="https://agentmods.dev/skills/generous-corp/pulp/daw-smoke"><img src="https://agentmods.dev/badge/skills/generous-corp/pulp/daw-smoke.svg" alt="Measured on agentmods" height="20"></a>
Per session 37 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,212 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00037 $0.05212
Opus 5 $0.00018 $0.02606
Sonnet 5 $0.00007 $0.01042
Haiku 4.5 $0.00004 $0.00521

Measured today against content hash c2248968a92b, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

daw-smoke scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.agents/skills/daw-smoke/SKILL.md · 310 lines

How it starts

The opening of the file, as written. The whole thing — 310 lines — stays where its author put it; the contents beside it link to each section on GitHub.

daw-smoke — functional reload/editor verification in a real DAW (REAPER)

Use this when you need proof that a reload / editor / format-adapter behavior actually works inside a host, beyond what auval / pluginval / clap-validator give (those prove scan+load, not functional behavior).

Harness: tools/testing/daw-smoke/reaper_smoke.py (+ insert_and_float.lua and sequence_loop_seek.lua). The scraper + mode dispatch are unit-tested with no REAPER in tools/testing/daw-smoke/test_reaper_smoke.py. Full rules: docs/guides/daw-smoke.md. CLAUDE.md has the one-paragraph policy.

Modes (--mode, default reload)

  • reload — the original flow. Seed watched DSP variant A, insert+float the FX, copy variant B over the watched path, scrape swapped DSP / reload rejected.
  • live-plugin-swap — a live plugin-INSTANCE swap inside a Pulp host that hosts another plugin in a SignalGraph. Insert+float the host FX, write a swap request to --watched-swap-request, then scrape [live-swap] committed (PASS) vs live plugin swap refused (FAIL). The success marker is NOT logged by the core swap path — SignalGraph::prepare_swap logs ONLY refusals. The host plugin must emit [live-swap] committed itself from its NodeLiveSwapPolicy::on_instance_swapped observer (that is the seam the smoke scrapes and the headless test exercises). The DAW-free, CI-runnable mirror is test/test_signal_graph_live_swap_continuity.cpp, which drives the same stage + prepare_swap commit through process() and asserts sample continuity (no dropout/xrun) across the swap block for every hosted format (VST3/AU/CLAP/ LV2). Use the REAPER mode as the local-only in-host confirmation.
  • sequence-loop-seek — set a loop region on the REAPER timeline, play, and perform scripted seeks (into/out of the loop and across the wrap) against a plugin that embeds a sequence. sequence_loop_seek.lua drives the transport via a deferred pump (GetSet_LoopTimeRange + GetSetRepeat + OnPlayButton + SetEditCurPos seeks), handshaking FX_SHOWNSEEKS_DONE through the status file. The plugin emits per-block markers [seq-loop] blk host_qn=.. seq_qn=.. active=.. jump=.. dropout=..; the scraper (analyze_seq_loop_log) asserts the sequence read position TRACKED the host playhead within --pos-tolerance-qn on every block — a free-running counter that ignores the host jump is caught as drift → FAIL. PASS requires >=1 wrap AND >=1 seek, note activity, and no dropout; otherwise INCONCLUSIVE (a SKIP/INCONCLUSIVE is never a PASS). This is the harness half of Phase-2 DoD Proof #2 — the full proof also needs the embedded-sequence plugin (Gate-5/6) and a real REAPER run. The scraper is unit-tested with synthetic logs (incl. a negative drift/dropout case), so the parse logic is proven without REAPER.
  • editor-open — insert the plugin, open its editor, confirm it rendered. For a product whose editor is the product, neither a hot-swap nor a transport scenario applies; the only question is whether it loads in a real host and draws. This is precisely the check the format validators cannot make: auval and clap-validator prove a plugin scans and instantiates, never that its window comes up. After FX_SHOWN it waits before tearing down, because an editor that opens and then throws reports itself in the seconds after the window appears.
  • editor-build — generate a patch from inside the host. editor-open proves the window comes up; it does not prove the product behind it works. The generator is spawned by the plugin, and an editor that draws perfectly can still fail to reach it — the standalone once did exactly that, because an app launched from Finder inherits no PATH. Nothing short of triggering a real build inside the host tests that path. The trigger is a file the shell reads (FORGE_MODULAR_TEST_PROMPT), not synthetic clicks — see the gotcha below. The verdict is the generator's own success line plus the file it names, scraped from the plugin's log; never "the click appeared to land."
  • All modes share the same REAPER lifecycle (ReaperSession): fresh portable dir, temp scan path, pre-warm scan, scripted insert+float, guaranteed teardown. They differ only in what they SEED, the TRIGGER they fire once the FX is shown, and how they VERIFY the captured log. Add a mode by writing seed/trigger/verify around ReaperSession, not by duplicating the launch plumbing.

Read the full file on GitHub · 310 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. today First seen · 310 lines · 37 tokens per session scan A c2248968a92b

Subscribe to this mod's changes

daw-smoke is a skill published in the GitHub repository Generous-Corp/pulp (16 stars, last pushed today), licensed MIT. It adds 37 tokens to every session and 5,212 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-04.

Related

Other skills, from other repositories

use-agent-browser-for-airi

Test AIRI display-model imports with agent-browser across stage-tamagotchi Electron, stage-web, and stage-pocket mobile web layouts. Use when uploading and verifying contributor-supplied Live2D ZIP, VRM, or MMD ZIP/PMX/PMD files through AIRI's model selector, including onboarding bypass, format-specific import…

moeru-ai/airi · 87 tokens

run-integration-tests

Build, pack, and run .NET MAUI integration tests locally. Validates templates, samples, and end-to-end scenarios using the local workload.

dotnet/maui · 35 tokens

cli-e2e-testcase-writer

Use when adding or updating Go CLI E2E coverage for one tests/clie2e/{domain} domain of the compiled lark-cli, especially when the work requires live --help or schema exploration, scenario-based clie2e.RunCmd workflows, and per-domain coverage.md maintenance.

larksuite/cli · 78 tokens

webapp-testing

Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.

every-app/open-seo · 35 tokens

__SKILL_ID__

This fixture verifies that skill content can be written into the target sandbox and queried back immediately.

NVIDIA/NemoClaw · 10 tokens

harness-test-writer

Add regression test cases to the Bifrost provider harness (the Postman collection run via make run-provider-harness-test) based on a merged PR or a GitHub issue. Fetches the PR/issue, traces the affected wire path in the codebase, checks existing harness coverage, designs cases following harness conventions, inserts…

maximhq/bifrost · 133 tokens