From tooling
ACTIVATE when configuring monorepo structure, cross-package imports, workspace scripts, or pnpm workspace protocol. ACTIVATE for 'pnpm workspace', 'workspace:*', 'monorepo', 'pnpm --filter', 'packages/shared'. Covers: workspace structure (packages/shared + apps/api + apps/web), workspace:* protocol, build order (shared first), filtering commands, shared vs per-package dependencies. DO NOT use for: individual package configuration, npm/yarn workspaces.
How this skill is triggered — by the user, by Claude, or both
Slash command
/tooling:pnpm-workspaceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
```
quittanceme/
├── pnpm-workspace.yaml
├── package.json # Root scripts, devDependencies
├── packages/
│ └── shared/ # DTOs Zod, enums, types partages
│ ├── package.json
│ └── src/
├── apps/
│ ├── api/ # NestJS backend
│ │ ├── package.json
│ │ └── src/
│ └── web/ # Astro frontend
│ ├── package.json
│ └── src/
# pnpm-workspace.yaml
packages:
- 'packages/*'
- 'apps/*'
Use workspace:* for cross-package dependencies:
// apps/api/package.json
{
"dependencies": {
"@quittanceme/shared": "workspace:*"
}
}
This resolves to the local package, never fetches from npm.
packages/shared must build before apps/* because apps import from it.
// package.json (root)
{
"scripts": {
"build": "pnpm -r --filter=@quittanceme/shared build && pnpm -r --filter=./apps/* build",
"dev": "pnpm -r --parallel dev",
"test": "pnpm -r test",
"typecheck": "pnpm -r typecheck"
}
}
# Run in a specific package
pnpm --filter @quittanceme/shared build
pnpm --filter api test
# Run in all apps
pnpm --filter './apps/*' build
# Run in all packages except one
pnpm --filter '!web' test
Root package.json for devDependencies shared across all packages (TypeScript, ESLint, Prettier, Vitest):
// package.json (root)
{
"devDependencies": {
"typescript": "^5.7",
"vitest": "^3.0",
"eslint": "^9.0"
}
}
Package-specific dependencies go in each package's package.json.
// In apps/api or apps/web
import { CreateReceiptSchema, type CreateReceiptDto } from '@quittanceme/shared';
See also:
zod-conventionsfor how schemas are structured inpackages/shared.
| Rule | Convention |
|---|---|
| Workspace config | pnpm-workspace.yaml |
| Internal deps | workspace:* protocol |
| Build order | packages/shared first, then apps/* |
| Dev tools | Root devDependencies |
| App-specific deps | Per-package package.json |
| Filtering | pnpm --filter <package> |
| Parallel dev | pnpm -r --parallel dev |
npx claudepluginhub fabiensalles/claude-marketplace --plugin toolingStandardizes frontend monorepo structure, dependency management, task orchestration, and package release using pnpm workspace, Turborepo, or Nx.
Manages Node.js dependencies with pnpm: install packages, configure monorepo workspaces with catalogs, override transitive deps, patch third-party packages, and set up CI/CD for pnpm projects.
Set up and optimize monorepos with Turborepo, Nx, pnpm workspaces for shared code, efficient builds, dependency management, and CI/CD.