MCPInstall

bun

Use when building, testing, and deploying JavaScript/TypeScript applications. Reach for Bun when you need to run scripts, manage dependencies, bundle code, or test applications with a unified toolkit that replaces Node.js, npm, and other tools.

Installs
3.7K
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://bun.sh --skill bun
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads bun automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Bun Skill Reference

Product Summary

Bun is an all-in-one JavaScript/TypeScript toolkit written in Rust and powered by JavaScriptCore. It replaces Node.js, npm, and other tools with a single binary. Key components:

  • Runtime: Execute .js, .ts, .jsx, .tsx files directly with native transpilation (4x faster startup than Node.js)
  • Package Manager: bun install is 25x faster than npm with global caching and workspace support
  • Test Runner: Jest-compatible bun test with TypeScript, snapshots, mocks, and watch mode
  • Bundler: bun build for browser and server bundles with code splitting and plugins

Key files: bunfig.toml (configuration), package.json (scripts and dependencies), bun.lock (lockfile)

Primary docs: https://bun.com/docs


When to Use

Reach for Bun when:

  • Running scripts: Execute TypeScript/JSX files without compilation step (bun run script.ts)
  • Managing dependencies: Install packages faster with bun install in any Node.js project
  • Testing: Write Jest-compatible tests with bun test and run them in parallel
  • Bundling: Build optimized bundles for browsers or servers with bun build
  • Package scripts: Run package.json scripts 28x faster than npm (bun run dev)
  • Development: Use --watch or --hot for file watching and hot reloading
  • Monorepos: Manage workspaces with bun install --filter and workspace commands

Do not use Bun for: type checking (use tsc separately), generating type declarations, or projects requiring Node.js-only APIs not yet implemented in Bun.


Quick Reference

Essential Commands

TaskCommand
Run a filebun run script.ts or bun script.ts
Run a scriptbun run dev (from package.json)
Install dependenciesbun install or bun i
Add a packagebun add react or bun add -d @types/node
Remove a packagebun remove react
Run testsbun test
Build a bundlebun build ./index.ts --outdir ./dist
Watch filesbun --watch run script.ts or bun build --watch
Hot reloadbun --hot run server.ts
Execute a packagebunx cowsay "Hello"

Configuration Files

FilePurpose
bunfig.tomlBun-specific settings (runtime, test, install, bundler)
package.jsonScripts, dependencies, workspaces, metadata
tsconfig.jsonTypeScript compiler options (Bun reads this)
.envEnvironment variables (auto-loaded)
bun.lockLockfile (text-based, replaces package-lock.json)

Common bunfig.toml Sections

[install]
linker = "hoisted"  # or "isolated" for strict dependency isolation
dev = true
optional = true
production = false

[test]
root = "."
preload = ["./setup.ts"]
coverage = false

[serve]
port = 3000

[run]
shell = "system"  # or "bun" on Windows
bun = true        # alias node to bun in scripts

Decision Guidance

When to Use Hoisted vs. Isolated Installs

ScenarioUseReason
New monorepo/workspaceisolatedPrevents phantom dependencies, strict isolation
New single-package projecthoistedTraditional npm behavior, simpler
Existing project (pre-v1.3.2)hoistedBackward compatibility
Migrating from pnpmisolatedSimilar to pnpm's approach

Set with: bun install --linker isolated or in bunfig.toml under [install].

When to Use --watch vs. --hot

Use CaseFlagBehavior
File changes trigger re-run--watchFull process restart, clean state
HTTP server development--hotSoft reload, preserves global state, faster
Test development--watchBetter isolation between runs
Library bundlingbun build --watchIncremental rebuilds

When to Use bun run vs. Direct Execution

ScenarioCommandWhy
Run a script from package.jsonbun run devRespects lifecycle hooks (pre/post)
Run a file directlybun script.tsFaster, no script lookup
Run a local CLI toolbun run eslintResolves from node_modules/.bin
Run a system commandbun run lsOnly works with bun run

Workflow

1. Initialize a Project

bun init my-app
# Choose template: Blank, React, or Library
cd my-app

This creates package.json, tsconfig.json, index.ts, and .gitignore.

2. Install Dependencies

bun install
# or add specific packages
bun add react
bun add -d typescript @types/node

Bun creates bun.lock (text-based lockfile) and node_modules/.

3. Write and Run Code

# Create index.ts with TypeScript/JSX (no compilation needed)
bun run index.ts

# Or add to package.json scripts
# "scripts": { "dev": "bun run index.ts" }
bun run dev

4. Write Tests

# Create math.test.ts
import { test, expect } from "bun:test";
test("2 + 2 = 4", () => {
  expect(2 + 2).toBe(4);
});

# Run tests
bun test
bun test --watch
bun test --coverage

5. Bundle for Production

# Build for browser
bun build ./index.tsx --outdir ./dist --target browser

# Build for Node.js
bun build ./server.ts --outdir ./dist --target node --format cjs

# Build with minification
bun build ./index.ts --outdir ./dist --minify

6. Configure bunfig.toml (Optional)

[install]
linker = "isolated"

[test]
coverage = true
coverageThreshold = 0.8

[serve]
port = 3000

Common Gotchas

  • Lifecycle scripts disabled by default: Bun doesn't run postinstall scripts for security. Add packages to trustedDependencies in package.json to allow them.

  • Flags go after bun, not after the command: Use bun --watch run dev, not bun run dev --watch. Flags at the end are passed to the script itself.

  • bun run prefers scripts over files: If both a script and file have the same name, bun run runs the script. Use bun run ./file.ts to force file execution.

  • Environment variables must be literal: process.env.FOO works in bundler, but const env = process.env; env.FOO does not. Use process.env.FOO directly.

  • Auto-install only works without node_modules: If node_modules exists, Bun uses it. Delete node_modules to enable auto-install from global cache.

  • Bun.lock is text-based by default: Prior to v1.2, lockfiles were binary (bun.lockb). Upgrade with bun install --save-text-lockfile --frozen-lockfile --lockfile-only.

  • TypeScript 6+ requires explicit types: Add "types": ["bun"] to tsconfig.json compilerOptions if using TypeScript 6 or later.

  • Phantom dependencies in hoisted mode: With linker: "hoisted", packages can import undeclared dependencies. Use linker: "isolated" to prevent this.

  • Test files must match patterns: Bun only discovers *.test.ts, *_test.ts, *.spec.ts, *_spec.ts. Adjust with pathIgnorePatterns in bunfig.toml.

  • Bundler doesn't type-check: Use tsc --noEmit separately for type checking. Bun's bundler only transpiles.


Verification Checklist

Before submitting work with Bun:

  • Dependencies installed: bun install runs without errors
  • Scripts work: bun run <script> executes correctly
  • Tests pass: bun test shows all tests passing
  • No TypeScript errors: Run tsc --noEmit if type checking is needed
  • Bundle builds: bun build completes without errors
  • Environment variables set: .env file exists with required variables
  • Lockfile committed: bun.lock is in version control
  • No deprecated APIs: Check Bun docs for Node.js compatibility status
  • Watch mode works: bun --watch run dev detects file changes
  • Hot reload functional: bun --hot run server.ts updates without restart

Resources

Comprehensive navigation: https://bun.com/docs/llms.txt

Critical pages:

  1. Runtime — Running files and scripts
  2. Package Manager — Installing and managing dependencies
  3. Test Runner — Writing and running tests
  4. Bundler — Building and bundling code

For additional documentation and navigation, see: https://bun.com/docs/llms.txt

FAQ

What does the bun skill do?

Use when building, testing, and deploying JavaScript/TypeScript applications. Reach for Bun when you need to run scripts, manage dependencies, bundle code, or test applications with a unified toolkit that replaces Node.js, npm, and other tools.

How do I install bun?

Run npx skills add https://bun.sh --skill bun in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/bun/ (personal) or .claude/skills/bun/ (project).

Which AI agents can use bun?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is bun safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains bun?

It is published by bun.sh in bun.sh. It has 3,663 recorded installs.

Popular backend & apis skills

View category →

find-skills

vercel-labs/skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

OfficialBackend & APIs4.1M installs

entra-app-registration

microsoft/azure-skills

Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.

OfficialBackend & APIs566.7K installs

This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).

Backend & APIs514.8K installs

embedded-captions

heygen-com/hyperframes

Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.

Backend & APIs453.3K installs

entra-agent-id

microsoft/azure-skills

Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).

OfficialBackend & APIs336.6K installs

neon

neondatabase/agent-skills

Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.

Backend & APIs237.1K installs