Most agent setups still rely on one giant prompt doing everything.
It might feel productive at first, but over time it becomes harder to reuse, harder to debug, and almost impossible to trust. You end up re-explaining the same tools, the same workflows, and the same preferences in every session.
Baruch Sadogursky (
@jbaruch ) says, "there’s a cleaner way to think about it".
Split your agent into three layers:
• Library → the actual engine (APIs, code, data access)
• Skill → how the agent should use that engine
• Policy → your rules, preferences, and constraints
Once you do this, things start to behave very differently. The agent stops guessing how your tools work, your workflows become consistent, and you can reuse the same setup across projects without dragging along all your personal context.
The interesting part is the policy layer. That’s what makes the same agent behave differently for different people. One team might optimise for speed, another for safety or compliance, all on top of the same underlying system.
The tricky part is that when policy fails, it’s not obvious. The agent still sounds confident, even when it quietly ignores your rules. That’s why structure and evaluation matter much more than just better prompts.
If your agent feels unreliable, it’s often not the model. It’s the lack of separation between these layers.
Worth a read if you’re building or working with agents:
tessl.io/blog/i-invented-a-t…