Skip to content

chore: rename GraphQL nursery rules#8712

Merged
Netail merged 4 commits into
biomejs:mainfrom
Netail:chore/rename-graphql-nursery-rules
Jan 9, 2026
Merged

chore: rename GraphQL nursery rules#8712
Netail merged 4 commits into
biomejs:mainfrom
Netail:chore/rename-graphql-nursery-rules

Conversation

@Netail

@Netail Netail commented Jan 8, 2026

Copy link
Copy Markdown
Member

Summary

Renamed some GraphQL nursery rules to match the Biome standard

Test Plan

Docs

@changeset-bot

changeset-bot Bot commented Jan 8, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 1879f04

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 13 packages
Name Type
@biomejs/biome Patch
@biomejs/cli-win32-x64 Patch
@biomejs/cli-win32-arm64 Patch
@biomejs/cli-darwin-x64 Patch
@biomejs/cli-darwin-arm64 Patch
@biomejs/cli-linux-x64 Patch
@biomejs/cli-linux-arm64 Patch
@biomejs/cli-linux-x64-musl Patch
@biomejs/cli-linux-arm64-musl Patch
@biomejs/wasm-web Patch
@biomejs/wasm-bundler Patch
@biomejs/wasm-nodejs Patch
@biomejs/backend-jsonrpc Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions Bot added A-Project Area: project A-Linter Area: linter A-Diagnostic Area: diagnostocis labels Jan 8, 2026
@coderabbitai

coderabbitai Bot commented Jan 8, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

This PR renames six GraphQL nursery lint rules and their option types/modules from useUnique* to noDuplicate* across crates: biome_graphql_analyze, biome_rule_options, and related modules. It updates public exports and import paths, adjusts rule name strings and impl blocks, adds migration mappings in biome_migrate, and includes changeset files that instruct running biome migrate --write.

Possibly related PRs

Suggested reviewers

  • ematipico
  • dyc3
🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: renaming GraphQL nursery rules to match Biome's standard naming convention.
Description check ✅ Passed The description directly relates to the changeset, explaining that GraphQL nursery rules were renamed to match the Biome standard.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bf9767d and 1879f04.

📒 Files selected for processing (1)
  • .changeset/cruel-mice-obey.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .changeset/cruel-mice-obey.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (14)
  • GitHub Check: Test (depot-ubuntu-24.04-arm-16)
  • GitHub Check: Test (depot-windows-2022-16)
  • GitHub Check: Lint project (depot-ubuntu-24.04-arm-16)
  • GitHub Check: End-to-end tests
  • GitHub Check: Check Dependencies
  • GitHub Check: Documentation
  • GitHub Check: Lint project (depot-windows-2022)
  • GitHub Check: Test Node.js API
  • GitHub Check: Validate rules documentation
  • GitHub Check: autofix
  • GitHub Check: Check JS Files
  • GitHub Check: Bench (biome_configuration)
  • GitHub Check: Bench (biome_graphql_formatter)
  • GitHub Check: Bench (biome_graphql_parser)

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @.changeset/free-cars-take.md:
- Line 5: Update the changeset wording to reflect this was a rename, not an
addition: change the sentence that currently reads "Added the nursery rule
[`noDuplicateEnumValueNames`](https://biomejs.dev/linter/rules/no-duplicate-enum-value-names/).
Enforce unique enum value names." to indicate the rule was renamed from
`useUniqueEnumValueNames` to `noDuplicateEnumValueNames` (e.g., "Renamed the
nursery rule `useUniqueEnumValueNames` to `noDuplicateEnumValueNames` to enforce
unique enum value names."), ensuring the original and new rule names are both
mentioned for clarity and consistency with the other changeset.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a1914d4 and f5fabdb.

⛔ Files ignored due to path filters (17)
  • crates/biome_configuration/src/analyzer/linter/rules.rs is excluded by !**/rules.rs and included by **
  • crates/biome_diagnostics_categories/src/categories.rs is excluded by !**/categories.rs and included by **
  • crates/biome_graphql_analyze/src/lint/nursery.rs is excluded by !**/nursery.rs and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/valid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/valid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/valid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/valid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/valid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/valid.graphql.snap is excluded by !**/*.snap and included by **
  • packages/@biomejs/backend-jsonrpc/src/workspace.ts is excluded by !**/backend-jsonrpc/src/workspace.ts and included by **
  • packages/@biomejs/biome/configuration_schema.json is excluded by !**/configuration_schema.json and included by **
📒 Files selected for processing (27)
  • .changeset/cruel-mice-obey.md
  • .changeset/free-cars-take.md
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/valid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/valid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/valid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/valid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/valid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/valid.graphql
  • crates/biome_rule_options/src/lib.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
🧰 Additional context used
📓 Path-based instructions (1)
**/*.rs

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.rs: Use inline rustdoc documentation for rules, assists, and their options
Use the dbg!() macro for debugging output in Rust tests and code
Use doc tests (doctest) format with code blocks in rustdoc comments; ensure assertions pass in tests

Files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/lib.rs
🧠 Learnings (29)
📓 Common learnings
Learnt from: CR
Repo: biomejs/biome PR: 0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-12-21T21:15:03.796Z
Learning: For new nursery rules, send PRs to the maintenance branch `main`
Learnt from: CR
Repo: biomejs/biome PR: 0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-12-21T21:15:03.796Z
Learning: For promoting rules from nursery or implementing new features affecting end users, send PRs to the `next` branch
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : New rules must be placed inside the `nursery` group before promotion to other groups
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Apply `#[serde(rename_all = "camelCase")]` to rule option structs to match JSON configuration naming convention
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Rule names should use the `no` prefix when the rule's sole intention is to forbid a single concept
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Rule names should use the `use` prefix when the rule's sole intention is to mandate a single concept
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Use `Option<_>` wrapper for rule option fields to enable proper merging of configurations

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/lib.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Apply `#[serde(rename_all = "camelCase")]` to rule option structs to match JSON configuration naming convention

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/lib.rs
  • .changeset/cruel-mice-obey.md
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Apply `#[serde(deny_unknown_fields)]` to rule option structs to enforce strict configuration validation

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/lib.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Rule options must be defined in the `biome_rule_options` crate with a file named after the rule

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/lib.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Implement `biome_deserialize::Merge` for rule option types to define how shared and user configurations are merged

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Rule names should use the `no` prefix when the rule's sole intention is to forbid a single concept

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • .changeset/free-cars-take.md
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/lib.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Rule option types must derive `Deserializable`, `Serialize`, `Deserialize`, and optionally `JsonSchema` traits

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/lib.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Rule names should use the `use` prefix when the rule's sole intention is to mandate a single concept

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/lib.rs
📚 Learning: 2025-11-24T18:05:42.356Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_js_type_info/CONTRIBUTING.md:0-0
Timestamp: 2025-11-24T18:05:42.356Z
Learning: Applies to crates/biome_js_type_info/**/*.rs : Distinguish between `TypeData::Unknown` and `TypeData::UnknownKeyword` to measure inference effectiveness versus explicit user-provided unknown types

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Use `Box<[Box<str>]>` instead of `Vec<String>` for collections of strings in rule options to save memory

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Deprecated rules must include a `deprecated` field in the `declare_lint_rule!` macro with an explanation of what rule to use instead

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/lib.rs
📚 Learning: 2025-12-31T15:35:32.899Z
Learnt from: dyc3
Repo: biomejs/biome PR: 8639
File: crates/biome_js_analyze/src/lint/nursery/no_excessive_lines_per_file.rs:101-108
Timestamp: 2025-12-31T15:35:32.899Z
Learning: In Rust lint rules under the nursery category, the issue_number field in declare_lint_rule! is optional and should not be added unless there is a compelling reason. In code reviews, verify that no unnecessary issue_number is included in nursery lint declarations. Only add issue_number if there is an explicit, justified reason (e.g., tracked issue for external observers). This guidance broadly applies to all nursery lint rule files, not just the single file.

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Use `declare_lint_rule!` macro with a `version` field set to `next` for new rules

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/lib.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : New rules must be placed inside the `nursery` group before promotion to other groups

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • .changeset/free-cars-take.md
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
📚 Learning: 2025-12-22T09:26:56.943Z
Learnt from: ematipico
Repo: biomejs/biome PR: 8537
File: crates/biome_js_analyze/src/lint/nursery/no_leaked_render.rs:167-210
Timestamp: 2025-12-22T09:26:56.943Z
Learning: When defining lint rules (declare_lint_rule!), only specify fix_kind if the rule implements an action(...) function. Rules that only emit diagnostics without a code fix should omit fix_kind. This applies to all Rust lint rule definitions under crates/.../src/lint (e.g., crates/biome_js_analyze/src/lint/...).

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
📚 Learning: 2025-11-21T01:10:53.059Z
Learnt from: dyc3
Repo: biomejs/biome PR: 8171
File: crates/biome_js_analyze/src/lint/nursery/no_leaked_render.rs:125-137
Timestamp: 2025-11-21T01:10:53.059Z
Learning: In the Biome codebase, each lint rule has its own options type declaration (e.g., `type Options = RuleNameOptions`) as part of the codegen process, even if the options struct is empty or unused. This is standard practice and should not be flagged as an issue.

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
📚 Learning: 2025-12-21T21:15:03.796Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-12-21T21:15:03.796Z
Learning: For rule changes in changesets, clearly demonstrate what is now invalid that wasn't before, or vice versa

Applied to files:

  • .changeset/free-cars-take.md
📚 Learning: 2025-12-31T15:35:41.261Z
Learnt from: dyc3
Repo: biomejs/biome PR: 8639
File: crates/biome_js_analyze/src/lint/nursery/no_excessive_lines_per_file.rs:101-108
Timestamp: 2025-12-31T15:35:41.261Z
Learning: In crates/biome_analyze/**/*analyze/src/lint/nursery/**/*.rs, the `issue_number` field in `declare_lint_rule!` macro is optional and the vast majority of nursery rules do not need it. Do not recommend adding `issue_number` unless there's a specific reason.

Applied to files:

  • .changeset/free-cars-take.md
📚 Learning: 2025-12-21T21:15:03.796Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-12-21T21:15:03.796Z
Learning: For new nursery rules, send PRs to the maintenance branch `main`

Applied to files:

  • .changeset/free-cars-take.md
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Biome linter rules must be designed to work across languages, requiring careful naming to indicate intended scope

Applied to files:

  • .changeset/free-cars-take.md
  • .changeset/cruel-mice-obey.md
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Use `rule_category!()` macro to refer to the diagnostic category instead of dynamically parsing its string name

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Implement the `run` function to return `Option<Self::State>` or `Vec<Self::State>` (as `Box<[Self::State]>`) depending on whether the rule reports one or multiple signals

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Use `declare_node_union!` macro to query multiple node types together to avoid redundant traversal passes

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Check if a variable is global using the semantic model before reporting diagnostics for rules that ban global functions or variables

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/lib.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Use the `Semantic<T>` query type to access semantic information about bindings, references, and scope within a rule

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
📚 Learning: 2025-11-24T18:05:42.356Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_js_type_info/CONTRIBUTING.md:0-0
Timestamp: 2025-11-24T18:05:42.356Z
Learning: Applies to crates/biome_js_type_info/**/*.rs : No module may copy or clone data from another module in the module graph, not even behind an `Arc`

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
📚 Learning: 2025-12-22T09:27:13.161Z
Learnt from: ematipico
Repo: biomejs/biome PR: 8537
File: crates/biome_js_analyze/src/lint/nursery/no_leaked_render.rs:167-210
Timestamp: 2025-12-22T09:27:13.161Z
Learning: In crates/biome_analyze/**/*analyze/src/**/*.rs, the `fix_kind` field in `declare_lint_rule!` should only be specified when the rule implements the `action` function. Rules that only emit diagnostics without providing code fixes should not include `fix_kind` in their metadata.

Applied to files:

  • crates/biome_rule_options/src/lib.rs
📚 Learning: 2025-08-05T14:43:29.581Z
Learnt from: dyc3
Repo: biomejs/biome PR: 7081
File: packages/@biomejs/biome/configuration_schema.json:7765-7781
Timestamp: 2025-08-05T14:43:29.581Z
Learning: The file `packages/biomejs/biome/configuration_schema.json` is auto-generated and should not be manually edited or reviewed for schema issues; any changes should be made at the code generation source.

Applied to files:

  • .changeset/cruel-mice-obey.md
🧬 Code graph analysis (4)
crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs (1)
crates/biome_analyze/src/rule.rs (3)
  • recommended (625-628)
  • sources (640-643)
  • same (255-260)
crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs (1)
crates/biome_analyze/src/rule.rs (3)
  • recommended (625-628)
  • sources (640-643)
  • same (255-260)
crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs (1)
crates/biome_analyze/src/rule.rs (3)
  • recommended (625-628)
  • sources (640-643)
  • same (255-260)
crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs (5)
crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs (1)
  • run (49-67)
crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs (1)
  • run (61-92)
crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs (1)
  • run (74-94)
crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs (1)
  • run (49-67)
crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs (1)
  • run (49-68)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
  • GitHub Check: Test (depot-windows-2022-16)
  • GitHub Check: Lint project (depot-ubuntu-24.04-arm-16)
  • GitHub Check: Documentation
  • GitHub Check: Lint project (depot-windows-2022)
  • GitHub Check: Check Dependencies
  • GitHub Check: Check JS Files
  • GitHub Check: End-to-end tests
  • GitHub Check: Test (depot-ubuntu-24.04-arm-16)
  • GitHub Check: Bench (biome_graphql_formatter)
  • GitHub Check: Bench (biome_graphql_parser)
  • GitHub Check: Bench (biome_configuration)
  • GitHub Check: autofix
  • GitHub Check: Test Node.js API
🔇 Additional comments (15)
crates/biome_rule_options/src/no_duplicate_enum_value_names.rs (1)

1-6: Clean rename.

The struct rename is correct, all required derives and attributes are preserved.

crates/biome_rule_options/src/no_duplicate_input_field_names.rs (1)

1-6: LGTM.

Struct rename correctly applied with all required traits.

.changeset/cruel-mice-obey.md (1)

1-11: Well documented.

The changeset correctly documents the rule renames with proper "Renamed" terminology.

crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs (1)

1-6: Spot on.

The rename is correctly implemented with all necessary attributes intact.

crates/biome_rule_options/src/no_duplicate_field_definition_names.rs (1)

6-6: Rename looks good!

The struct follows all the required conventions with proper derives and serde attributes.

crates/biome_rule_options/src/no_duplicate_variable_names.rs (1)

6-6: LGTM!

Identical pattern to the other option structs—correctly configured.

crates/biome_rule_options/src/no_duplicate_argument_names.rs (1)

6-6: Nicely done!

The options struct is properly configured with all required attributes.

crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs (1)

7-7: Rename implemented correctly!

The rule name, import path, and options type are all consistently updated. The implementation logic remains unchanged.

However, please verify the deprecation strategy: should the old useUniqueGraphqlOperationName rule be kept with a deprecated field pointing to this new name? This would prevent breaking existing configurations.

Additionally, confirm the target branch: since renaming rules is a breaking change for end users, the learnings suggest this might belong on the next branch rather than main.

Based on learnings, rules that are deprecated should include a deprecated field with guidance on the replacement rule, and end-user facing changes typically target the next branch.

Also applies to: 54-56, 68-72

crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs (1)

9-9: Rename is technically sound!

All identifiers consistently updated with no logic changes. The same verification points from no_duplicate_graphql_operation_name.rs apply here regarding deprecation strategy and branch targeting.

Also applies to: 34-36, 43-47

crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs (1)

9-9: LGTM!

The rename from UseUniqueArgumentNames to NoDuplicateArgumentNames correctly follows the Biome naming convention—using the no prefix for rules that forbid a concept. Import path and options type are consistently updated.

Also applies to: 34-36, 43-47

crates/biome_rule_options/src/lib.rs (1)

55-75: LGTM!

All six no_duplicate_* option modules are correctly exported and maintain alphabetical ordering. Since this is a generated file, the codegen tooling has done its job properly.

crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs (1)

9-9: LGTM!

Consistent rename to NoDuplicateEnumValueNames. The version: "next" differs from the other renamed rules (2.3.11), but that's pre-existing—this rule was likely added more recently.

Also applies to: 46-48, 55-59

crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs (1)

9-9: LGTM!

Clean rename to NoDuplicateVariableNames with all references properly updated.

Also applies to: 34-36, 43-47

crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs (2)

12-12: LGTM!

Thorough rename of NoDuplicateFieldDefinitionNames including the rule struct, name field, query type, and options type. All consistently updated.

Also applies to: 67-69, 76-80


86-97: Query enum and match arms updated correctly.

The NoDuplicateFieldDefinitionNamesQuery union and all three match arms (GraphqlObjectTypeDefinition, GraphqlInterfaceTypeDefinition, GraphqlInputObjectTypeDefinition) are consistently renamed.

Also applies to: 156-157

Comment thread .changeset/free-cars-take.md
@codspeed-hq

codspeed-hq Bot commented Jan 8, 2026

Copy link
Copy Markdown

CodSpeed Performance Report

Merging this PR will not alter performance

Comparing Netail:chore/rename-graphql-nursery-rules (1879f04) with main (a1914d4)

Summary

✅ 1 untouched benchmark
⏩ 154 skipped benchmarks1

Footnotes

  1. 154 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@Netail Netail force-pushed the chore/rename-graphql-nursery-rules branch from f5fabdb to ff723f5 Compare January 8, 2026 19:37

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @.changeset/cruel-mice-obey.md:
- Around line 5-11: The changeset misses one renamed rule entry: add the mapping
for useUniqueEnumValueNames -> noDuplicateEnumValueNames to the list so it
contains all six renames; update the diff block in .changeset/cruel-mice-obey.md
to include the line "- `useUniqueEnumValueNames` -> `noDuplicateEnumValueNames`"
alongside the existing mappings for useUniqueArgumentNames,
useUniqueFieldDefinitionNames, useUniqueGraphqlOperationName,
useUniqueInputFieldNames, and useUniqueVariableNames.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f5fabdb and ff723f5.

⛔ Files ignored due to path filters (17)
  • crates/biome_configuration/src/analyzer/linter/rules.rs is excluded by !**/rules.rs and included by **
  • crates/biome_diagnostics_categories/src/categories.rs is excluded by !**/categories.rs and included by **
  • crates/biome_graphql_analyze/src/lint/nursery.rs is excluded by !**/nursery.rs and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/valid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/valid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/valid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/valid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/valid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/invalid.graphql.snap is excluded by !**/*.snap and included by **
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/valid.graphql.snap is excluded by !**/*.snap and included by **
  • packages/@biomejs/backend-jsonrpc/src/workspace.ts is excluded by !**/backend-jsonrpc/src/workspace.ts and included by **
  • packages/@biomejs/biome/configuration_schema.json is excluded by !**/configuration_schema.json and included by **
📒 Files selected for processing (27)
  • .changeset/cruel-mice-obey.md
  • .changeset/free-cars-take.md
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/valid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/valid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/valid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/valid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/valid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/invalid.graphql
  • crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/valid.graphql
  • crates/biome_rule_options/src/lib.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
🚧 Files skipped from review as they are similar to previous changes (7)
  • crates/biome_rule_options/src/lib.rs
  • crates/biome_rule_options/src/no_duplicate_enum_value_names.rs
  • crates/biome_rule_options/src/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rs
  • .changeset/free-cars-take.md
🧰 Additional context used
📓 Path-based instructions (1)
**/*.rs

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.rs: Use inline rustdoc documentation for rules, assists, and their options
Use the dbg!() macro for debugging output in Rust tests and code
Use doc tests (doctest) format with code blocks in rustdoc comments; ensure assertions pass in tests

Files:

  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
🧠 Learnings (24)
📓 Common learnings
Learnt from: CR
Repo: biomejs/biome PR: 0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-12-21T21:15:03.796Z
Learning: For new nursery rules, send PRs to the maintenance branch `main`
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : New rules must be placed inside the `nursery` group before promotion to other groups
Learnt from: CR
Repo: biomejs/biome PR: 0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-12-21T21:15:03.796Z
Learning: For promoting rules from nursery or implementing new features affecting end users, send PRs to the `next` branch
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Apply `#[serde(rename_all = "camelCase")]` to rule option structs to match JSON configuration naming convention
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Rule names should use the `no` prefix when the rule's sole intention is to forbid a single concept
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Rule names should use the `use` prefix when the rule's sole intention is to mandate a single concept
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Apply `#[serde(rename_all = "camelCase")]` to rule option structs to match JSON configuration naming convention

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • .changeset/cruel-mice-obey.md
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Use `Option<_>` wrapper for rule option fields to enable proper merging of configurations

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Rule options must be defined in the `biome_rule_options` crate with a file named after the rule

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Apply `#[serde(deny_unknown_fields)]` to rule option structs to enforce strict configuration validation

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Rule names should use the `no` prefix when the rule's sole intention is to forbid a single concept

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2025-11-21T01:10:53.059Z
Learnt from: dyc3
Repo: biomejs/biome PR: 8171
File: crates/biome_js_analyze/src/lint/nursery/no_leaked_render.rs:125-137
Timestamp: 2025-11-21T01:10:53.059Z
Learning: In the Biome codebase, each lint rule has its own options type declaration (e.g., `type Options = RuleNameOptions`) as part of the codegen process, even if the options struct is empty or unused. This is standard practice and should not be flagged as an issue.

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Rule names should use the `use` prefix when the rule's sole intention is to mandate a single concept

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs
  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Use `Box<[Box<str>]>` instead of `Vec<String>` for collections of strings in rule options to save memory

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Implement `biome_deserialize::Merge` for rule option types to define how shared and user configurations are merged

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2025-12-22T09:27:13.161Z
Learnt from: ematipico
Repo: biomejs/biome PR: 8537
File: crates/biome_js_analyze/src/lint/nursery/no_leaked_render.rs:167-210
Timestamp: 2025-12-22T09:27:13.161Z
Learning: In crates/biome_analyze/**/*analyze/src/**/*.rs, the `fix_kind` field in `declare_lint_rule!` should only be specified when the rule implements the `action` function. Rules that only emit diagnostics without providing code fixes should not include `fix_kind` in their metadata.

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/biome_rule_options/lib/**/*.rs : Rule option types must derive `Deserializable`, `Serialize`, `Deserialize`, and optionally `JsonSchema` traits

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_argument_names.rs
  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Deprecated rules must include a `deprecated` field in the `declare_lint_rule!` macro with an explanation of what rule to use instead

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_variable_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2025-08-05T14:43:29.581Z
Learnt from: dyc3
Repo: biomejs/biome PR: 7081
File: packages/@biomejs/biome/configuration_schema.json:7765-7781
Timestamp: 2025-08-05T14:43:29.581Z
Learning: The file `packages/biomejs/biome/configuration_schema.json` is auto-generated and should not be manually edited or reviewed for schema issues; any changes should be made at the code generation source.

Applied to files:

  • .changeset/cruel-mice-obey.md
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Biome linter rules must be designed to work across languages, requiring careful naming to indicate intended scope

Applied to files:

  • .changeset/cruel-mice-obey.md
📚 Learning: 2025-12-31T15:35:32.899Z
Learnt from: dyc3
Repo: biomejs/biome PR: 8639
File: crates/biome_js_analyze/src/lint/nursery/no_excessive_lines_per_file.rs:101-108
Timestamp: 2025-12-31T15:35:32.899Z
Learning: In Rust lint rules under the nursery category, the issue_number field in declare_lint_rule! is optional and should not be added unless there is a compelling reason. In code reviews, verify that no unnecessary issue_number is included in nursery lint declarations. Only add issue_number if there is an explicit, justified reason (e.g., tracked issue for external observers). This guidance broadly applies to all nursery lint rule files, not just the single file.

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Use `rule_category!()` macro to refer to the diagnostic category instead of dynamically parsing its string name

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : New rules must be placed inside the `nursery` group before promotion to other groups

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Use `declare_lint_rule!` macro with a `version` field set to `next` for new rules

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2025-12-22T09:26:56.943Z
Learnt from: ematipico
Repo: biomejs/biome PR: 8537
File: crates/biome_js_analyze/src/lint/nursery/no_leaked_render.rs:167-210
Timestamp: 2025-12-22T09:26:56.943Z
Learning: When defining lint rules (declare_lint_rule!), only specify fix_kind if the rule implements an action(...) function. Rules that only emit diagnostics without a code fix should omit fix_kind. This applies to all Rust lint rule definitions under crates/.../src/lint (e.g., crates/biome_js_analyze/src/lint/...).

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Use `declare_node_union!` macro to query multiple node types together to avoid redundant traversal passes

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Use the `Semantic<T>` query type to access semantic information about bindings, references, and scope within a rule

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs
📚 Learning: 2025-11-24T18:05:42.356Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_js_type_info/CONTRIBUTING.md:0-0
Timestamp: 2025-11-24T18:05:42.356Z
Learning: Applies to crates/biome_js_type_info/**/*.rs : Distinguish between `TypeData::Unknown` and `TypeData::UnknownKeyword` to measure inference effectiveness versus explicit user-provided unknown types

Applied to files:

  • crates/biome_rule_options/src/no_duplicate_field_definition_names.rs
📚 Learning: 2026-01-02T14:58:16.536Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.536Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : When porting rules from other linters, use `sources` metadata with `RuleSource::Eslint().same()` for identical behavior or `.inspired()` for different behavior

Applied to files:

  • crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs
🧬 Code graph analysis (1)
crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs (2)
crates/biome_analyze/src/rule.rs (3)
  • recommended (625-628)
  • sources (640-643)
  • same (255-260)
crates/biome_service/src/workspace_types.rs (1)
  • Self (748-748)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
  • GitHub Check: End-to-end tests
  • GitHub Check: Documentation
  • GitHub Check: Check Dependencies
  • GitHub Check: Lint project (depot-ubuntu-24.04-arm-16)
  • GitHub Check: Lint project (depot-windows-2022)
  • GitHub Check: Test (depot-ubuntu-24.04-arm-16)
  • GitHub Check: Test (depot-windows-2022-16)
  • GitHub Check: Test Node.js API
  • GitHub Check: Check JS Files
  • GitHub Check: autofix
  • GitHub Check: Bench (biome_graphql_formatter)
  • GitHub Check: Bench (biome_graphql_parser)
  • GitHub Check: Bench (biome_configuration)
🔇 Additional comments (7)
crates/biome_rule_options/src/no_duplicate_graphql_operation_name.rs (1)

6-6: LGTM! Rename aligns with Biome standards.

The rename from UseUniqueGraphqlOperationNameOptions to NoDuplicateGraphqlOperationNameOptions correctly follows the convention that rules forbidding a concept should use the no prefix. All required derives and serde attributes are present.

Based on learnings, this naming convention is appropriate for rules whose sole intention is to forbid duplicates.

crates/biome_rule_options/src/no_duplicate_variable_names.rs (1)

6-6: LGTM! Consistent with the naming convention.

The rename follows the same pattern as the other option structs in this PR, correctly using the no prefix for rules that forbid duplicates.

crates/biome_rule_options/src/no_duplicate_argument_names.rs (1)

6-6: LGTM! Naming convention correctly applied.

crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs (1)

9-9: Manual verification required: confirm all old references have been removed.

The repository could not be accessed to verify that no references to UseUniqueEnumValueNames, useUniqueEnumValueNames, or use_unique_enum_value_names remain in the codebase. Please run the provided search commands locally or share the repository context so this can be verified.

crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rs (1)

7-7: Rename is complete and consistent throughout the codebase.

All references to the old rule name have been successfully replaced. The import, struct name, rule configuration, implementation, and type alias are all correctly updated, and no old name patterns remain anywhere in the repository.

crates/biome_rule_options/src/no_duplicate_field_definition_names.rs (1)

6-6: LGTM!

Clean rename with all required derives and serde attributes in place.

crates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rs (1)

12-157: Excellent consistency throughout the rename.

All references to the rule, query types, options, and variants have been updated systematically. The no prefix aligns well with the rule's intent to forbid duplicate field names.

Comment thread .changeset/cruel-mice-obey.md

@dyc3 dyc3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did we release any of these rules in a patch? If so, we need to at least provide a migration for users to use.

@Netail

Netail commented Jan 8, 2026

Copy link
Copy Markdown
Member Author

Did we release any of these rules in a patch? If so, we need to at least provide a migration for users to use.

Yup they have been release in a patch. Ema did say we can do whatever we want as it's nursery and a migration is optional; https://discord.com/channels/1132231889290285117/1132602754276274216/1458492263033213123

@ematipico

Copy link
Copy Markdown
Member

I did, but also said to add a migration :)

It's really easy

https://github.com/biomejs/biome/blob/main/crates%2Fbiome_migrate%2Fsrc%2Fanalyzers%2Frule_mover.rs#L26-L29

"@biomejs/biome": patch
---

Renamed the following GraphQL nursery rules to match the Biome standard:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now update the changset, and say that users can run biome migrate, to handle this in an automated way

Comment thread .changeset/cruel-mice-obey.md Outdated
Co-authored-by: Emanuele Stoppa <my.burning@gmail.com>
@Netail Netail merged commit 251b47b into biomejs:main Jan 9, 2026
19 checks passed
@Netail Netail deleted the chore/rename-graphql-nursery-rules branch January 9, 2026 10:37
@github-actions github-actions Bot mentioned this pull request Jan 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-Diagnostic Area: diagnostocis A-Linter Area: linter A-Project Area: project

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants