Files
root-at-skicandClaude Opus 5 ff69bcca2f development-monorepo-pnpm skill: initial import
Full-stack pnpm + Turborepo monorepo skill, independent of the separate
backend and frontend monorepo skills it draws on.

Repository shape is split four ways at the top level: applications-backend,
applications-frontend, packages-backend, packages-frontend — so a path
states which runtime a file ends up in.

Defaults: NestJS for backend services, React with IBM Carbon Design for
browser applications; the project's stated architecture overrides both.

Covers workspace globs, the Turborepo pipeline, filtered validation,
blast-radius checks, Module Federation, turbo prune image builds, and Helm.
Documents one sanctioned cross-boundary dependency: API contract types owned
by the backend, imported type-only by the frontend.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 23:49:02 +03:00

2.0 KiB

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:

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

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/<domain>-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.