Skip to main content
Vendo assembles the agent’s system prompt from four channels: a product brief, company directions, host instructions, and (for generation) design rules. Each channel has one contracted place to live, and this page maps each to that place and to its position in the assembled prompt. Directions are policy data. Put them in the policy file or inline PolicyConfig. There is no merge rule between two directions channels.

Prompt assembly order

The agent assembles its system prompt fresh for each turn. Conditional sections drop out entirely; the rest keep this order:
  1. Vendo’s operating prompt.
  2. Presentation guidance, when the venue can render trees (chat and app).
  3. Capability-miss reporting guidance, when enabled.
  4. Discovery-budget guidance, when tool search is on.
  5. The deployment’s prose — createVendo({ instructions }), else .vendo/brief.md.
  6. Company directions returned by guard.directions(ctx).
  7. Catalog and theme summary, when the venue can render trees.
  8. The knowledge index, when knowledge is configured and the venue can render trees. There is no separate trailing host-instructions section: brief and agent.instructions were the same prose under two names, and they merged into the one instructions key at position 5. Policy belongs in guard directions, not here.
The apps generation engine has its own specialized prompts for tree emission and code edits. It receives the component catalog, theme, optional design rules (createVendo({ apps: { designRules } }), else .vendo/design-rules.md re-read per generation), and format limits. It can use the same model as the agent or a different AI SDK LanguageModel. Memory is deferred and has no reserved v0 seam.

Teach your own agent when to build UI

If you brought your own agent loop, none of the channels above apply: your agent has your system prompt, not Vendo’s. A tool your agent never reaches for is not a feature, so paste this beside whatever you already say about your other tools.
Add this second block too. WHERE IT LANDS applies to both doors. Add MOVING ONE THEY ALREADY HAVE only if your agent reaches Vendo over MCP, because teaching an agent about a tool it does not have is how you get an invented tool call. The in-process tool pack carries no vendo_apps_* tool.
The same guidance ships to Claude Code as a skill: examples/claude-code-plugin/skills/make-a-screen. What the tool hands back is on Generated UI.