[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6G56ZJD2AC694W1HF1MKFDZ":3,"skill-same:01M6G56ZJD2AC694W1HF1MKFDZ":62},{"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":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":14,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":46,"updatedAt":47,"install":48,"resources":61},"01M6G56ZJD2AC694W1HF1MKFDZ","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.","reikiplanet\u002Fdaoskills","reikiplanet","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96377599?v=4","01M6CVWCMD740YHQDK7E9QYBW4","Reiki Planet","01M6CVWCS4KXVA2CWFVJ43EAXK",0,"MIT","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fother\u002Fturborepo-caching\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"turborepo","turborepo caching","caching","distributed","configure","monorepo","use","distributed caching","up","pipelines","build","community","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.\"\nrisk: unknown\nsource: community\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,"risk":39,"source":30,"description":7},"unknown","master","dff58085da947e81e8418c922055644bf0082b1b","skills\u002Fother\u002Fturborepo-caching","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills","https:\u002F\u002Fgithub.com\u002Freikiplanet","https:\u002F\u002Fwww.reiki-planet.com","Reiki Planet Game","2026-03-29 06:02:29",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add reikiplanet\u002Fdaoskills --skill turborepo-caching",{"tool":54,"command":55},"bunx","bunx skills add reikiplanet\u002Fdaoskills --skill turborepo-caching",{"tool":57,"command":58},"pnpm","pnpm dlx skills add reikiplanet\u002Fdaoskills --skill turborepo-caching","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fother\u002Fturborepo-caching\u002FSKILL.md",true,[],[63,89,101,115,134,157],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":34},"01M6G614JTEQJHPT8AKK3YQ18S","web-games","Web browser game development principles. Framework selection, WebGPU, optimization, PWA.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fweb-games\u002FSKILL.md",[],[70,71,72,73,74,75,30,76,77,78,79,80,81,82,83,84,85,86,87,88],"games","web games","web","grep","principles","selection","framework selection","edit","write","read","pwa","game","web browser","game development","Optimization","framework","browser","development","webgpu",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":34},"01M6G611H2YGV0GZFP90D38ZMJ","vr-ar","VR\u002FAR development principles. Comfort, interaction, performance requirements.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fvr-ar\u002FSKILL.md",[],[96,97,87,98,99,30,77,78,79,73,100,74],"ar","vr ar","interaction","requirements","performance",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":34},"01M6G60XNMHAMV1SV0EJ1CX0AY","templates","Project scaffolding templates for new applications. Use when creating new projects from scratch. Contains 12 templates for various tech stacks.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Ftemplates\u002FSKILL.md",[],[103,108,109,110,111,112,30,25,79,113,114,73],"project scaffolding","From Scratch","tech","project","scaffolding","projects","applications",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":34},"01M6G60T0GATMK3Q5H8GDC1Z8S","wcag-audit-patterns","Conduct WCAG 2.2 accessibility audits with automated testing, manual verification, and remediation guidance. Use when auditing websites for accessibility, fixing WCAG violations, or implementing ac...","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fwcag-audit-patterns\u002FSKILL.md",[],[122,123,124,125,126,30,127,33,128,129,25,130,131,132,133],"wcag audit patterns","wcag audit","patterns","WCAG","audit","manual","automated testing","guidance","remediation","verification","accessibility","testing",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":34},"01M6G60PMCHW1FRZ63F931QK3R","vulnerability-scanner","Advanced vulnerability analysis principles. OWASP 2025, Supply Chain Security, attack surface mapping, risk prioritization.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fvulnerability-scanner\u002FSKILL.md",[],[141,142,143,144,145,146,147,148,30,79,73,149,74,150,151,152,153,154,155,156],"scanner","vulnerability scanner","vulnerability","prioritization","2025","mapping","chain","supply chain","Bash","analysis","risk","owasp","supply chain security","security","supply","advanced",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":34},"01M6G60JZBB8DK0W3DSG1WNMZK","threat-modeling-expert","Expert in threat modeling methodologies, security architecture review, and risk assessment. Masters STRIDE, PASTA, attack trees, and security requirement extraction. Use for security architecture r...","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fthreat-modeling-expert\u002FSKILL.md",[],[164,165,166,167,168,169,170,171,154,25,172,173,174,30,175,176,177,151,178,179],"modeling","threat modeling expert","threat modeling","expert","threat","risk assessment","architecture review","architecture","security architecture review","trees","security architecture","security requirement extraction","assessment","extraction","review","stride"]