Skip to main content

bun-validator

Validate Bun workspace configuration and detect common monorepo issues. Ensures proper workspace setup, dependency catalogs, isolated installs, and Bun 1.3+ best practices. Use when setting up a Bun monorepo, before adding workspace dependencies, auditing an existing Bun workspace, or validating package.json in CI.

Source facts

Repository
shipshitdev/shipcode
Last source activity
July 10, 2026 at 11:20
Detected SKILL.md language
English
Stars
6
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
4 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
bun-validator
description
Validate Bun workspace configuration and detect common monorepo issues. Ensures proper workspace setup, dependency catalogs, isolated installs, and Bun 1.3+ best practices. Use when setting up a Bun monorepo, before adding workspace dependencies, auditing an existing Bun workspace, or validating package.json in CI.
metadata
{"version":"1.0.1","tags":"bun, monorepo, workspace, validation, package-manager"}
# Bun Validator ## When This Activates - Setting up a new Bun monorepo - Before adding dependencies to workspaces - Auditing existing Bun workspaces - After AI generates package.json files - CI/CD pipeline validation ## Quick Start ```bash python3 scripts/validate.py --root . python3 scripts/validate.py --root . --strict ``` ## What Gets Checked ### 1. Bun Version ```bash # GOOD: v1.3+ bun --version # 1.3.0 or higher # BAD: v1.2 or earlier bun --version # 1.2.x ``` ### 2. Root package.json **GOOD - Monorepo root:** ```json { "name": "my-monorepo", "private": true, "workspaces": ["apps/*", "packages/*"] } ``` **BAD - Dependencies in root:** ```json { "workspaces": ["apps/*"], "dependencies": { "react": "^19.0.0" // BAD: Don't put deps in root } } ``` ### 3. Workspace Structure **GOOD:** See `references/full-guide.md` (§ Workspace Structure Example) for the full tree — root `package.json` + `bun.lockb`, each app/package owns its own `package.json`. **BAD:** ``` my-monorepo/ ├── package.json ├── apps/ │ └── web/ │ ├── package.json │ └── bun.lockb # BAD: Lockfile in workspace ``` ### 4. Workspace Dependencies **GOOD - Using workspace protocol:** ```json { "dependencies": { "@myorg/ui": "workspace:*", "@myorg/config": "workspace:^1.0.0" } } ``` **BAD - Hardcoded versions:** ```json { "dependencies": { "@myorg/ui": "1.0.0" // BAD: Use workspace:* } } ``` ### 5. Dependency Catalogs (Bun 1.3+) **GOOD - Centralized versions:** ```json // Root package.json { "catalog": { "react": "^19.0.0", "typescript": "^5.7.0", "@types/node": "^22.0.0" } } ``` ```json // apps/web/package.json { "dependencies": { "react": "catalog:" // Uses version from catalog } } ``` ### 6. Isolated Installs **GOOD - Default in Bun 1.3:** Packages can only access dependencies they explicitly declare. **BAD - Hoisted dependencies:** ```json // Don't disable isolation { "workspaces": { "packages": ["apps/*"], "nohoist": ["**"] // Don't do this } } ``` ## Bun 1.3+ Features ### Dependency Catalogs See § Dependency Catalogs (Bun 1.3+) above for the catalog syntax. ### Interactive Updates ```bash bun update --interactive # Selectively update deps ``` ### Dependency Chains ```bash bun why react # Explain why a package is installed ``` ### Workspace Commands ```bash # Install in specific workspace bun add express --cwd apps/api # Run script in workspace bun run --cwd apps/web dev # Run in all workspaces bun run --filter '*' build ``` ## Common Issues ### Issue: "Cannot find module" **Cause:** Dependency not declared in workspace package.json **Fix:** ```bash bun add <package> --cwd <workspace> ``` ### Issue: Multiple lockfiles **Cause:** Running `bun install` in workspace directory **Fix:** ```bash rm apps/*/bun.lockb packages/*/bun.lockb bun install # From root only ``` ### Issue: Version conflicts **Cause:** Same package with different versions across workspaces **Fix:** Use dependency catalogs: ```json { "catalog": { "problematic-package": "^1.0.0" } } ``` ## Validation Output See `references/full-guide.md` (§ Validation Output Example) for a sample report. ## Best Practices - Always use the workspace protocol: `"@myorg/shared": "workspace:*"` - Use `--cwd` for workspace operations: `bun add lodash --cwd apps/web` (not `cd apps/web && bun add`) - Run `bun install` only from the root — keep a single lockfile - Use dependency catalogs for shared versions (see § Dependency Catalogs above) - Declare all dependencies explicitly per workspace — don't rely on hoisting ## CI/CD Integration ```yaml # .github/workflows/validate.yml - name: Validate Bun Workspace run: | python3 scripts/validate.py \ --root . \ --strict \ --ci ``` ## Integration - `linter-formatter-init` - Sets up Biome with Bun - `project-init-orchestrator` - Creates workspace structure - `nextjs-validator` - Validates Next.js in workspace
View on GitHub