Official agent skill

Parser Development

by biomejs in biomejs/biome

A skill your agent uses when implementing or modifying Biome parser behavior, including .ungram grammars, lexers, token sources, parse rules, separated lists, error recovery, and parser fixtures.

OfficialApache-2.0Auto-check passedDevelopment

Install Parser Development

skills CLI
$ npx skills add biomejs/biome --skill parser-development -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install biomejs/biome parser-development --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/biomejs/biome.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/parser-development .claude/skills/parser-development && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
parser-development
GitHub stars
26k
Token cost
~1.2k tokens
SKILL.md length
563 words
Files
1
Skills in repo
12
Repo updated
First seen
Licence
Apache-2.0

At a glance

A skill your agent uses when implementing or modifying Biome parser behavior, including .ungram grammars, lexers, token sources, parse rules, separated lists, error recovery, and parser fixtures.

  • Works in 6 steps: Inspect the language grammar and… → Add or adjust focused ok/ and error/… → Update the grammar when the typed tree… → …
  • Modifying Biome parser behavior
  • SKILL.md covers Workflow, Grammar, Presence Contract and Error Recovery, plus 5 more sections
  • Calls just

What it does

Parser Development is an agent skill from biomejs/biome, published by the product's own GitHub organization. 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.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Designed for coding agents working on the Biome codebase (github.com/biomejs/biome).

It sits in Development, covering Linting and formatting. The repository describes itself as: A toolchain for web projects, aimed to provide functionalities to maintain them. Biome offers formatter and linter, usable via CLI and LSP. The licence is Apache-2.0.

When your agent uses it

  • Modifying Biome parser behavior
  • Including .ungram grammars
  • Separated lists
  • Parser fixtures

Example prompts

  • “/parser-development”

Requirements

  • Compatibility (from SKILL.md): Designed for coding agents working on the Biome codebase (github.com/biomejs/biome).

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  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.

What it can do on your machine

Read from SKILL.md and the folder at commit c870caa. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • just

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for coding agents working on the Biome codebase (github.com/biomejs/biome).

    From compatibility in the SKILL.md frontmatter.

Context cost

Parser Development loads about 1.2k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 563 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~65
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from biomejs/biome at commit c870caa, republished under its Apache-2.0 licence (© biomejs). 563 words, ~1,156 tokens.

Download SKILL.mdSave it as .claude/skills/parser-development/SKILL.md (or your agent's skills folder).
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).

Parser Development

Use crates/biome_parser/CONTRIBUTING.md as the canonical parser guide. Read the section matching the current grammar, lexer, parse-rule, or recovery task.

Workflow

  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

Grammar files under xtask/codegen/ define typed syntax nodes and fields. Follow existing language naming:

  • prefix nodes with the language name;
  • name unions with Any;
  • use Bogus nodes for recoverable invalid syntax;
  • end list node names with List;
  • represent lists as present, possibly empty nodes rather than optional fields.

After a grammar change, run:

shell
just gen-grammar <lang>

This updates generated syntax nodes, syntax kinds, factories, macros, and language-specific mappings. Parser rules remain hand-written.

Presence Contract

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:

  • expect for required tokens that should create a diagnostic when absent;
  • eat for optional tokens;
  • .ok() for optional nodes;
  • .or_add_diagnostic(...) for required nodes;
  • typed recovery for malformed nodes that should remain in the CST.

Do not use backtracking where a bounded lookahead or a more precise presence test can distinguish the syntax.

Error Recovery

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:

  • list separator;
  • list or block terminator;
  • statement boundary;
  • token that starts the next valid construct.

Do not copy a recovery set from an unrelated grammar position. Verify which tokens the caller expects after the failed parse.

Lists

Use the parser infrastructure's list traits instead of open-coded loops when their contract matches the grammar.

For separated lists, verify:

  • the parser recognizes the enclosing terminator;
  • separator handling agrees with trailing-separator grammar;
  • a malformed element makes progress or stops;
  • recovery cannot consume the enclosing terminator;
  • an empty list still produces the required list node.
Show full SKILL.md (206 more words)Show less

Lexer and Token Source

Follow the current Lexer and buffered token-source traits from biome_parser; do not copy an old trait implementation from a skill or issue.

  • Use checked byte and character accessors supplied by the lexer infrastructure.
  • Keep lexing context explicit where the same bytes have context-dependent meaning.
  • Ensure every lexer path advances or returns EOF.
  • Use &str lexer tests for valid multibyte characters and character-boundary/index behavior. Test malformed byte sequences only through an existing byte-oriented API.

Testing

Load testing-codegen for parser quick tests and snapshot mechanics.

  • Use the crate's quick_test to inspect a CST while developing.
  • Add persistent fixtures under the parser crate's current ok/ and error/ directories.
  • A parser bug fix needs the smallest fixture that failed before the change.
  • Recovery changes need malformed input followed by valid syntax to prove parsing resumes correctly.

Review Checklist

  • Absent paths consume no input.
  • Required nodes and tokens produce useful diagnostics.
  • Recovery emits a grammar-valid bogus node.
  • Every loop either advances or exits.
  • List recovery stops before the enclosing boundary.
  • The CST retains all source text, including malformed input.
  • Grammar changes include generated syntax and factory artifacts.
  • Valid and malformed fixtures exercise the changed path.

References

  • Parser guide: crates/biome_parser/CONTRIBUTING.md
  • Grammars: xtask/codegen/*.ungram
  • Parser infrastructure: crates/biome_parser/src/
  • Language implementations: crates/biome_*_parser/src/

© biomejs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/parser-development of biomejs/biome.

Open the folder on GitHubat commit c870caa

Compare with similar skills

Parser Development next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Parser Development compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Parser Development this skillbiomejs/biome26k—~1.2kAutomated safety check: PassApache-2.0
Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop5.3k1 repos~2.2kAutomated safety check: PassMIT
Summarise Ecosystem Resultsastral-sh/ruff50k1 repos~2.2kAutomated safety check: PassMIT
Minimizing Ty Ecosystem Changesastral-sh/ruff50k—~4.6kAutomated safety check: PassMIT
Babysit PR To Pass CIsgl-project/sglang37k2 repos~3kAutomated safety check: PassApache-2.0
Rust Best Practicesfarm-fe/farm5.6k3 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.

    5.3k GitHub starsUsed in 1 repo~2.2k tokens
    DevelopmentAuto-check passed
  • Official

    A skill your agent uses when a user says "summarise ecosystem results", "summarize this ty ecosystem report", "what changed in this ecosystem run?", or asks to summarise or summarize ty ecosystem…

    50k GitHub starsUsed in 1 repo~2.2k tokens
    DevelopmentAuto-check passed
  • Official

    A skill your agent uses when a user says "minimize this ty ecosystem change", "reproduce this ecosystem result", "investigate a primer difference", "investigate a mypyprimer difference"…

    50k GitHub stars~4.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Babysit PR To Pass CI

    sgl-project/sglang

    Start and persistently pursue a goal to babysit an SGLang pull request until selected GitHub Actions workflows pass on the latest PR head.

    37k GitHub starsUsed in 2 repos~3k tokens
    DevelopmentAuto-check passed
  • Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.

    5.6k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Go Pedantry

    chromedp/chromedp

    This skill should be used when the user is writing Go code and needs guidance on Go-specific pedantry: error wrapping with fmt.Errorf and %w, interface design (accept interfaces return structs)…

    13k GitHub stars~3.7k tokensUpdated 2 days ago
    DevelopmentAuto-check passed

More from biomejs/biome

All 12 skills in this repo
  • Changeset

    biomejs/biome

    Official

    A skill your agent uses when a Biome change may affect users and you must decide whether it needs a changeset, choose the release level, or create and edit .changeset/.md release-note text.

    26k GitHub stars~839 tokensUpdated today
    Auto-check passed
  • Doc Comments

    biomejs/biome

    Official

    A skill your agent uses whenever writing or editing Rust //, ///, or //!

    26k GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Official

    A skill your agent uses when biome migrate eslint must preserve configurable ESLint rule options through source-option models, Biome conversions, typed rule variants, and migration fixtures.

    26k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Official

    A skill your agent uses whenever implementing or debugging Biome formatter behavior, IR composition, node rules, layout selection, source-comment handling, verbatim formatting, idempotency, internal…

    26k GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Official

    A skill your agent uses when creating or modifying Biome lint rules or assists, including analyzer queries, semantic bindings, rule state, code actions, fix safety, options, registration, and…

    26k GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Promote Lint Rules

    biomejs/biome

    Official

    A skill your agent uses when promoting one or more Biome lint rules from nursery to stable groups, including promotion plans from GitHub issues, metadata changes, rule renames, generated…

    26k GitHub stars~948 tokensUpdated today
    Auto-check passed

Categories

Questions about Parser Development

What does Parser Development do?

A skill your agent uses when implementing or modifying Biome parser behavior, including .ungram grammars, lexers, token sources, parse rules, separated lists, error recovery, and parser fixtures. Parser Development is an agent skill from biomejs/biome, published by the product's own GitHub organization.ungram grammars, lexers, token sources, parse rules, separated lists, error recovery, and parser fixtures.

When should I use Parser Development?

Parser Development fits situations like: modifying Biome parser behavior; including .ungram grammars; separated lists; parser fixtures.

How do I install Parser Development in Claude Code?

Run `npx skills add biomejs/biome --skill parser-development -a claude-code`. Or copy the skill folder (.agents/skills/parser-development in biomejs/biome) into .claude/skills/parser-development in your project. Claude Code loads it when a task matches its description.

How do I install Parser Development in Codex?

Run `npx skills add biomejs/biome --skill parser-development -a codex`. Or copy the skill folder (.agents/skills/parser-development in biomejs/biome) into .agents/skills/parser-development in your project. Codex loads it when a task matches its description.

Can I use Parser Development in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add biomejs/biome --skill parser-development -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/parser-development, .gemini/skills/parser-development, .github/skills/parser-development and .opencode/skills/parser-development in your project.

What does Parser Development need to run?

Going by SKILL.md and its folder, Parser Development needs the command-line tools its instructions call (just). Compatibility (from SKILL.md): Designed for coding agents working on the Biome codebase (github.com/biomejs/biome)..

Does Parser Development access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Parser Development safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Parser Development use?

Parser Development is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Parser Development use?

About 1.2k tokens (SKILL.md is roughly 4.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Parser Development?

Skills that share tags, products or a category with Parser Development: Install Anti-Slop Oxlint Rules (dmmulroy/anti-slop, 5.3k stars), Summarise Ecosystem Results (astral-sh/ruff, 50k stars), Minimizing Ty Ecosystem Changes (astral-sh/ruff, 50k stars) and Babysit PR To Pass CI (sgl-project/sglang, 37k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Parser Development?

biomejs (a GitHub organization, an official publisher) maintains it in biomejs/biome, which has 25,910 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 8, 2026.

Source: biomejs/biome on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.