agentleFS
pantheon-orgpantheon-org/tekhne/skills/development/biome-complete/SKILL.md

biome-complete

Skill10 starsChanged 39 days agoMITView on GitHub

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.

The file

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 7 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this skill when the request includes:

    line 10
  2. Distinctive:

    Use one source of truth for linting and formatting.

    line 27
  3. Distinctive:

    Prefer deterministic commands and verifiable output.

    line 28
  4. Very specific:

    Keep SKILL.md short; move deep details to references/.

    line 29
  5. Very specific:

    Run checks and capture results: bunx @biomejs/biome check ..

    line 35
  6. Distinctive:

    Add targeted suppressions only when justified.

    line 39
  7. Very specific:

    Verify commands pass in local and CI contexts: bunx @biomejs/biome check .

    line 40
  8. Very specific:

    Error Recovery: If biome check fails after migration, isolate conflicting rules by temporarily disabling rule groups in biome.json linter …

    line 43
  9. Very specific:

    GOOD: Keep only biome format . --write for supported files.

    line 113
  10. Distinctive:

    BAD: Commit default config without reviewing formatter/linter settings.

    line 121
  11. Distinctive:

    GOOD: Add narrow suppressions with a reason and follow-up ticket.

    line 133
  12. Distinctive:

    GOOD: remove the old scripts and dev dependencies and record the removal in the migration notes.

    line 143

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Biome Complete Toolchain

When to Use

Use this skill when the request includes:

  • "set up Biome"
  • "configure biome.json"
  • "migrate from ESLint" or "migrate from Prettier"
  • "fix lint and format drift"
  • "run Biome in CI"
  • "tune rule severity" or add a targeted suppression

When Not to Use

  • The user asks for ESLint-only or Prettier-only solutions.
  • The work is about a language or file type Biome does not support.
  • The request concerns type checking or test running rather than linting and formatting.

Principles

  1. Use one source of truth for linting and formatting.
  2. Prefer deterministic commands and verifiable output.
  3. Keep SKILL.md short; move deep details to references/.

Deterministic Workflow

  1. Confirm scope: migration, config, lint, format, or CI.
  2. Initialize config if missing: bunx @biomejs/biome init.
  3. Run checks and capture results: bunx @biomejs/biome check ..
    • Verify: Confirm diagnostics are printed. If command fails, check Node.js version (≥14) and file permissions.
  4. Apply safe autofixes: bunx @biomejs/biome check . --write.
    • Verify: Re-run biome check . and confirm reduced error count. If errors persist, review unsupported rules or migration conflicts in references/migration-eslint-prettier.md.
  5. Add targeted suppressions only when justified.
  6. Verify commands pass in local and CI contexts: bunx @biomejs/biome check . --error-on-warnings.
    • Verify: Exit code 0 indicates success. If non-zero, review remaining diagnostics and address or document exceptions.

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.

Quick Commands

Initialize

bunx @biomejs/biome init

Expected result: biome.json exists.

Check repository

bunx @biomejs/biome check .

Expected result: diagnostics printed with file paths.

Apply safe fixes

bunx @biomejs/biome check . --write

Expected result: fixable issues are rewritten.

Format files

bunx @biomejs/biome format . --write

Expected result: formatting is normalized.

Check one file

bunx @biomejs/biome check src/index.ts

Expected result: file-level diagnostics only.

Run in CI

bunx @biomejs/biome check . --error-on-warnings

Expected result: non-zero exit when warnings or errors exist.

Anti-Patterns

NEVER run Biome and ESLint on the same files

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.

NEVER run Prettier and Biome formatter on the same files

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.

NEVER skip biome.json customization after init

WHY: 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.

NEVER blanket-ignore diagnostics to get green CI

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.

NEVER leave ESLint or Prettier wired in after migrating

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.

NEVER run the CI check without --error-on-warnings

WHY: 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.

NEVER add a suppression without a reason

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.

NEVER re-enable every rule group at once when isolating a failure

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.

NEVER declare success without re-running the check

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.

References

TopicReferenceWhen to Use
Configurationreferences/config-biome-json.mdFull biome.json schema, formatter width, linter domains and VCS ignore patterns
Lint rulesreferences/linting-rule-categories.mdRule groups, severity levels and category-level enable or disable patterns
Formatterreferences/formatter-options.mdIndent style, line width, quote style and language-specific overrides
Migrationreferences/migration-eslint-prettier.mdStep-by-step migration, rule mapping and conflict resolution

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.