[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F07635F7BDWWZB684Q36TC":3,"skill-same:01M6F07635F7BDWWZB684Q36TC":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6F07635F7BDWWZB684Q36TC","turborepo-caching",null,"Configure Turborepo for efficient monorepo builds with local and remote caching. Use when setting up Turborepo, optimizing build pipelines, or implementing distributed caching.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fturborepo-caching\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"turborepo","turborepo caching","caching","distributed","configure","monorepo","use","distributed caching","up","pipelines","build","local","remote","with","2026-11-10 10:12:30",false,"---\nname: turborepo-caching\ndescription: Configure Turborepo for efficient monorepo builds with local and remote caching. Use when setting up Turborepo, optimizing build pipelines, or implementing distributed caching.\n---\n\n# Turborepo Caching\n\nProduction patterns for Turborepo build optimization.\n\n## Do not use this skill when\n\n- The task is unrelated to turborepo caching\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources\u002Fimplementation-playbook.md`.\n\n## Use this skill when\n\n- Setting up new Turborepo projects\n- Configuring build pipelines\n- Implementing remote caching\n- Optimizing CI\u002FCD performance\n- Migrating from other monorepo tools\n- Debugging cache misses\n\n## Core Concepts\n\n### 1. Turborepo Architecture\n\n```\nWorkspace Root\u002F\n├── apps\u002F\n│   ├── web\u002F\n│   │   └── package.json\n│   └── docs\u002F\n│       └── package.json\n├── packages\u002F\n│   ├── ui\u002F\n│   │   └── package.json\n│   └── config\u002F\n│       └── package.json\n├── turbo.json\n└── package.json\n```\n\n### 2. Pipeline Concepts\n\n| Concept | Description |\n|---------|-------------|\n| **dependsOn** | Tasks that must complete first |\n| **cache** | Whether to cache outputs |\n| **outputs** | Files to cache |\n| **inputs** | Files that affect cache key |\n| **persistent** | Long-running tasks (dev servers) |\n\n## Templates\n\n### Template 1: turbo.json Configuration\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fturbo.build\u002Fschema.json\",\n  \"globalDependencies\": [\n    \".env\",\n    \".env.local\"\n  ],\n  \"globalEnv\": [\n    \"NODE_ENV\",\n    \"VERCEL_URL\"\n  ],\n  \"pipeline\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\n        \"dist\u002F**\",\n        \".next\u002F**\",\n        \"!.next\u002Fcache\u002F**\"\n      ],\n      \"env\": [\n        \"API_URL\",\n        \"NEXT_PUBLIC_*\"\n      ]\n    },\n    \"test\": {\n      \"dependsOn\": [\"build\"],\n      \"outputs\": [\"coverage\u002F**\"],\n      \"inputs\": [\n        \"src\u002F**\u002F*.tsx\",\n        \"src\u002F**\u002F*.ts\",\n        \"test\u002F**\u002F*.ts\"\n      ]\n    },\n    \"lint\": {\n      \"outputs\": [],\n      \"cache\": true\n    },\n    \"typecheck\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": []\n    },\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    },\n    \"clean\": {\n      \"cache\": false\n    }\n  }\n}\n```\n\n### Template 2: Package-Specific Pipeline\n\n```json\n\u002F\u002F apps\u002Fweb\u002Fturbo.json\n{\n  \"$schema\": \"https:\u002F\u002Fturbo.build\u002Fschema.json\",\n  \"extends\": [\"\u002F\u002F\"],\n  \"pipeline\": {\n    \"build\": {\n      \"outputs\": [\".next\u002F**\", \"!.next\u002Fcache\u002F**\"],\n      \"env\": [\n        \"NEXT_PUBLIC_API_URL\",\n        \"NEXT_PUBLIC_ANALYTICS_ID\"\n      ]\n    },\n    \"test\": {\n      \"outputs\": [\"coverage\u002F**\"],\n      \"inputs\": [\n        \"src\u002F**\",\n        \"tests\u002F**\",\n        \"jest.config.js\"\n      ]\n    }\n  }\n}\n```\n\n### Template 3: Remote Caching with Vercel\n\n```bash\n# Login to Vercel\nnpx turbo login\n\n# Link to Vercel project\nnpx turbo link\n\n# Run with remote cache\nturbo build --remote-only\n\n# CI environment variables\nTURBO_TOKEN=your-token\nTURBO_TEAM=your-team\n```\n\n```yaml\n# .github\u002Fworkflows\u002Fci.yml\nname: CI\n\non:\n  push:\n    branches: [main]\n  pull_request:\n\nenv:\n  TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}\n  TURBO_TEAM: ${{ vars.TURBO_TEAM }}\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: 20\n          cache: 'npm'\n\n      - name: Install dependencies\n        run: npm ci\n\n      - name: Build\n        run: npx turbo build --filter='...[origin\u002Fmain]'\n\n      - name: Test\n        run: npx turbo test --filter='...[origin\u002Fmain]'\n```\n\n### Template 4: Self-Hosted Remote Cache\n\n```typescript\n\u002F\u002F Custom remote cache server (Express)\nimport express from 'express';\nimport { createReadStream, createWriteStream } from 'fs';\nimport { mkdir } from 'fs\u002Fpromises';\nimport { join } from 'path';\n\nconst app = express();\nconst CACHE_DIR = '.\u002Fcache';\n\n\u002F\u002F Get artifact\napp.get('\u002Fv8\u002Fartifacts\u002F:hash', async (req, res) => {\n  const { hash } = req.params;\n  const team = req.query.teamId || 'default';\n  const filePath = join(CACHE_DIR, team, hash);\n\n  try {\n    const stream = createReadStream(filePath);\n    stream.pipe(res);\n  } catch {\n    res.status(404).send('Not found');\n  }\n});\n\n\u002F\u002F Put artifact\napp.put('\u002Fv8\u002Fartifacts\u002F:hash', async (req, res) => {\n  const { hash } = req.params;\n  const team = req.query.teamId || 'default';\n  const dir = join(CACHE_DIR, team);\n  const filePath = join(dir, hash);\n\n  await mkdir(dir, { recursive: true });\n\n  const stream = createWriteStream(filePath);\n  req.pipe(stream);\n\n  stream.on('finish', () => {\n    res.json({ urls: [`${req.protocol}:\u002F\u002F${req.get('host')}\u002Fv8\u002Fartifacts\u002F${hash}`] });\n  });\n});\n\n\u002F\u002F Check artifact exists\napp.head('\u002Fv8\u002Fartifacts\u002F:hash', async (req, res) => {\n  const { hash } = req.params;\n  const team = req.query.teamId || 'default';\n  const filePath = join(CACHE_DIR, team, hash);\n\n  try {\n    await fs.access(filePath);\n    res.status(200).end();\n  } catch {\n    res.status(404).end();\n  }\n});\n\napp.listen(3000);\n```\n\n```json\n\u002F\u002F turbo.json for self-hosted cache\n{\n  \"remoteCache\": {\n    \"signature\": false\n  }\n}\n```\n\n```bash\n# Use self-hosted cache\nturbo build --api=\"http:\u002F\u002Flocalhost:3000\" --token=\"my-token\" --team=\"my-team\"\n```\n\n### Template 5: Filtering and Scoping\n\n```bash\n# Build specific package\nturbo build --filter=@myorg\u002Fweb\n\n# Build package and its dependencies\nturbo build --filter=@myorg\u002Fweb...\n\n# Build package and its dependents\nturbo build --filter=...@myorg\u002Fui\n\n# Build changed packages since main\nturbo build --filter='...[origin\u002Fmain]'\n\n# Build packages in directory\nturbo build --filter='.\u002Fapps\u002F*'\n\n# Combine filters\nturbo build --filter=@myorg\u002Fweb --filter=@myorg\u002Fdocs\n\n# Exclude package\nturbo build --filter='!@myorg\u002Fdocs'\n\n# Include dependencies of changed\nturbo build --filter='...[HEAD^1]...'\n```\n\n### Template 6: Advanced Pipeline Configuration\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fturbo.build\u002Fschema.json\",\n  \"pipeline\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\"],\n      \"inputs\": [\n        \"$TURBO_DEFAULT$\",\n        \"!**\u002F*.md\",\n        \"!**\u002F*.test.*\"\n      ]\n    },\n    \"test\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"coverage\u002F**\"],\n      \"inputs\": [\n        \"src\u002F**\",\n        \"tests\u002F**\",\n        \"*.config.*\"\n      ],\n      \"env\": [\"CI\", \"NODE_ENV\"]\n    },\n    \"test:e2e\": {\n      \"dependsOn\": [\"build\"],\n      \"outputs\": [],\n      \"cache\": false\n    },\n    \"deploy\": {\n      \"dependsOn\": [\"build\", \"test\", \"lint\"],\n      \"outputs\": [],\n      \"cache\": false\n    },\n    \"db:generate\": {\n      \"cache\": false\n    },\n    \"db:push\": {\n      \"cache\": false,\n      \"dependsOn\": [\"db:generate\"]\n    },\n    \"@myorg\u002Fweb#build\": {\n      \"dependsOn\": [\"^build\", \"@myorg\u002Fdb#db:generate\"],\n      \"outputs\": [\".next\u002F**\"],\n      \"env\": [\"NEXT_PUBLIC_*\"]\n    }\n  }\n}\n```\n\n### Template 7: Root package.json Setup\n\n```json\n{\n  \"name\": \"my-turborepo\",\n  \"private\": true,\n  \"workspaces\": [\n    \"apps\u002F*\",\n    \"packages\u002F*\"\n  ],\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"dev\": \"turbo dev\",\n    \"lint\": \"turbo lint\",\n    \"test\": \"turbo test\",\n    \"clean\": \"turbo clean && rm -rf node_modules\",\n    \"format\": \"prettier --write \\\"**\u002F*.{ts,tsx,md}\\\"\",\n    \"changeset\": \"changeset\",\n    \"version-packages\": \"changeset version\",\n    \"release\": \"turbo build --filter=.\u002Fpackages\u002F* && changeset publish\"\n  },\n  \"devDependencies\": {\n    \"turbo\": \"^1.10.0\",\n    \"prettier\": \"^3.0.0\",\n    \"@changesets\u002Fcli\": \"^2.26.0\"\n  },\n  \"packageManager\": \"npm@10.0.0\"\n}\n```\n\n## Debugging Cache\n\n```bash\n# Dry run to see what would run\nturbo build --dry-run\n\n# Verbose output with hashes\nturbo build --verbosity=2\n\n# Show task graph\nturbo build --graph\n\n# Force no cache\nturbo build --force\n\n# Show cache status\nturbo build --summarize\n\n# Debug specific task\nTURBO_LOG_VERBOSITY=debug turbo build --filter=@myorg\u002Fweb\n```\n\n## Best Practices\n\n### Do's\n- **Define explicit inputs** - Avoid cache invalidation\n- **Use workspace protocol** - `\"@myorg\u002Fui\": \"workspace:*\"`\n- **Enable remote caching** - Share across CI and local\n- **Filter in CI** - Build only affected packages\n- **Cache build outputs** - Not source files\n\n### Don'ts\n- **Don't cache dev servers** - Use `persistent: true`\n- **Don't include secrets in env** - Use runtime env vars\n- **Don't ignore dependsOn** - Causes race conditions\n- **Don't over-filter** - May miss dependencies\n\n## Resources\n\n- [Turborepo Documentation](https:\u002F\u002Fturbo.build\u002Frepo\u002Fdocs)\n- [Caching Guide](https:\u002F\u002Fturbo.build\u002Frepo\u002Fdocs\u002Fcore-concepts\u002Fcaching)\n- [Remote Caching](https:\u002F\u002Fturbo.build\u002Frepo\u002Fdocs\u002Fcore-concepts\u002Fremote-caching)\n","# Turborepo Caching\n\nProduction patterns for Turborepo build optimization.\n\n## Do not use this skill when\n\n- The task is unrelated to turborepo caching\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources\u002Fimplementation-playbook.md`.\n\n## Use this skill when\n\n- Setting up new Turborepo projects\n- Configuring build pipelines\n- Implementing remote caching\n- Optimizing CI\u002FCD performance\n- Migrating from other monorepo tools\n- Debugging cache misses\n\n## Core Concepts\n\n### 1. Turborepo Architecture\n\n```\nWorkspace Root\u002F\n├── apps\u002F\n│   ├── web\u002F\n│   │   └── package.json\n│   └── docs\u002F\n│       └── package.json\n├── packages\u002F\n│   ├── ui\u002F\n│   │   └── package.json\n│   └── config\u002F\n│       └── package.json\n├── turbo.json\n└── package.json\n```\n\n### 2. Pipeline Concepts\n\n| Concept | Description |\n|---------|-------------|\n| **dependsOn** | Tasks that must complete first |\n| **cache** | Whether to cache outputs |\n| **outputs** | Files to cache |\n| **inputs** | Files that affect cache key |\n| **persistent** | Long-running tasks (dev servers) |\n\n## Templates\n\n### Template 1: turbo.json Configuration\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fturbo.build\u002Fschema.json\",\n  \"globalDependencies\": [\n    \".env\",\n    \".env.local\"\n  ],\n  \"globalEnv\": [\n    \"NODE_ENV\",\n    \"VERCEL_URL\"\n  ],\n  \"pipeline\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\n        \"dist\u002F**\",\n        \".next\u002F**\",\n        \"!.next\u002Fcache\u002F**\"\n      ],\n      \"env\": [\n        \"API_URL\",\n        \"NEXT_PUBLIC_*\"\n      ]\n    },\n    \"test\": {\n      \"dependsOn\": [\"build\"],\n      \"outputs\": [\"coverage\u002F**\"],\n      \"inputs\": [\n        \"src\u002F**\u002F*.tsx\",\n        \"src\u002F**\u002F*.ts\",\n        \"test\u002F**\u002F*.ts\"\n      ]\n    },\n    \"lint\": {\n      \"outputs\": [],\n      \"cache\": true\n    },\n    \"typecheck\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": []\n    },\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    },\n    \"clean\": {\n      \"cache\": false\n    }\n  }\n}\n```\n\n### Template 2: Package-Specific Pipeline\n\n```json\n\u002F\u002F apps\u002Fweb\u002Fturbo.json\n{\n  \"$schema\": \"https:\u002F\u002Fturbo.build\u002Fschema.json\",\n  \"extends\": [\"\u002F\u002F\"],\n  \"pipeline\": {\n    \"build\": {\n      \"outputs\": [\".next\u002F**\", \"!.next\u002Fcache\u002F**\"],\n      \"env\": [\n        \"NEXT_PUBLIC_API_URL\",\n        \"NEXT_PUBLIC_ANALYTICS_ID\"\n      ]\n    },\n    \"test\": {\n      \"outputs\": [\"coverage\u002F**\"],\n      \"inputs\": [\n        \"src\u002F**\",\n        \"tests\u002F**\",\n        \"jest.config.js\"\n      ]\n    }\n  }\n}\n```\n\n### Template 3: Remote Caching with Vercel\n\n```bash\n# Login to Vercel\nnpx turbo login\n\n# Link to Vercel project\nnpx turbo link\n\n# Run with remote cache\nturbo build --remote-only\n\n# CI environment variables\nTURBO_TOKEN=your-token\nTURBO_TEAM=your-team\n```\n\n```yaml\n# .github\u002Fworkflows\u002Fci.yml\nname: CI\n\non:\n  push:\n    branches: [main]\n  pull_request:\n\nenv:\n  TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}\n  TURBO_TEAM: ${{ vars.TURBO_TEAM }}\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: 20\n          cache: 'npm'\n\n      - name: Install dependencies\n        run: npm ci\n\n      - name: Build\n        run: npx turbo build --filter='...[origin\u002Fmain]'\n\n      - name: Test\n        run: npx turbo test --filter='...[origin\u002Fmain]'\n```\n\n### Template 4: Self-Hosted Remote Cache\n\n```typescript\n\u002F\u002F Custom remote cache server (Express)\nimport express from 'express';\nimport { createReadStream, createWriteStream } from 'fs';\nimport { mkdir } from 'fs\u002Fpromises';\nimport { join } from 'path';\n\nconst app = express();\nconst CACHE_DIR = '.\u002Fcache';\n\n\u002F\u002F Get artifact\napp.get('\u002Fv8\u002Fartifacts\u002F:hash', async (req, res) => {\n  const { hash } = req.params;\n  const team = req.query.teamId || 'default';\n  const filePath = join(CACHE_DIR, team, hash);\n\n  try {\n    const stream = createReadStream(filePath);\n    stream.pipe(res);\n  } catch {\n    res.status(404).send('Not found');\n  }\n});\n\n\u002F\u002F Put artifact\napp.put('\u002Fv8\u002Fartifacts\u002F:hash', async (req, res) => {\n  const { hash } = req.params;\n  const team = req.query.teamId || 'default';\n  const dir = join(CACHE_DIR, team);\n  const filePath = join(dir, hash);\n\n  await mkdir(dir, { recursive: true });\n\n  const stream = createWriteStream(filePath);\n  req.pipe(stream);\n\n  stream.on('finish', () => {\n    res.json({ urls: [`${req.protocol}:\u002F\u002F${req.get('host')}\u002Fv8\u002Fartifacts\u002F${hash}`] });\n  });\n});\n\n\u002F\u002F Check artifact exists\napp.head('\u002Fv8\u002Fartifacts\u002F:hash', async (req, res) => {\n  const { hash } = req.params;\n  const team = req.query.teamId || 'default';\n  const filePath = join(CACHE_DIR, team, hash);\n\n  try {\n    await fs.access(filePath);\n    res.status(200).end();\n  } catch {\n    res.status(404).end();\n  }\n});\n\napp.listen(3000);\n```\n\n```json\n\u002F\u002F turbo.json for self-hosted cache\n{\n  \"remoteCache\": {\n    \"signature\": false\n  }\n}\n```\n\n```bash\n# Use self-hosted cache\nturbo build --api=\"http:\u002F\u002Flocalhost:3000\" --token=\"my-token\" --team=\"my-team\"\n```\n\n### Template 5: Filtering and Scoping\n\n```bash\n# Build specific package\nturbo build --filter=@myorg\u002Fweb\n\n# Build package and its dependencies\nturbo build --filter=@myorg\u002Fweb...\n\n# Build package and its dependents\nturbo build --filter=...@myorg\u002Fui\n\n# Build changed packages since main\nturbo build --filter='...[origin\u002Fmain]'\n\n# Build packages in directory\nturbo build --filter='.\u002Fapps\u002F*'\n\n# Combine filters\nturbo build --filter=@myorg\u002Fweb --filter=@myorg\u002Fdocs\n\n# Exclude package\nturbo build --filter='!@myorg\u002Fdocs'\n\n# Include dependencies of changed\nturbo build --filter='...[HEAD^1]...'\n```\n\n### Template 6: Advanced Pipeline Configuration\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fturbo.build\u002Fschema.json\",\n  \"pipeline\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\"],\n      \"inputs\": [\n        \"$TURBO_DEFAULT$\",\n        \"!**\u002F*.md\",\n        \"!**\u002F*.test.*\"\n      ]\n    },\n    \"test\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"coverage\u002F**\"],\n      \"inputs\": [\n        \"src\u002F**\",\n        \"tests\u002F**\",\n        \"*.config.*\"\n      ],\n      \"env\": [\"CI\", \"NODE_ENV\"]\n    },\n    \"test:e2e\": {\n      \"dependsOn\": [\"build\"],\n      \"outputs\": [],\n      \"cache\": false\n    },\n    \"deploy\": {\n      \"dependsOn\": [\"build\", \"test\", \"lint\"],\n      \"outputs\": [],\n      \"cache\": false\n    },\n    \"db:generate\": {\n      \"cache\": false\n    },\n    \"db:push\": {\n      \"cache\": false,\n      \"dependsOn\": [\"db:generate\"]\n    },\n    \"@myorg\u002Fweb#build\": {\n      \"dependsOn\": [\"^build\", \"@myorg\u002Fdb#db:generate\"],\n      \"outputs\": [\".next\u002F**\"],\n      \"env\": [\"NEXT_PUBLIC_*\"]\n    }\n  }\n}\n```\n\n### Template 7: Root package.json Setup\n\n```json\n{\n  \"name\": \"my-turborepo\",\n  \"private\": true,\n  \"workspaces\": [\n    \"apps\u002F*\",\n    \"packages\u002F*\"\n  ],\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"dev\": \"turbo dev\",\n    \"lint\": \"turbo lint\",\n    \"test\": \"turbo test\",\n    \"clean\": \"turbo clean && rm -rf node_modules\",\n    \"format\": \"prettier --write \\\"**\u002F*.{ts,tsx,md}\\\"\",\n    \"changeset\": \"changeset\",\n    \"version-packages\": \"changeset version\",\n    \"release\": \"turbo build --filter=.\u002Fpackages\u002F* && changeset publish\"\n  },\n  \"devDependencies\": {\n    \"turbo\": \"^1.10.0\",\n    \"prettier\": \"^3.0.0\",\n    \"@changesets\u002Fcli\": \"^2.26.0\"\n  },\n  \"packageManager\": \"npm@10.0.0\"\n}\n```\n\n## Debugging Cache\n\n```bash\n# Dry run to see what would run\nturbo build --dry-run\n\n# Verbose output with hashes\nturbo build --verbosity=2\n\n# Show task graph\nturbo build --graph\n\n# Force no cache\nturbo build --force\n\n# Show cache status\nturbo build --summarize\n\n# Debug specific task\nTURBO_LOG_VERBOSITY=debug turbo build --filter=@myorg\u002Fweb\n```\n\n## Best Practices\n\n### Do's\n- **Define explicit inputs** - Avoid cache invalidation\n- **Use workspace protocol** - `\"@myorg\u002Fui\": \"workspace:*\"`\n- **Enable remote caching** - Share across CI and local\n- **Filter in CI** - Build only affected packages\n- **Cache build outputs** - Not source files\n\n### Don'ts\n- **Don't cache dev servers** - Use `persistent: true`\n- **Don't include secrets in env** - Use runtime env vars\n- **Don't ignore dependsOn** - Causes race conditions\n- **Don't over-filter** - May miss dependencies\n\n## Resources\n\n- [Turborepo Documentation](https:\u002F\u002Fturbo.build\u002Frepo\u002Fdocs)\n- [Caching Guide](https:\u002F\u002Fturbo.build\u002Frepo\u002Fdocs\u002Fcore-concepts\u002Fcaching)\n- [Remote Caching](https:\u002F\u002Fturbo.build\u002Frepo\u002Fdocs\u002Fcore-concepts\u002Fremote-caching)\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fturborepo-caching",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill turborepo-caching",{"tool":53,"command":54},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill turborepo-caching",{"tool":56,"command":57},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill turborepo-caching","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fturborepo-caching\u002FSKILL.md",true,[61],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"skill-report.json","REFERENCE","参考文档",7565,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fturborepo-caching\u002Fskill-report.json",[68,82,92,101,107,114],{"skillNo":69,"name":70,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":78,"publishedAt":33},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[73],{"categoryNo":74,"categoryName":75,"taxonomyType":76,"taxonomyTypeDesc":77},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[79,80,81],"model","model hierarchy","model hierarchy skill",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":88,"publishedAt":33},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[87],{"categoryNo":74,"categoryName":75,"taxonomyType":76,"taxonomyTypeDesc":77},[89,90,91],"MCP","zoom","zoom mcp",{"skillNo":93,"name":94,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":33},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[98,99,100,90],"sdk","zoom apps sdk","apps",{"skillNo":102,"name":103,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":33},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[103],{"skillNo":108,"name":109,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":113,"publishedAt":33},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[112],{"categoryNo":74,"categoryName":75,"taxonomyType":76,"taxonomyTypeDesc":77},[109],{"skillNo":115,"name":116,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":33},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[116]]