bun-validator by shipshitdev/library
npx skills add https://github.com/shipshitdev/library --skill bun-validator验证 Bun 工作区配置并防止常见的 monorepo 问题。确保符合 Bun 1.3+ 的模式和正确的工作区隔离。
python3 ~/.claude/skills/bun-validator/scripts/validate.py --root .
python3 ~/.claude/skills/bun-validator/scripts/validate.py --root . --strict
# 良好:v1.3+
bun --version # 1.3.0 或更高版本
# 不良:v1.2 或更早版本
bun --version # 1.2.x
良好 - Monorepo 根目录:
{
"name": "my-monorepo",
"private": true,
"workspaces": ["apps/*", "packages/*"]
}
不良 - 根目录中的依赖项:
{
"workspaces": ["apps/*"],
"dependencies": {
"react": "^19.0.0" // 不良:不要在根目录放置依赖项
}
}
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
良好:
my-monorepo/
├── package.json # 包含 workspaces 的根目录,private: true
├── bun.lockb # 根目录下的单一锁文件
├── apps/
│ ├── web/
│ │ └── package.json # 自有依赖项
│ └── api/
│ └── package.json # 自有依赖项
└── packages/
├── ui/
│ └── package.json # 共享包
└── config/
└── package.json # 共享配置
不良:
my-monorepo/
├── package.json
├── apps/
│ └── web/
│ ├── package.json
│ └── bun.lockb # 不良:工作区中存在锁文件
良好 - 使用 workspace 协议:
{
"dependencies": {
"@myorg/ui": "workspace:*",
"@myorg/config": "workspace:^1.0.0"
}
}
不良 - 硬编码版本:
{
"dependencies": {
"@myorg/ui": "1.0.0" // 不良:使用 workspace:*
}
}
良好 - 集中版本管理:
// 根目录 package.json
{
"catalog": {
"react": "^19.0.0",
"typescript": "^5.7.0",
"@types/node": "^22.0.0"
}
}
// apps/web/package.json
{
"dependencies": {
"react": "catalog:" // 使用目录中的版本
}
}
良好 - Bun 1.3 的默认行为: 包只能访问它们明确声明的依赖项。
不良 - 提升的依赖项:
// 不要禁用隔离
{
"workspaces": {
"packages": ["apps/*"],
"nohoist": ["**"] // 不要这样做
}
}
集中版本管理:
// 根目录 package.json
{
"catalog": {
"react": "^19.0.0",
"next": "^16.0.0",
"typescript": "^5.7.0"
}
}
bun update --interactive # 选择性更新依赖项
bun why react # 解释为何安装某个包
# 在特定工作区安装
bun add express --cwd apps/api
# 在工作区运行脚本
bun run --cwd apps/web dev
# 在所有工作区运行
bun run --filter '*' build
原因: 依赖项未在工作区 package.json 中声明
修复:
bun add <package> --cwd <workspace>
原因: 在工作区目录中运行 bun install
修复:
rm apps/*/bun.lockb packages/*/bun.lockb
bun install # 仅从根目录运行
原因: 同一包在不同工作区中使用不同版本
修复: 使用依赖项目录:
{
"catalog": {
"problematic-package": "^1.0.0"
}
}
=== Bun 工作区验证报告 ===
Bun 版本:1.3.2 ✓
根目录 package.json:
✓ private: true
✓ 已定义 workspaces
✗ 在根目录发现依赖项(应为空)
工作区结构:
✓ apps/web - 有效工作区
✓ apps/api - 有效工作区
✓ packages/ui - 有效工作区
✗ apps/web/bun.lockb - 锁文件应仅在根目录
依赖项:
✓ 使用 workspace:* 协议
✗ @myorg/ui 使用硬编码版本 "1.0.0"
目录:
✗ 未找到依赖项目录(推荐用于 Bun 1.3+)
摘要:发现 3 个问题
"@myorg/shared": "workspace:*"
bun add lodash --cwd apps/web # 不要:cd apps/web && bun add
# 仅从根目录运行 bun install
bun install
{
"catalog": {
"typescript": "^5.7.0",
"vitest": "^3.0.0"
}
}
每个工作区应列出其所有依赖项 - 不要依赖提升。
# .github/workflows/validate.yml
- name: 验证 Bun 工作区
run: |
python3 ~/.claude/skills/bun-validator/scripts/validate.py \
--root . \
--strict \
--ci
linter-formatter-init - 使用 Bun 设置 Biomeproject-scaffold - 创建工作区结构nextjs-validator - 验证工作区中的 Next.js每周安装次数
83
代码仓库
GitHub 星标数
19
首次出现
2026年1月20日
安全审计
安装于
codex63
opencode61
gemini-cli57
claude-code55
cursor51
github-copilot50
Validates Bun workspace configuration and prevents common monorepo issues. Ensures Bun 1.3+ patterns and proper workspace isolation.
python3 ~/.claude/skills/bun-validator/scripts/validate.py --root .
python3 ~/.claude/skills/bun-validator/scripts/validate.py --root . --strict
# GOOD: v1.3+
bun --version # 1.3.0 or higher
# BAD: v1.2 or earlier
bun --version # 1.2.x
GOOD - Monorepo root:
{
"name": "my-monorepo",
"private": true,
"workspaces": ["apps/*", "packages/*"]
}
BAD - Dependencies in root:
{
"workspaces": ["apps/*"],
"dependencies": {
"react": "^19.0.0" // BAD: Don't put deps in root
}
}
GOOD:
my-monorepo/
├── package.json # Root with workspaces, private: true
├── bun.lockb # Single lockfile at root
├── apps/
│ ├── web/
│ │ └── package.json # Own dependencies
│ └── api/
│ └── package.json # Own dependencies
└── packages/
├── ui/
│ └── package.json # Shared package
└── config/
└── package.json # Shared config
BAD:
my-monorepo/
├── package.json
├── apps/
│ └── web/
│ ├── package.json
│ └── bun.lockb # BAD: Lockfile in workspace
GOOD - Using workspace protocol:
{
"dependencies": {
"@myorg/ui": "workspace:*",
"@myorg/config": "workspace:^1.0.0"
}
}
BAD - Hardcoded versions:
{
"dependencies": {
"@myorg/ui": "1.0.0" // BAD: Use workspace:*
}
}
GOOD - Centralized versions:
// Root package.json
{
"catalog": {
"react": "^19.0.0",
"typescript": "^5.7.0",
"@types/node": "^22.0.0"
}
}
// apps/web/package.json
{
"dependencies": {
"react": "catalog:" // Uses version from catalog
}
}
GOOD - Default in Bun 1.3: Packages can only access dependencies they explicitly declare.
BAD - Hoisted dependencies:
// Don't disable isolation
{
"workspaces": {
"packages": ["apps/*"],
"nohoist": ["**"] // Don't do this
}
}
Centralize version management:
// Root package.json
{
"catalog": {
"react": "^19.0.0",
"next": "^16.0.0",
"typescript": "^5.7.0"
}
}
bun update --interactive # Selectively update deps
bun why react # Explain why a package is installed
# 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
Cause: Dependency not declared in workspace package.json
Fix:
bun add <package> --cwd <workspace>
Cause: Running bun install in workspace directory
Fix:
rm apps/*/bun.lockb packages/*/bun.lockb
bun install # From root only
Cause: Same package with different versions across workspaces
Fix: Use dependency catalogs:
{
"catalog": {
"problematic-package": "^1.0.0"
}
}
=== Bun Workspace Validation Report ===
Bun Version: 1.3.2 ✓
Root package.json:
✓ private: true
✓ workspaces defined
✗ Found dependencies in root (should be empty)
Workspace Structure:
✓ apps/web - valid workspace
✓ apps/api - valid workspace
✓ packages/ui - valid workspace
✗ apps/web/bun.lockb - lockfile should only be at root
Dependencies:
✓ Using workspace:* protocol
✗ @myorg/ui uses hardcoded version "1.0.0"
Catalogs:
✗ No dependency catalog found (recommended for Bun 1.3+)
Summary: 3 issues found
"@myorg/shared": "workspace:*"
bun add lodash --cwd apps/web # NOT: cd apps/web && bun add
# Only run bun install from root
bun install
{
"catalog": {
"typescript": "^5.7.0",
"vitest": "^3.0.0"
}
}
Each workspace should list all its dependencies - don't rely on hoisting.
# .github/workflows/validate.yml
- name: Validate Bun Workspace
run: |
python3 ~/.claude/skills/bun-validator/scripts/validate.py \
--root . \
--strict \
--ci
linter-formatter-init - Sets up Biome with Bunproject-scaffold - Creates workspace structurenextjs-validator - Validates Next.js in workspaceWeekly Installs
83
Repository
GitHub Stars
19
First Seen
Jan 20, 2026
Security Audits
Gen Agent Trust HubFailSocketPassSnykPass
Installed on
codex63
opencode61
gemini-cli57
claude-code55
cursor51
github-copilot50
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
118,000 周安装
多模态大语言模型集成指南:图像分析、语音处理与AI视频生成(Kling/Sora/Veo/Runway)
105 周安装
Three.js 3D图形开发指南 - WebGL/WebGPU库教程与学习路径
100 周安装
Mermaid 图表生成器 - 支持12种图表类型,代码转可视化图表工具
109 周安装
PaddleOCR 文档解析技能 - 精准提取表格、公式、图表及复杂布局的文档结构化数据
83 周安装
智能体记忆管理技能:三层架构与自动归档,高效管理AI代理记忆
117 周安装
Tamagui Monorepo 跨平台开发指南:React Native、Next.js、Expo、TypeScript 全栈解决方案
120 周安装