Macros
What you probably want
Three Digitorn features cover the use cases people usually mean by "macros":
Reusable commands → Skills
For commands the user can invoke (/commit, /review, /audit),
declare them under dev.skills. Each skill is a markdown file in
the bundle's skills/ directory; the agent reads the file when the
command is called.
dev:
skills:
- command: /commit
description: "Stage + commit + push the current diff"
path: skills/commit.md
- command: /review
description: "Adversarial code review with focus on security"
path: skills/review.md
Full reference: Skills System.
Reusable orchestration → Flows
For deterministic graphs (triage → specialist → approval → output),
use the flow: block. Flow nodes (agent, tool,
parallel, approval, decision, terminal) compose with a fully
implemented runtime, schema validation, and reachability checks.
Reusable prompt fragments → Bundle namespaces
For sharing prompt content across agents, use the
filesystem-backed namespaces ({{prompt.X}}, {{skill.X}}, {{behavior.X}}, {{include:path}}) - verified in
Expressions → Namespaces and
documented further in Bundle namespaces.
agents:
- id: assistant
system_prompt: |
You are an assistant.
{{prompt.guidelines}} # inlines prompts/guidelines.md
{{include:./shared/header.md}} # explicit path import
Multi-step workflows → Sub-agents
For composable multi-step flows where each step is itself an agent
turn, use the multi-agent pattern via Agent(...) - coordinator
spawns specialists. See Multi-Agent.
Cross-references
- Top-level blocks: App Configuration
- Skills (the closest match for "user-callable reusable commands"): Skills System
- Flows (the closest match for "scripted orchestration"): Flows
- Bundle namespaces (
{{prompt.X}},{{include:}}): Bundle namespaces - Multi-agent coordination: Multi-Agent