Variables
Dynamic prompts with placeholders.
{{variable}} Syntax
Use double braces in any string:
const greeter = prompt("greeter", (p) =>
p
.persona("assistant helping {{name}}")
.context("topic: {{topic}}")
);Type Safety
Variables are extracted and typed automatically:
greeter.toString({ name: "Alice", topic: "TypeScript" }); // ✅
greeter.toString({ name: "Alice" }); // ❌ missing 'topic'Works Everywhere
Variables work in any builder method:
const helper = prompt("helper", (p) =>
p
.persona("{{role}} assistant")
.context("domain: {{domain}}")
.output("{{outputFormat}}")
.constraint("max {{maxWords}} words")
);
helper.toString({
role: "senior dev",
domain: "TypeScript",
outputFormat: "code review",
maxWords: "200"
});With Optionals
Variables inside optional blocks are only required when enabled:
const assistant = prompt("assistant", (p) =>
p
.persona("assistant for {{company}}")
.optional("formal", (p) =>
p.do("use formal language for {{audience}}")
)
);
// Only 'company' required
assistant.toString({ company: "Acme" });
// Both required when formal=true
assistant.toString({
company: "Acme",
formal: true,
audience: "executives"
});