From 8a2c8db9551ce3b1c55763605f9977f403ef84b6 Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Tue, 12 May 2026 23:23:20 +0200 Subject: [PATCH] feat(core-eslint): conformance plugin module + ./plugin export --- packages/core-eslint/package.json | 3 ++- packages/core-eslint/plugin.js | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/core-eslint/plugin.js diff --git a/packages/core-eslint/package.json b/packages/core-eslint/package.json index 0f0da26..5b4190a 100644 --- a/packages/core-eslint/package.json +++ b/packages/core-eslint/package.json @@ -6,7 +6,8 @@ "exports": { "./base": "./base.js", "./next": "./next.js", - "./react-internal": "./react-internal.js" + "./react-internal": "./react-internal.js", + "./plugin": "./plugin.js" }, "scripts": { "test": "vitest run --passWithNoTests" diff --git a/packages/core-eslint/plugin.js b/packages/core-eslint/plugin.js new file mode 100644 index 0000000..55a9a38 --- /dev/null +++ b/packages/core-eslint/plugin.js @@ -0,0 +1,27 @@ +import featureMustHaveManifest from "./rules/feature-must-have-manifest.js"; +import usecaseMustHaveTestFile from "./rules/usecase-must-have-test-file.js"; +import requiredCoresInstalled from "./rules/required-cores-installed.js"; + +/** + * The `@repo/core-eslint` conformance plugin. Aggregates custom rules that + * enforce feature-conformance contracts (manifest presence, sibling tests, + * required-cores ↔ workspace consistency). + * + * Registered as the `conformance` plugin in flat config: + * + * import conformancePlugin from "@repo/core-eslint/plugin"; + * export default [ + * { plugins: { conformance: conformancePlugin } }, + * { rules: { "conformance/feature-must-have-manifest": ["warn", { repoRoot: import.meta.dirname }] } }, + * ]; + */ +const plugin = { + meta: { name: "conformance", version: "0.1.0" }, + rules: { + "feature-must-have-manifest": featureMustHaveManifest, + "usecase-must-have-test-file": usecaseMustHaveTestFile, + "required-cores-installed": requiredCoresInstalled, + }, +}; + +export default plugin;