Monorepo navigator
Navigate, manage, and optimize monorepos.
How to use it
Claude Code
- Run the line below. It pulls the whole folder into
~/.claude/skills/monorepo-navigator, including the files SKILL.md points to. - Describe your job in plain words. Claude Code follows the skill from there.
npx degit alirezarezvani/claude-skills/engineering/skills/monorepo-navigator#main ~/.claude/skills/monorepo-navigatorFor one project only, change the path to .claude/skills/monorepo-navigator. This skill also uses turbo.json, package.json — copying SKILL.md alone won't be enough. See the folder on GitHub.
Claude (web or desktop app)
- On this page open ⋯ → Download .md.
- Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
- Pick the file and Save. Claude shows the name and description and runs a security scan.
- Check the skill is switched on.
- Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
- ChatGPT: make a Project and paste it into Instructions.
- Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Source of Monorepo navigator
Show the full text98 lines
| name | description |
|---|---|
| monorepo-navigator | Navigate, manage, and optimize monorepos. Covers Turborepo, Nx, pnpm workspaces, and Lerna. Cross-package impact analysis, selective builds/tests on affected packages, remote caching, dependency graph visualization, and structured multi-repo to monorepo migrations. Use when setting up a new monorepo, optimizing CI for a large workspace, debugging cross-package dependency issues, or planning a multi-repo consolidation. |
Monorepo Navigator
Tier: POWERFUL
Category: Engineering
Domain: Monorepo Architecture / Build Systems
Overview
Navigate, manage, and optimize monorepos. Covers Turborepo, Nx, pnpm workspaces, and Lerna. Enables cross-package impact analysis, selective builds/tests on affected packages only, remote caching, dependency graph visualization, and structured migrations from multi-repo to monorepo. Includes Claude Code configuration for workspace-aware development.
Core Capabilities
- Cross-package impact analysis — determine which apps break when a shared package changes
- Selective commands — run tests/builds only for affected packages (not everything)
- Dependency graph — visualize package relationships as Mermaid diagrams
- Build optimization — remote caching, incremental builds, parallel execution
- Migration — step-by-step multi-repo → monorepo with zero history loss
- Publishing — changesets for versioning, pre-release channels, npm publish workflows
- Claude Code config — workspace-aware CLAUDE.md with per-package instructions
When to Use
Use when:
- Multiple packages/apps share code (UI components, utils, types, API clients)
- Build times are slow because everything rebuilds when anything changes
- Migrating from multiple repos to a single repo
- Need to publish packages to npm with coordinated versioning
- Teams work across multiple packages and need unified tooling
Skip when:
- Single-app project with no shared packages
- Team/project boundaries are completely isolated (polyrepo is fine)
- Shared code is minimal and copy-paste overhead is acceptable
Tool Selection
| Tool | Best For | Key Feature |
|---|---|---|
| Turborepo | JS/TS monorepos, simple pipeline config | Best-in-class remote caching, minimal config |
| Nx | Large enterprises, plugin ecosystem | Project graph, code generation, affected commands |
| pnpm workspaces | Workspace protocol, disk efficiency | workspace:* for local package refs |
| Lerna | npm publishing, versioning | Batch publishing, conventional commits |
| Changesets | Modern versioning (preferred over Lerna) | Changelog generation, pre-release channels |
Most modern setups: pnpm workspaces + Turborepo + Changesets
Turborepo
→ See references/monorepo-tooling-reference.md for details
Workspace Analyzer
python3 scripts/monorepo_analyzer.py /path/to/monorepo
python3 scripts/monorepo_analyzer.py /path/to/monorepo --json
Also see references/monorepo-patterns.md for common architecture and CI patterns.
Common Pitfalls
| Pitfall | Fix |
|---|---|
Running turbo run build without --filter on every PR |
Always use --filter=...[origin/main] in CI |
workspace:* refs cause publish failures |
Use pnpm changeset publish — it replaces workspace:* with real versions automatically |
| All packages rebuild when unrelated file changes | Tune inputs in turbo.json to exclude docs, config files from cache keys |
| Shared tsconfig causes one package to break all type-checks | Use extends properly — each package extends root but overrides rootDir / outDir |
| git history lost during migration | Use git filter-repo --to-subdirectory-filter before merging — never move files manually |
| Remote cache not working in CI | Check TURBO_TOKEN and TURBO_TEAM env vars; verify with turbo run build --summarize |
| CLAUDE.md too generic — Claude modifies wrong package | Add explicit "When working on X, only touch files in apps/X" rules per package CLAUDE.md |
Best Practices
- Root CLAUDE.md defines the map — document every package, its purpose, and dependency rules
- Per-package CLAUDE.md defines the rules — what's allowed, what's forbidden, testing commands
- Always scope commands with --filter — running everything on every change defeats the purpose
- Remote cache is not optional — without it, monorepo CI is slower than multi-repo CI
- Changesets over manual versioning — never hand-edit package.json versions in a monorepo
- Shared configs in root, extended in packages — tsconfig.base.json, .eslintrc.base.js, jest.base.config.js
- Impact analysis before merging shared package changes — run affected check, communicate blast radius
- Keep packages/types as pure TypeScript — no runtime code, no dependencies, fast to build and type-check
| 1 | |
| 2 | name "monorepo-navigator" |
| 3 | description "Navigate, manage, and optimize monorepos. Covers Turborepo, Nx, pnpm workspaces, and Lerna. Cross-package impact analysis, selective builds/tests on affected packages, remote caching, dependency graph visualization, and structured multi-repo to monorepo migrations. Use when setting up a new monorepo, optimizing CI for a large workspace, debugging cross-package dependency issues, or planning a multi-repo consolidation." |
| 4 | |
| 5 | |
| 6 | # Monorepo Navigator |
| 7 | |
| 8 | **Tier:** POWERFUL |
| 9 | **Category:** Engineering |
| 10 | **Domain:** Monorepo Architecture / Build Systems |
| 11 | |
| 12 | |
| 13 | |
| 14 | ## Overview |
| 15 | |
| 16 | Navigate, manage, and optimize monorepos. Covers Turborepo, Nx, pnpm workspaces, and Lerna. Enables cross-package impact analysis, selective builds/tests on affected packages only, remote caching, dependency graph visualization, and structured migrations from multi-repo to monorepo. Includes Claude Code configuration for workspace-aware development. |
| 17 | |
| 18 | |
| 19 | |
| 20 | ## Core Capabilities |
| 21 | |
| 22 | **Cross-package impact analysis** — determine which apps break when a shared package changes |
| 23 | **Selective commands** — run tests/builds only for affected packages (not everything) |
| 24 | **Dependency graph** — visualize package relationships as Mermaid diagrams |
| 25 | **Build optimization** — remote caching, incremental builds, parallel execution |
| 26 | **Migration** — step-by-step multi-repo → monorepo with zero history loss |
| 27 | **Publishing** — changesets for versioning, pre-release channels, npm publish workflows |
| 28 | **Claude Code config** — workspace-aware CLAUDE.md with per-package instructions |
| 29 | |
| 30 | |
| 31 | |
| 32 | ## When to Use |
| 33 | |
| 34 | Use when: |
| 35 | Multiple packages/apps share code (UI components, utils, types, API clients) |
| 36 | Build times are slow because everything rebuilds when anything changes |
| 37 | Migrating from multiple repos to a single repo |
| 38 | Need to publish packages to npm with coordinated versioning |
| 39 | Teams work across multiple packages and need unified tooling |
| 40 | |
| 41 | Skip when: |
| 42 | Single-app project with no shared packages |
| 43 | Team/project boundaries are completely isolated (polyrepo is fine) |
| 44 | Shared code is minimal and copy-paste overhead is acceptable |
| 45 | |
| 46 | |
| 47 | |
| 48 | ## Tool Selection |
| 49 | |
| 50 | | Tool | Best For | Key Feature | |
| 51 | |---|---|---| |
| 52 | | **Turborepo** | JS/TS monorepos, simple pipeline config | Best-in-class remote caching, minimal config | |
| 53 | | **Nx** | Large enterprises, plugin ecosystem | Project graph, code generation, affected commands | |
| 54 | | **pnpm workspaces** | Workspace protocol, disk efficiency | `workspace:*` for local package refs | |
| 55 | | **Lerna** | npm publishing, versioning | Batch publishing, conventional commits | |
| 56 | | **Changesets** | Modern versioning (preferred over Lerna) | Changelog generation, pre-release channels | |
| 57 | |
| 58 | Most modern setups: **pnpm workspaces + Turborepo + Changesets** |
| 59 | |
| 60 | |
| 61 | |
| 62 | ## Turborepo |
| 63 | → See references/monorepo-tooling-reference.md for details |
| 64 | |
| 65 | ## Workspace Analyzer |
| 66 | |
| 67 | |
| 68 | python3 scripts/monorepo_analyzer.py /path/to/monorepo |
| 69 | python3 scripts/monorepo_analyzer.py /path/to/monorepo --json |
| 70 | |
| 71 | |
| 72 | Also see `references/monorepo-patterns.md` for common architecture and CI patterns. |
| 73 | |
| 74 | ## Common Pitfalls |
| 75 | |
| 76 | | Pitfall | Fix | |
| 77 | |---|---| |
| 78 | | Running `turbo run build` without `--filter` on every PR | Always use `--filter=...[origin/main]` in CI | |
| 79 | | `workspace:*` refs cause publish failures | Use `pnpm changeset publish` — it replaces `workspace:*` with real versions automatically | |
| 80 | | All packages rebuild when unrelated file changes | Tune `inputs` in turbo.json to exclude docs, config files from cache keys | |
| 81 | | Shared tsconfig causes one package to break all type-checks | Use `extends` properly — each package extends root but overrides `rootDir` / `outDir` | |
| 82 | | git history lost during migration | Use `git filter-repo --to-subdirectory-filter` before merging — never move files manually | |
| 83 | | Remote cache not working in CI | Check TURBO_TOKEN and TURBO_TEAM env vars; verify with `turbo run build --summarize` | |
| 84 | | CLAUDE.md too generic — Claude modifies wrong package | Add explicit "When working on X, only touch files in apps/X" rules per package CLAUDE.md | |
| 85 | |
| 86 | |
| 87 | |
| 88 | ## Best Practices |
| 89 | |
| 90 | **Root CLAUDE.md defines the map** — document every package, its purpose, and dependency rules |
| 91 | **Per-package CLAUDE.md defines the rules** — what's allowed, what's forbidden, testing commands |
| 92 | **Always scope commands with --filter** — running everything on every change defeats the purpose |
| 93 | **Remote cache is not optional** — without it, monorepo CI is slower than multi-repo CI |
| 94 | **Changesets over manual versioning** — never hand-edit package.json versions in a monorepo |
| 95 | **Shared configs in root, extended in packages** — tsconfig.base.json, .eslintrc.base.js, jest.base.config.js |
| 96 | **Impact analysis before merging shared package changes** — run affected check, communicate blast radius |
| 97 | **Keep packages/types as pure TypeScript** — no runtime code, no dependencies, fast to build and type-check |
| 98 |
Discussion
Browse more free Claude skills or everything in Development.