turborepo-caching
Ajuda seu agente a configurar compilações eficientes em repositórios com múltiplos projetos, usando cache.
O que ela faz
Esta ferramenta ajuda a configurar o Turborepo para construir seus projetos de forma mais rápida e eficiente. Ela otimiza o processo de construção, permitindo que você use um cache local ou remoto para evitar refazer trabalhos já feitos.
Quando usar
- ✓Ao iniciar um novo projeto com Turborepo.
- ✓Quando você quer acelerar as construções do seu código.
- ✓Ao configurar o sistema de integração contínua (CI/CD).
Exemplo do que pedir para a IA
“Como configuro o cache remoto para meu projeto Turborepo?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
O Turborepo analisa quais partes do seu código mudaram e usa um sistema de cache para armazenar os resultados das construções. Se o código não mudou, ele reutiliza o resultado do cache, economizando tempo.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add wshobson/agents --skill turborepo-cachingOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/developer-essentials/skills/turborepo-caching/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Cache do Turborepo
Padrões de produção para otimização de builds do Turborepo.
Quando Usar Esta Habilidade
- Configurando novos projetos do Turborepo
- Configurando pipelines de build
- Implementando cache remoto
- Otimizando o desempenho de CI/CD
- Migrando de outras ferramentas de monorepo
- Depurando falhas de cache
Conceitos Principais
1. Arquitetura do Turborepo
Workspace Root/
├── apps/
│ ├── web/
│ │ └── package.json
│ └── docs/
│ └── package.json
├── packages/
│ ├── ui/
│ │ └── package.json
│ └── config/
│ └── package.json
├── turbo.json
└── package.json
2. Conceitos de Pipeline
| Conceito | Descrição |
|---|---|
| dependsOn | Tarefas que devem ser concluídas primeiro |
| cache | Se os resultados devem ser cacheados |
| outputs | Arquivos a serem cacheados |
| inputs | Arquivos que afetam a chave de cache |
| persistent | Tarefas de longa duração (servidores de desenvolvimento) |
Modelos
Modelo 1: Configuração do turbo.json
{
"$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
}
}
}
Modelo 2: Pipeline Específico por Pacote
// apps/web/turbo.json
{
"$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"]
}
}
}
Modelo 3: Cache Remoto com Vercel
# Login to Vercel
npx turbo login
# Link to Vercel project
npx turbo link
# Run with remote cache
turbo build --remote-only
# CI environment variables
TURBO_TOKEN=your-token
TURBO_TEAM=your-team
# .github/workflows/ci.yml
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]'
Modelo 4: Cache Remoto Auto-Hospedado
// Custom remote cache server (Express)
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";
// Get artifact
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");
}
});
// Put artifact
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}`],
});
});
});
// Check artifact exists
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, "127.0.0.1");
…
Perguntas frequentes
O que é um monorepo?
Um monorepo é uma estratégia onde você armazena vários projetos diferentes em um único repositório de código.
O que é cache?
Cache é como uma memória temporária que guarda resultados de tarefas já realizadas. Se a mesma tarefa precisar ser feita de novo, o resultado é pego da memória em vez de ser recalculado.
Qual a diferença entre cache local e remoto?
Cache local fica no seu computador, enquanto o cache remoto é compartilhado entre todos os desenvolvedores e o sistema de CI/CD, geralmente hospedado em um servidor.
Detalhes
Descrição original do autor
Configure Turborepo for efficient monorepo builds with local and remote caching. Use when setting up Turborepo, optimizing build pipelines, or implementing distributed caching.
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4851
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
bun-runtime
Faz seu agente usar o Bun para rodar, organizar e testar código. Ajuda a escolher o Bun em vez de outras ferramentas e a migrar projetos existentes.
affaan-m/ECC
database-migrations
Ajuda seu agente a fazer mudanças seguras em bancos de dados. Ele garante que as alterações possam ser desfeitas e minimiza o tempo de inatividade.
affaan-m/ECC
deployment-patterns
Configura fluxos de implantação e CI/CD, containerização e estratégias de rollback para garantir lançamentos seguros.
affaan-m/ECC