Mature, well-documented project with excellent onboarding, but Rust/native toolchain setup and sprawling monorepo complexity could trip up newcomers.
last scored 2026-06-15
Readiness lenses
The same repo, two ways: how ready it is for an AI coding agent, and for a human newcomer. Switch lenses to see each one's score and checks.
How ready the repo is for an AI coding agent to read, build, and operate it.
20 of 35 checks passed across 6 categories.
Machine Orientation
5 checks passed3 problems found
- lowAgent instructions stay lean
A bloated instructions file burns context and measurably hurts more than it helps.
Fix: Trim AGENTS.md to the load-bearing commands and conventions; link out to the rest.
- lowllms.txt present
An llms.txt is the emerging machine-orientation standard — a curated map for LLMs.
Fix: Add an llms.txt pointing at the key docs and entry points.
- lowArchitecture doc
An ARCHITECTURE doc hands an agent the module map instead of making it infer one.
Fix: Add an ARCHITECTURE.md describing the major components and how they fit.
- README present — An agent reconstructs what the repo is and how to work in it from the README first.
- Agent instructions file — AGENTS.md / CLAUDE.md is the direct, machine-read channel for entry points and conventions.
- Repository description set — The one-line description is the fastest orientation signal an agent reads.
- Topics set — GitHub topics situate the repo's domain and stack for an agent at a glance.
- Contribution conventions are written down — A contributor guide is where an agent learns the branch, commit, and review conventions it must follow.
Reproducible Setup
5 checks passed1 problem found
- lowEnv template present
A .env.example tells an agent which configuration keys it must supply to run.
Fix: Ship a .env.example listing every required key with placeholder values.
- Lockfile committed — Without a lockfile two clones can resolve different dependency trees — the build isn't reproducible.
- Runtime / toolchain pinned — An unpinned runtime makes an agent guess the version a clean environment needs.
- Version pins are exact — A floating pin (a bare major, or a range) still drifts between installs.
- Container or dev-container — A Dockerfile / compose / devcontainer removes 'works on my machine' from setup.
- Dev container — A .devcontainer gives an agent a one-command, fully-declared environment.
Code Navigability
1 check passed1 problem found
- lowTypeScript strict mode on
Strict typing gives an agent typed signatures to anchor an edit on, not guesses.
Fix: Turn on `strict` in tsconfig.json.
- Conventional source layout — A recognised src/ · lib/ · app/ layout lets an agent localise code without spelunking.
Verification Surface
3 checks passed4 problems found
- mediumTest command defined
A `test` script is the documented, discoverable way to run the suite.
Fix: Add a `test` script (package.json / Makefile / Taskfile) that runs the suite.
- lowLint command defined
A linter an agent can run catches a class of mistakes before they ship.
Fix: Add a `lint` script and a linter config.
- lowTypecheck command
A typecheck script lets an agent catch type errors before they ship.
Fix: Add a `typecheck` script (e.g. `tsc --noEmit`).
- lowBuild command
A documented build command is the discoverable way for an agent to produce artifacts.
Fix: Add a `build` script that produces the distributable.
- Tests present — Runnable tests are the ground truth an agent checks its own edits against.
- CI configured — Readable CI is the feedback loop an agent reads to know what 'green' means here.
- Task runner present — A Makefile / Taskfile / justfile gives an agent a single index of the project's commands.
Agent Safety
4 checks passed4 problems found
- medium.gitignore covers env files
An ignore rule for .env is what keeps the next careless commit from leaking secrets.
Fix: Add `.env` (and `.env.*`) to .gitignore.
- mediumSecurity policy
A SECURITY.md is where an autonomous security agent reads this repo's rules before acting on it.
Fix: Add a SECURITY.md stating the disclosure channel and the repo's security rules.
- mediumLicense makes the code reusable
Without a license an agent cannot safely copy, redistribute, or vendor any of this code.
Fix: Add a LICENSE file with an OSI-approved license so the terms of reuse are explicit.
- lowAutomated dependency updates
Dependabot / Renovate keeps dependencies patched without a human in the loop.
Fix: Enable Dependabot or Renovate.
- No committed .env — A tracked real .env hands secrets to anything — including an agent — that reads the repo.
- No exposed secrets — Secret-shaped literals in tracked files are a live credential leak.
- CODEOWNERS present — CODEOWNERS marks the 'don't touch without review' zones an agent should respect.
- .gitignore present — A .gitignore is the first guard against an agent committing secrets or build junk.
Context Economy
2 checks passed2 problems found
- mediumDependencies not vendored in
A committed node_modules / vendor tree drowns the real signal an agent needs.
Fix: Remove the vendored dependency directory and gitignore it.
- lowNo oversized source file
A single file in the hundreds of KB blows past an agent's effective context window.
Fix: Split the largest files along their natural seams.
- Build output not committed — Generated dist/ · build/ output is noise an agent has to read past.
- Generated / vendored files marked — A .gitattributes linguist marker tells tools (and agents) what to skip.
How ready the repo is for a human newcomer to understand, set up, and contribute.
82 / 10016 of 24 checks passed across 6 categories.
First Impression
90Clear, polished README with visual branding, live examples, and explicit feature pitch.
The README immediately establishes what Biome is (a performant toolchain for web projects), who it's for (web developers), and what it does (formatter + linter with 97% Prettier compatibility and 500+ rules). Installation and usage examples are copy-pasteable, and links to the online playground and detailed docs are prominent. Multilingual README variants show community investment.
Getting Running
75JS/npm users get a smooth path; Rust contributors face a steeper, underdocumented setup.
For end-users, the npm install and run commands are clear and pinned (pnpm@11.6.0, Node >=22.13 in package.json). However, for Rust contributors wanting to build from source, the CONTRIBUTING.md mentions 'Local development' and 'Install the required tools' but the snapshot does not include the actual tool list or setup steps—only a table of contents. Cargo.toml versions are pinned, but a newcomer Rust contributor would need to guess at Rust version and system dependencies.
Finding Your Way
78Organized crate structure and clear domains, but massive scale and interdependencies demand doc-diving.
The workspace has a sensible layout (crates/*, xtask/*) with 60+ specialized crates (biome_cli, biome_formatter, biome_css_parser, etc.) that suggest clear domains. Module naming is consistent (language_type_function pattern). However, the file tree is truncated and the snapshot does not include architecture docs, module-level READMEs, or a dependency diagram—a newcomer would need to explore Cargo.toml and crate docs to understand how pieces fit.
Path to Contribute
85Detailed CONTRIBUTING guide with clear workflows, issue templates, and beginner-friendly pathways.
CONTRIBUTING.md is comprehensive: it covers local dev, testing, debugging, crate development (analyzers, parsers, formatters), commit messages, changelogs (changesets), and PR process. GitHub issue templates are present (formatter_bug, lint_bug, task, umbrella, commercial_request) and PULL_REQUEST_TEMPLATE.md exists. The guide even includes an AI assistance disclosure policy. However, no beginner-labeled issues are mentioned in the snapshot, and the dev setup details for Rust are truncated.
Signs of Life
88Active, well-resourced project with regular releases, extensive CI/CD, and visible governance.
Last pushed 2026-06-15 (future timestamp, likely test data, but indicates recent activity). The snapshot shows 25k+ stars, 493 open issues, and a rich CI/CD matrix (.github/workflows: main, beta, release, pull_request variants for JS, Rust, markdown, parser conformance, benchmarking). Changelog, GOVERNANCE.md, and RELEASES.md are present, suggesting structured release cadence. Multiple sponsors (Platinum, Silver, Bronze) indicate financial sustainability.
Open Door
90Dual-licensed (MIT OR Apache-2.0), with CoC and multiple channels for help.
LICENSE-MIT and LICENSE-APACHE are both present in the repo root. CODE_OF_CONDUCT.md is explicitly referenced and points to Contributor Covenant. README and CONTRIBUTING.md both link to Discord (https://biomejs.dev/chat) and GitHub Discussions as entry points for questions. No hidden legal barriers or vague licensing.
First Impression
3 checks passed0 problems found
- README present — The README is the first screen — with none, a newcomer has nothing to land on.
- Repository description set — The one-line description sets expectations before a newcomer even opens the README.
- Topics set — Topics situate the project's domain at a glance and help a newcomer find it.
Getting Running
5 checks passed1 problem found
- lowEnv template present
A .env.example shows a newcomer exactly which settings they must fill in to run it.
Fix: Ship a .env.example listing every required key with placeholder values.
- Lockfile committed — Without a lockfile a newcomer's install resolves differently and hits errors the docs don't mention.
- Prerequisite versions pinned — Unpinned prerequisites are the classic 'works on my machine' first-run failure.
- One-command environment — A Dockerfile / compose / devcontainer turns a fiddly setup into one command.
- One-click dev container — A .devcontainer lets a newcomer start in a cloud IDE with zero local setup.
- Versions pinned exactly — A floating version still drifts — a newcomer can hit a break the maintainer never saw.
Finding Your Way
1 check passed2 problems found
- mediumArchitecture / overview doc
An overview hands a newcomer the map instead of making them reconstruct it.
Fix: Add an ARCHITECTURE.md (or a 'Project layout' README section) naming the key directories.
- lowNo oversized source file
A single thousand-line file is a wall a newcomer bounces off.
Fix: Split the largest files along their natural seams.
- Conventional source layout — A familiar src/ · lib/ · app/ layout lets a newcomer guess where things live.
Path to Contribute
4 checks passed2 problems found
- lowTest command defined
A documented test command lets a contributor check their change before opening a PR.
Fix: Add a `test` script that runs the suite.
- lowLint command
A linter lets a first-time contributor catch style issues before review.
Fix: Add a `lint` script and a linter config.
- CONTRIBUTING guide — A CONTRIBUTING guide is the difference between a guessed and a guided first PR.
- Issue templates — Issue templates show a newcomer how to file something useful — and that contributions are welcome.
- Pull-request template — A PR template tells a first-time contributor what a good change includes.
- Task runner — A Makefile / Taskfile gives a contributor a single index of the project's commands.
Signs of Life
2 checks passed1 problem found
- lowAutomated dependency updates
Dependabot / Renovate activity is a visible heartbeat of ongoing maintenance.
Fix: Enable Dependabot or Renovate.
- Tests present — A test suite signals a project that's cared for, not abandoned.
- CI configured — Green CI on every change tells a newcomer the project is actively kept working.
Open Door
1 check passed2 problems found
- highLicense present
With no license the project isn't legally reusable — the door is shut however friendly the README.
Fix: Add a LICENSE file (an OSI-approved license like MIT or Apache-2.0).
- lowSecurity policy
A SECURITY.md tells a newcomer how to report a problem responsibly.
Fix: Add a SECURITY.md describing how to report a vulnerability.
- Code of conduct — A code of conduct states the social ground rules that make it safe to step in.
Where the grip slips
- highGetting Running+12 pts if fixed
Missing Rust setup prerequisites in CONTRIBUTING.md
The CONTRIBUTING.md file includes a 'Local development' section with 'Install the required tools' as a subsection, but the snapshot does not include the actual list of required tools (Rust version, cargo, node, pnpm, system dependencies, etc.). A Rust newcomer would not know where to start.
Fix: Expand CONTRIBUTING.md 'Install the required tools' section with explicit prerequisites: Rust version (from rust-toolchain.toml or rustup default), Node version (already in package.json: >=22.13), pnpm version (already in package.json: 11.6.0), and any OS-specific deps (C compiler, etc.). Link to the full dev setup docs if they exist elsewhere.
- highFinding Your Way+10 pts if fixed
No architecture or crate-structure overview document
The repo has 60+ interconnected crates with specialized names (biome_cli, biome_formatter, biome_css_parser, etc.), but there is no diagram, README, or overview explaining the dependency tree, data flow, or module responsibilities. A newcomer browsing the file tree would not understand how to navigate or where to start for a given feature.
Fix: Create or link an 'ARCHITECTURE.md' document at the repo root that maps the major crate domains (CLI, formatters, parsers, analyzers, language-specific), shows key dependencies, and gives examples of how to trace a code path (e.g., 'how does a lint rule get registered and executed?'). Alternatively, add a README to each crate directory summarizing its purpose and key exports.
- highGetting Running+8 pts if fixed
CONTRIBUTING dev setup section incomplete in snapshot
The CONTRIBUTING.md includes a table of contents and 'Getting Started' heading with 'Local development' and 'GitHub Codespaces' subsections, but the snapshot does not show the actual content of those sections—only the section labels. A newcomer cannot follow the instructions.
Fix: Ensure the full 'Local development' and 'GitHub Codespaces' sections are visible in the snapshot or provide a link/reference to the complete setup steps. At minimum, include: git clone, cargo build, cargo test, how to run the CLI locally, and how to set up pre-commit hooks or CI checks.
- mediumPath To Contribute+6 pts if fixed
Lack of beginner-friendly issue labels
The snapshot shows issue templates and labels configuration files (.github/labeler.yml, .github/ISSUE_TEMPLATE/), but there is no mention of 'good-first-issue', 'beginner', or similar tags that would help a newcomer find low-friction entry points.
Fix: Add beginner-friendly issue labels in the GitHub labeler config and apply them to issues suitable for first-time contributors (e.g., small docs improvements, simple rule implementations, test additions). Reference these labels in CONTRIBUTING.md with examples and a link to the filtered issue list.
- mediumGetting Running+5 pts if fixed
No lockfile or pinned transitive dependencies for JS packages
The package.json has 'packageManager': 'pnpm@11.6.0' and pinned devDependencies, but the snapshot does not include pnpm-lock.yaml or equivalent. A newcomer running 'pnpm install' might get different transitive versions on different machines.
Fix: Ensure pnpm-lock.yaml is committed to the repo and referenced in the README or CONTRIBUTING.md. Verify that 'pnpm install' uses the lockfile by default (it should in pnpm) and document this in the getting-started section.
- lowGetting Running+3 pts if fixed
Rust edition '2024' is unstable or non-standard
Cargo.toml specifies 'edition = "2024"', which is not a stable Rust edition (current stable is 2024 may not exist; 2021 is the latest stable as of early 2024). This is unusual and may indicate test data or future planning, but it could confuse or break builds for newcomers.
Fix: Verify and update Cargo.toml to use a stable Rust edition (e.g., '2021') or, if intentionally testing a future edition, document this prominently in CONTRIBUTING.md with a note about required Rust nightly and how to install it.
Show your score
[](https://latch.fyi/biomejs/biome)Share this analysis
https://latch.fyi/biomejs/biomeFixed some issues? Re-analyze to measure your progress →
Copy the whole report
Grab the entire verdict in one go — a Markdown block for a README or an issue, plain text, or a prompt you can paste straight into an LLM.