The lower-level layer the /pb-* skills shell out to — most people never type it. Reach for it to script the loop, drive it from another host, or control the mechanical steps directly. Invoke as plumbbob <verb> (also pb). Every verb is a pure function that writes to stdout/stderr and returns an exit code; the only process.exit is the bin entry. Every session verb accepts --build <slug> to target a specific build. Each row is a verb, its synopsis, and what it does.
Which build a verb acts on resolves in order: --build <slug> → the active-build cursor in STATE → the sole build in builds/ → a refusal with a hint. help and version round out the surface.
The gate-narrowing flags map straight onto checkride's own flags. On the check override path (a custom "check" command) they are warned-and-ignored. checkpoint's gate takes no flags — the commit gate is always the full run.
The 1-vs-2 distinction is a promise a caller can branch on: a failed check ("the work isn't done") is a different thing from the gate itself breaking ("fix the harness"). Never trust green or red until you know the gate ran.
The sidecar splits into a tracked artifact plane and an untracked control plane. The artifact plane — settings.json and every builds/<slug>/ folder — is committed, so a build's record rides its branch into the PR. The control plane stays git-excluded via info/exclude, not .gitignore — nothing PlumbBob-specific is imposed on the repo. A session is live iff STATE is present.
Settings live in a tracked settings.json at the sidecar root — optional JSON, so a missing or malformed file contributes nothing rather than wedging the tool. A value resolves from a CLI flag first, then settings.json, then a built-in default.
The per-worktree active-build cursor is not a setting — it lives in the untracked STATE file, so your settings.json stays purely declarative.
This is the interface you actually use. Every skill is disable-model-invocation — you fire every move. Claude Code namespaces them under the plugin, so the real command is /plumbbob:pb-plan; the short form /pb-plan is for readability. The CLI verbs are the lower-level layer these shell out to — reach for them only to script the loop or drive it from another host.