plugins/smedjen/skills/turborepo-patterns/SKILL.md
Turborepo pipeline config, caching, filtering, remote cache, and monorepo task orchestration. Use when configuring turbo.json pipelines, setting up remote cache, filtering tasks to specific packages, migrating from Lerna or Nx, pruning for Docker builds, or debugging cache misses.
npx skillsauth add hjemmesidekongen/ai turborepo-patternsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Turborepo's core value is task-level caching and parallel execution across a monorepo. Both depend on a correctly declared pipeline — wrong dependency edges or missing cache keys produce incorrect builds silently.
turbo.json defines what tasks exist and how they relate. Task keys are package#task or bare task names that apply across all packages. The dependsOn field controls execution order; ^ prefix means "wait for this task in all upstream dependencies first."
Outputs and inputs define the cache contract. Omitting outputs means nothing is cached for restore. Omitting inputs defaults to all git-tracked files — overly broad and causes spurious cache misses.
Turbo hashes task inputs (files matching inputs, env vars in env/globalEnv, task graph position) to produce a cache key. On hit, outputs are restored from cache without re-running the task. On miss, the task runs and outputs are saved.
Cache hits show >>> FULL TURBO in output. A cache miss when you expect a hit means inputs changed — run turbo run build --dry=json to inspect the hash and what contributed to it.
--filter scopes the task graph to a subset of packages. It supports package names, directory globs, git ranges, and combinations. Use it in CI to run only affected packages.
Remote cache shares hits across machines and CI runs. Vercel's hosted cache is the default option; self-hosted alternatives (S3, Turborepo Remote Cache open source) are available. All remote cache traffic is signed — the token never travels with the artifact.
turbo prune --scope=<app> generates a minimal monorepo subset for a specific app. This produces a out/ directory with only the packages and lockfile entries the app needs — reducing Docker layer size and rebuild surface.
See references/process.md for full turbo.json config, pipeline examples, filtering syntax, remote cache setup, env key configuration, watch mode, migration from Lerna/Nx, and anti-patterns.
development
Creates a brand from scratch through market research and interactive sparring. Runs competitive research via Perplexity, then guides the user through positioning, audience, voice, values, and content pillars. Produces the full brand guideline set at .ai/brand/{name}/. Use when building a new brand, defining brand strategy for a product, or when /våbenskjold:create is invoked.
testing
Loads brand guidelines from .ai/brand/{name}/ and makes them available to the current context. Progressive disclosure: L1 confirms brand exists, L2 loads summary, L3 loads specific files on demand. Use when a downstream skill or user needs brand context, or when /våbenskjold:apply is invoked.
documentation
Guided reinvention of an existing brand guideline. Loads current brand from .ai/brand/{name}/, identifies what to keep vs change, and walks the user through targeted evolution. Preserves brand equity while updating positioning, voice, or values. Use when refreshing a brand or when /våbenskjold:evolve is invoked.
development
Codifies an existing brand from materials, samples, and references. Analyzes provided content to extract voice patterns, values, and positioning. Produces the same guideline format as brand-strategy. Use when a brand already exists but isn't documented, or when /våbenskjold:audit is invoked.