chore: rename GraphQL nursery rules#8712
Conversation
🦋 Changeset detectedLatest commit: 1879f04 The changes in this PR will be included in the next version bump. This PR includes changesets to release 13 packages
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 |
WalkthroughThis PR renames six GraphQL nursery lint rules and their option types/modules from Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. 📜 Recent review detailsConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ 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)
Comment |
There was a problem hiding this comment.
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
⛔ Files ignored due to path filters (17)
crates/biome_configuration/src/analyzer/linter/rules.rsis excluded by!**/rules.rsand included by**crates/biome_diagnostics_categories/src/categories.rsis excluded by!**/categories.rsand included by**crates/biome_graphql_analyze/src/lint/nursery.rsis excluded by!**/nursery.rsand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/valid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/valid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/valid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/valid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/valid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/valid.graphql.snapis excluded by!**/*.snapand included by**packages/@biomejs/backend-jsonrpc/src/workspace.tsis excluded by!**/backend-jsonrpc/src/workspace.tsand included by**packages/@biomejs/biome/configuration_schema.jsonis excluded by!**/configuration_schema.jsonand included by**
📒 Files selected for processing (27)
.changeset/cruel-mice-obey.md.changeset/free-cars-take.mdcrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/valid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/valid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/valid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/valid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/valid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/valid.graphqlcrates/biome_rule_options/src/lib.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_graphql_operation_name.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/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 thedbg!()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.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs.changeset/free-cars-take.mdcrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rs.changeset/free-cars-take.mdcrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/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.rscrates/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.rscrates/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.rscrates/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.rscrates/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
useUniqueGraphqlOperationNamerule be kept with adeprecatedfield 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
nextbranch rather thanmain.Based on learnings, rules that are deprecated should include a
deprecatedfield with guidance on the replacement rule, and end-user facing changes typically target thenextbranch.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.rsapply 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
UseUniqueArgumentNamestoNoDuplicateArgumentNamescorrectly follows the Biome naming convention—using thenoprefix 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. Theversion: "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
NoDuplicateVariableNameswith 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
NoDuplicateFieldDefinitionNamesincluding 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
NoDuplicateFieldDefinitionNamesQueryunion and all three match arms (GraphqlObjectTypeDefinition,GraphqlInterfaceTypeDefinition,GraphqlInputObjectTypeDefinition) are consistently renamed.Also applies to: 156-157
CodSpeed Performance ReportMerging this PR will not alter performanceComparing Summary
Footnotes
|
f5fabdb to
ff723f5
Compare
There was a problem hiding this comment.
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
⛔ Files ignored due to path filters (17)
crates/biome_configuration/src/analyzer/linter/rules.rsis excluded by!**/rules.rsand included by**crates/biome_diagnostics_categories/src/categories.rsis excluded by!**/categories.rsand included by**crates/biome_graphql_analyze/src/lint/nursery.rsis excluded by!**/nursery.rsand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/valid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/valid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/valid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/valid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/valid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/invalid.graphql.snapis excluded by!**/*.snapand included by**crates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/valid.graphql.snapis excluded by!**/*.snapand included by**packages/@biomejs/backend-jsonrpc/src/workspace.tsis excluded by!**/backend-jsonrpc/src/workspace.tsand included by**packages/@biomejs/biome/configuration_schema.jsonis excluded by!**/configuration_schema.jsonand included by**
📒 Files selected for processing (27)
.changeset/cruel-mice-obey.md.changeset/free-cars-take.mdcrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_argument_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_enum_value_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_input_field_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_variable_names.rscrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateArgumentNames/valid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateEnumValueNames/valid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateFieldDefinitionNames/valid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateGraphqlOperationName/valid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateInputFieldNames/valid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/invalid.graphqlcrates/biome_graphql_analyze/tests/specs/nursery/noDuplicateVariableNames/valid.graphqlcrates/biome_rule_options/src/lib.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_enum_value_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_graphql_operation_name.rscrates/biome_rule_options/src/no_duplicate_input_field_names.rscrates/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 thedbg!()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.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rs.changeset/cruel-mice-obey.mdcrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_argument_names.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_rule_options/src/no_duplicate_variable_names.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/biome_rule_options/src/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_graphql_operation_name.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/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.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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.rscrates/biome_graphql_analyze/src/lint/nursery/no_duplicate_field_definition_names.rscrates/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
UseUniqueGraphqlOperationNameOptionstoNoDuplicateGraphqlOperationNameOptionscorrectly follows the convention that rules forbidding a concept should use thenoprefix. 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
noprefix 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, oruse_unique_enum_value_namesremain 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
noprefix aligns well with the rule's intent to forbid duplicate field names.
dyc3
left a comment
There was a problem hiding this comment.
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 |
|
I did, but also said to add a migration :) It's really easy |
| "@biomejs/biome": patch | ||
| --- | ||
|
|
||
| Renamed the following GraphQL nursery rules to match the Biome standard: |
There was a problem hiding this comment.
Now update the changset, and say that users can run biome migrate, to handle this in an automated way
Co-authored-by: Emanuele Stoppa <my.burning@gmail.com>
Summary
Renamed some GraphQL nursery rules to match the Biome standard
Test Plan
Docs