init seeds two things side-by-side: a .tsx orchestration skeleton that handles execution, and an .mdx prompt file you edit to change what the agent does. For most workflows you never touch the .tsx file.
The two-file model
| File | What it is | Who edits it |
|---|---|---|
.smithers/workflows/hello.tsx | Durable run, agent wiring, output schema | Rarely - only when you need branching, schemas, or loops |
.smithers/prompts/hello.mdx | The agent’s instruction - what you actually change | You, always |
.tsx file imports and renders the .mdx file at runtime. Editing the prompt changes agent behavior on the next run - no build step, no TypeScript.
Your first edit
Afterbunx smithers-orchestrator init, open .smithers/prompts/hello.mdx:
.tsx file didn’t change.
Template syntax
Props come from the workflow input and are interpolated with{props.key}:
props.<field> in the prompt.
Create a new MDX-backed workflow
Use the built-increate-workflow workflow:
- Create
.smithers/prompts/my-task.mdx- write the instruction. - Copy
.smithers/workflows/hello.tsx, rename the workflow name and prompt import. - Run
bunx smithers-orchestrator workflow run my-task.
When to graduate to TypeScript
Stay in MDX as long as possible. Add TypeScript only when you need:- Multi-step branching - different tasks depending on a prior output
- Parallel fan-out - multiple tasks running simultaneously
- Validated structured output - Zod schemas on task results
- Loops - retry until a score threshold passes