MO
monorepo
|
Install
mkdir -p .claude/skills/monorepo-neverinfamous && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16680" && unzip -o skill.zip -d .claude/skills/monorepo-neverinfamous && rm skill.zipInstalls to .claude/skills/monorepo-neverinfamous
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Monorepo architecture and configuration standards. Use when working with Turborepo, pnpm workspaces, npm workspaces, or configuring shared packages, tsconfig bases, and internal dependencies. NOT for generic package management or single-package repositories. Require explicit monorepo context.293 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
About this skill
Monorepo Standards
Monorepos organize multiple applications and packages in a single repository, but require strict configuration to avoid dependency hell and build-time bottlenecks.
1. Workspace Configuration (pnpm workspaces)
- Root Definition: Define the
pnpm-workspace.yamlexplicitly at the root, separating applications (apps/*) from internal libraries (packages/*). - Internal Dependencies: Link internal packages using the
workspace:*protocol. This ensures that the package manager resolves to the local source rather than attempting to fetch from the npm registry.
{
"dependencies": {
"@my-org/ui": "workspace:*",
"@my-org/tsconfig": "workspace:*"
}
}
2. Turborepo Configuration
- Pipeline Definition: Define dependencies in
turbo.json. Ensurebuilddepends on^build(meaning a package's build step waits for its dependencies to build first). - Caching: Ensure
outputsare correctly defined for cache hits (e.g.,.next/**,dist/**). - Dev Tasks: The
devtask should typically be configured aspersistent: truesince it starts a long-running server.
{
"$schema": "https://turbo.build/schema.json",
"tasks": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**", ".next/**"]
},
"dev": {
"cache": false,
"persistent": true
}
}
}
3. Shared Configurations
- Shared TSConfig: Create a
packages/tsconfigcontainingbase.json,nextjs.json, andreact-library.json. Applications should extend these rather than duplicating compiler options. - Shared ESLint/Prettier: Centralize linting rules in a
packages/eslint-configworkspace to guarantee consistency across all apps. - Entrypoints: Use
"main","module", and"types"fields inpackage.jsoncorrectly for shared packages. Alternatively, rely on modern bundlers and Next.js transpile packages to consume raw TypeScript (src/index.ts).
4. CI/CD Integration
- Remote Caching: Always enable Vercel Remote Caching or an equivalent remote cache in CI to drastically reduce build times for unmodified packages.
- Affected Builds: Use
--filtercommands (turbo run build --filter=...[origin/main]) to only test and build packages that changed in the current PR.