Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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
.claude/skills/giuseppe-trisciuoglio-turborepo-monorepo/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 67% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 39% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 207% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 160% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 157% | 0% |
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.
turbo.json tasks with dependencies and outputsbash pnpm create turbo@latest my-workspace cd my-workspace
bash pnpm add -D -w turbo
json { "$schema": "https://turborepo.dev/schema.json", "pipeline": { "build": { "dependsOn": ["^build"], "outputs": ["dist/**", ".next/**"] }, "lint": { "outputs": [] }, "test": { "dependsOn": ["build"], "outputs": ["coverage/**"] } } }
json { "scripts": { "build": "turbo run build", "dev": "turbo run dev", "lint": "turbo run lint", "test": "turbo run test", "clean": "turbo run clean" } }
bash turbo run build --dry-run --filter=... # Verify task execution order
turbo.json:json { "pipeline": { "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] }, "test": { "dependsOn": ["build"], "outputs": ["coverage/**"] }, "lint": { "outputs": [] } } }
bash turbo run build # All packages turbo run lint test build # Multiple tasks turbo run build --filter=web # Specific package
json { "pipeline": { "transit": { "dependsOn": ["^transit"] }, "typecheck": { "dependsOn": ["transit"] } } }
bash turbo run build --dry-run # Check task order and affected packages
Next.js: outputs ".next/**" and env ["NEXT_PUBLIC_*"] - See references/nextjs-config.md
NestJS: outputs "dist/**", dev tasks with cache: false, persistent: true - See references/nestjs-config.md
json { "pipeline": { "test": { "outputs": [], "inputs": ["$TURBO_DEFAULT$", "vitest.config.ts"] }, "test:watch": { "cache": false, "persistent": true } } }
bash turbo run test --filter=[HEAD^] See references/testing-config.md for complete testing setup.
json { "extends": ["//"], "tasks": { "build": { "outputs": ["$TURBO_EXTENDS$", ".next/**"] } } } See references/package-configs.md for detailed package configuration patterns.
yaml
run: pnpm install
run: pnpm turbo run build --filter=HEAD^] --dry-run # VALIDATE: Review output to confirm only expected packages will build
run: pnpm run test --filter=HEAD^]
run: pnpm run build --filter=HEAD^]
run: pnpm turbo run build --filter=HEAD^] --dry-run | grep "Cache" # VALIDATE: Confirm cache hits for unchanged packages
bash # Login to Vercel npx turbo login
# Link repository npx turbo link See references/ci-cd.md for complete CI/CD setup examples.
| 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" |
^task - Run task in dependencies first (topological order)task - Run task in same package firstpackage#task - Run specific package's task| 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/ |
json{ "pipeline": { "build": { "outputs": ["dist/**"], "inputs": ["$TURBO_DEFAULT$", "!README.md", "!**/*.md"] } } }
dependsOn: lint, format, spellcheckdependsOn: ["^build"]: build, compiledependsOn: ["build"]: test, e2ecache: false, persistent: true: dev, watchProblem: Tasks execute in wrong order
Solution: Check dependsOn configuration
json{ "build": { "dependsOn": ["^build"] } }
Problem: Cache invalidating unexpectedly
Solution: Review globalDependencies and inputs
json{ "globalDependencies": ["tsconfig.json"], "pipeline": { "build": { "inputs": ["$TURBO_DEFAULT$", "!*.md"] } } }
Problem: TypeScript errors not caught due to cache
Solution: Use transit nodes for type checking
json{ "transit": { "dependsOn": ["^transit"] }, "typecheck": { "dependsOn": ["transit"] } }
Input: "Create a Turborepo with Next.js and NestJS"
bashpnpm create turbo@latest my-workspace cd my-workspace # Add Next.js app pnpm add next react react-dom -F apps/web # Add NestJS API pnpm add @nestjs/core @nestjs/common -F apps/api
Input: "Set up Vitest for all packages"
json{ "pipeline": { "test": { "dependsOn": ["build"], "outputs": ["coverage/**"], "inputs": ["$TURBO_DEFAULT$", "vitest.config.ts"] }, "test:watch": { "cache": false, "persistent": true } } }
Input: "Only test changed packages in CI"
bashpnpm run test --filter=[HEAD^]
Input: "Why is my cache missing?"
bash# Dry run to see what would be executed turbo run build --dry-run --filter=web # Show hash inputs turbo run build --force --filter=web
package.jsonconcurrency settingsFor detailed guidance on specific topics, consult:
| Topic | Reference File | |-------|----------------| | turbo.json template | references/turbo.json | | Next.js integration | references/nextjs-config.md | | NestJS integration | references/nestjs-config.md | | Vitest/Jest/Playwright | references/testing-config.md | | GitHub/CircleCI/GitLab CI | references/ci-cd.md | | Package configurations | references/package-configs.md |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 16,105 | 11,189 | -31% | 1 | 1 | 0% | 2,712 | 4,529 | +67% | 0 | 0 | — |
case-02 | fail→pass | 16,944 | 8,463 | -50% | 1 | 1 | 0% | 3,022 | 4,213 | +39% | 0 | 0 | — |
case-03 | fail→pass | 7,341 | 7,050 | -4% | 1 | 1 | 0% | 1,254 | 3,852 | +207% | 0 | 0 | — |
case-04 | fail→pass | 8,793 | 6,577 | -25% | 1 | 1 | 0% | 1,389 | 3,605 | +160% | 0 | 0 | — |
case-05 | fail→pass | 6,991 | 3,698 | -47% | 1 | 1 | 0% | 1,226 | 3,149 | +157% | 0 | 0 | — |
case-06 | fail→pass | 7,416 | 5,372 | -28% | 1 | 1 | 0% | 1,210 | 3,329 | +175% | 0 | 0 | — |
case-07 | pass→pass | 9,157 | 5,076 | -45% | 1 | 1 | 0% | 1,592 | 3,434 | +116% | 0 | 0 | — |
case-08 | pass→pass | 7,132 | 3,768 | -47% | 1 | 1 | 0% | 1,295 | 3,159 | +144% | 0 | 0 | — |
case-09 | pass→pass | 4,748 | 4,941 | +4% | 1 | 1 | 0% | 777 | 2,893 | +272% | 0 | 0 | — |
case-10 | pass→pass | 6,066 | 12,692 | +109% | 1 | 1 | 0% | 1,006 | 3,683 | +266% | 0 | 0 | — |
case-11 | pass→pass | 5,320 | 5,636 | +6% | 1 | 1 | 0% | 953 | 3,509 | +268% | 0 | 0 | — |
case-12 | fail→pass | 8,668 | 5,152 | -41% | 1 | 1 | 0% | 1,481 | 3,411 | +130% | 0 | 0 | — |
case-13 | pass→pass | 9,363 | 6,605 | -29% | 1 | 1 | 0% | 1,600 | 3,733 | +133% | 0 | 0 | — |
case-14 | pass→pass | 4,478 | 3,391 | -24% | 1 | 1 | 0% | 750 | 3,119 | +316% | 0 | 0 | — |
case-15 | fail→fail | 10,519 | 6,299 | -40% | 1 | 1 | 0% | 1,850 | 3,634 | +96% | 0 | 0 | — |
case-16 | fail→fail | 11,074 | 6,632 | -40% | 1 | 1 | 0% | 897 | 3,709 | +313% | 0 | 0 | — |
case-17 | pass→pass | 2,365 | 1,969 | -17% | 1 | 1 | 0% | 312 | 2,748 | +781% | 0 | 0 | — |
case-18 | fail→fail | 6,725 | 4,479 | -33% | 1 | 1 | 0% | 1,038 | 3,229 | +211% | 0 | 0 | — |
case-19 | pass→pass | 6,860 | 5,334 | -22% | 1 | 1 | 0% | 1,172 | 3,415 | +191% | 0 | 0 | — |
case-20 | pass→pass | 13,172 | 12,926 | -2% | 1 | 1 | 0% | 2,314 | 4,854 | +110% | 0 | 0 | — |
case-21 | pass→pass | 9,707 | 6,035 | -38% | 1 | 1 | 0% | 1,616 | 3,587 | +122% | 0 | 0 | — |
case-22 | pass→pass | 13,259 | 9,775 | -26% | 1 | 1 | 0% | 2,258 | 4,266 | +89% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +32 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.