# development-monorepo-pnpm Agent Skill for full-stack monorepos built on **pnpm workspaces** and **Turborepo**, where the front/back split is expressed in the top-level directory names: ```text applications-backend/ # deployable services — NestJS by default applications-frontend/ # deployable browser apps — React + IBM Carbon by default packages-backend/ # libraries consumed by services packages-frontend/ # libraries consumed by browser apps ``` Framework defaults are defaults, not mandates — a project's stated architecture always wins. The skill is self-contained: it covers both halves of the stack, from workspace globs and the Turborepo pipeline through to container images and Helm charts. ## Layout ```text development-monorepo-pnpm/ ├── SKILL.md # Entry point — repo shape, defaults, shared rules ├── references/ │ ├── applications-backend.md # NestJS layout, config, ports, health, service image │ ├── applications-frontend.md # React + Carbon, Module Federation, nginx image │ ├── packages.md # Which root, package tiers, public API, changesets │ ├── workspace-and-tooling.md # Globs, turbo.json, root scripts, overrides │ └── containers-and-helm.md # turbo prune images, charts, values, secrets └── assets/ └── example-shared-package/ # Minimal shared TypeScript package ``` ## The rule worth knowing up front Frontend workspaces must not import from `packages-backend/*` and vice versa — with one exception: **API contract types**. Contracts are owned by the service that defines them, so they live in `packages-backend/-contracts`, export types only, and are imported by frontend consumers with `import type`. A value import from the same package pulls server code into the browser bundle, and nothing in the build will flag it. See [SKILL.md](SKILL.md).