The AIP instructions editor is a block editor — your instructions are built from blocks, much like a document is built from paragraphs. Most blocks are ordinary rich text. Two are purpose-built for writing procedures: conditional blocks for if/else branching, and anti-pattern blocks for hard “never” rules.Documentation Index
Fetch the complete documentation index at: https://setup.cevro.ai/llms.txt
Use this file to discover all available pages before exploring further.
Working with blocks
Every block has a block handle — a six-dot grip that appears to its left when you hover. The handle is how you manage a block: drag it to reorder, or click it for a menu to delete the block, insert a new one, or Turn into a different block type.Standard blocks
These are the everyday building blocks, available through the block handle’s Turn into menu:| Block | Use it for |
|---|---|
| Text | Ordinary instruction steps and paragraphs |
| Heading 1–3 | Section titles in longer procedures |
| Bullet list | Unordered points |
| Numbered list | Ordered steps that must happen in sequence |
| Quote | Setting a passage apart |
| Code block | Verbatim text the AI should treat literally |
| Divider | A horizontal line between sections |
Conditional blocks
Most procedures branch. If the player is verified, do one thing; if not, do another. A conditional block builds that branching directly into your instructions as a structured If / Else block — instead of writing the branch as plain text and hoping Cevro reads it the way you meant.Why use a conditional block
You can always write a branch as plain text:- Cevro follows it more reliably. The If and the Else are distinct, labelled regions. There’s no ambiguity about which steps belong to which path.
- It appears correctly in the exported SOP. The block becomes a real decision point in the process-flow diagram of the exported SOP document — a plain-text “if” does not.
- It stays readable as procedures grow. Each branch can be collapsed, so a long procedure with several branches stays scannable.
Anatomy of a conditional block
A conditional block is a group of branches. Each branch has a condition and a body — the steps Cevro takes when that condition holds.- The first branch is the If. It always has a condition.
- An Else branch is the fallback — it has no condition and runs when the If did not.
- A branch can also be an Else if — a follow-up branch that carries its own condition, checked only if the branches above it didn’t apply.
Creating a conditional block
Write the condition as a line of text
On a new line in your instructions, type the condition — for example,
the withdrawal is still pending.Turn the line into an If
Click the line’s block handle, choose Turn into, and select If. The line becomes the condition, and an empty body opens below it for the steps.
Write the If body
Type the steps Cevro should take when the condition holds. You can use
@ mentions, lists, and other blocks inside a branch just like anywhere else in the editor.One conditional, or several?
This is the most important thing to get right. A single conditional block is a single decision — exactly one branch runs. Use one If/Else block when the branches are genuine alternatives to each other:Nesting
A branch body can contain another conditional block. Use this for a follow-up decision that only matters inside one branch:Conditions that reference player data
Because the condition is a normal editable line, you can place@ mentions inside it. The branch then turns on live data instead of a description:
@ mentions work.
Editing tips
| To do this | Do this |
|---|---|
| Collapse a branch | Click the chevron next to the If/Else label — the body folds away so long procedures stay scannable |
| Delete a branch | Open the branch’s block handle menu and delete it, or clear its condition and press Backspace |
| Move a conditional | Drag the block handle — the whole If/Else block moves as one unit |
| Add another branch | Use + Else, then give the new branch a condition to make it an Else if |
Anti-pattern blocks
An anti-pattern block marks behavior the agent must never do. It’s a dedicated, visually distinct block — so a hard “never” rule stands apart from the steps around it instead of getting lost inside a paragraph.Why use an anti-pattern block
Telling the agent what not to do is one of the most reliable ways to shape its behavior — see Use “Never” Constraints. An anti-pattern block makes that prohibition explicit:- It’s set apart visually. The block is clearly marked as a prohibition, so it reads as a rule, not a step.
- It keeps prohibitions findable. When you revisit a long AIP, the things the agent must avoid are easy to spot.
- It signals intent unambiguously. The content is framed as “do not do this” — there’s no chance Cevro reads it as a step to follow.
What goes in an anti-pattern block
Short, specific prohibitions. One rule per block reads best — you type the rule itself, and the block renders it with a distinct marker so it stands out from ordinary steps.Adding an anti-pattern block
Open the block handle menu
Hover the line where you want the block and click its six-dot block handle.
Insert the anti-pattern block
Choose the option to insert an anti-pattern block. An empty anti-pattern block appears.
Related Documentation
- Best Practices — Writing effective AIP instructions
- Player Context, Knowledge & Actions — Using
@mentions, including inside conditions - AI Procedures (AIPs) — Creating and structuring AIPs