Creating Agents
This guide shows you how to create custom agents, either through configuration files or dynamically via conversation.
Decide: Static or Dynamic?
Section titled “Decide: Static or Dynamic?”| Static (YAML) | Dynamic (Conversation) |
|---|---|
| Requires restart to change | No restart needed |
| Version controlled | Stored in SQLite |
| Good for core agents | Good for experiments |
| Team-visible in repo | User-created at runtime |
Creating a Static Agent
Section titled “Creating a Static Agent”-
Create the YAML file
Create a new file in
config/:config/research-assistant.yaml name: research-assistantdescription: Helps research topics, summarize findings, and cite sourcesmodel:provider: anthropicname: claude-sonnet-4-20250514temperature: 0.5max_tokens: 4096system_prompt: |You are a research assistant. When asked about a topic:1. Break down the question into sub-questions2. Research each aspect thoroughly3. Synthesize findings into a clear summary4. Always cite your reasoningBe thorough but concise. Prefer accuracy over speed.tools:- calculator- datetime -
Restart Maestro
The new agent will be loaded on startup:
Terminal window docker compose restart# ornpm run cli -
Verify it’s available
You: List all agentsMaestro: Available agents:- orchestrator- personal-assistant- coder- research-assistant <-- Your new agent -
Test routing
You: Help me research the history of containerization[Orchestrator routes to research-assistant]
Creating a Dynamic Agent
Section titled “Creating a Dynamic Agent”Dynamic agents are created through conversation:
-
Create the agent
You: Create an agent called email-writerMaestro: Created email-writer. What should its description be? -
Set the description
You: It helps write professional emails and responsesMaestro: Updated description. What system prompt should it use? -
Define the system prompt
You: It should write clear, professional emails. Keep them concise.Match the tone to the context - formal for business, friendly forcolleagues. Always suggest a subject line.Maestro: Updated system prompt. What tools should it have? -
Add tools (optional)
You: Just datetime so it can reference the current dateMaestro: Added datetime. email-writer is ready to use. -
Test it
You: Help me write an email declining a meeting politely[Orchestrator routes to email-writer]
Agent Design Tips
Section titled “Agent Design Tips”Write Good Descriptions
Section titled “Write Good Descriptions”The orchestrator uses descriptions for routing. Be specific:
# Bad - too vaguedescription: Helps with stuff
# Good - specific use casedescription: Writes and reviews Python code, runs tests, and debugs errorsCraft Effective System Prompts
Section titled “Craft Effective System Prompts”system_prompt: | You are a code reviewer specializing in Python.
When reviewing code: 1. Check for bugs and logic errors 2. Identify security vulnerabilities 3. Suggest performance improvements 4. Note style inconsistencies
Be direct. Don't pad feedback with unnecessary praise. Prioritize issues by severity: critical > important > minor.Choose Tools Wisely
Section titled “Choose Tools Wisely”Only enable tools the agent needs:
| Agent Type | Recommended Tools |
|---|---|
| General assistant | calculator, datetime |
| Coder | claude_code, list_projects, switch_project |
| Agent manager | create_agent, update_agent, list_agents |
| Research | calculator, datetime |
Updating Agents
Section titled “Updating Agents”Static Agents
Section titled “Static Agents”Edit the YAML file and restart:
# Edit config/research-assistant.yamldocker compose restartDynamic Agents
Section titled “Dynamic Agents”Update through conversation:
You: Update email-writer's temperature to 0.3Maestro: Updated email-writer temperature to 0.3.
You: Add calculator to email-writerMaestro: Added calculator to email-writer.
You: Change email-writer's system prompt to focus on technical emailsMaestro: Updated email-writer system prompt.Deleting Agents
Section titled “Deleting Agents”Static Agents
Section titled “Static Agents”Delete the YAML file and restart.
Dynamic Agents
Section titled “Dynamic Agents”You: Delete the email-writer agentMaestro: Deleted email-writer.Example: Content Pipeline
Section titled “Example: Content Pipeline”Create a set of agents that work together:
You: Create an agent called outline-writer that creates content outlines
You: Its prompt should be: "You create detailed outlines for blog postsand articles. Ask clarifying questions about the target audience and goal.Structure outlines with clear sections and bullet points."
You: Create an agent called draft-writer that writes first drafts
You: Its prompt should be: "You write first drafts based on outlines.Write in a clear, engaging style. Use the outline structure but expandeach point into full paragraphs."
You: Create an agent called editor that reviews and improves drafts
You: Its prompt should be: "You edit content for clarity, flow, andengagement. Suggest specific improvements. Fix grammar and style issues.Preserve the author's voice."Now the orchestrator can route content requests to the appropriate stage.