mcpField
T
turborepo-architecture

turborepo-architecture

github.com/dobroslavradosavljevic开发336 次安装1 天前更新
代码仓库

关于 turborepo-architecture

turborepo-architecture 是面向 Turborepo 与 Bun/pnpm 工作区的单体仓库架构技能,适用于搭建、调整或审查仓库结构。它聚焦工作区连接、包边界、Turbo 任务与缓存规则,并以目标仓库已有规范为优先。

主要功能

  1. 01脚手架搭建应用和包
  2. 02配置工作区与依赖边界
  3. 03制定 Turbo 任务和缓存规则
  4. 04规范根目录脚本
  5. 05按规则审查仓库结构

适用场景

  1. 01初始化 Turborepo 单体仓库
  2. 02为现有包添加脚本和依赖
  3. 03审查任务图与包边界

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dobroslavradosavljevic/skills --skill turborepo-architecture

安装后在 Claude Code 中输入/turborepo-architecture确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
checklist.md
examples.md
rules.md
tree.md
with-catalog.md
with-compose-local.md
with-dependency-boundaries.md
with-docker-deploy.md
with-effect-packages.md
with-engine-nested.md
with-env-packages.md
with-knip.md
with-oxlint-oxfmt.md
with-typegen.md
with-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

模式

  1. 搭建 — 根据 checklist.md + tree.md 新建应用/包。
  2. 应用 — 正确添加脚本、依赖和 turbo 配置。
  3. 审查 — 对照 rules.md;提出调整建议。

核心硬性规则

  1. 工作区 + 共享版本固定 — 通过 catalog(或等效方式)共享依赖;工作区依赖使用 workspace:*。
  2. 由 Turbo 编排脚本 — 它不是包管理器。包脚本不得为同一任务递归调用 turbo run。
  3. transit DAG — 使用不含脚本的 transit / topo 节点,并设置 dependsOn: ["^transit"],以便 typecheck / test 并行运行,同时在依赖源代码变更时使缓存失效。
  4. 持久化 / 会修改内容的任务不缓存 — dev、监听服务器、format、lint:fix、typegen → cache: false(长时间运行的进程还需设置 persistent: true)。
  5. Lint/format/test/typecheck 是各工作区的脚本,由 Turbo 运行(跳过未定义相应脚本的包)。
  6. 应用拥有环境变量;包的库代码不得读取 process.env — 将选项传入工厂/Layers。
  7. 内部入口 = ./src/index.ts,除非该包需要发布/构建(dist/)。
  8. 按包名筛选 — 使用 --filter=@org/api,不要误用文件夹路径进行筛选。
  9. 在活跃的 monorepo 中优先采用干净的破坏性变更 — 在同一变更中删除垫片/双写/弃用别名;同时更新调用方。
  10. 完成阶段的验证 = 完整任务图,除非用户明确推迟质量门禁。

详情:rules.md、tree.md、examples.md。

渐进式展开

需要阅读
规范目录结构references/tree.md
规则 + 反模式references/rules.md
搭建 / 审查清单references/checklist.md
良好与不良布局references/examples.md
可选扩展下方的 扩展

扩展

仅在存在匹配的技术栈(或用户提出要求)时加载:

条件扩展
Bun workspaces.catalog / 命名目录with-catalog.md
仅根目录使用 Knipwith-knip.md
各软件包使用 Oxlint + Oxfmtwith-oxlint-oxfmt.md
Vitest 脚本 + turbo 测试任务with-vitest-workspaces.md
应用环境变量 vs 软件包 .makewith-env-packages.md
软件包中的 Effect 服务with-effect-packages.md
可选类型生成 / OpenAPI 代码生成with-typegen.md
嵌套的 packages/<group>/* + 第二层作用域with-engine-nested.md
turbo prune --docker + 空 Root Directorywith-docker-deploy.md
明确列出允许 / 禁止导入的表格with-dependency-boundaries.md
用于本地基础设施的根目录 compose 辅助工具with-compose-local.md

边界与应用架构

此技能负责monorepo 接线和软件包边界。在应用内部,功能文件夹树(Elysia 模块、TanStack Start 路由)属于该应用的架构指南——不要在此处另行设计 HTTP/UI 布局。

评论

支持 Markdown