Fec monorepo project standard
Skill bovinphang/frontend-craft/skills/fec-monorepo-project-standard
Use when creating, reviewing, or restructuring frontend monorepos with pnpm workspace, Turborepo, Nx, multi-package dependency boundaries, task orchestration, package naming, or package publishing; Chinese triggers include monorepo, workspace, multi-package.From its SKILL.md
npx -y skills add bovinphang/frontend-craft --skill fec-monorepo-project-standardAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 21 stars21 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.3 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Monorepo Project Specifications
For multi-package front-end repositories using pnpm workspace, Turborepo or Nx.
Purpose
Standardize the directory structure, dependency management, task orchestration and package release process of the Monorepo project to ensure the build efficiency and version consistency of multi-package collaboration.
Procedure
- First confirm whether the repository has used pnpm workspace, Turborepo or Nx, and continue to use the existing package naming and task conventions.
- Place applications in
apps/and shared libraries, configuration and tools inpackages/or existing equivalent directories. - Internal dependencies use
workspace:*to drive the build sequence through the dependency graph. - Configure cacheable, parallelizable, and incremental root tasks for build, lint, and test, and specify input, output, and environment variables.
- Configure the affected/changed range command in Turborepo/Nx. CI will run the affected packages first while retaining the backbone full verification entry.
- Check package boundaries, circular dependencies, exports, peer dependencies and version policies before publishing the package.
Tool selection
| Tools | Applicability | Features |
|---|---|---|
| pnpm workspace | Basics | Dependency promotion, linking, script aggregation |
| Turborepo | Recommended | Caching, parallelism, dependency graph |
| Nx | Large | Incremental build, cloud cache, plug-in ecology |
Directory structure
pnpm + Turborepo
├── package.json # Root package, workspace configuration
├── pnpm-workspace.yaml # workspace package list
├── turbo.json # Turborepo configuration
│
├── apps/
│ ├── web/ # Main application
│ │ ├── package.json
│ │ └── ...
│ ├── admin/ # Management background
│ └── docs/ # Documentation site
│
├── packages/
│ ├── ui/ # Shared UI components
│ │ ├── package.json
│ │ └── src/
│ ├── utils/ # Utility function
│ ├── config-eslint/ # Shared ESLint configuration
│ └── config-typescript/ # Shared TS configuration
│
└── tooling/ # Build/test tools (optional)
└── scripts/
pnpm-workspace.yaml
packages:
- "apps/*"
- "packages/*"
Dependency management
- Internal packages use the
workspace:*protocol - The root
package.jsonunifies some dependency versions and can be overridden by sub-packages - Disable circular dependencies, check via
pnpm why
{
"dependencies": {
"@repo/ui": "workspace:*",
"@repo/utils": "workspace:*"
}
}
Turborepo task orchestration
{
"$schema": "https://turbo.build/schema.json",
"tasks": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**", ".next/**"]
},
"lint": {
"dependsOn": ["^build"]
},
"test": {
"dependsOn": ["^build"]
}
}
}
^buildmeans executing the build of dependent packages firstoutputsis used for cache hit judgmentinputsshould include source code, configuration, lock files and environment-related files; do not write the.envsecret value into the cache key- Remote caching should distinguish between trusted CI and local development to avoid uploading products containing sensitive information.
Nx task orchestration
{
"targetDefaults": {
"build": {
"dependsOn": ["^build"],
"outputs": ["{projectRoot}/dist"],
"cache": true
}
}
}
Package naming
- Internal package:
@org/package-nameor@repo/package-name - Publish to npm: follow the
@scope/namespecification
Constraints
- Sub-packages are referenced through
workspace:*and are not published to npm and then installed. - Shared configurations (ESLint, TS) are placed in
packages/config-*, and sub-packages extend - The build order is determined by the dependency graph, without manually specifying irrelevant dependencies
- When executing
pnpm -r buildorturbo run buildin the root directory, all packages will be built in order - Disable circular dependencies, use
pnpm whyto check the dependency chain when adding a new package - CI cache only caches dependent installation directories and task products, and does not cache unverified build status
- Affected builds cannot replace full verification before release; the trunk or release branch still requires complete quality control
Expected Output
- Monorepo directory structure is clear (
apps/applications,packages/shared packages,tooling/tools) pnpm-workspace.yamlandturbo.json/nx.jsonare configured correctly- Internal packages use
workspace:*protocol, no circular dependencies - Build, lint, and test tasks can be executed with one click through the root command, and the cache hit rate is high
- CI can distinguish between affected quick feedback and release full verification, and the cache configuration will not leak keys or hide dependency boundary issues
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most architecture codebase skills give in ~1.1k tokens
Counted across 858 of the 1,304 authors here whose files we hold, read 2026-09-06
- Apply the deletion test to identify shallow modulesin 32 of 858, across 31 files
- Read domain glossary and ADRs before exploringin 22 of 858, across 19 files
- Use Tailwind and Mermaid via CDN for reportsin 21 of 858, across 18 files
- Document architecture decision recordsin 20 of 858, across 12 files
- Offer to record ADRs for rejected candidatesin 17 of 858, across 14 files
- Limit primary navigation to four to seven itemsin 17 of 858, across 7 files
- Write HTML report to the system temp directoryin 17 of 858, across 14 files
- Read product marketing context before asking questionsin 16 of 858, across 6 files
- Use Mermaid graph TD for visual sitemapsin 15 of 858, across 5 files
- Ensure every page has at least one internal linkin 15 of 858, across 5 files
- Use ASCII tree format for page hierarchy draftsin 15 of 858, across 5 files
- Enforce lowercase URLs with hyphensin 15 of 858, across 5 files
Said here and by no other author read
- use existing package naming and task conventions
- place applications in apps directory
- place shared libraries in packages directory
- specify input and output for build tasks
- check package boundaries before publishing
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.