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 when implementing or modifying Biome parser behavior, including `.ungram` grammars, lexers, token sources, parse rules, separated lists, error recovery, and parser fixtures. Do not use merely for consuming an existing AST/CST.
$ npx -y skills add biomejs/biome --skill parser-development --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/parser-developmentContext preview
The summary Claude sees to decide when to auto-load this skill.
Use this skill when implementing or modifying Biome parser behavior, including `.ungram` grammars, lexers, token sources, parse rules, separated lists, error recovery, and parser fixtures. Do not use merely for consuming an existing AST/CST.
name: parser-development description: Use this skill when implementing or modifying Biome parser behavior, including `.ungram` grammars, lexers, token sources, parse rules, separated lists, error recovery, and parser fixtures. Do not use merely for consuming an existing AST/CST. compatibility: Designed for coding agents working on the Biome codebase (github.com/biomejs/biome).
Use `crates/biome_parser/CONTRIBUTING.md` as the canonical parser guide. Read the section matching the current grammar, lexer, parse-rule, or recovery task.
1. Inspect the language grammar and neighboring parse rules. 2. Add or adjust focused `ok/` and `error/` fixtures before changing recovery behavior. 3. Update the grammar when the typed tree shape changes. 4. Regenerate syntax and factory artifacts after `.ungram` changes. 5. Implement parser logic with explicit presence tests and bounded recovery. 6. Run the language parser's focused tests and inspect snapshots.
Grammar files under `xtask/codegen/` define typed syntax nodes and fields. Follow existing language naming:
After a grammar change, run:
just gen-grammar <lang>
This updates generated syntax nodes, syntax kinds, factories, macros, and language-specific mappings. Parser rules remain hand-written.
A parse function returns `Absent` only when it has consumed no tokens. Test the first distinguishing token before calling `start`, `bump`, `eat`, `expect`, or another parser that can advance.
Use:
Do not use backtracking where a bounded lookahead or a more precise presence test can distinguish the syntax.
Recovery must preserve following valid syntax and produce a bogus node permitted by the grammar at that position.
A recovery set normally includes the nearest relevant:
Do not copy a recovery set from an unrelated grammar position. Verify which tokens the caller expects after the failed parse.
Use the parser infrastructure's list traits instead of open-coded loops when their contract matches the grammar.
For separated lists, verify:
Follow the current `Lexer` and buffered token-source traits from `biome_parser`; do not copy an old trait implementation from a skill or issue.
Load `testing-codegen` for parser quick tests and snapshot mechanics.
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 whenever writing or editing Rust `//`, `///`, or `//!` comments in Biome, including comments added incidentally and end-user rustdoc inside…
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…