npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

biome-config-shaunburdick

v1.0.1

Published

Shaun Burdick's Biome configuration - companion to eslint-config-shaunburdick

Readme

biome-config-shaunburdick

Shaun Burdick's Biome configuration — the fast, Rust-based companion to eslint-config-shaunburdick.

One biome.json provides linting, formatting, and import organization tuned to the same house style: 4-space indent, 120-char lines, single quotes, semicolons.

Package: biome-config-shaunburdick

Requirements

  • Node.js >= 22
  • @biomejs/biome >= 2.5 < 3 (peer dependency)

Usage

Install the config and Biome:

npm install --save-dev @biomejs/biome biome-config-shaunburdick

Extend it from your project's biome.json:

{
    "extends": ["biome-config-shaunburdick"]
}

Then run:

npx biome check .        # lint + format + organize imports
npx biome check --write . # autofix everything fixable

Package Setup

To setup linting automatically, we recommend adding these script entries to your package.json:

"lint": "biome check .",
"lint:fix": "npm run lint -- --write",

Then you can add npm run lint to your test script command to run it before any tests

Recommended pairing

This config enables 164 unique rules, ~91 of which correspond to a rule in eslint-config-shaunburdick (measured against biome.jsonc; the rest are Biome-native correctness/security checks with no ESLint counterpart). The rules that do have ESLint counterparts but are not ported (JSDoc, security plugin, promise discipline, llm-core guardrails, the custom shaunburdick/max-inline-disables rule) have no Biome equivalent and require keeping ESLint alongside. The agent skill carries a layer-by-layer breakdown of the port with each rule's resolved threshold.

What's inside

| Layer | Glob | Highlights | | --- | --- | --- | | Base JS | all files | eqeqeq, no-var, prefer-const, complexity budgets (max 5 params, cognitive 15), no magic numbers, no console/alert/eval, import cycle detection | | TypeScript | **/*.{ts,tsx} | strict TS rules ported from typescript-eslint strict: no-floating-promises, no-misused-promises, no-unnecessary-conditions, exhaustive switches, explicit member accessibility, interface definitions | | React | **/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx} | full a11y suite, hooks deps (warn), button types, iframe sandbox, array index keys, plus the 15 service-worker globals Biome lacks natively |

Formatting is delegated to Biome's formatter (indentStyle: space, indentWidth: 4, lineWidth: 120, single quotes); import ordering runs via the organizeImports assist action.

Known divergences from the ESLint config

  1. Magic numbers are stricter — Biome's noMagicNumbers has no ignore-list option; it flags 3–5, 12, 15, 120 (which our llm-core config ignored) and exempts 24/60 (which we flagged).
  2. Promise discipline is thinner — only nested promises are checked; always-return, catch-or-return, and param-names stay ESLint-only.
  3. No JSDoc, security-plugin, or llm-core coverage — keep ESLint for those.
  4. max-inline-disables is impossible in Biome — its GritQL plugin system cannot see comments.
  5. 13 rules come from Biome's nursery (unstable API): noImpliedEval, useArraySome, useIncludes, useStringStartsEndsWith, noFloatingPromises, noMisusedPromises, useAwaitThenable, useExhaustiveSwitchCases, useNullishCoalescing, noJsxLeakedDollar, noJsxNamespace, useIframeSandbox, and useReactAsyncServerFunction may move or change options in minor releases. Pin @biomejs/biome accordingly — the >=2.5.0 <3 peer range will not protect you.

Development

npm install
npm test          # validates biome.json + runs smoke tests against fixtures

Smoke tests live in test/ and assert that representative violations actually fire the expected Biome rules, while a compliant fixture passes clean.

Versioning Policy

  • Major (new linting errors)
    • A new rule is added
    • An existing rule is made more strict
    • A new plugin is added to an existing config
    • An existing plugin is updated to be more strict
  • Minor (same or fewer linting errors)
    • A rule is removed
    • An existing rule is made less strict
    • Adding a new configuration
    • An existing plugin is updated to be less strict
  • Patch (non-user-facing changes)
    • Changes to documentation
    • Fixes for build or publication
    • Modifying tests

See CHANGELOG.md for the version history.

Agent Skill

biome-config-shaunburdick is an agent skill covering install, setup, the three layers, the nursery-rule stability risk, and the biome migrate pinning step — so an agent hitting an unfamiliar Biome diagnostic knows what it protects against. It opens with a "when to use which" table pointing at the ESLint skill, since the two configs are alternatives rather than companions.

Publish steps

Publishing is automated: once a version bump lands on main, CI compares package.json against npm and publishes with provenance if the version is new, then creates a biome-vX.Y.Z GitHub release.

  • Checkout main (git checkout main)
  • Pull main (git pull)
  • Examine CHANGELOG.md to determine next version (X.Y.Z)
  • Bump version in package.json and merge to main
  • CI publishes the new version and cuts the release