A high-momentum project with solid docs and deployment paths, but local dev setup needs clarity and testing guidance is sparse for contributors.
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.
29 of 35 checks passed across 6 categories.
Machine Orientation
7 checks passed1 problem found
- 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.
- 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.
- Agent instructions stay lean โ A bloated instructions file burns context and measurably hurts more than it helps.
- 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.
- Architecture doc โ An ARCHITECTURE doc hands an agent the module map instead of making it infer one.
- 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
- highLockfile committed
Without a lockfile two clones can resolve different dependency trees โ the build isn't reproducible.
Fix: Commit your lockfile (package-lock.json / pnpm-lock.yaml / Cargo.lock / โฆ).
- 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.
- Env template present โ A .env.example tells an agent which configuration keys it must supply to run.
- 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
2 checks passed0 problems found
- Conventional source layout โ A recognised src/ ยท lib/ ยท app/ layout lets an agent localise code without spelunking.
- TypeScript strict mode on โ Strict typing gives an agent typed signatures to anchor an edit on, not guesses.
Verification Surface
6 checks passed1 problem found
- lowTask runner present
A Makefile / Taskfile / justfile gives an agent a single index of the project's commands.
Fix: Add a Makefile / Taskfile / justfile collecting the common commands.
- Tests present โ Runnable tests are the ground truth an agent checks its own edits against.
- Test command defined โ A `test` script is the documented, discoverable way to run the suite.
- Lint command defined โ A linter an agent can run catches a class of mistakes before they ship.
- CI configured โ Readable CI is the feedback loop an agent reads to know what 'green' means here.
- Typecheck command โ A typecheck script lets an agent catch type errors before they ship.
- Build command โ A documented build command is the discoverable way for an agent to produce artifacts.
Agent Safety
7 checks passed1 problem found
- highNo committed .env
A tracked real .env hands secrets to anything โ including an agent โ that reads the repo.
Fix: Remove the .env from history, gitignore it, and ship a .env.example instead.
- No exposed secrets โ Secret-shaped literals in tracked files are a live credential leak.
- .gitignore covers env files โ An ignore rule for .env is what keeps the next careless commit from leaking secrets.
- CODEOWNERS present โ CODEOWNERS marks the 'don't touch without review' zones an agent should respect.
- Automated dependency updates โ Dependabot / Renovate keeps dependencies patched without a human in the loop.
- .gitignore present โ A .gitignore is the first guard against an agent committing secrets or build junk.
- Security policy โ A SECURITY.md is where an autonomous security agent reads this repo's rules before acting on it.
- License makes the code reusable โ Without a license an agent cannot safely copy, redistribute, or vendor any of this code.
Context Economy
2 checks passed2 problems found
- lowGenerated / vendored files marked
A .gitattributes linguist marker tells tools (and agents) what to skip.
Fix: Mark generated/vendored paths in .gitattributes (linguist-generated / linguist-vendored).
- 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.
- Dependencies not vendored in โ A committed node_modules / vendor tree drowns the real signal an agent needs.
- Build output not committed โ Generated dist/ ยท build/ output is noise an agent has to read past.
How ready the repo is for a human newcomer to understand, set up, and contribute.
72 / 10021 of 25 checks passed across 6 categories.
First Impression
85Clear mission, polished presentation, and multiple deployment options front-loaded, though technical depth and exact use cases could be more concrete.
The README immediately explains what LobeHub is ('organizes agents into 7ร24 operation'), who it's for (developers and users building AI teams), and includes demo videos and feature sections with visuals. The product hunt and trend badges add social proof. However, the README jumps quickly to deployment without a simple, concrete example of what a newcomer can do in 5 minutes after setup.
Getting Running
65Multiple deployment paths (Vercel, Docker, local) are documented, but local dev setup lacks step-by-step clarity and prerequisite pinning is incomplete.
The README covers Vercel, Docker, and Zeabur deployment with environment variables documented. However, the local dev section ('โจ๏ธ Local Development') is cut off in the snapshot, and package.json shows `dev` script calling `tsx scripts/devStartupSequence.mts` with no visibility into what that does. Node/Bun version is not pinned in package.json (no `engines` field), and lockfile presence is unclear from the snapshot. Docker setup requires running a shell script (`bash <(curl -fsSL https://lobe.li/setup.sh)`) without showing its contents, which is a trust and reproducibility risk for newcomers.
Finding Your Way
68Extensive skill-based documentation exists, but core codebase structure (src/, apps/, packages/) lacks a coherent architecture guide visible in the snapshot.
The file tree shows a dense, specialized structure with `.agents/skills/` containing detailed SKILLs (Agent Builder, testing, CLI, etc.) and comprehensive references. However, no high-level architecture document, module map, or README explaining how `/src`, `/apps`, and `/packages` relate is visible in the snapshot. A newcomer cloning the repo would see ~12000 files without a clear entry point or mental model of the codebase layers.
Path to Contribute
70CONTRIBUTING.md provides workflow steps and links to linting, but lacks beginner-friendly issue labels, first-contribution guidance, and testing conventions.
The guide covers fork, branch, commit, and PR workflow clearly with linting instructions. However, it does not link to a 'good first issue' label, does not explain how to run tests locally, does not describe testing conventions (unit vs. e2e), and does not specify where to ask questions (no SUPPORT.md or triage channel mentioned). The repo has 416 open issues but no visible guidance on how to pick one as a first contribution.
Signs of Life
82Very recent commits (2026-06-15), 78K stars, active workflows (CI, release, i18n), and responsive maintainer footprint (Discord, GitHub actions, scripts for automation) all signal a healthy, active project.
The last push was 2026-06-15 (today in the snapshot timeline), indicating continuous development. The package.json and workflows show extensive automation (auto-tagging, claude-driven testing and migration support, e2e, release pipelines). Over 70 GitHub workflows, a CODEOWNERS file, and Discord community integration show active governance. The 416 open issues and high star count confirm visibility and engagement.
Open Door
78MIT license is present and clear, CODE_OF_CONDUCT.md exists, and Discord community is prominent; no hidden legal gates, though support channels could be more explicit.
The package.json declares `"license": "MIT"` and the snapshot lists a LICENSE file and CODE_OF_CONDUCT.md, meeting legal and social safety basics. Discord and GitHub issues are mentioned as community channels. However, a SUPPORT.md or explicit security contact (beyond SECURITY.md filename) is not shown in the snapshot, and no CONTRIBUTORS.md or acknowledgement structure is visible, which are minor gaps for inclusivity.
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
- highLockfile committed
Without a lockfile a newcomer's install resolves differently and hits errors the docs don't mention.
Fix: Commit your lockfile so a fresh clone installs the same dependency tree.
- Prerequisite versions pinned โ Unpinned prerequisites are the classic 'works on my machine' first-run failure.
- Env template present โ A .env.example shows a newcomer exactly which settings they must fill in to run it.
- 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
2 checks passed1 problem found
- 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.
- Architecture / overview doc โ An overview hands a newcomer the map instead of making them reconstruct it.
Path to Contribute
5 checks passed1 problem found
- lowTask runner
A Makefile / Taskfile gives a contributor a single index of the project's commands.
Fix: Add a Makefile / Taskfile collecting the common dev commands.
- 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.
- Test command defined โ A documented test command lets a contributor check their change before opening a PR.
- Lint command โ A linter lets a first-time contributor catch style issues before review.
Signs of Life
3 checks passed0 problems found
- 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.
- Automated dependency updates โ Dependabot / Renovate activity is a visible heartbeat of ongoing maintenance.
Open Door
3 checks passed1 problem found
- lowLicense is a standard one
A non-standard or custom license is a legal question mark a newcomer won't resolve.
Fix: Use a recognised OSI license so reuse terms are unambiguous.
- License present โ With no license the project isn't legally reusable โ the door is shut however friendly the README.
- Code of conduct โ A code of conduct states the social ground rules that make it safe to step in.
- Security policy โ A SECURITY.md tells a newcomer how to report a problem responsibly.
Where the grip slips
- highGetting Running+15 pts if fixed
Local dev setup is a black box: no visibility into devStartupSequence.mts or prereq versions
The package.json references `dev: tsx scripts/devStartupSequence.mts`, but this script is not shown in the snapshot. A newcomer has no way to know what Node/Bun version, database setup, environment config, or other dependencies are required before running `npm run dev`. The package.json lacks an `engines` field pinning Node/Bun versions.
Fix: Add an `engines` field to package.json (e.g., `"engines": {"node": ">=20.0.0", "pnpm": ">=9.0.0"}`). Create a concise DEVELOPMENT.md or expand the 'Local Development' section in the README with: 1) Prerequisites (Node/Bun version, pnpm, PostgreSQL/Redis if needed), 2) A copy-paste dev setup command sequence, 3) What to expect after `npm run dev` (e.g., 'server will start on http://localhost:3010'). Include or inline the devStartupSequence.mts logic inline or link to it explicitly.
- highFinding Your Way+12 pts if fixed
No architecture or codebase structure guide despite 12000+ files
The file tree shows a massive, multi-workspace setup (apps/, packages/, apps/desktop/, e2e/, .agents/) with no visible architecture.md or README explaining how these layers fit together. A newcomer opening the repo would be lost without understanding the relationship between SPA builds, Next.js backend, desktop app, and agent skills.
Fix: Create a ARCHITECTURE.md in the repo root that explains: 1) Directory structure and purpose (apps/desktop for Electron, apps/cli for CLI, packages/ for shared libraries, .agents/ for agent infrastructure), 2) How the SPA and Next.js builds interact, 3) Which folder a contribution type maps to (UI โ packages/, backend logic โ src/, agent skills โ .agents/). Include a dependency graph or flow diagram. Link prominently from the README's 'Finding Your Way' section.
- highPath To Contribute+10 pts if fixed
CONTRIBUTING.md lacks testing and issue-selection guidance for first-timers
The CONTRIBUTING.md explains fork/branch/commit/PR workflow but doesn't mention: where to find beginner-friendly issues, how to run the test suite locally, what test conventions to follow (unit vs. e2e), or how to validate a change. A newcomer will not know if they should run `pnpm test` or which tests are relevant before opening a PR.
Fix: Expand CONTRIBUTING.md with sections: 1) 'Finding an Issue to Work On' (link to 'good first issue' label and explain the backlog), 2) 'Testing Locally' (e.g., `pnpm test` for unit tests, `pnpm e2e` for integration tests, with expected output), 3) 'Before You Open a PR' (linting, tests must pass, update docs if needed). Link to or create a TESTING.md if test setup is complex.
- mediumGetting Running+8 pts if fixed
Docker setup requires blind trust in a shell script with no preview
The README instructs users to run `bash <(curl -fsSL https://lobe.li/setup.sh)` without showing what the script does, downloads, or installs. This is a reproducibility and security red flag for security-conscious newcomers. The script URL is not in the snapshot, so its contents cannot be verified.
Fix: Include the script inline in a docs/docker-setup.sh file in the repo and link to it, or provide a clear summary of what setup.sh does (e.g., 'generates docker-compose.yml, sets up PostgreSQL user, creates volume mounts'). Alternatively, provide the docker-compose configuration directly in the README or a template in the repo, so users can review and modify it before running.
- mediumGetting Running+8 pts if fixed
No lockfile pinning visible; dependency versions may drift during setup
The snapshot does not show a pnpm-lock.yaml or yarn.lock file. Without a lockfile, two newcomers running `pnpm install` at different times could end up with different transitive dependency versions, leading to 'works on my machine' failures. The package.json includes many dependencies but no pinned versions in devDependencies or a .npmrc that enforces lockfile integrity.
Fix: Ensure pnpm-lock.yaml is committed and up-to-date. Add `.npmrc` settings: `frozen-lockfile=true` and `prefer-frozen-lockfile=true` to enforce lockfile integrity during CI and local installs. Document in DEVELOPMENT.md: 'Always commit lock files. If you update dependencies, run `pnpm install` and commit the updated lock file.'
- mediumOpen Door+5 pts if fixed
No explicit support/help channel documented
The README mentions Discord and GitHub issues but does not provide a clear SUPPORT.md or section stating where/how a newcomer should ask for help if they get stuck during setup or contribution. Discord link is present but not formatted as a support resource, which may cause confusion about its purpose.
Fix: Create SUPPORT.md at the repo root with: 1) Discord invite link and expected response time, 2) GitHub Discussions or a 'help' issue label for asynchronous questions, 3) Security/vulnerability reporting process (SECURITY.md exists but should be linked). Link SUPPORT.md from the README's 'Getting Help' or 'Community' section.
- lowOpen Door+3 pts if fixed
'License: Other' in GitHub metadata doesn't match MIT in package.json
The repo metadata lists 'License: Other', but the snapshot and package.json show MIT license. This mismatch may confuse newcomers about the actual license terms and could hinder reuse.
Fix: This may be a GitHub sync issue. Verify the LICENSE file in the repo is valid MIT text. If the file is correct, check GitHub repo settings and re-sync the license metadata (GitHub sometimes requires a re-index). Ensure the LICENSE file is in the root and named 'LICENSE' (not 'LICENSE.md'), as GitHub auto-detects it.
Show your score
[](https://latch.fyi/lobehub/lobe-chat)Share this analysis
https://latch.fyi/lobehub/lobe-chatFixed 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.