
Biome Js
Configure BiomeJS linting and formatting, shared extends, monorepo overrides, and lint-staged for a JS/TS repo.
Overview
biome-js is an agent skill for the Ship phase that configures BiomeJS—extends, files.includes, monorepo overrides, and lint-staged—for JS/TS projects.
Install
npx skills add https://github.com/paulrberg/agent-skills --skill biome-jsWhat is this skill?
- Extends shared Biome configs via npm package exports while requiring explicit files.includes
- Monorepo pattern using extends ["//"] for workspace-level overrides
- File-include table patterns for library, app, and UI (css/js/ts/tsx) projects
- Guidance for biome.jsonc schema, overrides, and lint-staged integration
- Triggered for configure Biome, biome overrides, and fix biome errors
- Explicit files.includes required even when extending shared configs
- Monorepo workspaces use extends ["//"] to inherit root biome.jsonc
Adoption & trust: 1.1k installs on skills.sh; 62 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want Biome as your single linter-formatter but shared config extends, monorepo inheritance, and include globs are easy to misconfigure.
Who is it for?
Solo builders standardizing Biome across a monorepo or extending @sablier-style shared biome presets.
Skip if: Teams that only need one-off ESLint migration scripts with no Biome adoption, or repos with no JS/TS surface.
When should I use this skill?
User asks to configure Biome, extend biome config, set up BiomeJS, add biome overrides, biome lint-staged, fix biome errors, or mentions biome.jsonc, Biome linting, or Biome formatting configuration.
What do I get? / Deliverables
You get a valid biome.jsonc pattern—extends, includes, and optional overrides—aligned with production monorepo conventions.
- biome.jsonc with extends, files.includes, and optional overrides
- lint-staged hook wiring for Biome when requested
Recommended Skills
Journey fit
Code quality and formatter/linter setup belongs on the ship shelf under review, where teams standardize checks before merge and release. Biome config directly supports review-time consistency—rules, overrides, and CI hooks—not greenfield product ideation.
How it compares
Use for Biome.jsonc architecture and inheritance—not as a generic ESLint rule encyclopedia.
Common Questions / FAQ
Who is biome-js for?
Indie and solo developers on JavaScript or TypeScript apps who install agent skills to wire Biome formatting, lint rules, shared extends, and lint-staged without trial-and-error biome.jsonc edits.
When should I use biome-js?
Use it in Ship (review) when you configure Biome, extend biome config, set up BiomeJS, add biome overrides, or fix biome errors; also when onboarding a new package in a monorepo that must inherit root biome settings.
Is biome-js safe to install?
It is procedural configuration guidance only; review the Security Audits panel on this Prism page before trusting any third-party skill source.
SKILL.md
READMESKILL.md - Biome Js
# BiomeJS Skill Quick guidance for BiomeJS configuration based on Sablier project patterns. ## Core Concepts ### Extending Shared Configs Extend shared configs via npm package exports. The consuming project must always provide its own `files.includes`: ```jsonc { "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", "extends": ["@sablier/devkit/biome"], "files": { "includes": ["**/*.{js,json,jsonc,ts}", "!node_modules/**/*"] } } ``` For UI projects, extend both base and ui configs: ```jsonc { "extends": ["@sablier/devkit/biome/base", "@sablier/devkit/biome/ui"], "files": { "includes": ["**/*.{css,js,jsx,json,jsonc,ts,tsx}"] } } ``` ### Monorepo Inheritance In monorepos, workspace configs inherit from root using `"//"`: ```jsonc // packages/my-package/biome.jsonc { "extends": ["//"], "overrides": [ // package-specific overrides ] } ``` ### File Includes Pattern Always specify `files.includes` explicitly. Common patterns: | Project Type | Pattern | | ------------ | --------------------------------------------- | | Library | `**/*.{js,json,jsonc,ts}` | | UI/Frontend | `**/*.{css,js,jsx,json,jsonc,ts,tsx}` | | With GraphQL | `**/*.{css,graphql,js,jsx,json,jsonc,ts,tsx}` | Exclusions: `!node_modules/**/*`, `!**/generated`, `!dist` ## Common Overrides ### Test Files Relax strict rules in test files: ```jsonc { "overrides": [ { "includes": ["**/tests/**/*.ts", "**/*.test.ts"], "linter": { "rules": { "style": { "noNonNullAssertion": "off" }, "suspicious": { "noExplicitAny": "off" } } } } ] } ``` ### Generated/ABI Files Disable sorting and compact formatting for generated code: ```jsonc { "overrides": [ { "includes": ["**/abi/**/*.ts", "**/generated/**/*.ts"], "assist": { "actions": { "source": { "useSortedKeys": "off" } } }, "javascript": { "formatter": { "expand": "never" } } } ] } ``` ### Import Restrictions Enforce barrel imports for specific modules: ```jsonc { "overrides": [ { "includes": ["src/**/*.{ts,tsx}"], "linter": { "rules": { "correctness": { "noRestrictedImports": { "level": "error", "options": { "paths": { "@/core": "Import from @/core (barrel) instead of subpaths" } } } } } } } ] } ``` ## Key Rules Reference | Rule | Default | Rationale | | ------------------------- | -------------------- | --------------------------------------- | | `noFloatingPromises` | error | Floating promises cause bugs | | `noUnusedImports` | off | Allow during dev, enforce in pre-commit | | `noUnusedVariables` | error | Keep code clean | | `useImportType` | warn (separatedType) | Explicit type imports | | `useSortedKeys` | on | Consistent object ordering | | `useSortedClasses` | warn (UI) | Tailwind class sorting | | `useFilenamingConvention` | kebab/camel/Pascal | Flexible naming | | `noVoid` | off | Useful for useEffect callbacks | | `u