{"enrichment":{"faq":[{"a":"turborepo streamlines setup by using a turbo.json configuration file at your monorepo root. Define tasks with their dependencies using the `dependsOn` field\u2014for example, a build task might depend on lint completing first. turborepo then automatically resolves the correct execution order across all packages. Start with `turbo init` to scaffold your configuration, then specify which tasks should run and their interdependencies. This ensures tasks execute in the right sequence without manual orchestration.","q":"How do I set up turborepo monorepo with proper task configuration and dependencies?"},{"a":"turborepo caching failures often stem from missing or incorrect cache output declarations. Verify that your turbo.json specifies the `outputs` array for each task\u2014turborepo only caches what you explicitly declare. Check that environment variables affecting your build aren't changing unexpectedly, as turborepo includes them in cache keys. Use `turbo run <task> --verbose` to see cache hit/miss details. Also ensure your `.gitignore` doesn't exclude cached directories. Remote cache setup requires proper authentication; verify your remote cache credentials if using distributed caching.","q":"Why is turborepo caching not working and how do I debug it?"},{"a":"turborepo provides two powerful filtering mechanisms. Use `turbo run build --filter=<package-name>` to target specific packages by name pattern. The `--affected` flag runs tasks only on packages that changed since a baseline (typically main branch), which is essential for CI/CD efficiency. Combine them as `turbo run build --filter=@scope/* --affected` to run builds on all affected packages matching a scope. This prevents unnecessary work and accelerates CI pipelines by skipping unchanged packages.","q":"How can I filter packages by name and use the --affected flag in turborepo?"},{"a":"turborepo supports both `turbo run <task>` and the shorthand `turbo <task>` syntax\u2014they're functionally equivalent. The shorthand is faster to type for common workflows. Both execute your defined tasks across the monorepo with dependency resolution and caching. Use whichever fits your preference; the shorthand is convenient for frequent command-line use, while `turbo run` is more explicit and often preferred in scripts and documentation for clarity.","q":"What's the difference between turbo run and the turbo shorthand, and how do I use them?"},{"a":"turborepo integrates seamlessly with GitHub Actions using the `--affected` flag to run only changed packages. In your workflow, use `turbo run build --affected` to detect and build only packages modified in the current PR. Combine this with `turbo run lint test --affected` to validate changes efficiently. turborepo's remote cache can store build artifacts across CI runs, reducing redundant work. Configure your turbo.json with proper task definitions and outputs, then reference `--affected` in your Actions workflow to skip unchanged packages and accelerate feedback.","q":"How do I set up turborepo with CI/CD workflows and GitHub Actions for affected package filtering?"},{"a":"turborepo supports organizing internal packages in a shared directory (commonly `packages/` or `libs/`) within your monorepo. Define each package with its own package.json and source code. Use the `dependsOn` field in turbo.json to enforce dependency direction\u2014prevent circular dependencies by declaring which packages can depend on others. turborepo's task configuration ensures packages build in the correct order. For stricter boundary enforcement, combine turborepo with linting tools that validate import paths, ensuring packages only reference allowed dependencies and maintaining clean architectural layers.","q":"How do I structure internal packages and enforce architectural boundaries in turborepo?"}],"shadow_tags":["monorepo-orchestration","task-dependency-graph","build-cache-strategy","workspace-structure","ci-optimization","package-isolation","parallel-execution","environment-hashing","filter-patterns","dev-workflow"],"summary_rewrite":"turborepo streamlines development workflows across multiple packages by automating task execution with smart dependency resolution. It accelerates builds through incremental computation and caching, letting teams ship faster without managing complex interdependencies manually."},"files":[{"bytes":28417,"path":".agents/skills/turborepo/SKILL.md","sha256":"3fadd9cadb3f284e267efc6e5b2506520d40e06c12136d6235ffca28af25601a","url":"https://skillfed.io/files/sanity-io/next-sanity/turborepo/919368d4/SKILL.md"}],"id":"sanity-io/next-sanity/turborepo","links":{"html":"https://skillfed.io/sanity-io/next-sanity/turborepo","md":"https://skillfed.io/sanity-io/next-sanity/turborepo.md","repo":"https://github.com/sanity-io/next-sanity"},"meta":{"agents_supported":[],"first_seen":"2026-07-28","forks":109,"language":"TypeScript","last_updated":"2026-07-27","license":"MIT","name":"turborepo","publisher":"sanity-io","stars":951},"relations":{"similar":[{"id":"secondsky/claude-skills/turborepo"},{"id":"langfuse/langfuse/turborepo"},{"id":"vercel/turborepo/turborepo"},{"id":"saffron-health/libretto/turborepo"},{"id":"module-federation/core/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":"sanity-io","repo":"next-sanity","skill":"turborepo"},"version":"919368d4"}
