Skip to content
yellow-pine/bly (opens in a new tab)

An exceptionally clean, agent-ready TypeScript repository with exemplary orientation, safety, and navigability.

TypeScriptโ˜… 00 open issuesApache License 2.0
Overall score: 92 out of 100
Locked on

last scored 2026-09-12 ยท both lenses

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.

92 / 100

31 of 44 checks passed across 6 categories.

  • Machine Orientation

    98

    Exemplarly machine-readable orientation with crystal-clear entry points, specs, and keyless testability.

    The repository is exemplary for machine orientation, featuring a pristine README with explicit CLI commands, a comprehensive CLAUDE.md operating manual, an architecture doc, and fully reproducible keyless build and test instructions. Verified signals include `README=yes`, `agentFile=yes`, `architectureDoc=yes`, and structured CI scripts (`npm ci`, `npm test`, `npm run build`, `npm run typecheck`, `npm run lint`). It clears the 90-100 Exemplary band with zero friction.

  • Reproducible Setup

    85

    Solid setup with clean keyless commands and version pinning, missing only a container environment.

    The repository provides clear setup instructions, node version pinning via .nvmrc (with engines.node), a deterministic keyless test/build invariant, and clean CI workflows, clearing the Solid band. However, it lacks a container or devcontainer configuration to achieve completely machine-verifiable end-to-end containerized setup. Solid (85).

  • Code Navigability

    98

    An exceptionally navigable, well-partitioned TypeScript codebase with crisp module boundaries and types.

    The repository exhibits exemplary code navigability: modules follow a strict conventional layout (`lib/gmail/`, `lib/derive/`, `lib/store/`, `lib/engine/`) with clean domain boundaries, consistent and explicit TypeScript typing (`lib/types.ts`), and manageable, well-factored files with colocated tests. Cross-cutting concerns are neatly isolated (e.g., side effects and storage behind explicit ports), enabling an agent to localize and navigate code with precision.

  • Verification Surface

    90

    Solid verification surface with robust test, lint, typecheck, and CI workflows that an agent can execute locally and verify keyless.

    Solid verification surface is present with a complete test runner (Vitest with colocated *.test.ts files), typechecking (tsc strict for app and e2e), linters (eslint), builds (next build + esbuild CLI), and fully defined CI workflows (.github/workflows/ci.yml and e2e.yml) that run keyless. Ground truth is fully machine-verifiable by an agent running npm test, npm run lint, and npm run typecheck.

  • Agent Safety

    98

    Exemplary agent safety posture with static egress bounds and complete secret hygiene.

    The repository exhibits exemplary agent safety standards, featuring a comprehensive egress scan (`lib/egress.ts`) that statically inspects source code for unauthorized outbound network fetches, correct gitignore handling for secret stores (`.bly/`), and rigorous documentation of safety invariants. There is no committed `.env` file, and environment variables are strictly optional to maintain a keyless local-first invariant.

  • Context Economy

    85

    Clean layout and explicit boundaries give an agent high signal-to-noise, with only minor historical plan overhead.

    The repository has a clean file tree (244 files) without vendored build outputs, committed node_modules, or bloated generated noise, achieving a Solid Context Economy (85) score. All sources are cleanly organized under standard directories (`lib`, `app`, `cli`, `scripts`), and extensive planning docs are neatly contained in `docs/superpowers/`. Minor deduplication of test fixtures or streamlining historical architecture spec phases could further improve agent signal density.

  • Machine Orientation

    7 checks passed3 problems 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.

    • lowREADME shows usage

      A usage/example section tells an agent how the project is actually invoked.

      Fix: Add a Usage or Examples section to the README with a runnable snippet.

    • lowExamples directory

      An examples/ directory gives an agent runnable, copyable references for the API.

      Fix: Add an examples/ directory with small, runnable usage samples.

    • 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

    3 checks passed4 problems found

    • mediumContainer or dev-container

      A Dockerfile / compose / devcontainer removes 'works on my machine' from setup.

      Fix: Add a Dockerfile, a compose file, or a .devcontainer so the environment is declared, not assumed.

    • lowVersion pins are exact

      A floating pin (a bare major, or a range) still drifts between installs.

      Fix: Pin to an exact or minor version, not a floating range.

    • 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.

    • lowDev container

      A .devcontainer gives an agent a one-command, fully-declared environment.

      Fix: Add a .devcontainer so the toolchain is declared, not assumed.

    • 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.
    • README documents setup โ€” Explicit install/setup steps are what let an agent go from clone to running.
  • Code Navigability

    3 checks passed2 problems found

    • lowFormatter configured

      A formatter config (Prettier/Biome/rustfmt/โ€ฆ) keeps style uniform across the tree.

      Fix: Add a formatter (Prettier, Biome, rustfmt, โ€ฆ) and commit its config.

    • lowTyped public API

      A declared `types` entry gives an agent typed signatures to anchor an edit on.

      Fix: Ship type declarations and point package.json `types`/`typings` at them.

    • 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.
    • .editorconfig present โ€” An .editorconfig keeps whitespace and encoding consistent, so diffs stay legible.
  • 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

    9 checks passed2 problems found

    • mediumPolicy scopes what counts as a finding

      With no reportable-finding bar and no out-of-scope list, an automated scan returns noise nobody triages.

      Fix: State in SECURITY.md what counts as a reportable finding, and what is out of scope or accepted risk.

    • lowPolicy gives severity context

      Severity judged against this system beats a generic rating an agent had to guess at.

      Fix: Say in SECURITY.md how severity is judged here โ€” what makes a finding critical for this system.

    • 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.
    • .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.
    • Policy names the threat model โ€” A scanning agent aims at what the repo says it is defending, and where untrusted input crosses in.
    • License makes the code reusable โ€” Without a license an agent cannot safely copy, redistribute, or vendor any of this code.
  • Context Economy

    3 checks passed1 problem 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).

    • 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.
    • No oversized source file โ€” A single file in the hundreds of KB blows past an agent's effective context window.

Where the grip slips

  1. lowReproducible Setup+3 pts if fixed

    Missing container or devcontainer configuration

    No Dockerfile or devcontainer configuration is provided for containerized environment setup.

    Fix: Add a Dockerfile or .devcontainer/devcontainer.json configuration.

  2. lowContext Economy+1 pts if fixed

    Historical phase plans add repository text overhead

    Numerous historical phase plans and design specs in docs/superpowers/ add to token overhead without active execution relevance.

    Fix: Consolidate or archive completed historical phase plans into a single directory or summary file to reduce noise.

  3. lowCode Navigability

    Clean architecture and structure

    None; code organization, module encapsulation, and naming conventions are best-in-class.

    Fix: None needed.

Show your score

Latch badge
[![Latch score](https://latch.fyi/api/badge/57161b7f-6d73-47f5-9eb6-41fe905a901b)](https://latch.fyi/yellow-pine/bly)

Share this analysis

https://latch.fyi/yellow-pine/bly

Fixed 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.

Was this verdict fair?

One tap helps โ€” or tell us more.