bun-runtime — скилл для Claude: Bun вместо Node
Скилл объясняет агенту, когда брать Bun вместо Node, и даёт команды для установки, тестов и деплоя на Vercel.
npx skills add affaan-m/ECC --skill bun-runtime -a claude-codeЧто делает bun-runtime
Скилл описывает Bun как одну цепочку инструментов: рантайм, менеджер пакетов, бандлер и тест-раннер. Агент получает правила выбора — Bun для новых JS/TS-проектов и скриптов, где важна скорость установки и запуска, Node там, где нужна максимальная совместимость с экосистемой или зависимость ломается на Bun.
Внутри — заметки по миграции: node script.js меняется на bun run script.js, npm install на bun install, npx на bun x. Отдельно разобраны команды пакетов и воркспейсов (bun add, bun outdated, bun pm ls, bun audit, bun dedupe, bun prune), встроенные API вроде Bun.file, bun:sqlite, Bun.serve и настройка Vercel через bunVersion: "1.4.x" в vercel.json. Есть примеры тестов на bun:test и флаги CI: --changed, --isolate, --parallel, --shard.
Ориентир — Bun 1.4.x, и в тексте прямо сказано проверить bun --version перед тем, как полагаться на имена флагов. Совместимость с Node не полная: часть нативных аддонов и редких node: API может не работать, поэтому перед продакшеном стоит проверить свои зависимости. Скилл пригодится, если вы уже решили переходить на Bun или настраиваете его на Vercel. Если проект живёт на Node и менять рантайм никто не собирается, ставить его незачем.
Какие задачи решает
- перевести проект с npm на bun install
- запустить TypeScript-файл без сборки
- настроить Bun как рантайм на Vercel
- разбить тесты по шардам в CI
- заменить npx на bun x в скриптах
Примеры запросов агенту
- Переведи этот проект с Node на Bun и покажи, что нужно поменять
- Настрой запуск тестов через bun test с параллельными воркерами
- Добавь bunVersion в vercel.json и объясни, что ещё поменять для деплоя
Как установить bun-runtime
1Через Skills CLI (Vercel)
npx skills add affaan-m/ECC --skill bun-runtime -a claude-code2Вручную: положить файлы
~/.claude/skills/bun-runtime/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/bun-runtime/
1Через Skills CLI (Vercel)
npx skills add affaan-m/ECC --skill bun-runtime -a codex2Вручную: положить файлы
.agents/skills/bun-runtime/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add affaan-m/ECC --skill bun-runtime -a cursor2Вручную: положить файлы
.cursor/skills/bun-runtime/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install affaan-m/ECC bun-runtime2Вручную: положить файлы
.github/skills/bun-runtime/SKILL.md1Через Skills CLI (Vercel)
npx skills add affaan-m/ECC --skill bun-runtime -a gemini-cli2Командой платформы
gemini skills install https://github.com/affaan-m/ECC --path skills/bun-runtimeВручную: положить файлы
.devin/skills/bun-runtime/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add affaan-m/ECC --skill bun-runtime -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора146
Весь набор →Похожие
Вопросы о bun-runtime
Как установить bun-runtime в Claude?
Выполните npx skills add affaan-m/ECC --skill bun-runtime -a claude-code. Файл скилла окажется в ~/.claude/skills/bun-runtime/SKILL.md.
Что делает скилл bun-runtime?
Даёт агенту инструкции по работе с Bun: выбор между Bun и Node, миграция команд, встроенные API, тесты и деплой на Vercel.
Bun полностью совместим с Node?
Нет. Часть нативных аддонов и редких внутренних node: API может не работать, так что зависимости стоит проверить до продакшена.
Исходный текст
SKILL.md · MIT
---
name: bun-runtime
description: Bun as runtime, package manager, bundler, and test runner. When to choose Bun vs Node, migration notes, and Vercel support.
metadata:
origin: ECC
---
# Bun Runtime
Bun is a fast all-in-one JavaScript runtime and toolkit: runtime, package manager, bundler, and test runner.
## When to Use
- **Prefer Bun** for: new JS/TS projects, scripts where install/run speed matters, Vercel deployments with Bun runtime, and when you want a single toolchain (run + install + test + build).
- **Prefer Node** for: maximum ecosystem compatibility, legacy tooling that assumes Node, or when a dependency has known Bun issues.
Use when: adopting Bun, migrating from Node, writing or debugging Bun scripts/tests, or configuring Bun on Vercel or other platforms.
## How It Works
- **Version baseline**: guidance below targets Bun 1.4.x. Check the actual version with `bun --version` before relying on flag names, since CLI flags can change between releases.
- **Runtime**: Drop-in Node-compatible runtime, built on JavaScriptCore. As of Bun 1.4 the runtime itself is implemented in Rust (migrated from Zig). Not 100% Node-compatible — some native addons, less-common `node:` internal APIs, and packages that depend on Node-specific internals can still fail; verify before depending on it in production.
- **Package manager**: Bun includes a package manager; installation performance depends on the project, network conditions, and cache state. Lockfile is `bun.lock` (text) by default in current Bun; older versions used `bun.lockb` (binary) — Bun still reads that format for migration, but new projects should use `bun.lock`.
- **Bundler**: Built-in bundler and transpiler for apps and libraries.
- **Test runner**: Built-in `bun test` with a Jest-like API.
**Migration from Node**: Replace `node script.js` with `bun run script.js` or `bun script.js`. Run `bun install` in place of `npm install`; most packages work. Use `bun run` for npm scripts; `bun x` for npx-style one-off runs. Node built-ins are supported; prefer Bun APIs where they exist for better performance.
**Package and workspace commands**: `bun add <pkg>` / `bun remove <pkg>` / `bun update [pkg]` manage dependencies; `bun outdated` lists stale deps. `bun pm ls` lists project dependencies and resolved versions using the lockfile; `--all` includes transitive dependencies. It is not an integrity check of installed file contents. [`bun audit`](https://bun.com/docs/pm/cli/audit) queries registry advisories using package names and versions from `bun.lock`; it does not modify `package.json`, `bun.lock`, or `node_modules`. Review approved destinations before sending private package metadata. Packages whose scoped registry lacks an advisory endpoint are skipped and do not affect the exit code. `bun audit fix` upgrades and installs dependencies, changing the lockfile and installed packages and sometimes direct version pins; review it as a modifying install operation, including applicable lifecycle scripts. `bun dedupe` collapses duplicate installs, and `bun prune` removes packages no longer referenced. Monorepos use a root `workspaces` array in `package.json` (same convention as npm/yarn); run a script in one workspace with `bun run --filter <pkg-name> <script>`.
**Built-in APIs**: reach for these before adding a dependency — `Bun.file` / `Bun.write` for file I/O, `bun:sqlite` for an embedded SQLite database, `Bun.serve` for an HTTP/WebSocket server, [`Bun.sql`](https://bun.com/docs/runtime/sql) for SQL databases, [`Bun.redis`](https://bun.com/docs/runtime/redis) for Redis, and [`Bun.S3Client`](https://bun.com/docs/runtime/s3) for S3-compatible object storage. See the [1.4 release notes](https://bun.com/blog/bun-v1.4) for the rest of what's new.
**Vercel**: Set `bunVersion: "1.4.x"` in `vercel.json` to use Bun 1.4 (Rust runtime). See [Vercel's Bun runtime docs](https://vercel.com/docs/functions/runtimes/bun). Build: `bun run build` or `bun build ./src/index.ts --outdir=dist`. Install: `bun install --frozen-lockfile` for reproducible deploys.
**Reference**: [Bun 1.4 release notes](https://bun.com/blog/bun-v1.4).
## Examples
### Run and install
```bash
# Install dependencies (creates/updates bun.lock)
bun install
# Run a script or file
bun run dev
bun run src/index.ts
bun src/index.ts
```
### Scripts and env
```bash
bun run --env-file=.env dev
FOO=bar bun run script.ts
```
### Testing
```bash
bun test
bun test --watch
```
For CI on Bun 1.4, available options include `bun test --changed[=<ref>]` for affected tests, `bun test --isolate` for per-file globals, `bun test --parallel[=<n>]` for worker processes, and `bun test --shard=<n>/<count>` for CI partitioning. `--isolate` creates a fresh JavaScript global for each file in the same process and cleans up documented per-file resources; it is not a process or security sandbox. `--parallel` enables it by default. `--timings=<file>` reads prior durations for scheduling; `--update-timings` records durations. Example: `bun test --parallel --timings=./test-timings.json --update-timings`. Check the installed version's help and documentation before choosing timing-file paths for a multi-shard workflow.
```typescript
// test/example.test.ts
import { expect, test } from "bun:test";
test("add", () => {
expect(1 + 2).toBe(3);
});
```
### Runtime API
```typescript
const file = Bun.file("package.json");
const json = await file.json();
Bun.serve({
port: 3000,
fetch(req) {
return new Response("Hello");
},
});
```
## Best Practices
- Commit the lockfile (`bun.lock`) for reproducible installs.
- Prefer `bun run` for scripts. For TypeScript, Bun runs `.ts` natively.
- Keep dependencies up to date; Bun and the ecosystem evolve quickly.
© affaan-m · MIT · affaan-m/ECC