{"schemaVersion":1,"generatedAt":"2026-09-09T05:40:30.102Z","product":"Bystep","cli":{"package":"@bystep/cli","version":"0.3.0","run":"npx @bystep/cli <command>","manifest":"npx @bystep/cli --llms","exitCodes":{"0":"ok","1":"runtime/API error, or verification failed","2":"validation error (bad input, missing ids, usage)","3":"a stage gate (checkpoint) is waiting for human approval"},"commands":[{"name":"login","args":[],"options":["--token <token>"],"description":"Log in (device flow in the browser, or a bs_ token)."},{"name":"connect","args":[],"options":["--workspace <id>","--plan <id>","--json"],"description":"Bind this repository to a Bystep workspace/plan (.bystep/config.json)."},{"name":"init","args":[],"options":["--json","--no-hooks"],"description":"Install the bystep skill, guard hook and subagents into the detected coding agents (Claude Code, Cursor, Copilot, OpenCode, AGENTS.md)."},{"name":"doctor","args":[],"options":["--json","--repo"],"description":"Check the local setup; with --repo, score this checkout for agent readiness offline."},{"name":"plan get","args":["[planId]"],"options":["--json"],"description":"Fetch the PRD of a plan (text, or raw JSON with --json)."},{"name":"plan list","args":[],"options":["--json"],"description":"List the plans of the logged-in user."},{"name":"plan exec","args":[],"options":["--plan <id>","--mode <autopilot|checkpoint|strict>","--verifier <local|reviewer|ci>","--model <tier=model>","--json"],"description":"Set the execution mode, verifier and model hints of a plan."},{"name":"task next","args":[],"options":["--plan <id>","--json","--no-packet"],"description":"Ask the server for the ONE next task (with its Task Packet). Exit 3 when a checkpoint is pending."},{"name":"task list","args":[],"options":["--plan <id>","--json"],"description":"List tasks of a plan."},{"name":"task start","args":["<ref>"],"options":["--plan <id>","--json"],"description":"Mark a task in progress and snapshot the usage counters."},{"name":"task verify","args":["<ref>"],"options":["--plan <id>","--json","--skip <id>","--override <reason>","--no-screenshot","--timeout <seconds>","--tokens <in,out>","--cost <usd>","--model <id>"],"description":"Run the acceptance criteria locally and upload the evidence. Exit 1 when it fails."},{"name":"task complete","args":["<ref>"],"options":["--plan <id>","--json","--override <reason>","--skip <id>","--no-screenshot","--timeout <seconds>","--tokens <in,out>","--cost <usd>","--model <id>"],"description":"Complete a task (runs verify first; refused while the evidence has not passed unless --override)."},{"name":"task fail","args":["<ref>","[reason]"],"options":["--plan <id>","--json","--tokens <in,out>","--cost <usd>","--model <id>"],"description":"Mark a task failed with a reason."},{"name":"task packet","args":["<ref>"],"options":["--plan <id>","--json"],"description":"Print the Task Packet of a task."},{"name":"task guard","args":[],"options":["--plan <id>","--json"],"description":"Claude Code Stop/TaskCompleted hook: refuse to stop while the started task has no passing evidence."},{"name":"task approve","args":["<phase>"],"options":["--plan <id>","--layer <all|frontend|backend>","--note <note>"],"description":"Approve a phase checkpoint."},{"name":"wave next","args":[],"options":["--plan <id>","--json"],"description":"Get the next wave of up to 4 non-overlapping task packets."},{"name":"import","args":["<path>"],"options":["--from <speckit|openspec|backlog|taskmaster>","--workspace <id>","--json"],"description":"Import an existing spec/backlog (Spec Kit, OpenSpec, backlog.md, Task Master) into a Bystep plan."},{"name":"workspace list","args":[],"options":["--json"],"description":"List workspaces."},{"name":"sync","args":[],"options":["--plan [id]","--if-changed","--json"],"description":"Upload the repository manifest (paths, sizes, hashes, languages; never secrets) and local file summaries."},{"name":"status","args":[],"options":["--json"],"description":"Show the connection and the current task."},{"name":"whoami","args":[],"options":["--json"],"description":"Show the logged-in user and API URL."},{"name":"serve","args":[],"options":["--name <name>","--dir <path>","--yolo","--once","--doctor","--json"],"description":"Connect this computer to Bystep and build steps here with your own Claude Code / Codex login (--doctor checks readiness)."},{"name":"decision list","args":[],"options":["--workspace <id>","--history","--json"],"description":"List the active decisions of a workspace (--history adds replaced ones)."},{"name":"decision add","args":["<text>"],"options":["--why <reason>","--workspace <id>","--plan <id>","--json"],"description":"Record a decision — binding for every agent from the next task on."},{"name":"decision replace","args":["<id>","<text>"],"options":["--why <reason>","--workspace <id>","--json"],"description":"Replace a decision; the old one stays in the history, marked as replaced."}]},"mcp":{"package":"@bystep/mcp","version":"0.3.0","transport":"stdio","tools":[{"name":"plan_get","description":"Fetch the full PRD of a plan as text or JSON."},{"name":"plan_list","description":"List the plans of the logged-in user."},{"name":"task_next","description":"Pick the ONE next task (with packet)."},{"name":"task_packet","description":"Task Packet of a task."},{"name":"task_start","description":"Mark a task in progress."},{"name":"task_verify","description":"Run acceptance criteria and upload evidence."},{"name":"task_complete","description":"Complete a task; 409 without passing evidence."},{"name":"task_fail","description":"Mark a task failed with a reason."},{"name":"task_evidence_get","description":"Read the recorded evidence of a task."},{"name":"phase_approve","description":"Approve a phase checkpoint."},{"name":"wave_next","description":"Next wave of non-overlapping task packets."},{"name":"sync_status","description":"Codebase sync status of the connected workspace (file/summary counts, wiki)."}]},"mcpHosted":{"endpoint":"https://bystep.dev/api/mcp","transport":"streamable-http","auth":"Authorization: Bearer bs_<token>","tools":[{"name":"list_plans","description":"List plans with plain-language status."},{"name":"plan_status","description":"Steps done / total, current stage, what is waiting for the user."},{"name":"run_next","description":"Start the Runner on the next step (uses a monthly step credit)."},{"name":"run_status","description":"Plain-language progress of a run."},{"name":"preview_url","description":"Link to try the app on a phone."},{"name":"approve_stage","description":"Approve the current stage gate."},{"name":"escalate","description":"Explain / revert / skip / ask a human when a step is stuck."}]},"packet":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"TaskPacket","type":"object","required":["ref","title","description","layer","priority","tier","escalated","feature","prdExcerpt","acceptance","ownedFiles","doNotTouch","relevantFiles","conventions","verifyCommands","execution","hypotheses","approxTokens"],"properties":{"ref":{"type":"string","description":"Task reference unique within the plan, e.g. T-12"},"title":{"type":"string"},"description":{"type":"string"},"layer":{"type":"string","enum":["frontend","backend"]},"priority":{"type":"string"},"tier":{"type":"string","enum":["light","standard","heavy"]},"escalated":{"type":"boolean","description":"true when the tier was bumped after two failed verifications"},"feature":{"type":"object","required":["name","phase","goal","done"],"properties":{"name":{"type":"string"},"phase":{"type":"integer"},"goal":{"type":"string"},"done":{"type":"array","items":{"type":"string"}}}},"prdExcerpt":{"type":"string"},"acceptance":{"type":"array","items":{"type":"object","required":["id","text","kind"],"properties":{"id":{"type":"string"},"text":{"type":"string"},"kind":{"type":"string","enum":["test","build","lint","http","file","screenshot","manual"]},"cmd":{"type":"string"},"expect":{"type":"string"},"validates":{"type":"string","description":"hypothesis id (H-1…) this criterion validates"}}}},"ownedFiles":{"type":"array","items":{"type":"string"},"description":"the only files the agent may change"},"doNotTouch":{"type":"array","items":{"type":"string"},"description":"files/globs owned by other tasks or protected by a project rule"},"relevantFiles":{"type":"array","items":{"type":"object","required":["path","summary"],"properties":{"path":{"type":"string"},"summary":{"type":"string"}}}},"conventions":{"type":"string","description":"code conventions + the PROJECT RULES block (ALWAYS / NEVER / ASK FIRST)"},"verifyCommands":{"type":"array","items":{"type":"string"}},"modelHint":{"type":["string","null"]},"execution":{"type":"object","properties":{"mode":{"type":"string","enum":["autopilot","checkpoint","strict"]},"verifier":{"type":"string","enum":["local","reviewer","ci"]}}},"hypotheses":{"type":"array","items":{"type":"object","required":["id","text"],"properties":{"id":{"type":"string"},"text":{"type":"string"},"metric":{"type":"string"},"threshold":{"type":"string"},"test":{"type":"string"}}}},"approxTokens":{"type":"integer"}}},"evidence":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"EvidenceInput","type":"object","required":["criteriaResults"],"properties":{"status":{"type":"string","enum":["pass","fail"]},"criteriaResults":{"type":"array","items":{"type":"object","required":["id","kind","ok"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["test","build","lint","http","file","screenshot","manual"]},"ok":{"type":"boolean"},"output":{"type":"string","description":"≤ 4k chars, secrets redacted client-side"},"durationMs":{"type":"integer"},"skipped":{"type":"boolean"}}}},"commitHash":{"type":"string"},"diffStat":{"type":"object","properties":{"files":{"type":"integer"},"add":{"type":"integer"},"del":{"type":"integer"}}},"filesTouched":{"type":"array","items":{"type":"string"}},"screenshots":{"type":"array","items":{"type":"string"}},"durationMs":{"type":"integer"},"tokens":{"type":"object","properties":{"input":{"type":"integer"},"output":{"type":"integer"},"cacheRead":{"type":"integer"},"cacheWrite":{"type":"integer"}}},"cost":{"type":"number","description":"USD; estimated from tokens when absent"},"agent":{"type":"string"},"model":{"type":"string"},"attempt":{"type":"integer"}}},"links":{"agentGuide":"https://bystep.dev/agent-guide.md","agentGuideEn":"https://bystep.dev/agent-guide.en.md","llms":"https://bystep.dev/llms.txt","llmsFull":"https://bystep.dev/llms-full.txt","docs":"https://bystep.dev/docs","start":"https://bystep.dev/mulai"}}