Skip to content
Development
Skill

/turborepo-monorepo

Provides comprehensive Turborepo monorepo management guidance for TypeScript/JavaScript projects. Use when creating Turborepo workspaces, configuring turbo.json tasks, setting up Next.js/NestJS apps, managing test pipelines (Vitest/Jest), configuring CI/CD, implementing remote

From plugin
developer-kit
371116 skills44 agents35 commands2 MCP

Claude Code

$ npx -y skills add giuseppe-trisciuoglio/developer-kit --skill turborepo-monorepo --agent claude-code

SKILL.md

turborepo-monorepo.SKILL.md
name: turborepo-monorepo
description: Provides comprehensive Turborepo monorepo management guidance for TypeScript/JavaScript projects. Use when creating Turborepo workspaces, configuring turbo.json tasks, setting up Next.js/NestJS apps, managing test pipelines (Vitest/Jest), configuring CI/CD, implementing remote caching, or optimizing build performance in monorepos
allowed-tools: Read, Write, Edit, Bash, Glob, Grep

Turborepo Monorepo

Overview

Provides guidance for Turborepo monorepo management: workspace creation, `turbo.json` task configuration, Next.js/NestJS integration, testing pipelines (Vitest/Jest), CI/CD setup, and build performance optimization.

When to Use

  • Create or initialize Turborepo workspaces
  • Configure `turbo.json` tasks with dependencies and outputs
  • Set up Next.js/NestJS apps in monorepo structure
  • Configure Vitest/Jest test pipelines
  • Build CI/CD workflows (GitHub Actions, GitLab CI)
  • Implement remote caching with Vercel Remote Cache
  • Optimize build times and cache hit ratios
  • Debug task dependency or cache issues
  • Migrate from other monorepo tools to Turborepo

Instructions

Workspace Creation

1. **Create a new workspace:**

   pnpm create turbo@latest my-workspace
   cd my-workspace

2. **Initialize in existing project:**

   pnpm add -D -w turbo

3. **Create turbo.json in root** (minimal config):

   {
     "$schema": "https://turborepo.dev/schema.json",
     "pipeline": {
       "build": { "dependsOn": ["^build"], "outputs": ["dist/**", ".next/**"] },
       "lint": { "outputs": [] },
       "test": { "dependsOn": ["build"], "outputs": ["coverage/**"] }
     }
   }

4. **Add scripts to root package.json:**

   { "scripts": { "build": "turbo run build", "dev": "turbo run dev", "lint": "turbo run lint", "test": "turbo run test", "clean": "turbo run clean" } }

5. **Validate task graph before CI:**

   turbo run build --dry-run --filter=...  # Verify task execution order

Task Configuration

1. **Configure tasks** in `turbo.json`:

   { "pipeline": { "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] }, "test": { "dependsOn": ["build"], "outputs": ["coverage/**"] }, "lint": { "outputs": [] } } }

2. **Run tasks:**

   turbo run build                      # All packages
   turbo run lint test build           # Multiple tasks
   turbo run build --filter=web       # Specific package

3. **Parallel type checking** (use transit nodes to avoid cache issues):

   { "pipeline": { "transit": { "dependsOn": ["^transit"] }, "typecheck": { "dependsOn": ["transit"] } } }

4. **Validate before committing:**

   turbo run build --dry-run  # Check task order and affected packages

Framework Integration

**Next.js:** outputs `".next/**"` and env `["NEXT_PUBLIC_*"]` - See [references/nextjs-config.md](references/nextjs-config.md)

**NestJS:** outputs `"dist/**"`, dev tasks with `cache: false, persistent: true` - See [references/nestjs-config.md](references/nestjs-config.md)

Testing Setup

1. **Vitest configuration:**

   {
     "pipeline": {
       "test": {
         "outputs": [],
         "inputs": ["$TURBO_DEFAULT$", "vitest.config.ts"]
       },
       "test:watch": {
         "cache": false,
         "persistent": true
       }
     }
   }

2. **Run affected tests:**

   turbo run test --filter=[HEAD^]

See [references/testing-config.md](references/testing-config.md) for complete testing setup.

Package Configurations

1. **Create package-specific turbo.json:**

   {
     "extends": ["//"],
     "tasks": {
       "build": {
         "outputs": ["$TURBO_EXTENDS$", ".next/**"]
       }
     }
   }

See [references/package-configs.md](references/package-configs.md) for detailed package configuration patterns.

CI/CD Setup

1. **GitHub Actions with validation checkpoints:**

   - name: Install dependencies
     run: pnpm install

   - name: Validate affected packages (dry-run)
     run: pnpm turbo run build --filter=[HEAD^] --dry-run
     # VALIDATE: Review output to confirm only expected packages will build

   - name: Run tests
     run: pnpm run test --filter=[HEAD^]

   - name: Build affected packages
     run: pnpm run build --filter=[HEAD^]

   - name: Verify cache hits
     run: pnpm turbo run build --filter=[HEAD^] --dry-run | grep "Cache"
     # VALIDATE: Confirm cache hits for unchanged packages

2. **Remote cache setup:**

   # Login to Vercel
   npx turbo login

   # Link repository
   npx turbo link

See [references/ci-cd.md](references/ci-cd.md) for complete CI/CD setup examples.

Task Properties Reference

| Property | Description | Example | |----------|-------------|---------| | `dependsOn` | Tasks that must complete first | `["^build"]` - dependencies first | | `outputs` | Files/folders to cache | `["dist/**"]` | | `inputs` | Files for cache hash | `["src/**/*.ts"]` | | `env` | Environment variables affecting hash | `["DATABASE_URL"]` | | `cache` | Enable/disable caching | `true` or `false` | | `persistent` | Long-running task | `true` for dev servers | | `outputLogs` | Log verbosity | `"full"`, `"new-only"`, `"errors-only"` |

Dependency Patterns

  • `^task` - Run task in dependencies first (topological order)
  • `task` - Run task in same package first
  • `package#task` - Run specific package's task

Filter Syntax

| Filter | Description | |--------|-------------| | `web` | Only web package | | `web...` | web + all dependencies | | `...web` | web + all dependents | | `...web...` | web + deps + dependents | | `[HEAD^]` | Packages changed since last commit | | `./apps/*` | All packages in apps/ |

Best Practices

Performance Optimization

1. **Use specific outputs** - Only cache what's needed 2. **Fine-tune inputs** - Exclude files that don't af

Read more
@giuseppe-trisciuoglio
Ships withdeveloper-kit

Modular plugin marketplace for Claude Code and agentic CLIs, with validated, spec-driven skills, agents, commands, and workflows for Java, TypeScript, Python, PHP, AWS, and AI.

371116 skills44 agents2 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
371
Star history of giuseppe-trisciuoglio/developer-kit on GitHub, a chart by star-history.com

Other skills on developer-kit.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about turborepo-monorepo.

Which coding agents can use turborepo-monorepo?
turborepo-monorepo installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.