| Skill routing | Filters skills by requires:. Manages dialogue stack. Enforces @skill.<name> vs interrupt semantics. | Which skill to activate based on user intent |
| Pure prose | Nothing (unless tool_constraints present) | Full freedom: navigation, tool selection, ordering, branching |
| if: markers | Strips non-matching paragraphs from the prompt. The LLM cannot see inapplicable branches. | Everything within visible paragraphs |
| tool_constraints | Hides the tool from the LLM until requires: is met, and blocks dispatch. Pauses for optional requires_confirmation: before sensitive tools. | When to attempt the tool call |
| Ordered block | Step sequence: the pointer never moves backward or jumps past an unsatisfied step. Deterministic steps (execute_tool:, noop:, set_memory:, action:, and already-satisfied collect:) execute without the LLM. | Conversation within instructions: steps, and value extraction in collect: steps |