Files
agentic-dev/packages/core-eslint/AGENTS.md
Danijel Martinek 0972645ebb refactor: rename eslint-config + typescript-config to core-eslint + core-typescript
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>
2026-05-05 10:37:07 +02:00

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: no console, no debugger, strict @typescript-eslint config
  • next.js — Next.js-specific rules: "use client" boundaries, next/no-img-element
  • react-internal.js — React library rules: component display names, hook rules
  • boundaries.jseslint-plugin-boundaries config 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)

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 lint succeeds across all packages
  • ESLint should catch boundary violations: pnpm lint fails 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