Initial commit

This commit is contained in:
fraqtal
2026-07-12 08:15:46 +00:00
commit ee0fec0691
1397 changed files with 127242 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
# 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.js`** — `eslint-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:
```javascript
// 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:
```javascript
// 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
```