/shared-monorepo-turborepo
Turborepo, workspaces, package architecture, @repo/* naming, exports, tree-shaking
$ npx -y skills add agents-inc/skills --skill shared-monorepo-turborepo --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/shared-monorepo-turborepo
Context preview
The summary Claude sees to decide when to auto-load this skill.
Turborepo, workspaces, package architecture, @repo/* naming, exports, tree-shaking
SKILL.md
shared-monorepo-turborepo.SKILL.mdname: shared-monorepo-turborepo
description: Turborepo, workspaces, package architecture, @repo/* naming, exports, tree-shaking
Monorepo Orchestration with Turborepo
> **Quick Guide:** Turborepo 2.x for monorepo orchestration. Task pipelines with dependency ordering. Local + remote caching for massive speed gains. Workspaces for package linking. Syncpack for dependency version consistency. Internal packages use `@repo/*` naming, explicit `exports` fields, and `workspace:*` protocol.
---
<critical_requirements>
CRITICAL: Before Using This Skill
> **All code must follow project conventions in CLAUDE.md** (kebab-case, named exports, import ordering, `import type`, named constants)
**(You MUST define task dependencies using `dependsOn: ["^build"]` in turbo.json to ensure topological ordering)**
**(You MUST declare all environment variables in the `env` array of turbo.json tasks for proper cache invalidation)**
**(You MUST set `cache: false` for tasks with side effects like dev servers and code generation)**
**(You MUST use `workspace:*` protocol for internal package dependencies)**
**(You MUST use `@repo/*` naming convention for ALL internal packages)**
**(You MUST define explicit `exports` field in package.json - never allow importing internal paths)**
**(You MUST mark React as `peerDependencies` NOT `dependencies` in component packages)**
</critical_requirements>
---
**Auto-detection:** Turborepo configuration, turbo.json, monorepo setup, workspaces, Bun workspaces, syncpack, task pipelines, @repo/\* packages, package.json exports, workspace dependencies, shared configurations
**When to use:**
- Configuring Turborepo task pipeline and caching strategies
- Setting up workspaces for monorepo package linking
- Enabling remote caching for team/CI cache sharing
- Synchronizing dependency versions across workspace packages
- Creating new internal packages in `packages/`
- Configuring package.json exports for tree-shaking
- Setting up shared configuration packages (@repo/eslint-config, @repo/typescript-config)
**When NOT to use:**
- Single application projects (use standard build tools directly)
- Projects without shared packages (no monorepo benefits)
- Very small projects where setup overhead exceeds caching benefits
- Polyrepo architecture is preferred over monorepo
- Projects already using Nx or Lerna (don't mix monorepo tools)
- App-specific code that won't be shared (keep in app directory)
**Key patterns covered:**
- Turborepo 2.x task pipeline (dependsOn, outputs, inputs, cache)
- Local and remote caching strategies
- Workspaces for package linking
- Syncpack for dependency version consistency
- Environment variable handling in turbo.json
- Package structure and @repo/\* naming conventions
- package.json exports for tree-shaking
- Named exports and barrel file patterns
- Internal dependencies with workspace protocol
**Detailed Resources:**
- For code examples, see [examples/core.md](examples/core.md) (always start here)
- [examples/caching.md](examples/caching.md) - Remote caching, CI/CD integration
- [examples/workspaces.md](examples/workspaces.md) - Workspace protocol, syncpack, dependency boundaries
- [examples/packages.md](examples/packages.md) - Internal package conventions, exports, creating packages
- For decision frameworks and anti-patterns, see [reference.md](reference.md)
---
<philosophy>
Philosophy
Turborepo is a high-performance build system designed for JavaScript/TypeScript monorepos. It provides intelligent task scheduling, caching, and remote cache sharing to dramatically reduce build times. Combined with workspaces, it enables efficient package management with automatic dependency linking.
</philosophy>
---
<patterns>
Core Patterns
Pattern 1: Turborepo Task Pipeline with Dependency Ordering
Define task dependencies and caching behavior in turbo.json to enable intelligent build orchestration and caching.
Key Concepts
- `dependsOn: ["^build"]` - Run dependency tasks first (topological order)
- `outputs` - Define what files to cache
- `inputs` - Specify which files trigger cache invalidation
- `cache: false` - Disable caching for tasks with side effects
- `persistent: true` - Keep dev servers running
Minimal Example
{
"tasks": {
"build": {
"dependsOn": ["^build"],
"env": ["DATABASE_URL", "NODE_ENV"],
"outputs": ["dist/**", ".next/**", "!.next/cache/**"]
},
"dev": { "cache": false, "persistent": true }
}
}**Key:** `dependsOn: ["^build"]` ensures topological execution, `env` declares variables for cache invalidation, `cache: false` for side-effect tasks.
See [examples/core.md](examples/core.md) for full good/bad comparison examples.
---
Pattern 2: Caching Strategies
Turborepo's caching system dramatically speeds up builds by reusing previous task outputs when inputs haven't changed.
What Gets Cached
- Build outputs (`dist/`, `.next/`, framework-specific directories)
- Test results (when `cache: true`)
- Lint results
What Doesn't Get Cached
- Dev servers (`cache: false`)
- Code generation (`cache: false` - generates files)
- Tasks with side effects
Cache Invalidation Triggers
- Source file changes
- Dependency changes
- Environment variable changes (when in `env` array)
- Global dependencies changes (`.env`, `tsconfig.json`)
**Setup:** Link a Vercel account (or self-hosted cache), then set `TURBO_TOKEN` and `TURBO_TEAM` environment variables to enable remote cache sharing.
See [examples/caching.md](examples/caching.md) for remote caching configuration and CI integration examples.
---
Pattern 3: Workspaces for Package Management
Configure workspaces to enable package linking and dependency sharing across monorepo packages.
Key Concepts
- Root `package.json` declares `"workspaces": ["apps/*", "packages/*"]`
- Internal deps use `"@repo/ui": "workspace:*"` protocol for automatic linking
- Standard structure: `apps/
Read more
name: shared-monorepo-turborepo description: Turborepo, workspaces, package architecture, @repo/* naming, exports, tree-shaking
Monorepo Orchestration with Turborepo
> **Quick Guide:** Turborepo 2.x for monorepo orchestration. Task pipelines with dependency ordering. Local + remote caching for massive speed gains. Workspaces for package linking. Syncpack for dependency version consistency. Internal packages use `@repo/*` naming, explicit `exports` fields, and `workspace:*` protocol.
---
<critical_requirements>
CRITICAL: Before Using This Skill
> **All code must follow project conventions in CLAUDE.md** (kebab-case, named exports, import ordering, `import type`, named constants)
**(You MUST define task dependencies using `dependsOn: ["^build"]` in turbo.json to ensure topological ordering)**
**(You MUST declare all environment variables in the `env` array of turbo.json tasks for proper cache invalidation)**
**(You MUST set `cache: false` for tasks with side effects like dev servers and code generation)**
**(You MUST use `workspace:*` protocol for internal package dependencies)**
**(You MUST use `@repo/*` naming convention for ALL internal packages)**
**(You MUST define explicit `exports` field in package.json - never allow importing internal paths)**
**(You MUST mark React as `peerDependencies` NOT `dependencies` in component packages)**
</critical_requirements>
---
**Auto-detection:** Turborepo configuration, turbo.json, monorepo setup, workspaces, Bun workspaces, syncpack, task pipelines, @repo/\* packages, package.json exports, workspace dependencies, shared configurations
**When to use:**
- Configuring Turborepo task pipeline and caching strategies
- Setting up workspaces for monorepo package linking
- Enabling remote caching for team/CI cache sharing
- Synchronizing dependency versions across workspace packages
- Creating new internal packages in `packages/`
- Configuring package.json exports for tree-shaking
- Setting up shared configuration packages (@repo/eslint-config, @repo/typescript-config)
**When NOT to use:**
- Single application projects (use standard build tools directly)
- Projects without shared packages (no monorepo benefits)
- Very small projects where setup overhead exceeds caching benefits
- Polyrepo architecture is preferred over monorepo
- Projects already using Nx or Lerna (don't mix monorepo tools)
- App-specific code that won't be shared (keep in app directory)
**Key patterns covered:**
- Turborepo 2.x task pipeline (dependsOn, outputs, inputs, cache)
- Local and remote caching strategies
- Workspaces for package linking
- Syncpack for dependency version consistency
- Environment variable handling in turbo.json
- Package structure and @repo/\* naming conventions
- package.json exports for tree-shaking
- Named exports and barrel file patterns
- Internal dependencies with workspace protocol
**Detailed Resources:**
- For code examples, see [examples/core.md](examples/core.md) (always start here)
- [examples/caching.md](examples/caching.md) - Remote caching, CI/CD integration
- [examples/workspaces.md](examples/workspaces.md) - Workspace protocol, syncpack, dependency boundaries
- [examples/packages.md](examples/packages.md) - Internal package conventions, exports, creating packages
- For decision frameworks and anti-patterns, see [reference.md](reference.md)
---
<philosophy>
Philosophy
Turborepo is a high-performance build system designed for JavaScript/TypeScript monorepos. It provides intelligent task scheduling, caching, and remote cache sharing to dramatically reduce build times. Combined with workspaces, it enables efficient package management with automatic dependency linking.
</philosophy>
---
<patterns>
Core Patterns
Pattern 1: Turborepo Task Pipeline with Dependency Ordering
Define task dependencies and caching behavior in turbo.json to enable intelligent build orchestration and caching.
Key Concepts
- `dependsOn: ["^build"]` - Run dependency tasks first (topological order)
- `outputs` - Define what files to cache
- `inputs` - Specify which files trigger cache invalidation
- `cache: false` - Disable caching for tasks with side effects
- `persistent: true` - Keep dev servers running
Minimal Example
{
"tasks": {
"build": {
"dependsOn": ["^build"],
"env": ["DATABASE_URL", "NODE_ENV"],
"outputs": ["dist/**", ".next/**", "!.next/cache/**"]
},
"dev": { "cache": false, "persistent": true }
}
}**Key:** `dependsOn: ["^build"]` ensures topological execution, `env` declares variables for cache invalidation, `cache: false` for side-effect tasks.
See [examples/core.md](examples/core.md) for full good/bad comparison examples.
---
Pattern 2: Caching Strategies
Turborepo's caching system dramatically speeds up builds by reusing previous task outputs when inputs haven't changed.
What Gets Cached
- Build outputs (`dist/`, `.next/`, framework-specific directories)
- Test results (when `cache: true`)
- Lint results
What Doesn't Get Cached
- Dev servers (`cache: false`)
- Code generation (`cache: false` - generates files)
- Tasks with side effects
Cache Invalidation Triggers
- Source file changes
- Dependency changes
- Environment variable changes (when in `env` array)
- Global dependencies changes (`.env`, `tsconfig.json`)
**Setup:** Link a Vercel account (or self-hosted cache), then set `TURBO_TOKEN` and `TURBO_TEAM` environment variables to enable remote cache sharing.
See [examples/caching.md](examples/caching.md) for remote caching configuration and CI integration examples.
---
Pattern 3: Workspaces for Package Management
Configure workspaces to enable package linking and dependency sharing across monorepo packages.
Key Concepts
- Root `package.json` declares `"workspaces": ["apps/*", "packages/*"]`
- Internal deps use `"@repo/ui": "workspace:*"` protocol for automatic linking
- Standard structure: `apps/
Showing the first part of this file.
The official skills marketplace for Agents Inc. 150+ skills covering everything from React and Prisma to Redis, ElevenLabs, and infrastructure tooling. Pick the skills that match your stack and install them via Claude Code. Need more control?
Repo: agents-inc/skills
Other skills on agents-inc-skills.
- /ai-infrastructure-huggingface-inference
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming, embeddings, image generation, audio transcription, translation, summarization, and Inference Endpoints
Open skill - /ai-infrastructure-litellm
LiteLLM proxy server setup, TypeScript client patterns via OpenAI SDK, model routing, fallbacks, load balancing, spend tracking, virtual keys, and production deployment
Open skill - /ai-infrastructure-modal
Serverless GPU compute platform for AI model deployment — web endpoints, GPU functions, model serving, and TypeScript client patterns
Open skill - /ai-infrastructure-ollama
Local LLM inference with the Ollama JavaScript client -- chat, streaming, tool calling, vision, embeddings, structured output, model management, and OpenAI-compatible endpoint
Open skill - /ai-infrastructure-replicate
Replicate SDK patterns for TypeScript/Node.js -- client setup, predictions, streaming, webhooks, file handling, model versioning, deployments, and training
Open skill - /ai-infrastructure-together-ai
Together AI SDK patterns for TypeScript — client setup, chat completions, streaming, structured output, function calling, embeddings, image generation, fine-tuning, and OpenAI-compatible endpoints
Open skill

