关于 turborepo-architecture
turborepo-architecture 是面向 Turborepo 与 Bun/pnpm 工作区的单体仓库架构技能,适用于搭建、调整或审查仓库结构。它聚焦工作区连接、包边界、Turbo 任务与缓存规则,并以目标仓库已有规范为优先。
主要功能
- 01脚手架搭建应用和包
- 02配置工作区与依赖边界
- 03制定 Turbo 任务和缓存规则
- 04规范根目录脚本
- 05按规则审查仓库结构
适用场景
- 01初始化 Turborepo 单体仓库
- 02为现有包添加脚本和依赖
- 03审查任务图与包边界
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill turborepo-architecture安装后在 Claude Code 中输入/turborepo-architecture确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/checklist.mdexamples.mdrules.mdtree.mdwith-catalog.mdwith-compose-local.mdwith-dependency-boundaries.mdwith-docker-deploy.mdwith-effect-packages.mdwith-engine-nested.mdwith-env-packages.mdwith-knip.mdwith-oxlint-oxfmt.mdwith-typegen.mdwith-vitest-workspaces.md详细介绍
Turborepo 架构
适用于 Turborepo + Bun/pnpm 工作区的可移植 monorepo 规范。单独使用此 技能即可,无需依赖其他技能。
职责: 工作区配置、包边界、turbo 任务/缓存、根目录脚本。
不属于此技能: Turbo CLI 深入文档、远程缓存供应商配置,或应用内的功能 模块树(HTTP 路由 / Start 页面属于对应技术栈的应用架构文档)。
如果目标仓库已有 monorepo 规则文档(例如 AGENTS.md),且与此处冲突,
以仓库规则为准,除非用户要求迁移以遵循此技能。
核心技术栈默认值
| 部分 | 默认值 |
|---|---|
| 包管理器 | Bun 工作区(如果已在使用 pnpm/npm,也可以继续使用) |
| 布局 | apps/*、packages/* |
| 编排 | Turborepo(turbo.jsonc / turbo.json) |
| 内部包 | "exports": { ".": "./src/index.ts" } — Bun 直接运行 TS |
| 环境变量 | 应用拥有 .env + T3 Env src/env.ts;包使用 .make(options) |
| 验证 | 完成阶段运行完整任务图;编辑过程中迭代使用 --filter |
模式
- 搭建 — 根据 checklist.md + tree.md 新建应用/包。
- 应用 — 正确添加脚本、依赖和 turbo 配置。
- 审查 — 对照 rules.md;提出调整建议。
核心硬性规则
- 工作区 + 共享版本固定 — 通过 catalog(或等效方式)共享依赖;工作区依赖使用
workspace:*。 - 由 Turbo 编排脚本 — 它不是包管理器。包脚本不得为同一任务递归调用
turbo run。 transitDAG — 使用不含脚本的transit/topo节点,并设置dependsOn: ["^transit"],以便typecheck/test并行运行,同时在依赖源代码变更时使缓存失效。- 持久化 / 会修改内容的任务不缓存 —
dev、监听服务器、format、lint:fix、typegen→cache: false(长时间运行的进程还需设置persistent: true)。 - Lint/format/test/typecheck 是各工作区的脚本,由 Turbo 运行(跳过未定义相应脚本的包)。
- 应用拥有环境变量;包的库代码不得读取
process.env— 将选项传入工厂/Layers。 - 内部入口 =
./src/index.ts,除非该包需要发布/构建(dist/)。 - 按包名筛选 — 使用
--filter=@org/api,不要误用文件夹路径进行筛选。 - 在活跃的 monorepo 中优先采用干净的破坏性变更 — 在同一变更中删除垫片/双写/弃用别名;同时更新调用方。
- 完成阶段的验证 = 完整任务图,除非用户明确推迟质量门禁。
详情:rules.md、tree.md、examples.md。
渐进式展开
| 需要 | 阅读 |
|---|---|
| 规范目录结构 | references/tree.md |
| 规则 + 反模式 | references/rules.md |
| 搭建 / 审查清单 | references/checklist.md |
| 良好与不良布局 | references/examples.md |
| 可选扩展 | 下方的 扩展 |
扩展
仅在存在匹配的技术栈(或用户提出要求)时加载:
| 条件 | 扩展 |
|---|---|
Bun workspaces.catalog / 命名目录 | with-catalog.md |
| 仅根目录使用 Knip | with-knip.md |
| 各软件包使用 Oxlint + Oxfmt | with-oxlint-oxfmt.md |
| Vitest 脚本 + turbo 测试任务 | with-vitest-workspaces.md |
应用环境变量 vs 软件包 .make | with-env-packages.md |
| 软件包中的 Effect 服务 | with-effect-packages.md |
| 可选类型生成 / OpenAPI 代码生成 | with-typegen.md |
嵌套的 packages/<group>/* + 第二层作用域 | with-engine-nested.md |
turbo prune --docker + 空 Root Directory | with-docker-deploy.md |
| 明确列出允许 / 禁止导入的表格 | with-dependency-boundaries.md |
| 用于本地基础设施的根目录 compose 辅助工具 | with-compose-local.md |
边界与应用架构
此技能负责monorepo 接线和软件包边界。在应用内部,功能文件夹树(Elysia 模块、TanStack Start 路由)属于该应用的架构指南——不要在此处另行设计 HTTP/UI 布局。
评论
支持 Markdown