{"enrichment":{"faq":[{"a":"turborepo organizes monorepos into a root directory containing a turbo.json configuration file, with subdirectories for packages (reusable libraries) and apps (consumer applications). Each package and app has its own package.json with scripts. Start by creating your workspace root, adding a turbo.json at the top level to define task pipelines, then structure your directories as apps/ and packages/ folders. turborepo automatically discovers and links dependencies between these workspaces, enabling efficient task orchestration across your entire monorepo.","q":"How do I set up turborepo monorepo structure with packages and apps?"},{"a":"turborepo's turbo.json file defines your build pipeline by specifying tasks, their dependencies, and output caching rules. In the pipeline object, you declare tasks like build, test, or lint, then configure which tasks must run first using the dependsOn field. For example, a build task might depend on a prebuild task running first. You also define outputs\u2014files and directories turborepo should cache\u2014and set environment variable hashing to invalidate cache when specific variables change. This configuration ensures turborepo executes tasks in the correct order and caches results intelligently.","q":"What is the turborepo task configuration and dependencies setup in turbo.json?"},{"a":"turborepo cache misses occur when environment variables affecting your build aren't tracked, when output paths in turbo.json don't match actual build outputs, or when source files change unexpectedly. Debug by checking that your turbo.json outputs field correctly lists all generated files and directories. Configure globalDependencies to hash files like .env or build config files that affect output. Use the globalEnv field to specify environment variables turborepo should include in cache keys. Run turbo with --verbose to see cache hit/miss reasons, and verify that your scripts produce outputs in the exact paths you've declared.","q":"Why is turborepo caching not working and how do I debug cache misses?"},{"a":"turborepo's --affected flag runs tasks only on packages that have changed since a baseline commit, dramatically reducing CI/CD time. Use turbo run build --affected to build only modified packages and their dependents. In GitHub Actions or other CI systems, set the baseline using the --since flag to compare against a specific commit or branch. This approach filters packages by name and change detection automatically, so you avoid rebuilding unchanged code. Configure your CI/CD to pass the appropriate baseline (often main or master branch) so turborepo accurately identifies which packages need processing.","q":"How do I use the turborepo --affected flag for changed packages in CI/CD workflows?"},{"a":"turborepo best practices include defining clear, consistent scripts in each package.json (build, test, lint, dev) that turbo.json references in its pipeline. Avoid prebuild script anti-patterns\u2014instead, declare explicit task dependencies in turbo.json using dependsOn so turborepo orchestrates execution correctly. Enforce architectural boundaries by using turborepo's package isolation rules and dependency constraints to prevent unwanted cross-package imports. Structure your monorepo so apps depend on packages but packages don't depend on apps, maintaining clear separation of concerns and enabling parallel task execution across your workspace.","q":"What are turborepo best practices for package.json scripts and enforcing package boundaries?"},{"a":"turborepo executes tasks in parallel by default when there are no task dependencies blocking them, maximizing build speed. For development, use turbo run dev --parallel to run watch-mode scripts across all packages simultaneously, enabling hot-reload workflows. In turbo.json, tasks without dependsOn constraints run concurrently. For CI/CD, turborepo's parallel execution combined with caching and the --affected flag ensures fast, efficient builds. Configure your pipeline so independent tasks have no dependencies, allowing turborepo to distribute work across available CPU cores and complete your build system tasks as quickly as possible.","q":"How do I configure turborepo for parallel task execution and watch mode development?"}],"shadow_tags":["monorepo-orchestration","build-caching-strategy","dependency-graph-management","workspace-task-pipelines","ci-optimization-patterns","package-isolation-rules","incremental-builds","parallel-execution-control","environment-hashing","repository-structure-patterns"],"summary_rewrite":"turborepo is a high-performance build system designed for monorepos that streamlines task orchestration across multiple packages. Configure task dependencies, output handling, and intelligent caching directly in turbo.json to accelerate your build pipeline and reduce redundant work."},"files":[{"bytes":27169,"path":".codex/skills/turborepo/SKILL.md","sha256":"a42a36619745bbedf4a20badbe2096002ba90384bcc2558f686c4c1011b58ac7","url":"https://skillfed.io/files/module-federation/core/turborepo/93cc9766/SKILL.md"}],"id":"module-federation/core/turborepo","links":{"html":"https://skillfed.io/module-federation/core/turborepo","md":"https://skillfed.io/module-federation/core/turborepo.md","repo":"https://github.com/module-federation/core"},"meta":{"agents_supported":["codex"],"first_seen":"2026-07-28","forks":420,"language":"JavaScript","last_updated":"2026-07-28","license":"MIT","name":"turborepo","publisher":"module-federation","stars":2603},"relations":{"similar":[{"id":"secondsky/claude-skills/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":"bklit/bklit-ui/turborepo"},{"id":"shipshitdev/skills/turborepo"},{"id":"giuseppe-trisciuoglio/developer-kit/turborepo-monorepo"}]},"slug":{"owner":"module-federation","repo":"core","skill":"turborepo"},"version":"93cc9766"}
