diff --git a/.agents/skills/workflow-creator/SKILL.md b/.agents/skills/workflow-creator/SKILL.md
index 16f4b3250..9187f6933 100644
--- a/.agents/skills/workflow-creator/SKILL.md
+++ b/.agents/skills/workflow-creator/SKILL.md
@@ -97,9 +97,16 @@ Workflow quality depends on two disciplines: **prompt engineering** (crafting cl
A workflow is a TypeScript file with a single `.run()` callback that orchestrates agent sessions dynamically. Inside the callback, `ctx.stage()` spawns sessions — each gets its own tmux window and graph node (unless running in headless mode). Native TypeScript handles all control flow: loops, conditionals, `Promise.all()`, `try`/`catch`.
```ts
-import { defineWorkflow } from "@bastani/atomic/workflows";
-
-export default defineWorkflow<"claude">({ name: "my-workflow", description: "..." })
+import { defineWorkflow, extractAssistantText } from "@bastani/atomic/workflows";
+
+export default defineWorkflow({
+ name: "my-workflow",
+ description: "...",
+ inputs: [
+ { name: "prompt", type: "text", required: true, description: "task to perform" },
+ ],
+ })
+ .for<"claude">()
.run(async (ctx) => {
const step1 = await ctx.stage({ name: "step-1" }, {}, {}, async (s) => { /* s.client, s.session */ });
await ctx.stage({ name: "step-2" }, {}, {}, async (s) => { /* s.client, s.session */ });
@@ -121,7 +128,7 @@ await ctx.stage(
async (s) => {
const result = await s.session.query("Analyze the codebase structure.");
s.save(s.sessionId);
- return result.output;
+ return extractAssistantText(result, 0);
},
);
```
@@ -182,23 +189,23 @@ Workflow files live at `.atomic/workflows/