The layers
| Layer | What it controls | Where it lives in Smithers |
|---|---|---|
| Prompt engineering | instructions, examples, role, output format, success criteria | the prompt .mdx a <Task> renders |
| Context engineering | what information, tools, memory, schemas, and state enter the model each step | the workflow graph + memory + typed outputs |
| Harness engineering | runtime, tools, conventions, permissions, retries, fresh-context loops | agents.ts, sandboxes, tools, repoCommands |
| Workflow engineering | order, parallelism, review loops, approvals, resumability, artifacts | the Smithers runtime itself |
| Backpressure | every desired behavior becomes a gate, test, eval, schema, reviewer, approval, or loop condition | Zod outputs, bunx smithers-orchestrator eval, <ReviewLoop>, <Approval>, traces |
Backpressure, concretely
Turn each success criterion into a verification signal, and pick the Smithers primitive that enforces it:- Schema: the step must return a shape: a Zod
output={...}on the<Task>. - Test: generated code must pass: a function task shelling out to
repoCommands.test. - Eval: an answer must satisfy examples/rubrics:
bunx smithers-orchestrator eval+ scorers. - Review: another agent (or human) must approve:
<ReviewLoop>/<Panel>. - Approval: a human signs off before a risky action:
<Approval>. - Dependency: step B can’t start until step A produced a field: gate on
ctx.outputMaybe(...). - Trace: tool calls, retries, and handoffs must be visible: observability +
bunx smithers-orchestrator events.
<Loop> / <Ralph until={…}>) rather than running once
and hoping.
Smithers does the context engineering for you
You should not need to know any of the above to get a workflow. Thecreate-workflow workflow is the entry point to the
“context engineering for you” layer:
llms-*.txt, finds the closest examples/ template, and
installs worker skills via bunx smithers-orchestrator skills add), designs the graph, pauses for
your approval, scaffolds the files, verifies the graph renders, and documents the
result. You answer product questions; it produces the prompts, context, components,
and gates.
This is the direction Smithers is heading: a concierge that takes a vague script,
interrogates it, routes it to the right skills and workflows, adds backpressure, runs
as much as it can, and reports legibly. The durable, observable, gated workflow
is something you describe rather than hand-build.