From shipshitdev-library
Guides Turborepo configuration in JavaScript/TypeScript monorepos: turbo.json tasks, dependsOn, caching, --filter/--affected, CI optimization, package boundaries.
npx claudepluginhub shipshitdev/skillsThis skill uses the workspace's default tool permissions.
Build system guidance for JavaScript and TypeScript monorepos using Turborepo.
command/turborepo.mdreferences/best-practices/RULE.mdreferences/best-practices/dependencies.mdreferences/best-practices/packages.mdreferences/best-practices/structure.mdreferences/boundaries/RULE.mdreferences/caching/RULE.mdreferences/caching/gotchas.mdreferences/caching/remote-cache.mdreferences/ci/RULE.mdreferences/ci/github-actions.mdreferences/ci/patterns.mdreferences/ci/vercel.mdreferences/cli/RULE.mdreferences/cli/commands.mdreferences/configuration/RULE.mdreferences/configuration/global-options.mdreferences/configuration/gotchas.mdreferences/configuration/tasks.mdreferences/environment/RULE.mdProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Analyzes competition with Porter's Five Forces, Blue Ocean Strategy, and positioning maps to identify differentiation opportunities and market positioning for startups and pitches.
Build system guidance for JavaScript and TypeScript monorepos using Turborepo.
turbo.json.package.json delegate with turbo run <task>.turbo <task> only for interactive one-off terminal commands, not in committed code.package.json so dependsOn: ["^build"] can resolve actual package relationships.// apps/web/package.json
{
"scripts": {
"build": "next build",
"lint": "eslint .",
"test": "vitest"
}
}
// turbo.json
{
"tasks": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**", ".next/**", "!.next/cache/**"]
},
"lint": {},
"test": {
"dependsOn": ["build"]
}
}
}
// root package.json
{
"scripts": {
"build": "turbo run build",
"lint": "turbo run lint",
"test": "turbo run test"
}
}
Read only the reference files needed for the task:
| Need | Read |
|---|---|
Task definitions, dependsOn, outputs, persistent, package overrides | references/configuration/RULE.md, references/configuration/tasks.md |
| Global options, daemon, cacheDir, env mode | references/configuration/global-options.md |
| Cache misses or remote cache | references/caching/RULE.md, references/caching/gotchas.md, references/caching/remote-cache.md |
Env vars, .env, strict vs loose mode | references/environment/RULE.md, references/environment/modes.md, references/environment/gotchas.md |
--affected, --filter, package selection | references/filtering/RULE.md, references/filtering/patterns.md |
CI, GitHub Actions, Vercel, turbo-ignore | references/ci/RULE.md, references/ci/github-actions.md, references/ci/vercel.md, references/ci/patterns.md, references/cli/commands.md |
| Repo structure, package creation, dependency management | references/best-practices/RULE.md, references/best-practices/structure.md, references/best-practices/packages.md, references/best-practices/dependencies.md |
| Watch mode and long-running dev tasks | references/watch/RULE.md, references/configuration/tasks.md |
| Package boundaries and isolation | references/boundaries/RULE.md |
Configure a task?
├─ Define dependencies or outputs → configuration/tasks.md
├─ Handle environment variables → environment/RULE.md
├─ Set package-specific overrides → configuration/RULE.md#package-configurations
├─ Add persistent/watch behavior → configuration/tasks.md + watch/RULE.md
└─ Tune global options → configuration/global-options.md
Cache issue?
├─ Outputs not restored → add or fix `outputs`
├─ Unexpected misses → caching/gotchas.md
├─ Remote cache issue → caching/remote-cache.md
└─ Env or .env drift → environment/gotchas.md
Need changed packages only?
├─ Default path → `turbo run <task> --affected`
├─ Custom comparison base → add `--affected-base=...`
└─ Custom package selection → filtering/RULE.md + filtering/patterns.md
CI setup?
├─ GitHub Actions → ci/github-actions.md
├─ Vercel deployment → ci/vercel.md
├─ Remote cache in CI → caching/remote-cache.md
└─ Skip unchanged work → ci/patterns.md + cli/commands.md
Repo/package structure?
├─ apps/ vs packages/ layout → best-practices/RULE.md
├─ Create internal package → best-practices/packages.md
├─ Workspace dependency management → best-practices/dependencies.md
└─ Enforce package boundaries → boundaries/RULE.md
turbo run, not embed app-specific task logic.turbo build or turbo lint commands in package.json, CI, or scripts. Use turbo run ... in committed code.prebuild chains that compile sibling packages instead of declaring workspace dependencies and using ^build.outputs on tasks that write files. Read the actual script before deciding whether a task is cacheable.env or .env files omitted from inputs, causing stale cache hits..env files in a monorepo, which create hidden coupling between packages.turbo.json instead of using per-package turbo.json files.See the detailed examples in:
references/configuration/gotchas.mdreferences/caching/gotchas.mdreferences/environment/gotchas.mdreferences/best-practices/structure.mdreferences/best-practices/packages.md{
"tasks": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**", ".next/**", "!.next/cache/**"]
},
"dev": {
"cache": false,
"persistent": true
}
}
}
{
"tasks": {
"transit": {
"dependsOn": ["^transit"]
},
"lint": {
"dependsOn": ["transit"]
}
}
}
Use this when a task can run in parallel but still needs dependency source changes to invalidate its cache.
Use turbo watch for file-change loops, not turbo run ... --watch patterns improvised in scripts. Read references/watch/RULE.md before configuring persistent, interruptible, or with.
turbo run ....dependsOn matches the actual dependency relationship: ^task for upstream packages, task for same-package prerequisites.outputs.env or globalEnv..env files are represented in inputs.--affected or filters when appropriate instead of rebuilding everything by default.Based on official Turborepo docs: apps/docs/content/docs/ — https://turborepo.dev/docs