Agent Skills
› avibebuilder/claude-prime
› monorepo
monorepo
GitHub专用于处理 monorepo 架构下的多包协作问题。涵盖 pnpm workspace 配置、Turborepo 任务定义、依赖管理及跨包协调。解决构建顺序、缓存、版本解析及共享配置等复杂场景,优先于其他技能处理涉及多个包交互的问题。
Trigger Scenarios
查询涉及 packages, monorepo, workspace, catalog, turbo, turborepo, pnpm 的多包上下文
需要在多个包之间共享 ESLint/tsconfig/prettier 配置
调试 pnpm catalog 版本解析或修复包间构建顺序
添加新包或优化 CI 安装/缓存策略
Install
npx skills add avibebuilder/claude-prime --skill monorepo -g -y
SKILL.md
Frontmatter
{
"name": "monorepo",
"description": "MUST use for ANY query mentioning packages, monorepo, workspace, catalog, turbo, turborepo, or pnpm in a multi-package context. MUST use when sharing config (ESLint, tsconfig, prettier) across packages, fixing build order between packages, adding new packages, scoping CI installs\/caching to changed packages, or debugging pnpm catalog version resolution. This skill OWNS all cross-package coordination problems — even when they look like build, CI, config, or dependency issues. If two or more packages interact in the query, this skill applies. Takes priority over other skills when the problem spans package boundaries."
}
Monorepo
Project-specific patterns for pnpm workspaces + Turborepo.
Architecture Decisions
Workspace Organization
- Split apps from packages —
apps/for deployables,packages/for shared libraries. - Namespace packages — Prefix with
@org/to avoid npm conflicts. - Single lockfile —
pnpm-lock.yamlat root only. Never commit multiple lockfiles. - No cross-package file access — Never use
../to reach into other packages; import via dependencies.
Dependency Management
- Use
workspace:*protocol — Always for internal package dependencies. - Hoist common devDependencies — Shared tooling (TypeScript, ESLint) in root.
- Peer dependencies for frameworks — React, Vue, etc. as peers to avoid version conflicts.
- Consider Catalogs (pnpm 9.5+) — Centralize versions in
pnpm-workspace.yamlfor large repos.
Turborepo Tasks
- Use
^for build dependencies —"dependsOn": ["^build"]for topological order. - Always define
outputs— Without outputs, nothing gets cached. - Mark dev servers as persistent —
"persistent": true, "cache": false. - Be explicit about environment — List all build-affecting vars in
envorglobalEnv.
Gotchas
- Missing
outputsin turbo.json silently disables caching for that task. The task runs every time and you won't get an error — just slow builds. Always verify outputs are configured. pnpm installdoes NOT respect--filterfor installation — it always installs the entire workspace. Filtering only works forpnpm runandpnpm exec.workspace:*resolves to the CURRENT version of the local package, not "latest from npm". If the package has"version": "0.0.0", published packages will have"dependency": "0.0.0"— set meaningful versions before publishing.- Turborepo's
envfield in turbo.json uses GLOB patterns, not exact matches."env": ["API_*"]capturesAPI_KEY,API_URL, etc. Forgetting this causes over-invalidation. turbo run build --filter=app-abuilds app-a AND all its workspace dependencies. If a dependency fails, app-a won't build. Check transitive deps.- Adding a package to
packages/requires runningpnpm installbefore the workspace recognizes it. The new package also needs a validpackage.jsonwithnamematching the workspace pattern. - TypeScript project references (
referencesin tsconfig.json) must match the workspace dependency graph. Mismatches cause type errors that only appear duringtsc --build, not in IDE. turbo.json'sglobalDependenciesinvalidates ALL tasks when listed files change. Don't put frequently-changed files here — use task-levelinputsinstead.- Shared Tailwind configs need
@sourcedirectives pointing to consuming packages' source directories, otherwise classes used in shared packages are purged. pnpm deploy(for production) copies a single package and its dependencies to a target directory. It does NOT run build scripts — build first, then deploy.- Remote cache (Vercel or self-hosted) requires
outputsto be correct. If outputs are wrong, cached artifacts will be incomplete and downstream tasks break silently. persistent: truetasks preventturbo runfrom exiting. Don't include persistent tasks in CI pipelines unless they have a timeout.
References
| When you need... | Read |
|---|---|
| workspace.yaml, workspace: protocol, filtering | pnpm-workspace.md |
| turbo.json schema, tasks, dependsOn | turborepo.md |
| Cache outputs/inputs, remote cache setup | caching.md |
| Directory layout, package naming, tsconfig | structure.md |
| Tailwind v4 shared theme package | tailwind-v4.md |
External Resources
Version History
- 80bcfa4 Current 2026-07-05 12:10


