# Bun First

> Describes efficient usage of Bun and Bun APIs instead of Node.js (and its APIs)

- Skill: `majiayu000/bun-first` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/bun-first`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/bun-first/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/bun-first

---


# Bun-First Development

We default to **Bun** as our JavaScript runtime, package manager, and task runner.
Assume Bun is available unless explicitly stated otherwise.

## General Principles

- **PREFER** Bun over Node.js, npm, pnpm, or yarn
- **PREFER** Bun’s built-in features over third-party tools when available
- **PRFER** Bun's native APIs (eg for file access, SQL, S3 etc) over Node.js APIs

## Package Management

- **USE** `bun install`, `bun add`, `bun remove`
- **AVOID** `npm`, `yarn`, `pnpm`
- Prefer Bun-native lockfiles and resolution behavior
- Keep dependencies minimal and intentional

## Scripts & Tooling

- **PREFER** `bun run` for scripts
- **AVOID** Bun’s built-in test runner (`bun test`) => We'll use `Vitest` for testing
- **AVOID** Bun’s build tool (`bun build`) => We'll use Vite
- Avoid introducing extra task runners unless required

## Runtime & APIs

- **PREFER** Bun’s native APIs (fetch, fs, path, env handling)
- Write code assuming modern Web APIs are available in the runtime
- Avoid Node-specific APIs unless explicitly required

## Performance & DX

- Prefer simple, explicit scripts over complex toolchains
- **AVOID** unnecessary abstractions

