name: simpleagentsbuilder description: This skill should be used when the user asks to create, improve, or validate YAML agent workflows, especially requests like "build an agent YAML", "design workflow YAML", "add routing in YAML", or "make interview/email workflow nodes and edges".
SimpleAgentsBuilder
Author YAML workflows that are deterministic, testable, and compatible with SimpleAgents graph execution.
Use This Skill For
- Create new graph YAML workflows (
entry_node,nodes,edges) - Refactor existing YAML agent flows
- Add routing, guardrails, and one-question-at-a-time behavior
- Add or tighten
output_schemaforllm_callnodes
Core Rules
- Model the workflow as a graph, not a linear prompt script.
- Define
config.output_schemafor everyllm_callnode. - Keep switch routing deterministic and explicit.
- Keep chat systems one-question-at-a-time unless user asks otherwise.
- Keep business policy in prompts/routing, not hidden in bindings.
Required Structure
Use this skeleton:
id: workflow-id
version: 1.0.0
entry_node: start_node
nodes:
- id: start_node
node_type:
llm_call:
model: gemini-3-flash
messages_path: input.messages
config:
output_schema:
type: object
properties:
state:
type: string
required: [state]
additionalProperties: false
user_input_prompt: |
Return JSON only.
edges:
- from: start_node
to: next_node
Node Design Pattern
detect_*node: classify intent/state with strict enum schema.route_*node (switch): deterministic branching by JSON-path conditions.- worker/action nodes:
llm_callfor generation,custom_workeronly when handler is intentional. - terminal behavior: explicit node with final message/question.
Routing Pattern
For state-based routing:
node_type:
switch:
branches:
- condition: '$.nodes.detect.output.state == "ready"'
target: generate
default: clarify
Keep conditions simple (==, !=) and tied to a stable node output path.
Prompting Pattern
- Instruct:
Return JSON only. - Put user instructions in
config.user_input_prompt; useconfig.node_system_promptfor optional system-level guardrails. - Give exact response shape.
- Encode policy as explicit bullet rules.
- Keep each node prompt single-responsibility.
Validation Checklist
Before finalizing YAML:
- IDs are unique
entry_nodeexists- Every
switchtarget exists - Every
llm_callhasoutput_schema - Required fields align with routing conditions
edgescover intended flow transitions- No ambiguous multi-question prompts in interview/chat flows
For examples and reusable templates, read:
references/patterns.mdreferences/checklist.md
Working examples:
examples/minimal-chat.yamlexamples/email-classification.yaml