toaster-ready

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 22, 2026 License: Apache-2.0

README

toaster-ready

ci release license

Score how ready a repository is to ramp up on — for a new hire or an AI agent — and get a cited, provenance-bearing scorecard out of 100.

Is your repo toaster-ready? — yes, the "toasters" are the agents.

toaster-ready makes "easy to ramp up on" a measurable, auditable property of a repository rather than a vibe. Fast onboarding — for a person or an agent — is the concrete mitigation for the knowledge-concentration, bus-factor, and over-reliance risks that come with AI-assisted development. A repo that's hard to get productive in is a liability no matter how well it runs.

The CLI is toaster.

What it does

toaster reads a repository and scores it against a weighted rubric, out of 100. It is deterministic and pure — it reads files, runs git, and (optionally) calls the GitHub API, then prints a cited scorecard. No LLM, no agent in the scoring path: it runs anywhere, including untrusted CI. Judgment scoring, link resolution, and persistence belong to an optional skill layer that wraps it.

toaster check .             # cited scorecard (JSON) for the current repo
toaster check owner/repo    # clone + score a remote repo
toaster gate . --min 50     # CI gate: non-zero exit below the bar

The rubric

Eleven weighted categories, scored 0–100. Each category yields a normalized subscore; its contribution is weight × subscore; the total is the sum.

Category Weight Looks for
Agent/human instructions 15 CLAUDE.md/AGENTS.md that explain the mechanics — and fit a context budget (bloat is penalized)
Setup reproducibility 12 clone → running via one documented path
Testing & coverage 12 tests exist and coverage is reported
CI: test / build / deploy 12 pipeline present and actually green
Config & secrets 10 .env.example present; no secrets in source
Purpose & orientation 10 README answers what / why / who
Conventions & standards 8 linters, CODEOWNERS, semver, branch protection
Source-material trail 7 the why is recoverable (ADRs, linked decisions)
In-repo tooling 6 task runner / scripts / agent skills
Dependency patching 5 Dependabot/Renovate over a lockfile
DB migrations 3 schema managed via migrations (N/A when there's no DB)

Bands: 0–49 needs-work · 50–84 functional · 85–100 exemplary.

Weights, thresholds, and signals are configurable (see Configuration); the category set is fixed so scores stay comparable across repos.

Three-state signals: never guess

Every signal is ok (a real determination — found or absent), no-data (couldn't be checked, with a reason), or not-applicable (doesn't apply to this repo).

  • no-data is never scored 0. A category blocked by no-data reports dataComplete: false and what blocked it — so you can always tell "we checked and it's missing" from "we couldn't check." (A 403 reading branch protection without an admin token is no-data, not a zero.)
  • not-applicable is dropped, not penalized. A repo with no database isn't docked for "no migrations" — the category is excluded and its weight redistributes across the rest.
  • Every score cites evidence (path, locator, method). Provenance is the point.

Install

go install github.com/tittle-xyz/toaster-ready/cmd/toaster@latest

Or build from source:

git clone https://github.com/tittle-xyz/toaster-ready
cd toaster-ready && make build   # -> ./bin/toaster

Usage

toaster check <path|owner/repo>      # cited scorecard to stdout
  --offline                          # skip the GitHub API (API signals -> no-data)
  --format json|markdown|html        # output format (default: json)
  --config <path>                    # config file (default: .toaster-ready.yml at the root)

toaster gate <path|owner/repo>       # CI gate: non-zero exit on failure
  --min <0-100>                      # minimum score to pass (overrides config; default 50)
  --config <path>

toaster config <path|owner/repo>     # print the resolved config (defaults + overrides)
toaster detect <path|owner/repo>     # print the detected language/stack

A owner/repo slug is shallow-cloned via git. Live signals (CI status, branch protection) use the GitHub API; the client resolves a token from GITHUB_TOKEN, falling back to gh auth token. With no token it still works on public repos; auth-only facts surface as no-data. gate runs offline-only by design, so it needs no secrets in CI.

GitHub Action

Gate any repo's CI on ramp-up readiness — the scorecard is written to the job summary, and the step fails if the repo is below the threshold or misses an essential (README / agent instructions / CI, or a hardcoded secret):

- uses: actions/checkout@v4
- uses: tittle-xyz/toaster-ready@v1
  with:
    min: 50          # fail below this score (optional; default uses config, else 50)
    # target: .      # path or owner/repo (default: the checked-out repo)
    # config: .toaster-ready.yml

Configuration

Drop a .toaster-ready.yml at the repo root to override the defaults. With no config, the built-in (opinionated) defaults apply. Everything is optional:

weights:                    # override any category weight (relative)
  testing-and-coverage: 20
disabled:                   # skip categories entirely
  - db-migrations
languages:                  # hint the stack if detection misses it
  - php
contextBudget:              # always-loaded agent-context token budget
  soft: 6000
  hard: 16000
gate:
  threshold: 50             # toaster gate pass bar
recommend:
  below: 0.75               # emit recommendations for categories below this

Unknown category ids are rejected — the category set is fixed.

Output

A single JSON document per repo, pinned to the scored git SHA, with a timestamp and rubric version. Categories carry their weight, normalized subscore, contribution, cited evidence, and — for anything below the bar — recommendations (cause + what to do). --format markdown|html renders the same data for PR comments or job summaries.

How it's built

toaster-ready is built AI-assisted and human-reviewed, and it's transparent about that — it's a tool about agent-readiness, so it practices what it measures. The rigor behind it: decisions recorded as ADRs, a deterministic-by-design core (no LLM in the scoring path), real test coverage, an adversarial security/correctness/quality review before release, and — the proof — toaster-ready scores itself, and you can read the cited result. See CONTRIBUTING.md.

Roadmap

  • Skill layer — an optional agent-driven wrapper that adds judgment scoring, resolves linked source material (e.g. Confluence/Jira) via an MCP integration, and persists scorecards/<slug>.json. The binary stays pure.
  • GitHub Action — drop-in CI adoption.
  • gitleaks — swap the regex secret floor for a full scanner.

License

Apache-2.0 © Drew Tittle.

Directories

Path Synopsis
cmd
toaster command
Command toaster scores how ready a repository is for someone — a new hire or an agent — to ramp up on, and emits a cited, provenance-bearing scorecard.
Command toaster scores how ready a repository is for someone — a new hire or an agent — to ramp up on, and emits a cited, provenance-bearing scorecard.
internal
check
Package check runs the deterministic rubric (v2 — docs/adr/0002) against a repo and assembles a weighted /100 scorecard.
Package check runs the deterministic rubric (v2 — docs/adr/0002) against a repo and assembles a weighted /100 scorecard.
config
Package config resolves toaster-ready's configuration: the maintainer's opinionated defaults (rubric v2) with any overrides from a repo's .toaster-ready.yml applied on top.
Package config resolves toaster-ready's configuration: the maintainer's opinionated defaults (rubric v2) with any overrides from a repo's .toaster-ready.yml applied on top.
ctxbudget
Package ctxbudget estimates the always-loaded agent-context footprint of a repository — the instructions and memory that get injected into an agent every session — so bloat can be penalized (a facet of the agent-instructions category in ADR-0002).
Package ctxbudget estimates the always-loaded agent-context footprint of a repository — the instructions and memory that get injected into an agent every session — so bloat can be penalized (a facet of the agent-instructions category in ADR-0002).
detect
Package detect identifies a repository's language/stack so category checkers can apply the right signals.
Package detect identifies a repository's language/stack so category checkers can apply the right signals.
githubclient
Package githubclient is the narrow seam between toaster-ready's checkers and GitHub.
Package githubclient is the narrow seam between toaster-ready's checkers and GitHub.
render
Package render turns a scorecard into human-readable formats — Markdown (for PR comments / job summaries) and a plain HTML page — alongside the machine JSON.
Package render turns a scorecard into human-readable formats — Markdown (for PR comments / job summaries) and a plain HTML page — alongside the machine JSON.
repo
Package repo acquires a target repository (local path or remote clone) and exposes the cheap filesystem/git facts the deterministic checkers need.
Package repo acquires a target repository (local path or remote clone) and exposes the cheap filesystem/git facts the deterministic checkers need.
scorecard
Package scorecard defines the output schema toaster-ready emits for a scored repo (rubric v2 — see docs/adr/0002).
Package scorecard defines the output schema toaster-ready emits for a scored repo (rubric v2 — see docs/adr/0002).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL