Structure it in blocks
Treat the prompt as a few labelled sections rather than one paragraph. A dependable shape:- Persona — who the agent is and the traits it should hold.
- Environment — the context it operates in and what it can assume about the caller and situation.
- Tone — how it should sound: pacing, formality, length of replies.
- Goal — the outcome it’s driving toward, ideally as ordered steps.
- Guardrails — the non-negotiable rules and what it must never do.
Write for speech, not screen
- Be concise. Long replies are tedious to listen to and can’t be skimmed. Tell the agent to keep turns short and ask one question at a time.
- Avoid unspeakable text. Don’t have it read URLs, raw IDs, or long numbers verbatim — instruct it to summarize or spell out only what’s necessary.
- State the critical rules twice. Repeating the one or two most-important constraints noticeably improves adherence.
- Mark the steps that matter. An explicit “This step is important” in front of a critical instruction raises compliance.
Keep it tight
Remove filler. Every sentence the model has to read is latency and a chance to be misinterpreted. Restate only what’s essential for the agent to act correctly, and cut anything that doesn’t change behavior.Iterate with drafts and preview
You don’t have to get it right in one shot:- Edit the prompt — it autosaves to your draft on the current branch.
- Open Preview and talk to the agent with the draft applied.
- Adjust and repeat.
- Publish a version once it behaves, or fork a branch to try a bolder rewrite in isolation.
An empty system prompt is invalid: the agent has no behavior to run.
The dashboard surfaces this as an Errors badge and blocks
publishing until it’s filled in.