Root package.json Configuration Skill
Provides root package.json template and validation logic for MetaSaver monorepo configuration.
Purpose
Configure pnpm workspaces, monorepo scripts, package manager, devDependencies, and cross-platform compatibility.
Template
Located at: templates/root-package.json.template
The 5 Root Package.json Standards
| Rule |
Requirement |
Details |
| 1 |
Monorepo metadata |
name: @metasaver/*, private: true, packageManager: pnpm@*, engines (node, pnpm), type: "module" |
| 2 |
Standard scripts |
build, clean, dev, lint*, prettier*, test*, db*, docker*, setup* |
| 3 |
DevDependencies only |
ENSURE ONLY devDependencies (except cross-platform binaries). Place all tooling in devDependencies |
| 4 |
Workspaces in YAML |
USE pnpm-workspace.yaml instead of workspaces field in package.json |
| 5 |
Cross-platform binaries |
PLACE turbo-linux-64, turbo-windows-64 in dependencies (NOT optionalDependencies) |
Rule 1: Monorepo Metadata
{
"name": "@metasaver/project-name",
"private": true,
"packageManager": "pnpm@10.20.0",
"engines": { "node": ">=22.0.0", "pnpm": ">=10.20.0" },
"type": "module"
}
Rule 2: Required Scripts (18 total)
| Category |
Scripts |
| Build |
build, clean, dev |
| Lint/Format |
lint, lint:fix, lint:tsc, prettier, prettier:fix |
| Test |
test:unit, test:coverage, test:watch |
| Database |
db:generate, db:migrate, db:seed, db:studio |
| Docker |
docker:up, docker:down, docker:logs |
| Setup |
setup:npmrc, setup:env, setup:all |
Rule 3: Required DevDependencies
Core: @commitlint/cli, @metasaver/core-eslint-config, @metasaver/core-prettier-config, dotenv, husky, lint-staged, prettier, turbo, typescript
Rule 4: No Workspaces Field
Use pnpm-workspace.yaml instead.
Rule 5: Cross-Platform Binaries
{
"dependencies": {
"turbo-linux-64": "2.6.1",
"turbo-windows-64": "2.6.1"
}
}
Validation
Validation checks (pseudo-code):
// Rule 1: Metadata
validate(config.name?.startsWith("@metasaver/"), config.private === true, config.packageManager?.startsWith("pnpm@"), config.engines?.node, config.engines?.pnpm);
// Rule 2: Scripts (18 required)
const required = ["build", "clean", "dev", "lint", "lint:fix", "lint:tsc", "prettier", "prettier:fix", "test:unit", "test:coverage", "db:generate", "db:migrate", "db:seed", "db:studio", "docker:up", "docker:down", "setup:npmrc", "setup:env"];
validate(required.every((s) => config.scripts?.[s]));
// Rule 3: DevDependencies
const devDeps = ["@commitlint/cli", "@metasaver/core-eslint-config", "@metasaver/core-prettier-config", "dotenv", "husky", "lint-staged", "prettier", "turbo", "typescript"];
validate(devDeps.every((d) => config.devDependencies?.[d]));
// Rule 4: No workspaces field
validate(!config.workspaces);
// Rule 5: Cross-platform binaries
validate(config.dependencies?.["turbo-linux-64"], config.dependencies?.["turbo-windows-64"]);
Best Practices
- Use template as starting point
- ENSURE all scripts use turbo for orchestration
- PLACE cross-platform binaries in dependencies (not devDependencies)
- VERIFY only devDependencies at root (place all tooling in devDependencies only)
- RE-AUDIT after making changes
Integration
- Repository type: Use
/skill scope-check if not provided
- Workflow:
/skill audit-workflow
- Remediation:
/skill remediation-options
- Related:
pnpm-workspace-config, turbo-config
1---2name: root-package-json-config3description: Root package.json configuration for MetaSaver monorepos. Use when creating or auditing root package.json files to ensure workspace configuration, required scripts (build, dev, lint, test:unit, prettier:fix, clean), turbo pipeline scripts, packageManager field, and only devDependencies at root (no dependencies except cross-platform binaries).4---5
6# Root package.json Configuration Skill
7
8Provides root package.json template and validation logic for MetaSaver monorepo configuration.
9
10## Purpose
11
12Configure pnpm workspaces, monorepo scripts, package manager, devDependencies, and cross-platform compatibility.
13
14## Template
15
16Located at: `templates/root-package.json.template`
17
18## The 5 Root Package.json Standards
19
20| Rule | Requirement | Details |
21| ---- | ----------------------- | --------------------------------------------------------------------------------------------------- |
22| 1 | Monorepo metadata | name: `@metasaver/*`, private: true, packageManager: `pnpm@*`, engines (node, pnpm), type: "module" |
23| 2 | Standard scripts | build, clean, dev, lint*, prettier*, test*, db*, docker*, setup* |
24| 3 | DevDependencies only | ENSURE ONLY devDependencies (except cross-platform binaries). Place all tooling in devDependencies |
25| 4 | Workspaces in YAML | USE pnpm-workspace.yaml instead of workspaces field in package.json |
26| 5 | Cross-platform binaries | PLACE turbo-linux-64, turbo-windows-64 in dependencies (NOT optionalDependencies) |
27
28### Rule 1: Monorepo Metadata
29
30```json
31{
32 "name": "@metasaver/project-name",
33 "private": true,
34 "packageManager": "pnpm@10.20.0",
35 "engines": { "node": ">=22.0.0", "pnpm": ">=10.20.0" },
36 "type": "module"
37}
38```
39
40### Rule 2: Required Scripts (18 total)
41
42| Category | Scripts |
43| ----------- | ------------------------------------------------ |
44| Build | build, clean, dev |
45| Lint/Format | lint, lint:fix, lint:tsc, prettier, prettier:fix |
46| Test | test:unit, test:coverage, test:watch |
47| Database | db:generate, db:migrate, db:seed, db:studio |
48| Docker | docker:up, docker:down, docker:logs |
49| Setup | setup:npmrc, setup:env, setup:all |
50
51### Rule 3: Required DevDependencies
52
53Core: `@commitlint/cli`, `@metasaver/core-eslint-config`, `@metasaver/core-prettier-config`, `dotenv`, `husky`, `lint-staged`, `prettier`, `turbo`, `typescript`
54
55### Rule 4: No Workspaces Field
56
57Use `pnpm-workspace.yaml` instead.
58
59### Rule 5: Cross-Platform Binaries
60
61```json
62{
63 "dependencies": {
64 "turbo-linux-64": "2.6.1",
65 "turbo-windows-64": "2.6.1"
66 }
67}
68```
69
70## Validation
71
72Validation checks (pseudo-code):
73
74```javascript
75// Rule 1: Metadata
76validate(config.name?.startsWith("@metasaver/"), config.private === true, config.packageManager?.startsWith("pnpm@"), config.engines?.node, config.engines?.pnpm);
77
78// Rule 2: Scripts (18 required)
79const required = ["build", "clean", "dev", "lint", "lint:fix", "lint:tsc", "prettier", "prettier:fix", "test:unit", "test:coverage", "db:generate", "db:migrate", "db:seed", "db:studio", "docker:up", "docker:down", "setup:npmrc", "setup:env"];
80validate(required.every((s) => config.scripts?.[s]));
81
82// Rule 3: DevDependencies
83const devDeps = ["@commitlint/cli", "@metasaver/core-eslint-config", "@metasaver/core-prettier-config", "dotenv", "husky", "lint-staged", "prettier", "turbo", "typescript"];
84validate(devDeps.every((d) => config.devDependencies?.[d]));
85
86// Rule 4: No workspaces field
87validate(!config.workspaces);
88
89// Rule 5: Cross-platform binaries
90validate(config.dependencies?.["turbo-linux-64"], config.dependencies?.["turbo-windows-64"]);
91```
92
93## Best Practices
94
951. Use template as starting point
962. ENSURE all scripts use turbo for orchestration
973. PLACE cross-platform binaries in dependencies (not devDependencies)
984. VERIFY only devDependencies at root (place all tooling in devDependencies only)
995. RE-AUDIT after making changes
100
101## Integration
102
103- Repository type: Use `/skill scope-check` if not provided
104- Workflow: `/skill audit-workflow`
105- Remediation: `/skill remediation-options`
106- Related: `pnpm-workspace-config`, `turbo-config`