Skip to main content
Maestro builds the system prompt from a fixed set of sections, in a fixed order, on every turn. Which sections appear depends on the situation: whether a skill is active, whether a knowledge search has run, whether a tool is paused for confirmation. This page documents the assembly. For the full text of each assembled prompt, see Prompt templates.

Assembly order

Sections are appended in this order. Anything conditional is skipped entirely rather than rendered empty. Section 7 is the branch that gives each situation its character. A skill is active, so its instructions are rendered; or a knowledge search has run this turn, so the compact answer-from-knowledge section replaces them; or no skill is active, so the routing catalogue is rendered instead. The prompts keys in the table replace their section’s built-in default text. Leaving one unset keeps the default. See agent.yml.

Situations

Pending tool confirmation can sit on top of any of these five.

Sections that carry runtime data

Some sections are pure framing and some are filled from live conversation state. The templates only supply the framing. Everything below comes from your compiled skills and the current tracker:
  • Skill instructions and step text, from skill.md
  • Memory entry names, descriptions, and current values
  • Routing catalogue entries, from each skill’s description and requires:
  • Paused work, from the stack. See below
  • The confirmation question, from utter_for_confirmation
Paused work covers three cases, each listed with the id the model needs to return to it: The first two resume on their own when the work they are waiting on completes. An interrupted task resumes only if the customer wants it to, which is why the prompt lists them: the model needs the ids to make that offer. See Skills & Routing. This is why two agents running the same engine version see prompts that look very different. The framing is identical, the content is yours.

The separate LLM calls

Not every model call uses the main system prompt. Four others exist, each with a much smaller prompt: The rephrase calls are given no tools at all, which is what makes them safe for verbatim wording: the model can only return text. Memory discovery is the one that sits outside the turn. It runs once the agent’s reply has already gone out, so it never adds to the customer’s wait, and it is best-effort: a failure is logged and the turn still counts as successful.

See also