Skip to main content Skills Marketplace Descubra e explore skills de IA criadas pela comunidade.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Copiar promptMostrar detalhes do prompt Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
npx skills add https://github.com/BEKO2210/Firstbrain --skill turborepo-cachingO comando permanece em uma só linha. Role horizontalmente para revisá-lo antes de copiar.
Prefere uma cópia local? Baixe os arquivos disponíveis atualmente no SkillsMP.
Baixar Zip Baixando... Ocupações relacionadas SOC
Baseado na classificação ocupacional SOC
name turborepo-caching description Configure Turborepo for efficient monorepo builds with local and remote caching. Use when setting up Turborepo, optimizing build pipelines, or implementing distributed caching. type skill created 2026-02-27T00:00:00.000Z domain software-development category architecture risk critical source community tags ["skill","software-development","architecture","turborepo","caching"]
Turborepo Caching
Production patterns for Turborepo build optimization.
Do not use this skill when
The task is unrelated to turborepo caching
You need a different domain or tool outside this scope
Instructions
Clarify goals, constraints, and required inputs.
Apply relevant best practices and validate outcomes.
Provide actionable steps and verification.
If detailed examples are required, open resources/implementation-playbook.md.
Use this skill when
Setting up new Turborepo projects
Configuring build pipelines
Implementing remote caching
Optimizing CI/CD performance
Migrating from other monorepo tools
Debugging cache misses
Core Concepts
1. Turborepo Architecture
Workspace Root/
├── apps/
│ ├── web/
│ │ └── package.json
│ └── docs/
│ └── package.json
├── packages/
│ ├── ui/
│ │ └── package.json
│ └── config/
│ └── package.json
├── turbo.json
└── package.json
2. Pipeline Concepts
Concept Description dependsOn Tasks that must complete first cache Whether to cache outputs outputs Files to cache inputs Files that affect cache key persistent Long-running tasks (dev servers)
Templates
Template 1: turbo.json Configuration
{
"$schema" : "https://turbo.build/schema.json" ,
"globalDependencies" : [
".env" ,
".env.local"
] ,
"globalEnv" :
[
"NODE_ENV"
,
"VERCEL_URL"
]
,
"pipeline"
:
{
"build"
:
{
"dependsOn"
:
[
"^build"
]
,
"outputs"
:
[
"dist/**"
,
".next/**"
,
"!.next/cache/**"
]
,
"env"
:
[
"API_URL"
,
"NEXT_PUBLIC_*"
]
}
,
"test"
:
{
"dependsOn"
:
[
"build"
]
,
"outputs"
:
[
"coverage/**"
]
,
"inputs"
:
[
"src/**/*.tsx"
,
"src/**/*.ts"
,
"test/**/*.ts"
]
}
,
"lint"
:
{
"outputs"
:
[
]
,
"cache"
:
true
}
,
"typecheck"
:
{
"dependsOn"
:
[
"^build"
]
,
"outputs"
:
[
]
}
,
"dev"
:
{
"cache"
:
false
,
"persistent"
:
true
}
,
"clean"
:
{
"cache"
:
false
}
}
}
Template 2: Package-Specific Pipeline
{
"$schema" : "https://turbo.build/schema.json" ,
"extends" : [ "//" ] ,
"pipeline" : {
"build" : {
"outputs" : [ ".next/**" , "!.next/cache/**" ] ,
"env" : [
"NEXT_PUBLIC_API_URL" ,
"NEXT_PUBLIC_ANALYTICS_ID"
]
} ,
"test" : {
"outputs" : [ "coverage/**" ] ,
"inputs" : [
"src/**" ,
"tests/**" ,
"jest.config.js"
]
}
}
}
Template 3: Remote Caching with Vercel
npx turbo login
npx turbo link
turbo build --remote-only
TURBO_TOKEN=your-token
TURBO_TEAM=your-team
name: CI
on:
push:
branches: [main ]
pull_request:
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npx turbo build --filter='...[origin/main]'
- name: Test
run: npx turbo test --filter='...[origin/main]'
Template 4: Self-Hosted Remote Cache
import express from 'express' ;
import { createReadStream, createWriteStream } from 'fs' ;
import { mkdir } from 'fs/promises' ;
import { join } from 'path' ;
const app = express ();
const CACHE_DIR = './cache' ;
app.get ('/v8/artifacts/:hash' , async (req, res) => {
const { hash } = req.params ;
const team = req.query .teamId || 'default' ;
const filePath = join (CACHE_DIR , team, hash);
try {
const stream = createReadStream (filePath);
stream.pipe (res);
} catch {
res.status (404 ).send ('Not found' );
}
});
app.put ('/v8/artifacts/:hash' , async (req, res) => {
const { hash } = req.params ;
const team = req.query .teamId || 'default' ;
const dir = join (CACHE_DIR , team);
const filePath = join (dir, hash);
await mkdir (dir, { recursive : true });
const stream = createWriteStream (filePath);
req.pipe (stream);
stream.on ('finish' , () => {
res.json ({ urls : [`${req.protocol} ://${req.get('host' )} /v8/artifacts/${hash} ` ] });
});
});
app.head ('/v8/artifacts/:hash' , async (req, res) => {
const { hash } = req.params ;
const team = req.query .teamId || 'default' ;
const filePath = join (CACHE_DIR , team, hash);
try {
await fs.access (filePath);
res.status (200 ).end ();
} catch {
res.status (404 ).end ();
}
});
app.listen (3000 );
{
"remoteCache" : {
"signature" : false
}
}
turbo build --api="http://localhost:3000" --token="my-token" --team="my-team"
Template 5: Filtering and Scoping
turbo build --filter=@myorg/web
turbo build --filter=@myorg/web...
turbo build --filter=...@myorg/ui
turbo build --filter='...[origin/main]'
turbo build --filter='./apps/*'
turbo build --filter=@myorg/web --filter=@myorg/docs
turbo build --filter='!@myorg/docs'
turbo build --filter='...[HEAD^1]...'
Template 6: Advanced Pipeline Configuration {
"$schema" : "https://turbo.build/schema.json" ,
"pipeline" : {
"build" : {
"dependsOn" : [ "^build" ] ,
"outputs" : [ "dist/**" ] ,
"inputs" : [
"$TURBO_DEFAULT$" ,
"!**/*.md" ,
"!**/*.test.*"
]
} ,
"test" : {
"dependsOn" : [ "^build" ] ,
"outputs" : [ "coverage/**" ] ,
"inputs" : [
"src/**" ,
"tests/**" ,
"*.config.*"
] ,
"env" : [ "CI" , "NODE_ENV" ]
} ,
"test:e2e" : {
"dependsOn" : [ "build" ] ,
"outputs" : [ ] ,
"cache" : false
} ,
"deploy" : {
"dependsOn" : [ "build" , "test" , "lint" ] ,
"outputs" : [ ] ,
"cache" : false
} ,
"db:generate" : {
"cache" : false
} ,
"db:push" : {
"cache" : false ,
"dependsOn" : [ "db:generate" ]
} ,
"@myorg/web#build" : {
"dependsOn" : [ "^build" , "@myorg/db#db:generate" ] ,
"outputs" : [ ".next/**" ] ,
"env" : [ "NEXT_PUBLIC_*" ]
}
}
}
Template 7: Root package.json Setup {
"name" : "my-turborepo" ,
"private" : true ,
"workspaces" : [
"apps/*" ,
"packages/*"
] ,
"scripts" : {
"build" : "turbo build" ,
"dev" : "turbo dev" ,
"lint" : "turbo lint" ,
"test" : "turbo test" ,
"clean" : "turbo clean && rm -rf node_modules" ,
"format" : "prettier --write \"**/*.{ts,tsx,md}\"" ,
"changeset" : "changeset" ,
"version-packages" : "changeset version" ,
"release" : "turbo build --filter=./packages/* && changeset publish"
} ,
"devDependencies" : {
"turbo" : "^1.10.0" ,
"prettier" : "^3.0.0" ,
"@changesets/cli" : "^2.26.0"
} ,
"packageManager" : "npm@10.0.0"
}
Debugging Cache
turbo build --dry-run
turbo build --verbosity=2
turbo build --graph
turbo build --force
turbo build --summarize
TURBO_LOG_VERBOSITY=debug turbo build --filter=@myorg/web
Best Practices
Do's
Define explicit inputs - Avoid cache invalidation
Use workspace protocol - "@myorg/ui": "workspace:*"
Enable remote caching - Share across CI and local
Filter in CI - Build only affected packages
Cache build outputs - Not source files
Don'ts
Don't cache dev servers - Use persistent: true
Don't include secrets in env - Use runtime env vars
Don't ignore dependsOn - Causes race conditions
Don't over-filter - May miss dependencies
Resources
Connections
Domain: [[Software Entwicklung]]
Kategorie: [[Software Architektur]]
Navigation: [[Skills Uebersicht]], [[Home]]