docs(agents): add per-package AGENTS.md for eslint-config + typescript-config
This commit is contained in:
67
packages/eslint-config/AGENTS.md
Normal file
67
packages/eslint-config/AGENTS.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# 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.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/eslint-config/base";
|
||||
import boundariesConfig from "@repo/eslint-config/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/eslint-config/base";
|
||||
import nextConfig from "@repo/eslint-config/next";
|
||||
import boundariesConfig from "@repo/eslint-config/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
|
||||
```
|
||||
Reference in New Issue
Block a user