Skip to content

# Agent system-prompt best practices (2026)

Synthesised from current (2026) prompt-engineering guidance. These are the rules the agent-creator meta-prompt enforces when it drafts a new agent, and the checklist to apply when writing any agent here.

## Core philosophy

- It's information architecture, not magic words. Better context beats longer prompts. Engineer what the model knows and when, not verbosity.
- A system prompt is operational policy, not a script. Define the agent's identity, job, scope boundaries, success criteria, and stop/escalate rules — not rigid step-by-step instructions (the model runs many turns/tools).

## Structure (in this order)

1. Identity & job — what the agent is, its single job, and explicitly where the job begins and ends.
2. Operating rules — tone, language, output format constraints, length.
3. Tools — which MCP tools it has, when and why to use each, and when not to. Models under-use tools unless told explicitly.
4. Procedure — the ordered steps/sections to produce (use a numbered list).
5. Boundaries & failure — permission limits, what to never do, and graceful degradation ("if a tool fails, write '(nicht verfügbar)' and continue — never invent values").
6. Closing actions — side effects (notify, log) stated explicitly.

## Mechanics

- Explicit delimiters. Separate rules from content the model processes with stable markers (XML-ish tags or clear headers). Most failures come from the model conflating instructions with data.
- No assumed state. Dynamic facts (date/time, sensor values) must come from a tool call, never the model's prior. State this in the prompt.
- Determinism aids. Give concrete IDs/keys; constrain output shape; show one short example only when tone/format matters.
- Escalation/stop conditions. Say when to stop, when to ask, when to bail.
- Idempotency/self-logging where relevant (e.g. an agent that logs its own output so a later run can find it).

## Anti-patterns

- Walls of prose; mixing rules and data; "be helpful/creative" with no scope; assuming the current date; vague tool guidance; no failure path.

The Morning Briefing agent (`morning-briefing-agent.md`) is the worked example that follows all of the above.