本文へ移動
cccskills
無料GitHub で公開

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.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md5.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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

  1. First confirm whether the repository has used pnpm workspace, Turborepo or Nx, and continue to use the existing package naming and task conventions.
  2. Place applications in apps/ and shared libraries, configuration and tools in packages/ or existing equivalent directories.
  3. Internal dependencies use workspace:* to drive the build sequence through the dependency graph.
  4. Configure cacheable, parallelizable, and incremental root tasks for build, lint, and test, and specify input, output, and environment variables.
  5. Configure the affected/changed range command in Turborepo/Nx. CI will run the affected packages first while retaining the backbone full verification entry.
  6. Check package boundaries, circular dependencies, exports, peer dependencies and version policies before publishing the package.

Tool selection

ToolsApplicabilityFeatures
pnpm workspaceBasicsDependency promotion, linking, script aggregation
TurborepoRecommendedCaching, parallelism, dependency graph
NxLargeIncremental 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.json unifies 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"]
    }
  }
}
  • ^build means executing the build of dependent packages first
  • outputs is used for cache hit judgment
  • inputs should include source code, configuration, lock files and environment-related files; do not write the .env secret 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-name or @repo/package-name
  • Publish to npm: follow the @scope/name specification

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 build or turbo run build in the root directory, all packages will be built in order
  • Disable circular dependencies, use pnpm why to 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.yaml and turbo.json / nx.json are 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

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

用于审查或改进前端无障碍、语义结构、键盘支持、焦点管理、ARIA 标签、屏幕阅读器行为、WCAG 2.2 问题、触控无障碍或辅助技术回归;中文触发词包括 无障碍、accessibility、a11y、WCAG、屏幕阅读器。

日本語の概要は準備中です。原文の説明を表示しています。

bovinphang/frontend-craft222026年9月26日 更新

Use when reviewing or improving frontend accessibility, semantic structure, keyboard support, focus management, ARIA labels, screen reader behavior, WCAG 2.2 issues, touch accessibility, or assistive-technology regressions; Chinese triggers include accessibility, accessibility, a11y, WCAG, screen reader.

日本語の概要は準備中です。原文の説明を表示しています。

bovinphang/frontend-craft222026年9月26日 更新

用于从参考系统中吸收想法、能力、工作流、架构、质量体系、生态扩展或工程实践,并通过原创的项目内重设计转化为当前项目能力,而不是复制原实现。

日本語の概要は準備中です。原文の説明を表示しています。

bovinphang/frontend-craft222026年9月26日 更新

Use when absorbing ideas, capabilities, workflows, architecture, quality systems, ecosystem extensions, or engineering practices from any reference system into the current project through original, project-native redesign rather than copying.

日本語の概要は準備中です。原文の説明を表示しています。

bovinphang/frontend-craft222026年9月26日 更新

Use when designing, implementing, or reviewing frontend-to-backend API integration, typed API clients, REST/tRPC/OpenAPI client choices, auth refresh, API error mapping, upload flows, SSE/WebSocket/polling choices, CORS-facing frontend behavior, or cross-boundary loading/error states. Do not use for backend-only service architecture or TanStack Query cache policy alone; Chinese triggers include API integration, front-end and back-end joint debugging, typed API client, Interface error handling, SSE, WebSocket.

日本語の概要は準備中です。原文の説明を表示しています。

bovinphang/frontend-craft222026年9月26日 更新

用于设计、实现或审查前后端 API 集成、类型化 API client、REST/tRPC/OpenAPI 客户端选型、认证刷新、API 错误映射、上传流程、SSE/WebSocket/轮询选择、CORS 相关前端行为或跨边界 loading/error 状态。不要用于纯后端服务架构或仅 TanStack Query 缓存策略;中文触发词包括 API 集成、前后端联调、typed API client、接口错误处理、SSE、WebSocket。

日本語の概要は準備中です。原文の説明を表示しています。

bovinphang/frontend-craft222026年9月26日 更新

bovinphang のスキルをすべて見る

このスキルの問題を報告する