biome-js▌
paulrberg/agent-skills · updated Apr 8, 2026
Quick guidance for BiomeJS configuration based on Sablier project patterns.
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:
{
"$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:
{
"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 "//":
// 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:
{
"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:
{
"overrides": [
{
"includes": ["**/abi/**/*.ts", "**/generated/**/*.ts"],
"assist": {
"actions": {
"source": {
"useSortedKeys": "off"
}
}
},
"javascript": {
"formatter": {
"expand": "never"
}
}
}
]
}
Import Restrictions
Enforce barrel imports for specific modules:
{
"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 |
useTemplate |
off | Allow string concatenation |
Git Hooks Integration
Lint-Staged Configuration
Standard pattern for pre-commit hooks:
// .lintstagedrc.js
module.exports = {
"*.{json,jsonc,ts,tsx}": "bun biome check --write",
"*.{md,yml,yaml}": "bun prettier --cache --write",
"*.{ts,tsx}": "bun biome check --write --only=correctness/noUnusedImports",
};
The separate noUnusedImports pass enforces import cleanup only at commit time, not during development.
UI-Specific Configuration
For frontend projects with Tailwind CSS:
{
"css": {
"parser": {
"tailwindDirectives": true
}
},
"assist": {
"actions": {
"source": {
"useSortedAttributes": "on"
}
}
},
"linter": {
"rules": {
"nursery": {
"useSortedClasses": {
"fix": "safe",
"level": "warn",
"options": {
"attributes": ["classList"],
"functions": ["clsx", "cva", "cn", "tv", "tw"]
}
}
}
}
}
}
Biome v2.4.0+ auto-enables CSS Modules parsing for *.module.css, so explicit
"cssModules": true is usually unnecessary unless your project needs non-standard behavior.
Biome v2.4+ Notes
biome checkandbiome cinow support--onlyand--skipfor targeted rule/action runs.biome check --writenow also applies formatting when applying fixes.- Config lookup now also supports hidden files:
.biome.jsonand.biome.jsonc. - Config lookup now also supports user config directories (for example,
$HOME/.config/biomeon Linux/macOS equivalents). - New formatter option
formatter.trailingNewlinecan disable trailing newline insertion. - HTML formatter behavior changed significantly in
v2.4.0; expect larger diffs in HTML/Vue/Svelte/Astro if formatter support is enabled.
Troubleshooting
Common Issues
"No files matched": Check files.includes patterns match your file structure.
Conflicting rules: Overrides are applied in order; later overrides take precedence.
Schema errors: Use local schema reference for IDE support:
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json"
Biome vs Prettier
Biome handles JS/TS/JSON/CSS formatting. Use Prettier for:
- Markdown (
.md,.mdx) - YAML (
.yml,.yaml)
Additional Resources
Examples
Working examples in ./examples/:
./examples/base-config.jsonc- Minimal library configuration./examples/ui-config.jsonc- Frontend project with Tailwind./examples/lint-staged.js- Pre-commit hook configuration
Full Documentation
For advanced features, migrations, or complete rule reference, consult the official Biome documentation via Context7 MCP:
Use context7 to fetch Biome documentation for [specific topic]
The official docs at biomejs.dev should be consulted as a last resort for features not covered here.
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.7★★★★★31 reviews- ★★★★★Aanya Abebe· Dec 24, 2024
Useful defaults in biome-js — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Dhruvi Jain· Dec 12, 2024
We added biome-js from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Daniel Shah· Dec 4, 2024
biome-js is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Layla Gill· Nov 23, 2024
Keeps context tight: biome-js is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Isabella Thomas· Nov 15, 2024
We added biome-js from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Rahul Santra· Nov 11, 2024
biome-js fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Oshnikdeep· Nov 3, 2024
Useful defaults in biome-js — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Ganesh Mohane· Oct 22, 2024
Registry listing for biome-js matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Nikhil Li· Oct 14, 2024
I recommend biome-js for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Kofi Gill· Oct 6, 2024
biome-js reduced setup friction for our internal harness; good balance of opinion and flexibility.
showing 1-10 of 31