Aligns tooling packages with the core-* naming convention used by all other foundation packages (core-shared, core-cms, core-api, core-trpc, core-ui). Updates ~50 files: package.json names, devDependencies, tsconfig extends, eslint.config imports, vitest.config imports, AGENTS.md references, and the boundaries plugin patterns to match the new paths. The tooling-specific patterns in boundaries/elements are now ordered BEFORE the broader core-* pattern to ensure correct first-match-wins behavior. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.1 KiB
2.1 KiB
AGENTS.md — eslint-config
Shared ESLint 9 flat configs (rules, plugins, parser settings) consumed by all packages via eslint.config.js.
What it owns
base.js— Core ESLint rules: noconsole, nodebugger, strict@typescript-eslintconfignext.js— Next.js-specific rules:"use client"boundaries,next/no-img-elementreact-internal.js— React library rules: component display names, hook rulesboundaries.js—eslint-plugin-boundariesconfig enforcing vertical feature architecture:- Features may only import
core-*and tooling packages - Core packages may only import other core packages (with composition exceptions for
core-cms,core-api) - No cross-feature imports
- No deep source path imports (only public subpath exports)
- Features may only import
How packages consume them
Each package creates eslint.config.js at its root:
// packages/blog/eslint.config.js
import baseConfig from "@repo/core-eslint/base";
import boundariesConfig from "@repo/core-eslint/boundaries";
export default [
...baseConfig,
...boundariesConfig,
{
files: ["src/**/*.tsx"],
rules: {
"react/display-name": "off",
},
},
];
Apps may add Next.js-specific rules:
// apps/web-next/eslint.config.js
import baseConfig from "@repo/core-eslint/base";
import nextConfig from "@repo/core-eslint/next";
import boundariesConfig from "@repo/core-eslint/boundaries";
export default [
...baseConfig,
...nextConfig,
...boundariesConfig,
];
Test conventions
- No unit tests (config validation via lint pass/fail in other packages)
- Verify at CI:
pnpm lintsucceeds across all packages - ESLint should catch boundary violations:
pnpm lintfails on feature→feature imports or deep imports
Structure
src/
base.js # Core TypeScript + ESLint config
next.js # Next.js additions
react-internal.js # React library rules
boundaries.js # Feature boundaries + composition rules
index.js # Re-exports all configs