biome
Skill2 starsChanged 3 months agoMITView on GitHub
Use when setting up or running linting and formatting in a JavaScript or TypeScript project with Biome — the single fast Rust tool that lints, formats, and organizes imports, replacing the ESLint + Prettier pair (the JS analog of Ruff). Covers installing Biome v2, the biome.json config (formatter, linter rule groups, the assist/import-organize actions, VCS integration, overrides, monorepo extends), the CLI (biome check --write, biome ci for CI), migrating from ESLint/Prettier, the v1->v2 deltas (e.g. --apply became --write), and authoring custom lint rules as GritQL plugins. Use when adding a lint/format gate, writing or fixing a biome.json, or porting an ESLint/Prettier setup. Not the Turborepo task wiring (compose with that skill).
- Installs packages
5 other projects use a version of this.
Adopted by
Most recently taken up by
- G1Joshi/Agent-Skillstheir own version, first seen Oct 13, 2026
- Gram-ax/gramaxtheir own version, first seen Oct 8, 2026
- casoon/ai-agent-configtheir own version, first seen Sep 27, 2026
- tuanductran/hr-skillstheir own version, first seen Sep 9, 2026
- moabualruz/fulcrumtheir own version, first seen Apr 28, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- Gram-ax/gramax★ 609same name
- tuanductran/hr-skills★ 58same name
- G1Joshi/Agent-Skills★ 15same name
- moabualruz/fulcrum★ 4same name
- casoon/ai-agent-config★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository77 other files it gives its agents.
- alembicSkill
- atlassian-rest-opsSkill
- authoring-api-referenceSkill
- authoring-api-specSkill
- authoring-architecture-docSkill
- authoring-data-modelSkill
- authoring-design-systemSkill
- authoring-developer-guideSkill
- authoring-feature-specSkill
- authoring-hi-fiSkill
- authoring-prdSkill
- authoring-release-runbookSkill
- authoring-technical-designSkill
- authoring-test-planSkill
- authoring-user-flowsSkill
- authoring-user-guideSkill
- authoring-wireframesSkill
- cloudflare-pages-opsSkill
- code-prior-art-surveySkill
- content-template-gatewaySkill
- design-reviewSkill
- external-content-sanitizerSkill
- github-cli-opsSkill
- integrations-prior-art-surveySkill
- jenkins-rest-opsSkill
- market-competitive-prior-art-surveySkill
- ml-prior-art-surveySkill
- motion-reactSkill
- netlify-opsSkill
- openapi-ts-clientSkill
- platform-ecosystem-prior-art-surveySkill
- polyglot-git-hooksSkill
- project-document-discoverySkill
- pydantic-v2Skill
- python-monorepo-architectureSkill
- react-component-testingSkill
- regulatory-prior-art-surveySkill
- rest-api-designSkill
- reviewing-api-referenceSkill
- reviewing-api-specSkill
- reviewing-architecture-docSkill
- reviewing-code-prior-art-surveySkill
- reviewing-data-modelSkill
- reviewing-design-systemSkill
- reviewing-developer-guideSkill
- reviewing-document-discoverySkill
- reviewing-document-setSkill
- reviewing-feature-specSkill
- reviewing-hi-fiSkill
- reviewing-integrations-prior-art-surveySkill
- reviewing-market-competitive-prior-art-surveySkill
- reviewing-ml-prior-art-surveySkill
- reviewing-platform-ecosystem-prior-art-surveySkill
- reviewing-prdSkill
- reviewing-regulatory-prior-art-surveySkill
- reviewing-release-runbookSkill
- reviewing-scale-prior-art-surveySkill
- reviewing-security-prior-art-surveySkill
- reviewing-technical-designSkill
- reviewing-test-planSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
3 rules. 0 are common, 1 is distinctive, and 2 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 87
Use biome ci in CI (the analog of ruff check), never check --write (which mutates).
- Very specific: line 114
Start from rules.recommended and tighten per rule group as needed.
- Distinctive: line 128
Reaching for a GritQL plugin when a built-in rule exists: Check the rule groups first.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
biome — SKILL.md
Variant: standard · When to use: linting and formatting a JS/TS project with Biome v2.
Overview
Biome is a single Rust binary that lints, formats, and organizes imports for JavaScript, TypeScript, JSX, JSON, CSS, and GraphQL — one tool and one biome.json in place of the ESLint + Prettier stack. It is the JS/TS analog of Python's ruff: fast, opinionated defaults, one config. This skill covers installing Biome (v2), writing biome.json, the current CLI (including the biome ci gate), migrating an existing ESLint/Prettier setup, the v1→v2 changes that trip up stale knowledge, and authoring custom lint rules as GritQL plugins. Verified against Biome v2; confirm the exact current version when you install.
When to activate
- ✅ Adding lint + format to a JS/TS project (new or replacing ESLint/Prettier).
- ✅ Writing or fixing a
biome.json(formatter, linter rules, import organizing, VCS, overrides). - ✅ Wiring a lint/format CI gate.
- ✅ Migrating from ESLint/Prettier, or authoring a custom rule as a GritQL plugin.
Do NOT activate when:
- You need to wire Biome as a task in a Turborepo/pnpm pipeline — compose with the
turboreposkill; this skill owns Biome itself, not the task graph. - The project is Python — that's
ruff(Biome is the JS/TS counterpart, named here only as the analog).
Workflow
Step 1: Install + init
npm install --save-dev --save-exact @biomejs/biome # i.e. -D -E
npx biome init # writes biome.jsonStep 2: Configure biome.json
{
"$schema": "https://biomejs.dev/schemas/<version>/schema.json",
"vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true },
"files": { "includes": ["src/**", "!**/dist"] },
"formatter": { "enabled": true, "indentStyle": "space", "lineWidth": 100 },
"linter": { "enabled": true, "rules": { "recommended": true } },
"assist": { "enabled": true, "actions": { "source": { "organizeImports": "on" } } }
}(biome init writes $schema with the version-pinned URL — don't ship the <version> literal.) Full schema — rule groups + linter.domains, language blocks, overrides, monorepo extends/root — in references/config.md.
Step 3: Run it
npx biome check --write . # lint + format + organize imports, apply SAFE fixes
npx biome check --write --unsafe . # also apply unsafe fixes
npx biome format --write . # format only; npx biome lint . # lint onlybiome check runs all three (format, lint, import sort). Full command/flag reference + the v1→v2 CLI deltas: references/cli.md.
Step 4: CI gate
npx biome ci . # read-only: format + lint + import-sort checks, never writesUse biome ci in CI (the analog of ruff check), never check --write (which mutates). Wire it as the lint/format job; defer the pipeline/caching to the turborepo skill.
Step 5: Migrate from ESLint / Prettier (if applicable)
npx biome migrate eslint --write # ports .eslintrc / flat config + .eslintignore
npx biome migrate prettier --write # ports .prettierrcDetails + caveats: references/migration-monorepo.md.
Step 6: Custom rules (optional) — GritQL plugins
Register a .grit plugin in biome.json plugins and write the pattern; full authoring guide (pattern syntax, register_diagnostic, a complete example, limitations) in references/gritql-plugins.md. Prefer a built-in rule first; reach for a plugin only when no rule covers the case.
Rules
Hard rules (never violate):
- Use the v2 CLI.
--write/--write --unsafeapply fixes; the v1--apply/--apply-unsafeare gone. Emitting--applyis the #1 stale-knowledge error — see Gotchas. biome ciis the CI gate, notcheck --write. CI must be read-only;check --writemutates the tree.- One
biome.jsonper project (useextendsfor nested/monorepo configs). Don't also run ESLint/Prettier for the same concerns — Biome replaces them.
Preferences (override-able):
- Biome's formatter defaults to tabs and a 2-space width with
lineWidth80. If the team standardizes on spaces (e.g. coming from Prettier), setformatter.indentStyle/lineWidthexplicitly. - Enable
vcs.useIgnoreFileso Biome respects.gitignore. - Start from
rules.recommendedand tighten per rule group as needed.
Gotchas
--applywas removed (v1→v2). v1 usedbiome check --apply/--apply-unsafe; v2 uses--write/--write --unsafe(--fixis an alias of--write). Stale snippets and old muscle memory emit--apply, which now errors. Seereferences/cli.md.- Import organizing moved. v1's top-level
organizeImportsis gone; in v2 it's an assist action underassist.actions.source.organizeImports. A v1-shaped config silently won't organize imports. include/ignore→includes(v2). v2'sfiles.includesis a single glob list using!-prefixed negations, replacing v1's separateinclude/ignore. A v1-shapedfilesblock is wrong.- Formatter default is tabs. Prettier users expecting spaces get tabs unless they set
indentStyle: "space".biome migrate prettieraligns it, but a freshbiome initdoes not. - GritQL plugins target JS and CSS only (currently). A plugin for another language won't run.
Anti-patterns
- Running ESLint + Prettier AND Biome for the same files. Double tooling, conflicting fixes, slower. Biome replaces them — migrate, don't stack.
biome check --writein CI. CI mutates the tree and can mask drift. Usebiome ci.- Reaching for a GritQL plugin when a built-in rule exists. Check the rule groups first; plugins are for genuinely custom checks.
- Duplicating the Turborepo pipeline here. Wiring Biome as a cached task belongs to the
turboreposkill; this skill stops at the Biome command.
Output
A configured biome.json plus the lint/format commands wired locally (biome check --write) and in CI (biome ci) — optionally migrated from an ESLint/Prettier setup and extended with custom GritQL rules. The consumer is the developer workflow and the CI gate that enforce a consistent, lint-clean codebase.
Related
turborepo— runbiome ci/checkas a cached pipeline task; this skill owns Biome, that one owns the task graph.vite— the build the linted/formatted code typically ships in.ruff— the Python lint+format analog Biome mirrors conceptually (different tool).
Progressive disclosure
references/config.md— load when writingbiome.json: full top-level schema, formatter/linter/assist options, rule groups,overrides, monorepoextends/root, and the v2 config-shape changes.references/cli.md— load when running Biome or wiring CI: all commands + flags, the--write/cisemantics, and the v1→v2 CLI delta table.references/gritql-plugins.md— load when authoring a custom rule: plugin registration, GritQL pattern syntax,register_diagnostic, a complete example, and limitations.references/migration-monorepo.md— load when migrating from ESLint/Prettier or configuring a monorepo: themigratecommands + caveats and theextends/rootmonorepo model.references/sources.md— research provenance.
Body budget
description≤ 1,024 chars; body ≤ ~500 lines / 5,000 tokens; heavy content inreferences/.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

