Run init. It asks first, then writes:
npx vendo init --agent
Init detects the stack and prints ONE JSON object. {"status": "questions", …} means it wrote nothing: relay every prompt to the user
VERBATIM in chat, with its options. Each option carries the literal thing
you do to pick it, a flag for the re-run or a command to run first.
Then re-run with every answer:
npx vendo login --wait 90
npx vendo init --agent --use-case embedded --auth clerk --byo
That run writes, narrates itself, and ends on the receipt, the LAST JSON
object it prints: {"status": "written", …} with wrote (the files
it created), pasteEdits (the changes only you can make), tools,
riskRecommendations, and judgment, which is always delegated with a
checklist that is yours to work through. Both runs exit 0, so branch on
status, never on the exit code. All answers on the first call and it
writes in one pass.
Never relay a mechanical question. The deploy URL, the zod floor, the
theme slots and the live check are never asked: they take their defaults
and show up in the diff.
Init never edits a file a human wrote. Every file it writes is new and
Vendo-owned, plus its own package.json hooks. Mounting the visible
surface is a paste YOU must apply: the receipt carries it in pasteEdits
as { file, lines, why } and the run prints it in a framed "ONE STEP
LEFT" block. Apply it before calling the install done; vendo doctor
fails with E-WIRE-004 until it lands.