Entry point for any Bun-shaped question in dean-stack. Bun 1.3.13 is the only allowed runtime/toolchain for this repo and is pinned via the root packageManager field.
When to invoke
- The user types
bun with no further specifier and you need to route them.
- The user asks "which Bun skill," "Bun overview," or how Bun is installed/pinned for this repo.
- A question mixes runtime + test + install concerns and the right sub-skill is ambiguous — pick after reading the patterns table below.
Owns
Entry point that routes Bun questions to the right sub-skill (runtime, test runner, package manager) and pins Bun 1.3.13 via packageManager.
Defers to
bun-runtime — anything about executing scripts (Bun.serve, Bun.file, Bun.$, bunx, runtime flags).
bun-test — anything about unit tests (bun test, bun:test matchers, mocks, coverage, watch).
bun-package-manager — anything about installing/adding/removing deps, the lockfile, workspaces, or overrides.
turborepo — for which task runs when (bun run check ordering, dependsOn); Bun is the executor, Turbo is the scheduler.
Dean-stack rules
- Pillar 4 (CLI-gate-first) means: every script in
package.json is invoked as bun run <name> and must be reachable through Turbo — no direct npx/pnpm/npm invocations slip in.
- Pillar 3 (IDB-first state) is unaffected at the Bun layer (state lives in the browser), but Bun is what runs the migration unit tests in
bun test.
- The
packageManager pin is load-bearing: a contributor on a different Bun version will get reproducible installs only if this field is honored by corepack/CI.
Patterns
Pin Bun via packageManager
// package.json (repo root)
{
"packageManager": "bun@1.3.13",
"engines": { "bun": ">=1.3.13" }
}
The pin is the single source of truth — no .bun-version, no Volta entry. CI reads packageManager and installs the matching Bun.
Routing table
| Question shape |
Sub-skill |
| "How do I write a unit test for an atom reducer?" |
bun-test |
"Add idb to the web app" |
bun-package-manager |
"Run a script that shells out to git" |
bun-runtime |
"Why is bun install slow in CI?" |
bun-package-manager |
| "Cap test runner at 1 thread for IDB" |
bun-test |
| "Read a JSON file in a build script" |
bun-runtime |
One Bun, three roles
bun install # bun-package-manager
bun run check # bun-runtime executes the script Turbo orchestrates
bun test app/state # bun-test
Each command lives in a different sub-skill; pick the one whose surface owns the verb.
Anti-patterns
- Don't suggest
npm, pnpm, yarn, or npx — the repo is Bun-only; bunx replaces npx.
- Don't unpin
packageManager — a floating range (bun@*) defeats reproducibility.
- Don't answer test/install/runtime questions inside this router — route to the sub-skill so the answer carries the right rules.
- Don't introduce
node as a runtime target — see node skill: Node 25 exists only for tools that refuse to run on Bun.
Triggers on
bun, bun 1.3.13, packageManager, which bun, bun overview
1---2name: bun3description: Router skill for Bun 1.3.13 in dean-stack — pins the runtime via `packageManager` and dispatches to a sub-skill (runtime, test, package manager) based on the question. Triggers on: bun, bun 1.3.13, packageManager, which bun, bun overview.4license: MIT5---67Entry point for any Bun-shaped question in dean-stack. Bun 1.3.13 is the only allowed runtime/toolchain for this repo and is pinned via the root `packageManager` field.89## When to invoke10- The user types `bun` with no further specifier and you need to route them.11- The user asks "which Bun skill," "Bun overview," or how Bun is installed/pinned for this repo.12- A question mixes runtime + test + install concerns and the right sub-skill is ambiguous — pick after reading the patterns table below.1314## Owns15Entry point that routes Bun questions to the right sub-skill (runtime, test runner, package manager) and pins Bun 1.3.13 via `packageManager`.1617## Defers to18- `bun-runtime` — anything about executing scripts (`Bun.serve`, `Bun.file`, `Bun.$`, `bunx`, runtime flags).19- `bun-test` — anything about unit tests (`bun test`, `bun:test` matchers, mocks, coverage, watch).20- `bun-package-manager` — anything about installing/adding/removing deps, the lockfile, workspaces, or overrides.21- `turborepo` — for *which task runs when* (`bun run check` ordering, `dependsOn`); Bun is the executor, Turbo is the scheduler.2223## Dean-stack rules24- Pillar 4 (CLI-gate-first) means: every script in `package.json` is invoked as `bun run <name>` and must be reachable through Turbo — no direct `npx`/`pnpm`/`npm` invocations slip in.25- Pillar 3 (IDB-first state) is unaffected at the Bun layer (state lives in the browser), but Bun is what runs the migration unit tests in `bun test`.26- The `packageManager` pin is load-bearing: a contributor on a different Bun version will get reproducible installs only if this field is honored by `corepack`/CI.2728## Patterns2930### Pin Bun via `packageManager`31```jsonc32// package.json (repo root)33{34 "packageManager": "bun@1.3.13",35 "engines": { "bun": ">=1.3.13" }36}37```38The pin is the single source of truth — no `.bun-version`, no Volta entry. CI reads `packageManager` and installs the matching Bun.3940### Routing table41| Question shape | Sub-skill |42|---|---|43| "How do I write a unit test for an atom reducer?" | `bun-test` |44| "Add `idb` to the web app" | `bun-package-manager` |45| "Run a script that shells out to `git`" | `bun-runtime` |46| "Why is `bun install` slow in CI?" | `bun-package-manager` |47| "Cap test runner at 1 thread for IDB" | `bun-test` |48| "Read a JSON file in a build script" | `bun-runtime` |4950### One Bun, three roles51```bash52bun install # bun-package-manager53bun run check # bun-runtime executes the script Turbo orchestrates54bun test app/state # bun-test55```56Each command lives in a different sub-skill; pick the one whose surface owns the verb.5758## Anti-patterns59- **Don't suggest `npm`, `pnpm`, `yarn`, or `npx`** — the repo is Bun-only; `bunx` replaces `npx`.60- **Don't unpin `packageManager`** — a floating range (`bun@*`) defeats reproducibility.61- **Don't answer test/install/runtime questions inside this router** — route to the sub-skill so the answer carries the right rules.62- **Don't introduce `node` as a runtime target** — see `node` skill: Node 25 exists only for tools that refuse to run on Bun.6364## Triggers on65bun, bun 1.3.13, packageManager, which bun, bun overview