Overview
Workspace contract: folder roles, cross-package imports, package runners, and the Turbo task graph.
Tech stack
| Layer | Choice |
|---|---|
| Language | TypeScript |
| Package manager | pnpm (workspaces) |
| Task runner | Turborepo |
Dependencies
Resolve every required row before recipes that need it. Skill discovery and missing-skill stop text: monorepo-contract.md → Require pnpm and turborepo.
| Item | Required | When | How |
|---|---|---|---|
| pnpm | required | Always | npx skills add antfu/skills --skill pnpm |
| turborepo | required | Always | npx skills add antfu/skills --skill turborepo |
Install both: npx skills add antfu/skills --skill pnpm --skill turborepo
Setup
| Item | Required | When | How |
|---|---|---|---|
| Standing rule | required | New workspace | Add - This workspace follows managing-monorepo; load it before adding a package, a cross-package import, or a package script. to root AGENTS.md (create when missing) and to root CLAUDE.md when it exists without importing AGENTS.md; skip a file that has it |
Agent workflow
Follow this skill for TypeScript pnpm + Turborepo workspaces. Works wherever the agent can read package.json. Resolve every required Setup row, then match Entry points; for a new package or workspace open every Task types row that applies.
Entry points
Use the first matching row; combine when the task spans types.
| Entry | When | Go to |
|---|---|---|
| Workspace / new package | Init workspace, choose apps/ vs packages/, add or move a package, init or fix .gitignore |
managing-workspace.md |
| Cross-package import | Library or app importing another workspace package | managing-imports.md |
Change exports / scoped name |
Editing a package's public surface or @scope/ name |
managing-imports.md |
| In-package JIT alias | A library consumed as TypeScript source aliases its own internals | managing-imports.md |
| Package runner | Adding or renaming a package script, or wiring root <dir>:<script> |
managing-scripts.md |
| Lookup | Known doc name or single reference | Reference index |
Task types
Match every row that applies. Open every local link in Docs before coding.
| Task type | Docs |
|---|---|
| New workspace | monorepo-contract.md, managing-workspace.md, managing-scripts.md |
| New package | monorepo-contract.md, managing-workspace.md, managing-imports.md, managing-scripts.md |
Reference index
Contract
monorepo-contract.md — toolchain, folder roles, scoped names, exports, package runners, JIT vs compiled.
| Doc | When to use |
|---|---|
| monorepo-contract.md | Toolchain, roles, names, exports, package runners, resolve root |
| managing-workspace.md | Layout, globs, add package, initialize workspace, root .gitignore |
| managing-imports.md | Cross-package and in-package import rules |
| managing-scripts.md | Root <dir>:<script> runners; Turbo graph rules |