{"enrichment":{"faq":[{"a":"Turborepo enables developers to organize monorepos by creating a root `turbo.json` configuration file and structuring your workspace into `apps/` and `packages/` directories. Each app or package should have its own `package.json`. In your root `package.json`, use workspaces (npm, yarn, or pnpm) to link all packages together. Turborepo then automatically discovers these packages and understands their interdependencies, allowing you to run tasks across your entire monorepo with a single command like `turbo run build`.","q":"How do I set up turborepo monorepo structure with apps and packages?"},{"a":"Turborepo task configuration and dependencies are defined in `turbo.json` using the `pipeline` object. For each task, specify its `dependsOn` array to declare which tasks must run first\u2014both within the same package (`^taskname`) and in dependent packages. Enable caching by setting `outputs` to specify which directories to cache. Use `inputs` to define which files trigger cache invalidation. This precision dependency resolution ensures tasks run in the correct order and Turborepo skips redundant work when outputs haven't changed.","q":"What are turborepo task configuration and dependencies best practices?"},{"a":"Turborepo's `--affected` flag intelligently identifies which packages have changed since a baseline (typically your main branch) and runs tasks only on those packages and their dependents. Use `turbo run build --affected --since=origin/main` to compare against your main branch. This is especially powerful in CI/CD workflows where you want to avoid rebuilding unchanged packages. Turborepo analyzes your dependency graph to determine not just which packages changed, but which other packages depend on them and therefore need rebuilding.","q":"How do I run only changed packages with --affected in turborepo?"},{"a":"Turborepo environment variables issues often stem from incorrect cache configuration. If you reference environment variables in your build but don't declare them in `turbo.json`, Turborepo may serve a cached result that was built with different environment values. Declare environment variables in the `env` array within your task's pipeline configuration so Turborepo knows to invalidate the cache when they change. Additionally, ensure variables are exported in your shell before running `turbo run`, and verify they're not being filtered by your CI/CD platform's secret masking.","q":"Why are turborepo environment variables not working in my build tasks?"},{"a":"Turborepo integrates into CI/CD by using `turbo run` commands with `--affected` to build only changed packages. For remote caching, authenticate with `turbo login`, then enable remote caching in your `turbo.json` or via environment variables. In GitHub Actions, run `turbo run build --affected` after checking out your code; Turborepo automatically uploads cache artifacts to your configured remote cache backend. This allows subsequent CI runs and developer machines to reuse cached outputs, dramatically reducing build times across your entire team.","q":"How do I integrate turborepo into CI/CD workflows with remote caching?"},{"a":"Turborepo users should avoid several anti-patterns: don't define root-level task scripts that bypass the pipeline\u2014always use `turbo run` so caching and dependency ordering work correctly. Avoid incorrect filter syntax; use `--filter=@scope/package` or `--filter=./packages/mypackage` precisely. Don't forget to declare `outputs` in your pipeline configuration, or caching won't function. Resist putting all code in a single package; instead, enforce architectural boundaries by organizing code into separate internal packages. Finally, don't ignore cache misses\u2014use `turbo run build --no-cache` to debug and ensure your `inputs` and `env` declarations accurately reflect what affects your build.","q":"What common anti-patterns should I avoid in turborepo monorepos?"}],"shadow_tags":["monorepo-orchestration","task-graph-execution","incremental-builds","workspace-dependencies","build-caching-strategy","ci-optimization","package-isolation","dependency-graph"],"summary_rewrite":"Turborepo enables developers to orchestrate complex build and task workflows across monorepos with precision dependency resolution and smart caching layers. Set up efficient pipelines that automatically skip redundant work and scale seamlessly as your project grows. Ideal for teams managing multiple interconnected packages who need reproducible, high-performance builds."},"files":[{"bytes":27204,"path":".agents/skills/turborepo/SKILL.md","sha256":"5b318a89e0cacb00ad180775159e23d2255d1cb26be2fdcce1695c12a2b470b1","url":"https://skillfed.io/files/bklit/bklit-ui/turborepo/83a550ce/SKILL.md"}],"id":"bklit/bklit-ui/turborepo","links":{"html":"https://skillfed.io/bklit/bklit-ui/turborepo","md":"https://skillfed.io/bklit/bklit-ui/turborepo.md","repo":"https://github.com/bklit/bklit-ui"},"meta":{"agents_supported":[],"first_seen":"2026-07-28","forks":86,"language":"TypeScript","last_updated":"2026-07-06","license":"MIT","name":"turborepo","publisher":"bklit","stars":1383},"relations":{"similar":[{"id":"secondsky/claude-skills/turborepo"},{"id":"module-federation/core/turborepo"},{"id":"langfuse/langfuse/turborepo"},{"id":"vercel/turborepo/turborepo"},{"id":"saffron-health/libretto/turborepo"},{"id":"sanity-io/next-sanity/turborepo"},{"id":"hairyf/skills/turborepo"},{"id":"antfu/skills/turborepo"},{"id":"shipshitdev/skills/turborepo"},{"id":"giuseppe-trisciuoglio/developer-kit/turborepo-monorepo"}]},"slug":{"owner":"bklit","repo":"bklit-ui","skill":"turborepo"},"version":"83a550ce"}
