steps: list inside a :::ordered_block id=<id> fence in
skill.md. This page is the full step vocabulary. For when to reach for a block
at all, see Ordered Blocks.
Step kinds
The kind is inferred from which key the step carries.Step fields
A
collect: step names its question with utterance:; an action: step
names the response to deliver with action:.Implicit next
A step with no next falls through to the step below it, and the last step
falls through to END. Add next: where you are branching or jumping
backwards.
Conditional branching
Anext: branch list routes on conditions, with else: as the fallback:
else: last.
Conditions use the standard expression grammar. See
Conditions.
Routability
A block’s reachability follows from the shape of the skill:Repeating a collect
Use this when the collect utterance is a page of dynamic buttons (buttons: {source: ...}). Handle the tap, clear the collected field, and
route back to the same collect: step. You do not need a second collect or an
action_listen between pages. The engine asks again and the button source
runs for the new page.
This block asks for an appointment time. A Next button writes
slot_choice. The tool turns the page, clears that field, and the else:
branch returns to collect_slot.
slot_choice. The tool then stores
selected_time instead of clearing the field, so route_choice takes
selected rather than looping.
See also
- Ordered Blocks: when to use one
skill.mdreference: the fence and frontmatter- Conditions: the expression grammar
- Dynamic buttons: button source tools