From all-skills
Install and operate whamm! to instrument .wasm binaries using DTrace-inspired monitor scripts. Count opcodes, track function calls, choose injection strategies.
How this skill is triggered — by the user, by Claude, or both
Slash command
/all-skills:whammThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Entry point for installing, configuring, and running whamm! (v0.1.0). whamm! instruments compiled `.wasm` binaries using a DTrace-inspired `.mm` monitor script; no source changes to the target application are required.
Entry point for installing, configuring, and running whamm! (v0.1.0). whamm! instruments compiled .wasm binaries using a DTrace-inspired .mm monitor script; no source changes to the target application are required.
For the .mm language itself — probe syntax, events, libraries, and examples — load the companion whamm-dsl skill in this plugin.
Activate when:
.wasm binary without modifying sourcemise or building from sourcewasmtime (rewriting path) or Wizard engine (wei path)Copy the stanzas from templates/mise.toml into your project's mise.toml. Full explanation of asset patterns, Rosetta caveat, and build-from-source steps lives in references/installation.md.
[tools."github:ejrgilbert/whamm"]
version = "0.1.0"
[tools."github:ejrgilbert/whamm".platforms]
linux-x64 = { asset_pattern = "whamm-linux-x86_64" }
macos-x64 = { asset_pattern = "whamm-macos-x86_64" }
macos-arm64 = { asset_pattern = "whamm-macos-x86_64" } # Rosetta 2
Verify the install:
mise install
whamm --help
v0.1.0 ships bare binaries for x86_64 only. On Apple Silicon without Rosetta 2, build from source — see references/installation.md.
Full flag reference lives in references/cli.md. Core commands:
# Instrument: bytecode-rewriting path
whamm instr --app app.wasm --script monitor.mm -o out.wasm
# Compile monitor for engine-support (wei) path — no --app
whamm instr --script monitor.mm --wei -o monitor.wasm
# Inspect bound variables available at a match rule
whamm info --rule "wasm:opcode:call:before"
# Global help
whamm --help
Set RUST_LOG={error|warn|info|debug|trace|off} to control verbosity.
.mm monitor script (see whamm-dsl skill).whamm instr --app app.wasm --script monitor.mm -o out.wasm
whamm_core.wasm preloaded at runtime:
wasmtime run \
--env TO_CONSOLE=true \
--preload whamm_core=whamm_core.wasm \
out.wasm
whamm_core.wasm is NOT included in the prebuilt release binary. Build it from source — see references/installation.md.
--app:
whamm instr --script monitor.mm --wei -o monitor.wasm
wizeng \
--env=TO_CONSOLE=true \
--monitors=monitor.wasm+whamm_core.wasm \
app.wasm
The Wizard engine attaches probes at runtime; the target .wasm is not modified.
Two strategies exist: bytecode rewriting (any runtime, --app required at instr time, intrusive) and engine support via --wei (Wizard engine only, non-intrusive, supports JIT optimization and persistent @static state). A full comparison table covering intrusiveness, runtime compatibility, JIT optimization, and @static state behavior lives in references/injection-strategies.md.
Load the whamm-dsl skill in this plugin for probe syntax, event matching, built-in variables, library functions, and annotated .mm examples. This skill (whamm) covers the tool only.
Treat whamm info --rule "<match-rule>" as the authoritative source for the bound variables available at a probe site, and confirm probe output against an actual instrumented run. This follows /core:anti-fabrication — verify behavior with the tool at the installed version, do not infer it.
templates/mise.toml — mise stanzas with platform asset patterns and task definitionsreferences/installation.md — mise github backend explained, build-from-source steps, whamm_core.wasm, verificationreferences/cli.md — all flags for whamm instr, whamm info, RUST_LOG, both run pathsreferences/injection-strategies.md — strategy comparison table and selection guidenpx claudepluginhub vinnie357/claude-skills --plugin sbxGuides writing and debugging `.mm` monitor scripts — the DTrace-inspired DSL for instrumenting WebAssembly binaries. Covers match rules, variables, predicates, and bound variable tables.
Automatically discovers and provides access to WebAssembly skills for development tasks with WASM, WASI, wasm-bindgen, Rust-to-WASM, wasm-pack, and browser runtimes.
Guides Wasmtime for WebAssembly development: compiling Rust/Zig to wasm, embedding in Rust/Elixir hosts, using WASI, and Component Model.