Custom steps
A step is a program.
A step is a program. Kusaw sends it a request, it reports progress, and it ends with a result. Every step, built-in or custom, speaks the same step protocol. The built-in steps are defaults you can replace.
When to write a step
Write a custom step when you have something of your own to run:
- a check you already run
- a tool you trust
- your own agent prompt
- a different review
A config change is enough when you only need to adjust a default: its timeout, retries, fail_on, verification commands, or which MCP servers and skills it may use. You do not need a custom step to rename a timeout.
Built-in steps are defaults
builtin: <name> and command: [...] start the same way. Kusaw handshakes the program, sends the request, and reads progress and a result. Replacing the default review step, or the default build step, does not change gates, loops, or feedback as long as you keep the same step id.
In this section
- Write your first step — handshake, request, progress, result, and a Python 3 worked example
- Replace a built-in step — point a pipeline entry at your command and keep the same id
- Use an agent inside your step — print or run the built-in provider argv with
kusaw agent-args - Ask the user: interactive turns — a turn step that asks the user questions with
await_input, one per run - More examples — the Python worked example, a checklist review, and the Go example
- Example pipelines — four complete pipeline shapes (loop, reviewer, planner) that call
kusaw agent-args