com um clique
eslint-enterprise-monorepo
Official ESLint + typescript-eslint + boundaries best practices for enterprise monorepos (flat config, typed linting, architectural boundaries, CI quality gates).
Menu
Official ESLint + typescript-eslint + boundaries best practices for enterprise monorepos (flat config, typed linting, architectural boundaries, CI quality gates).
Type-safe SQL ORM for TypeScript with zero runtime overhead
TypeScript-first schema validation library with static type inference for form validation, API validation, and runtime type checking with compile-time types.
Official ESLint and typescript-eslint performance tuning for large monorepos (cache strategy, concurrency, typed-linting scope, profiling).
Official Pino logging best practices - structured JSON logging with child loggers, serializers, transports, and request-scoped logging for production applications.
Changesets for versioning and changelog management in monorepos. Use when managing package versions, generating changelogs, or publishing packages. Use for changesets, versioning, changelog, semver, monorepo-versioning, release, publish, bump.
Data modeling with Entity-Relationship Diagrams (ERDs), data dictionaries, and conceptual/logical/physical models. Documents data structures, relationships, and attributes.
| name | eslint-enterprise-monorepo |
| description | Official ESLint + typescript-eslint + boundaries best practices for enterprise monorepos (flat config, typed linting, architectural boundaries, CI quality gates). |
| metadata | {"author":"GitHub Copilot","version":"2026.3.26","source":"ESLint + typescript-eslint + TypeScript + eslint-plugin-boundaries official docs"} |
Use this skill when setting up, hardening, or refactoring ESLint for a pnpm/Turborepo-style monorepo.
Use when user asks to:
pnpm add -Dw eslint @eslint/js typescript-eslint eslint-config-prettier globals eslint-plugin-boundaries eslint-plugin-import eslint-import-resolver-typescript
Optional framework plugins by stack:
pnpm add -Dw eslint-plugin-react-hooks eslint-plugin-react-refresh eslint-plugin-vitest
Use this pattern in root eslint.config.js:
import js from "@eslint/js";
import tseslint from "typescript-eslint";
import prettierConfig from "eslint-config-prettier";
import globals from "globals";
import boundaries from "eslint-plugin-boundaries";
export default tseslint.config(
{
ignores: ["**/node_modules/**", "**/dist/**", "**/.turbo/**", "**/coverage/**", "**/build/**"],
linterOptions: {
reportUnusedDisableDirectives: "warn",
reportUnusedInlineConfigs: "warn",
},
},
js.configs.recommended,
...tseslint.configs.recommended,
{
files: ["**/*.{ts,tsx}"],
languageOptions: {
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
rules: {
"no-redeclare": "off",
"no-unused-vars": "off",
"@typescript-eslint/no-redeclare": ["error", { ignoreDeclarationMerge: true }],
"@typescript-eslint/no-unused-vars": [
"warn",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
},
],
},
},
{
files: ["apps/web/**/*.{ts,tsx,js,jsx}"],
languageOptions: {
globals: globals.browser,
},
},
{
files: ["apps/api/**/*.{ts,tsx,js,jsx}"],
languageOptions: {
globals: globals.node,
},
},
{
plugins: {
boundaries,
},
settings: {
"boundaries/elements": [
{ type: "app", pattern: "apps/*/src/**", mode: "full" },
{ type: "package", pattern: "packages/*/src/**", mode: "full" },
],
},
rules: {
...boundaries.configs.recommended.rules,
},
},
prettierConfig
);
Example tsconfig.eslint.json:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noEmit": true
},
"include": ["apps", "packages", "tools"],
"exclude": ["**/dist/**", "**/build/**", "**/coverage/**"]
}
Recommended scripts:
{
"scripts": {
"lint": "eslint .",
"lint:strict": "eslint . --max-warnings=0 --no-warn-ignored",
"lint:fix": "eslint . --fix"
}
}
Debug and config-introspection commands:
pnpm eslint --inspect-config
pnpm eslint --print-config apps/web/src/main.tsx
pnpm eslint --debug apps/web/src/main.tsx
Pipeline expectations: