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:- Vendo’s operating prompt.
- Presentation guidance, when the venue can render trees (chat and app).
- Capability-miss reporting guidance, when enabled.
- Discovery-budget guidance, when tool search is on.
- The deployment’s prose —
createVendo({ instructions }), else.vendo/brief.md. - Company directions returned by
guard.directions(ctx). - Catalog and theme summary, when the venue can render trees.
- The knowledge index, when knowledge is configured and the venue can
render trees.
There is no separate trailing host-instructions section:
briefandagent.instructionswere the same prose under two names, and they merged into the oneinstructionskey at position 5. Policy belongs in guard directions, not here.
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.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.
examples/claude-code-plugin/skills/make-a-screen.
What the tool hands back is on
Generated UI.