File structure
Every agent is a folder with the following layout:agent.yaml and flow.yaml are system files managed by the platform — they are not available in Hardcore Mode. Never edit them..md files under skills/ use the same format: a YAML settings header and a system prompt body. The same file type covers agent prompts, sub-agent prompts, and skills — one consistent format for all three.
workflows/
main.yaml is the entry point — the engine runs it for every incoming message. You can have multiple workflow files; additional ones are called via run_workflow actions from main.yaml or other workflows.
Each workflow file is a list of steps executed in order. Steps share a WorkflowState — a key-value store you can write to and read from across steps.
Minimal example
Step types
- skill
- evaluate
- if
- action
Run an LLM using the config and prompt defined in a skill file.The LLM receives the system prompt from the skill file, the full conversation history, and any messages accumulated by earlier steps (e.g. previous tool results).
Actions
run_workflow example
run_workflow example
set_value example
set_value example
skills/{name}.md
A skill file has two parts separated by---:
1
YAML settings header
Between
--- markers — configures the LLM, tools, and iteration limits.2
System prompt
Everything after the closing
--- — the instructions sent to the LLM.Full example
Settings header fields
Injecting workflow state into prompts
Use{values.key} anywhere in the system prompt body to inject a value from workflow state:
Models
- Anthropic
- OpenAI
Recommended for most use cases.
Use
llm.thinking_budget to enable extended thinking (tokens budget, e.g. 8000).Tools
Rules & gotchas
Step IDs must be unique
Step IDs must be unique
id values must be unique within a workflow file. Duplicate IDs cause unpredictable behavior.skill: must match the filename exactly
skill: must match the filename exactly
skill: must exactly match skills/{skill}.md — the match is case-sensitive.Stopping actions end execution immediately
Stopping actions end execution immediately
respond, do_nothing, transfer_to_human, and run_workflow stop execution immediately. Any steps listed after them in the workflow do not run.set_value does not stop execution
set_value does not stop execution
Unlike other actions,
set_value writes a value to workflow state and moves on to the next step — it never stops the workflow.evaluate outputs land in workflow state
evaluate outputs land in workflow state
Fields produced by
evaluate are stored in workflow state and can be read by any later if branch or respond placeholder.Never edit agent.yaml or flow.yaml
Never edit agent.yaml or flow.yaml
These are system files managed by the platform. Editing them directly may break your agent in unexpected ways.