Every vague request produces a vague output. The agent doesn't know who the reader is, what "done" looks like, or which of the five interpretations of your request you actually meant. It makes a reasonable guess and starts. Ten minutes later you have something that's technically responsive and completely wrong, and now you're editing instead of approving.
The shaper is the fix. A shaper is an intake agent whose only job is to turn a half-formed idea into a scoped brief before any execution agent touches a file. Not "clarify the request." Produce a structured document that removes all ambiguity for everything downstream. Intake quality is the ceiling on execution quality. A shaper enforces that ceiling before execution starts. Without one, every agent downstream simply inherits your ambiguity and confidently acts on it.
This is Part 2 of the Build Your Own AgenticOS series. If Part 1 covered the atomic unit (the skill file), Part 2 is about the layer that protects every skill from getting fired at the wrong target.
Here's what this post delivers:
What a shaper does, and why it's distinct from the skill it feeds
Why shapers come first in every request lifecycle
The real routing logic from
CLAUDE.mdin this repo (which requests route to which shaper and how)How to write a shaper using the
AskUserQuestionpatternWhen to skip the shaper entirely (the answer is narrower than you think)
A starter shaper template you can copy today
Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.