Skip to main content
An ordered block is a 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

A next: branch list routes on conditions, with else: as the fallback:
Branches are evaluated in order and the first match wins, so put 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.
A time button still writes slot_choice. The tool then stores selected_time instead of clearing the field, so route_choice takes selected rather than looping.

See also