Complete Biome toolchain guidance for real repository workflows. Use when users ask to configure biome.json, run lint or format commands, migrate from ESLint or Prettier, tune rule severity, fix formatter drift, or replace mixed ESLint+Prettier pipelines with Biome-only workflows.
72
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Use this skill when the request includes:
references/.bunx @biomejs/biome init.bunx @biomejs/biome check ..
bunx @biomejs/biome check . --write.
biome check . and confirm reduced error count. If errors persist, review unsupported rules or migration conflicts in references/migration-eslint-prettier.md.bunx @biomejs/biome check . --error-on-warnings.
Error Recovery: If biome check fails after migration, isolate conflicting rules by temporarily disabling rule groups in biome.json linter section, then re-enable one group at a time to identify the source.
bunx @biomejs/biome initExpected result: biome.json exists.
bunx @biomejs/biome check .Expected result: diagnostics printed with file paths.
bunx @biomejs/biome check . --writeExpected result: fixable issues are rewritten.
bunx @biomejs/biome format . --writeExpected result: formatting is normalized.
bunx @biomejs/biome check src/index.tsExpected result: file-level diagnostics only.
bunx @biomejs/biome check . --error-on-warningsExpected result: non-zero exit when warnings or errors exist.
WHY: Competing rules create contradictory output and noisy reviews.
BAD: ESLint and Biome both lint src/**/*.ts.
GOOD: Route TS linting and formatting through Biome only.
Consequence: Duplicate diagnostics and unstable CI outcomes.
WHY: Different formatting models cause churn in every commit.
BAD: prettier --write . and biome format . --write in the same pipeline.
GOOD: Keep only biome format . --write for supported files.
Consequence: Constant formatting diffs and merge friction.
biome.json customization after initWHY: Defaults may not match repository conventions.
BAD: Commit default config without reviewing formatter/linter settings.
GOOD: Define formatter width, linter domains, and VCS ignores explicitly.
Consequence: Inconsistent style and avoidable lint regressions.
WHY: Broad suppressions hide real defects and debt.
BAD: Disable full rule groups without rationale.
GOOD: Add narrow suppressions with a reason and follow-up ticket.
Consequence: Quality silently degrades over time.
WHY: leftover scripts and dev dependencies keep two sources of truth alive and invite the conflicts the migration was meant to remove.
BAD: package.json still has eslint and prettier scripts and packages beside the new Biome scripts.
GOOD: remove the old scripts and dev dependencies and record the removal in the migration notes.
--error-on-warningsWHY: without the flag, warnings pass silently and the CI result no longer matches the strict local expectation.
BAD: bunx @biomejs/biome check . as the CI step.
GOOD: bunx @biomejs/biome check . --error-on-warnings.
WHY: an unexplained suppression cannot be reviewed or retired, so it becomes permanent debt.
BAD: a bare ignore comment with no explanation.
GOOD: an inline biome-ignore comment naming the rule, the reason and the follow-up ticket.
WHY: enabling all groups together hides which one conflicts, so the source of the failure is never found.
BAD: disable the whole linter, then switch everything back on in one step.
GOOD: disable rule groups in the linter section, then re-enable one group at a time until the failure returns.
WHY: a fix that was never verified may leave errors behind, and an unverified exit code says nothing about CI.
BAD: applying --write and reporting the repository clean.
GOOD: re-run biome check ., confirm the error count dropped, and confirm exit code 0 with --error-on-warnings.
| Topic | Reference | When to Use |
|---|---|---|
| Configuration | references/config-biome-json.md | Full biome.json schema, formatter width, linter domains and VCS ignore patterns |
| Lint rules | references/linting-rule-categories.md | Rule groups, severity levels and category-level enable or disable patterns |
| Formatter | references/formatter-options.md | Indent style, line width, quote style and language-specific overrides |
| Migration | references/migration-eslint-prettier.md | Step-by-step migration, rule mapping and conflict resolution |
pantheon-org/tekhne
48ef197
Also appears in
last in sync Aug 28, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.