monorepo

Organize multi-package repositories with Turborepo, pnpm workspaces, and shared configs.

19|6|Updated Sep 13, 2025
One-click install
npx skills add https://github.com/neverinfamous/memory-journal-mcp --skill monorepo-neverinfamous
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: monorepo
Source: https://github.com/neverinfamous/memory-journal-mcp/tree/main/skills/monorepo
Command: npx skills add https://github.com/neverinfamous/memory-journal-mcp --skill monorepo-neverinfamous

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Monorepos are great for managing multiple apps and libraries, but without consistent configuration and tooling, drift, conflicts, and inefficiencies creep in across projects.

Core Features & Use Cases

  • Workspace configuration: root level definitions using pnpm-workspace.yaml and proper separation of apps/* and packages/* to prevent cross-package pollution.
  • Turborepo integration: pipeline definitions with turbo.json and proper caching to optimize build and dev times.
  • Shared configurations: base tsconfig, eslint/prettier presets, and standardized entrypoints to reduce repetition and drift.
  • Internal dependencies: clear linking of internal packages with workspace:* to ensure local resolution and faster iterations.
  • CI/CD alignment: guidelines for remote caching and affected builds to accelerate pipelines in large monorepos.

Quick Start

Initialize a root workspace with pnpm-workspace.yaml or package.json workspaces, configure Turborepo pipelines in turbo.json, and place applications under apps/ and packages under packages/.

Frequently Asked Questions about monorepo

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I configure a pnpm monorepo with Turborepo workspaces?

To configure a pnpm monorepo with Turborepo, define root workspaces in pnpm-workspace.yaml separating apps/* and packages/*. Then configure build pipelines and caching in turbo.json to optimize execution across the codebase.

What's the best way to share TypeScript and ESLint configs in a monorepo?

The best way to share TypeScript and ESLint configs in a monorepo is by creating base config presets in a shared package. This enforces standardized entrypoints and reduces configuration drift across multiple apps and libraries.

How does Turborepo pipeline caching work for monorepo builds?

Turborepo pipeline caching works by defining input and output definitions in turbo.json. It stores build outputs locally and remotely, allowing CI to skip redundant tasks and accelerate pipelines using affected builds.

When do I need workspace:* for internal package dependencies?

You need workspace:* for internal package dependencies when linking local libraries within a pnpm monorepo. This ensures local package resolution and enables faster iterations by directly referencing internal packages.

Does this monorepo setup support CI/CD remote caching?

Yes, this monorepo setup supports CI/CD remote caching. It provides guidelines for configuring remote caching and affected builds in Turborepo to accelerate CI pipelines across large multi-package repositories.

Why separate apps/* and packages/* in a monorepo workspace?

Separating apps/* and packages/* in a monorepo workspace prevents cross-package pollution. This explicit root workspace definition organizes multi-package repositories scalably and isolates applications from shared libraries.