# Monorepo Navigator

> ---

- Skill: `brathod1432/monorepo-navigator` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add brathod1432/monorepo-navigator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/brathod1432/monorepo-navigator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: brathod1432 (https://skillmd.com/u/brathod1432)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/brathod1432/monorepo-navigator

---

﻿---
name: "monorepo-navigator"
description: "Monorepo Navigator"
---

## Internal Safety Override

- Status: local-only unless explicitly opted into external access.
- Before using network tools, account connectors, browser automation, or APIs, state the destination, data scope, and credential source.
- Do not transmit repository files, secrets, credentials, or private documents by default.
- Audit categories: network, secrets.

# 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 an agent runtime 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
- **an agent runtime config** â€” workspace-aware AI_RUNTIME_GUIDE.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

```bash
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` |
| AI_RUNTIME_GUIDE.md too generic â€” AI assistant modifies wrong package | Add explicit "When working on X, only touch files in apps/X" rules per package AI_RUNTIME_GUIDE.md |

---

## Best Practices

1. **Root AI_RUNTIME_GUIDE.md defines the map** â€” document every package, its purpose, and dependency rules
2. **Per-package AI_RUNTIME_GUIDE.md defines the rules** â€” what's allowed, what's forbidden, testing commands
3. **Always scope commands with --filter** â€” running everything on every change defeats the purpose
4. **Remote cache is not optional** â€” without it, monorepo CI is slower than multi-repo CI
5. **Changesets over manual versioning** â€” never hand-edit package.json versions in a monorepo
6. **Shared configs in root, extended in packages** â€” tsconfig.base.json, .eslintrc.base.js, jest.base.config.js
7. **Impact analysis before merging shared package changes** â€” run affected check, communicate blast radius
8. **Keep packages/types as pure TypeScript** â€” no runtime code, no dependencies, fast to build and type-check

