biome-code-review
Use only for reviewing completed Biome PRs, branches, commit ranges, diffs, or working trees against business logic and requirements. Excludes broad…
Use this skill whenever writing or editing Rust `//`, `///`, or `//!` comments in Biome, including comments added incidentally and end-user rustdoc inside lint/assist declarations. For lint/assist rustdoc, also load lint-rule-development for content requirements. Do not use for
$ npx -y skills add biomejs/biome --skill doc-comments --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/doc-commentsContext preview
The summary Claude sees to decide when to auto-load this skill.
Use this skill whenever writing or editing Rust `//`, `///`, or `//!` comments in Biome, including comments added incidentally and end-user rustdoc inside lint/assist declarations. For lint/assist rustdoc, also load lint-rule-development for content requirements. Do not use for
name: doc-comments description: Use this skill whenever writing or editing Rust `//`, `///`, or `//!` comments in Biome, including comments added incidentally and end-user rustdoc inside lint/assist declarations. For lint/assist rustdoc, also load lint-rule-development for content requirements. Do not use for formatter handling of comments in user code. compatibility: Designed for coding agents working on the Biome codebase (github.com/biomejs/biome).
Developer-facing comments and doc comments in this repository are read by contributors, months or years after they were written, with none of the context you have right now. This skill defines who that reader is, what each kind of comment is for, and which patterns are banned.
**Scope boundary:** rustdoc inside `declare_lint_rule!` / `declare_assist_rule!` blocks is end-user documentation generated into the website. Load this skill for comment hygiene, but use [lint-rule-development](../lint-rule-development/SKILL.md) for the audience, content structure, examples, and option documentation. Its content rules take precedence for those blocks.
For developer-facing comments, write for a Biome contributor who is competent in Rust but has **no access to your current context**: not this conversation, not the pull request, not the issue, not the diff. They see only the repository at HEAD.
Two consequences follow directly:
1. **Never narrate change history.** Words like "now", "previously", "no longer", "the new approach" are meaningless at HEAD, where only one approach exists. State how the code works, not how it came to be. 2. **Never address the reviewer.** A comment that argues your change is correct ("this properly handles X") belongs in the PR description, not in the source. The comment must justify the code as it stands, permanently.
| Kind | Job | Contains | | ---- | --- | -------- | | `//!` module docs | Explanation | Why the module exists, core concepts and terminology, how the pieces relate, design rationale | | `///` item docs | Reference | The contract: behavior, inputs and outputs, invariants, panics, errors. Neutral and factual | | `//` inline comments | Rationale | Only what the code cannot say: constraints, workarounds (with issue links), non-obvious coupling, why the obvious alternative is wrong |
Do not mix the jobs. Implementation details do not belong in `///` docs — put them as `//` comments inside the body. The contract does not belong scattered across inline comments — put it on the item.
Before writing any comment, ask: **does this state something the reader cannot recover from the code itself?**
write the comment. If the name fails to carry it, improve the name.
coupling to code elsewhere, a workaround with a link, surprising behavior of a dependency, a term of art the module defines.
When editing later, the same test applies in reverse: a comment that no longer passes it should be deleted, not left to rot.
Write documentation for a human reader, not as a translation of the implementation.
accomplishes.
in the same paragraph.
fallback behavior, work limits, ambiguous results, overload ordering, and conditions that return `None`, `Unknown`, or an indeterminate result.
the behavior.
Add an example when the behavior depends on relationships that the function signature cannot show clearly. Common cases include:
Introduce the example before the code block. State what the example demonstrates and what result is expected.
Keep snippets minimal and self-contained.
Module documentation should describe a durable concept or design reason. Do not list individual functions or queries merely to summarize the file. Such lists become stale as items are added or renamed. If the module has no durable concept to explain, use a brief one-line description.
**Narrating the next line.** Delete these on sight:
// Increment the generation counter generation += 1;
**Change-history narration.** Rewrite as present-tense rationale:
// BAD: We now intern types instead of cloning them. // GOOD: Interning avoids cloning these types on every lookup.
**Reviewer-addressed justification.** Move the argument to the PR:
// BAD: This correctly handles the overload case from the bug report. // GOOD: Overloads are matched by arity before parameter types, so a // partial-arity call cannot select the wrong candidate.
**Restated rustdoc.** A `///` doc that rewords the item name says nothing:
// BAD: /// Handles the type inference. fn infer_types(...) // GOOD: /// Infers the type of `expr` in the scope of `module`, returning /// `TypeData::Unknown` when the expression references an unresolved import. fn infer_types(...)
**Vague hedging.** "Some cases", "various reasons", "handles edge cases", "etc." — either name them or drop the sentence.
**Ad-hoc section banners** (`// ----- helpers -----`, `// ==== TYPES ====`). For grouping in long files, use the region comment pattern below instead.
Long files group related items
A toolchain for web projects, aimed to provide functionalities to maintain them. Biome offers formatter and linter, usable via CLI and LSP.
Repo: biomejs/biome
Use only for reviewing completed Biome PRs, branches, commit ranges, diffs, or working trees against business logic and requirements. Excludes broad…
Use this skill when a Biome change may affect users and you must decide whether it needs a changeset, choose the release level, or create and edit…
Use this skill when designing or implementing Biome user-facing diagnostic presentation or APIs, including messages, advice, markup, details, code frames,…
Use this skill when `biome migrate eslint` must preserve configurable ESLint rule options through source-option models, Biome conversions, typed rule variants,…
Use this skill whenever implementing or debugging Biome formatter behavior, IR composition, node rules, layout selection, source-comment handling, verbatim…
Use this skill when creating or modifying Biome lint rules or assists, including analyzer queries, semantic bindings, rule state, code actions, fix safety,…