Skip to content
Development
Skill

/verify

Verify a Bun runtime change by driving the debug binary end-to-end.

From plugin
bun
97k8 skills5 commands

Claude Code

$ npx -y skills add oven-sh/bun --skill verify --agent claude-code

SKILL.md

verify.SKILL.md
name: verify
description: Verify a Bun runtime change by driving the debug binary end-to-end.

Verify a Bun runtime change

Build and drive the debug binary directly — never `bun test`, never import-and-call.

Build

bun bd --version   # builds ./build/debug/bun-debug and prints its version

Drive

For any JS-visible change, run the debug binary with `-e` and observe stdout:

bun bd -e '<repro>'   # builds, then runs; sets BUN_DEBUG_QUIET_LOGS for you

For worker/subprocess-shaped changes, spawn a subprocess (still `-e`) so worker teardown / event-loop-idle paths are exercised. Cross-check against `node -e '<same repro>'` for Node-compat changes.

Gotchas

  • **A `src/js/**` edit can silently not reach the binary.** `bundle-modules`

regenerates `build/<cfg>/codegen/InternalModuleRegistryConstants.h`, but the C++ TU that embeds it is not always recompiled, so the build succeeds while the binary still runs the OLD JS. Gate on the binary, not the build: ask the binary you just built — `bun bd -e 'console.log(<Class>.toString().includes("<new-id>"))'` (or run `./build/<cfg>/bun` directly). Plain `bun` is the system Bun on $PATH and never has your edit, so it answers about the wrong binary. If false, `touch src/jsc/bindings/InternalModuleRegistry.cpp` and rebuild.

  • **Prefix every `bun bd` with `PATH="$HOME/.cargo/bin:$PATH"`** — Homebrew's `rust`

formula shadows the pinned nightly, and `bun bd` dies with `the option 'Z' is only accepted on the nightly compiler`. `bun bd` re-runs cargo on every invocation, so this is needed for follow-up runs too, not just the first build.

  • `node:cluster` changes can't be driven with `-e`: `cluster.fork()` re-execs `argv[1]`, so workers need a real file on disk. Write a scratch script and run `./build/debug/bun-debug <file>`.
  • Only one `bun bd` per worktree at a time — a second one blocks on the build lock and looks like a runtime hang. Build once, then drive `./build/debug/bun-debug` directly under `timeout`.
  • `BUN_DEBUG_QUIET_LOGS=1` suppresses debug-build log spam.
  • Debug builds print `[cachefs]`/`[sys]` lines to stdout; filter them before diffing

output against `node`.

  • MessagePort's `.on/.off` are added by requiring `worker_threads` — plain `new MessageChannel()` ports only have `addEventListener` until then.
  • The debug+asan build is 10-100× slower than release; large-allocation stress tests can time out locally while passing in CI.
  • Locally, run only the test files you touched. Leave neighbouring files, whole directories and repeat-for-stability loops to CI.
Read more
@oven-sh
Ships withbun

Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one

Stars on GitHub

Momentum

stars in total
96.7k
Star history of oven-sh/bun on GitHub, a chart by star-history.com

Other skills on bun.

implementing-jsc-classes-cpp

implementing-jsc-class…

Implements JavaScript classes in C++ using JavaScriptCore. Use when creating new JS classes with C++ bindings, prototypes, or…

@oven-sh@oven-shInstall Skill
implementing-jsc-classes-rust

implementing-jsc-class…

Creates JavaScript classes using Bun's bindings generator (.bind.ts). Use when implementing new JS APIs in Rust with JSC…

@oven-sh@oven-shInstall Skill
rust-system-calls

rust-system-calls

Guides using bun_sys for system calls and file I/O in Rust. Use when implementing file operations, opening fds, or any syscall…

@oven-sh@oven-shInstall Skill
slowest-tests

slowest-tests

Find the top-N slowest test files in CI from a recent BuildKite run, optionally posting the results to a Slack channel as a…

@oven-sh@oven-shInstall Skill
writing-bundler-tests

writing-bundler-tests

Guides writing bundler tests using itBundled/expectBundled in test/bundler/. Use when creating or modifying bundler, transpiler,…

@oven-sh@oven-shInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about verify.

Which coding agents can use verify?
verify installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.