Files
agentic-dev/packages/core-eslint/AGENTS.md
Danijel Martinek f77e6ea881 chore(template): clean-slate template snapshot from bb4a0c7
Curated, product-agnostic snapshot of the post-story-04 tree: demo
content deleted, auth-only reference feature, web-next shell, all gates
green. Product-specific docs, ADRs 027-029, PRDs/epics/archive, editor
library traces, and product naming are curated out; generic template
repairs (coverage provider devDeps, root test:coverage script, live
lint fixes, root-only release-please) are kept. See TEMPLATE.md for
provenance, curation list, and usage.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
2026-07-12 20:40:54 +02:00

2.2 KiB

AGENTS.md — core-eslint

Tag: tooling

Shared ESLint 9 flat configs (rules, plugins, parser settings) consumed by all packages via eslint.config.js. Enforces boundary rules alongside Turborepo's boundaries feature (which validates the workspace dependency graph at build time).

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