From 00723475b79fe5e8e0a08f5db2d08a4598e5383b Mon Sep 17 00:00:00 2001 From: Benoit Travers Date: Wed, 26 Aug 2026 23:44:48 +0200 Subject: [PATCH 1/2] chore: point CodeRabbit at this repository's own conventions A `.coderabbit.yaml` whose `path_instructions` name the spec file rather than restating it, so there is one copy of the rules and it is the one already under review. The `path_filters` keep generated output and the lockfile out of the diff it reads. --- .coderabbit.yaml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .coderabbit.yaml diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 0000000..6c5852e --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=https://storage.googleapis.com/coderabbit_public_assets/schema.v2.json + +reviews: + path_filters: + - "!pnpm-lock.yaml" + path_instructions: + - path: "**/*.{json,jsonc,yml,yaml}" + instructions: | + These are the presets every other repository in the org extends — + tsconfig, oxlint, oxfmt, commitlint, lefthook, typedoc — so the blast + radius of a change here is every consumer's gate, not this repository's. + + Two failure modes worth flagging specifically: + + - **A rule name that no longer exists fails the WHOLE lint run**, every + unrelated rule included, because oxlint refuses to parse a config + naming an unknown rule. Adding or renaming a rule in a preset is a + breaking change to every repository that extends it. + - **Raising a floor is breaking.** An `engines` bump, a TypeScript + `target`/`lib` change or a stricter compiler flag lands in every + consumer at once. Say when a diff does this without saying so. + + - path: ".github/workflows/**" + instructions: | + These workflows are reusable and called by other repositories. An input + renamed or removed breaks the callers, which are not in this diff. From 078be845062e9f49fda6a257f70e54827a4b905d Mon Sep 17 00:00:00 2001 From: Benoit Travers Date: Thu, 27 Aug 2026 00:00:25 +0200 Subject: [PATCH 2/2] fix: the presets are packages/**, not every json and yaml in the repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `**/*.{json,jsonc,yml,yaml}` applied the preset-specific instructions to the root `package.json`, `.changeset/config.json` and the workflows — which have their own entry and were getting both. `packages/**` is exactly the published surface: the four `base.json` presets, commitlint's `index.js`, lefthook's `lefthook.yml`, and the `package.json` files whose `exports` and `files` are what a consumer's `extends` path resolves through. --- .coderabbit.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.coderabbit.yaml b/.coderabbit.yaml index 6c5852e..e411106 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -4,7 +4,7 @@ reviews: path_filters: - "!pnpm-lock.yaml" path_instructions: - - path: "**/*.{json,jsonc,yml,yaml}" + - path: "packages/**" instructions: | These are the presets every other repository in the org extends — tsconfig, oxlint, oxfmt, commitlint, lefthook, typedoc — so the blast