Every block has one job.
rubr_flow works because it makes the hidden control surface visible: what the agent knows, what it may do, how it moves, and how success is checked. Six blocks carry the procedure; four are optional.
TASK
States the objective in one sentence so the agent and the reader agree on what done means.
TASK "Improve onboarding completion"CONTEXT
Separates durable facts from the procedure so the agent stops re-deriving what it already knows.
CONTEXT user is new to [PRODUCT]INPUTS
Names the files, data, and assumptions the work depends on instead of leaving them implicit.
INPUTS current_flow, [ANALYTICS], drop_off_pointRULES
Makes boundaries and preservation requirements visible so edits stay inside the lines.
RULES change only copy and step orderTOOLSoptional
Declares which capabilities the agent may call, turning an open toolbox into a short list.
TOOLS READ [ANALYTICS]STATEoptional
Initializes the working memory the flow accumulates, so intermediate results have a home.
STATE friction_notes = []FLOW
Lists the ordered work as labelled steps with branches and handoffs the agent follows in sequence.
FLOW REVIEW each screen -> friction_notesONoptional
Handles the predictable failure: what to do when context is missing or a step cannot complete.
ON missing_context ASK user -> detailOUTPUT
Defines the shape of the final artifact before the work starts, so the result is never a surprise.
OUTPUT changed_copy, rationale, risk_notesVERIFY
Gives the agent a pass/fail finish line instead of asking it to decide when the work is good enough.
VERIFY PASS WHEN next action is obvious