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.
From toolingnpx claudepluginhub fabiensalles/claude-marketplace --plugin toolingThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
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 |