Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Monorepo Navigator
.claude/skills/leoyeai-monorepo-navigator/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 81% | 0% |
| case-18 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-13 | ✓→✗ | ▼ Worse | 68% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 21% | 0% |
Tier: POWERFUL Category: Engineering Domain: Monorepo Architecture / Build Systems
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.
Use when:
Skip when:
| 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
→ See references/monorepo-tooling-reference.md for details
| 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 |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 16,579 | 14,519 | -12% | 1 | 1 | 0% | 3,069 | 3,717 | +21% | 0 | 0 | — |
case-02 | pass→pass | 14,219 | 12,965 | -9% | 1 | 1 | 0% | 2,315 | 3,050 | +32% | 0 | 0 | — |
case-03 | fail→pass | 16,089 | 11,638 | -28% | 1 | 1 | 0% | 2,296 | 2,645 | +15% | 0 | 0 | — |
case-04 | pass→pass | 12,668 | 11,035 | -13% | 1 | 1 | 0% | 1,929 | 2,491 | +29% | 0 | 0 | — |
case-05 | pass→pass | 12,417 | 11,374 | -8% | 1 | 1 | 0% | 2,153 | 3,087 | +43% | 0 | 0 | — |
case-06 | pass→pass | 12,914 | 12,854 | -0% | 1 | 1 | 0% | 1,942 | 3,042 | +57% | 0 | 0 | — |
case-07 | pass→pass | 9,901 | 11,737 | +19% | 1 | 1 | 0% | 1,807 | 2,980 | +65% | 0 | 0 | — |
case-08 | pass→pass | 12,313 | 9,745 | -21% | 1 | 1 | 0% | 2,140 | 2,840 | +33% | 0 | 0 | — |
case-09 | pass→pass | 11,965 | 10,102 | -16% | 1 | 1 | 0% | 2,145 | 2,653 | +24% | 0 | 0 | — |
case-10 | pass→pass | 14,216 | 13,498 | -5% | 1 | 1 | 0% | 2,210 | 3,373 | +53% | 0 | 0 | — |
case-11 | pass→pass | 17,218 | 10,048 | -42% | 1 | 1 | 0% | 2,998 | 3,100 | +3% | 0 | 0 | — |
case-12 | pass→pass | 13,056 | 10,512 | -19% | 1 | 1 | 0% | 2,432 | 3,003 | +23% | 0 | 0 | — |
case-13 | pass→fail | 10,083 | 10,931 | +8% | 1 | 1 | 0% | 1,768 | 2,970 | +68% | 0 | 0 | — |
case-14 | pass→pass | 13,806 | 14,678 | +6% | 1 | 1 | 0% | 2,485 | 3,953 | +59% | 0 | 0 | — |
case-15 | fail→pass | 8,384 | 7,774 | -7% | 1 | 1 | 0% | 1,202 | 2,180 | +81% | 0 | 0 | — |
case-16 | pass→pass | 11,497 | 7,396 | -36% | 1 | 1 | 0% | 2,038 | 2,120 | +4% | 0 | 0 | — |
case-17 | pass→pass | 13,966 | 12,844 | -8% | 1 | 1 | 0% | 2,276 | 3,102 | +36% | 0 | 0 | — |
case-18 | fail→pass | 10,557 | 4,073 | -61% | 1 | 1 | 0% | 1,653 | 1,599 | -3% | 0 | 0 | — |
case-19 | pass→pass | 8,531 | 6,354 | -26% | 1 | 1 | 0% | 1,547 | 2,094 | +35% | 0 | 0 | — |
case-20 | pass→pass | 11,151 | 5,568 | -50% | 1 | 1 | 0% | 1,670 | 1,850 | +11% | 0 | 0 | — |
case-21 | pass→pass | 11,747 | 8,283 | -29% | 1 | 1 | 0% | 1,899 | 2,343 | +23% | 0 | 0 | — |
case-22 | pass→pass | 7,598 | 6,196 | -18% | 1 | 1 | 0% | 1,211 | 1,949 | +61% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.