Repository navigation
Lab Zero v1.20.0 — helper agents, one-run updater, report-all reviews, curated seeding
Updating to this release: run bash update.sh twice. This release adds a new machinery folder, and the update.sh you already have only learns about new folders from the copy it downloads — so the first run fetches the new updater and the second run delivers the rest. In a graduated project, commit between the two runs (git add -A && git commit -m "lab-zero update") — otherwise the second run lists the first run's files as uncommitted changes about to be overwritten; that warning is harmless here, and pressing Ctrl-C at it stops the lanes from arriving. After the first run, --check already reports v1.20.0, so check the result instead: ls .claude/agents/lab-zero/ should show lab-reader.md and lab-reviewer.md. If it doesn't, run bash update.sh again. From this release on, one run is enough (see the first item below).
-
update.shnow finishes in one run, even when a release adds something new. A running updater worked from the list of machinery paths it started with, so a path added upstream arrived only on your next run. Now, if the updater itself changed during the run, it restarts the new copy once, with your original arguments, and that pass picks up anything new. It restarts at most once (a guard variable stops any loop), never in--checkmode, and in a project'supdate.shthe second pass doesn't repeat the "uncommitted changes will be overwritten" warning for files the first pass just wrote. Tested on bash 5; not yet exercised on bash 3.2 (the macOS default). If the restart ever stops early there, runningbash update.shonce more completes the update. -
Two read-only helper agents ship with the engine (Claude Code).
lab-reader(Sonnet) answers a question from the files with a short cited answer and marks anything it couldn't confirm, with where it looked.lab-reviewer(Opus) runs an adversarial pass — risk, feasibility, scope, or a diff — and reports every finding with severity, confidence andfile:line, leaving the ranking to you. Both can only read, search and list files. Each one's description says when to use it and that it is not for re-checking your own work. They live in.claude/agents/lab-zero/, which is the only part of.claude/agents/the updater touches — agents you write yourself stay yours, andcontribute.shnever sends anything under.claude/agents/ortemplate/.claude/agents/upstream. Codex: these are Claude Code agent files, and Codex doesn't read them — the helpers change nothing for Codex. (The skill changes below do reach Codex.) If a helper is ever renamed or withdrawn, that release's notes will carry thegit rmline, because updating never deletes. -
Reviews now report everything, then filter.
/auditand/discover-skillsused to cap how many findings they reported (about 8 per file and about 6 candidates per pass). Current models can follow a cap like that literally and report less, not just show less. Now they inventory everything first, then show a ranked short view, and the written report lists every item left out of that view with a one-line reason. An unverifiable/audititem goes under Unverified leads with where it looked, and is never acted on until a fresh pass verifies it./discover-skillsrecords overflow asDEFERRED, so the next sweep looks at it again instead of treating it as settled. A "nothing found" result now names what was checked./lab-plan's reviewers report every finding too, and the consolidation step lists each one it drops, with the reason. -
/lab-planno longer asks projects to guard a "shipped engine". Its list of changes that need a plan was written for the Lab Zero factory. It now reads: code or config others depend on (a published package, a deployed service, a shipped template), a hook, security or auth, user data, a release, or a change spanning several files or systems. It also points at your project constitution asAGENTS.md/CLAUDE.md, and/auditno longer names a Claude-specific tool. -
A new project's memory starts with the starter habits only.
new-project.shused to copy your Lab's whole memory into each project it graduated — Lab-only memories and facts frozen on the day of stamping included. It now seeds exactly the curatedmemory-seed/starter set, and never overwrites a file that's already there. To also copy your Lab's own memories, pass--seed-from-lab(same no-overwrite rule; your Lab'sMEMORY.mdindex is not copied over the starter one, so those extra files won't be listed in it).--no-seedstill skips seeding./new-projectnow describes this, and correctly says the purpose goes into the project'sAGENTS.md. On an existing install: this affects projects you graduate from now on; existing projects' memory is untouched.