biome: Skill for Claude Code

.claude/skills/eslint-migrate-options/SKILL.md

eslint-migrate-options is a skill for Claude Code from biomejs/biome. It costs 53 tokens per session (1,139 once invoked), scanned A, original, Apache-2.0.

Guidance for making Biome's ESLint migration preserve configurable rule settings. ESLint is a JavaScript and TypeScript linting tool, and migration converts its configuration into Biome configuration.

In plain words
What is it for?
Use it when adding or updating migration support for ESLint rule options that map to existing Biome rules.
Why use it?
It prevents migration from keeping only whether a rule is enabled while losing meaningful options. It defines how source settings are read, converted, and installed in Biome.

Skill for Claude Code

Written for Claude Code: installed under .claude/.

This is biomejs/biome's own configuration. It tells Claude Code how to work on biome itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything biome configures →

About the project

Biome is a web-development toolchain that formats and checks source code for languages such as JavaScript, TypeScript, JSX, and CSS. Developers use its command-line and language-server interfaces to maintain code quality in web projects. Catalogue add-ons extend workflows around the toolchain.

biomejs/biome · 25,752 stars · on GitHub · biomejs.dev

Reuse

Borrowing it

Nothing to install: this file belongs to biomejs/biome. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/biomejs/biome/main/.claude/skills/eslint-migrate-options/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/biomejs/biome

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for eslint-migrate-options

README.md
[![agentmods](https://agentmods.dev/badge/skills/biomejs/biome/eslint-migrate-options/github.svg)](https://agentmods.dev/skills/biomejs/biome/eslint-migrate-options)
Your own site
<a href="https://agentmods.dev/skills/biomejs/biome/eslint-migrate-options"><img src="https://agentmods.dev/badge/skills/biomejs/biome/eslint-migrate-options/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for eslint-migrate-options

Your own site · 80×15
<a href="https://agentmods.dev/skills/biomejs/biome/eslint-migrate-options"><img src="https://agentmods.dev/badge/skills/biomejs/biome/eslint-migrate-options.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 53 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,139 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • Snyk pass 7 Sept 2026
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00053 $0.01139
Opus 5 $0.00026 $0.00570
Sonnet 5 $0.00011 $0.00228
Haiku 4.5 $0.00005 $0.00114

Measured 10d ago against content hash 70b39d6e6a17, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

Grade A, and why

eslint-migrate-options scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/eslint-migrate-options/SKILL.md · 133 lines

How it starts

The opening of the file, as written. The whole thing — 133 lines — stays where its author put it; the contents beside it link to each section on GitHub.

ESLint Option Migration

Use a custom migrator only when an existing Biome rule should preserve meaningful ESLint options. Severity-only migration belongs to the generated rule mapping.

Preconditions

Confirm before editing:

  1. The Biome rule and its option type already exist.
  2. Rule metadata identifies the ESLint source rule.
  3. Generated severity migration already exists or will be regenerated.
  4. Official ESLint or plugin documentation establishes the exact option shape and defaults.
  5. The supported Biome semantics are clear, including unsupported source options.

Load lint-rule-development when the Biome rule or its own options still need implementation.

Pipeline

Custom migration has four parts:

  1. A plugin-specific type deserializes the ESLint payload.
  2. A conversion maps source semantics into the Biome option type.
  3. The shared ESLint Rule enum recognizes the rule as a typed variant.
  4. migrate_eslint_rule() installs the resulting Biome configuration after common severity handling.

Key Files

File Responsibility
eslint_eslint.rs Shared config model, Rule, RuleConf<T>, and dispatch
eslint_unicorn.rs Unicorn option types and conversions
eslint_typescript.rs TypeScript ESLint option types and conversions
eslint_jsxa11y.rs JSX accessibility option types and conversions
eslint_to_biome.rs Main conversion and custom migration arms
eslint_any_rule_to_biome.rs Generated severity mapping
tests/specs/migrate_eslint/ Fixture-driven migration snapshots

Use the plugin-specific module matching the source rule and inspect a current migrator with a similar payload and Biome configuration type.

Model Source Options

Model the ESLint JSON shape rather than the Biome destination shape.

  • Preserve source nesting until conversion.
  • Use optional fields where the source allows omission.
  • Match current deserialization naming and default conventions from neighboring option types.
  • Model fields needed to deserialize supported real configurations.
  • Verify unsupported source fields do not make valid configurations fail; whether they need explicit fields depends on the current deserializer contract.

Read the full file on GitHub · 133 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 133 lines · 53 tokens per session scan A 70b39d6e6a17

Subscribe to this mod's changes

eslint-migrate-options is a skill published in the GitHub repository biomejs/biome (25,752 stars, last pushed today), licensed Apache-2.0. It adds 53 tokens to every session and 1,139 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.