Skills agent-maker
Create autonomous AI agents for OpenClaw with guided discovery — clarifies purpose, personality, skills, channels, automation, and security before generating a fully configured agent workspace.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/anhnt224/agent-maker-2" ~/.claude/skills/clawdbot-skills-agent-maker && rm -rf "$T"
skills/anhnt224/agent-maker-2/SKILL.mdAgent Maker
Create autonomous AI agents for OpenClaw through an intelligent guided process.
How This Skill Works
When the user wants to create a new agent, you MUST follow the Discovery Flow below to gather requirements before running any creation scripts. Do NOT immediately ask for all parameters at once — guide the user through a natural conversation to understand what they truly need.
Discovery Flow
Phase 1: Purpose & Identity
Start by understanding the agent's core purpose. Ask ONE question at a time and build on answers:
1. What problem does this agent solve?
- What tasks will it handle?
- Who will interact with it? (the user directly, other agents, external contacts)
- Is it a specialist (deep in one domain) or generalist?
2. Derive identity from purpose:
- Name: Suggest a memorable name that reflects the role
- ID: Lowercase, hyphenated (e.g.,
,research-bot
)health-tracker - Emoji: Choose one that represents the agent's function
- Specialty: One-line description of what the agent does
3. Choose the right model based on workload:
| Use Case | Recommended Model | Why |
|---|---|---|
| Deep research, complex reasoning, coding | | Most capable, best for complex tasks |
| General tasks, balanced cost/quality | | Good balance of speed and capability |
| Fast responses, simple tasks, high volume | | Fastest and cheapest |
| Image generation/understanding | | Strong multimodal capabilities |
| Budget-friendly, coding-focused | | Cost-effective for code tasks |
Ask the user about their priorities (quality vs cost vs speed) to recommend the right model.
Phase 2: Personality & Behavior
4. Define personality traits:
- Communication style (formal/casual/technical/friendly)
- Proactivity level (waits for instructions vs takes initiative)
- Verbosity (concise vs detailed responses)
- Any specific persona or character?
5. Define boundaries:
- What should this agent NEVER do?
- When should it escalate to a human or main agent?
- What level of autonomy? (Tier 1: read-only/draft, Tier 2: can act, Tier 3: fully proactive)
Phase 3: Workflow & Tools
6. What is the agent's main workflow? Walk through a typical interaction:
- What triggers the agent? (user message, cron job, heartbeat, other agent)
- What steps does it take?
- What output does it produce?
- Where does it store results?
7. What tools does this agent need?
Available built-in tools:
,read
,write
,edit
— file operationsapply_patch
— shell command executionexec
— web browsing and automationbrowser
— search the web (multiple providers)web_search
— fetch URL contentweb_fetch
— create imagesimage_generate
— analyze/understand imagesimage
,memory_search
— semantic memory recallmemory_get
,sessions_list
,sessions_send
— inter-agent communicationsessions_history
— spawn sub-agent taskssessions_spawn
— display UI on mobile nodescanvas
,nodes
— execute on connected devicesnodes.run
,cron_list
,cron_add
— manage scheduled taskscron_remove
Should any tools be denied for security? (e.g., deny
exec, write for a read-only agent)
8. Does this agent need specific skills?
- Any existing skills from ClawHub or
?~/.openclaw/skills/ - Need custom workspace-level skills?
- Will this agent have its own
directory?<workspace>/skills/
Phase 4: Communication & Channels
9. How will users interact with this agent?
Options:
- Direct chat via OpenClaw sessions (default)
- WhatsApp — needs a WhatsApp account/number
- Telegram — needs a Telegram bot token
- Discord — needs a Discord bot token
- Slack, iMessage, Signal, etc.
- WebChat — browser-based interface
- API only — no direct channel, coordinated by other agents
10. Multi-agent coordination:
- Will this agent be coordinated by a main/orchestrator agent?
- Will it communicate with other agents? Which ones?
- Should agent-to-agent messaging be enabled?
If channels are needed, you'll need to set up bindings to route messages to this agent. Example:
{ bindings: [ { agentId: "agent-id", match: { channel: "telegram", accountId: "agent-bot" } } ] }
Phase 5: Automation & Memory
11. Does this agent need scheduled tasks?
Two options — explain the difference:
| Feature | Heartbeat | Cron |
|---|---|---|
| Runs in | Main session (shared context) | Isolated or main session |
| Timing | Periodic interval (e.g., every 30m) | Exact schedule (cron expression) |
| Best for | Monitoring, checking inbox, context-aware tasks | Reports, reminders, exact-time tasks |
| Cost | Lower (batched checks) | Per-job cost |
Heartbeat setup (recommended for monitoring agents):
- What should the agent check periodically?
- How often? (default: 30m)
- Active hours? (e.g., 08:00-22:00)
- Where to deliver alerts? (last channel, specific channel, none)
Cron setup (recommended for scheduled tasks):
- What tasks need exact timing?
- What schedule? (daily at 7am, every Monday, etc.)
- What timezone?
- Isolated session or main session?
- Should results be announced to a channel?
12. Memory configuration:
- Daily memory logs are automatic (
)memory/YYYY-MM-DD.md - Does the agent need
for long-term curated memory?MEMORY.md - Should memory be private or shared with other agents?
- Set up a daily memory consolidation cron job?
Phase 6: Security & Sandbox
13. Security posture:
| Mode | Description | Use Case |
|---|---|---|
| No sandboxing, full host access | Trusted personal agents |
| Sandbox non-main sessions only | Mixed trust environments |
| Full sandbox for all sessions | Untrusted inputs, shared agents |
- Does this agent handle untrusted input? (e.g., messages from groups, external contacts)
- Should file access be restricted?
- Should tools be restricted? (allow/deny lists)
Agent Creation
After gathering all requirements, create the agent using this process:
Step 1: Create agent via CLI
openclaw agents add <agent-id>
This creates the proper directory structure under
~/.openclaw/agents/<agent-id>/.
Step 2: Create workspace & files
Run the creation script with gathered parameters:
{baseDir}/scripts/create-agent.sh \ --name "Agent Name" \ --id "agent-id" \ --emoji "🤖" \ --specialty "What this agent does" \ --model "provider/model-name" \ --workspace "/path/to/workspace" \ --personality "Communication style and traits" \ --boundaries "What the agent should not do" \ --workflow "Step-by-step workflow description" \ --tools-allow "tool1,tool2,tool3" \ --tools-deny "tool4,tool5" \ --autonomy "tier1|tier2|tier3" \ --heartbeat-every "30m" \ --heartbeat-target "last" \ --heartbeat-active-hours "08:00-22:00" \ --sandbox "off|non-main|all"
The script creates these workspace files:
- SOUL.md — Personality, purpose, and behavioral guidelines (tailored to specialty)
- AGENTS.md — Operating instructions, rules, priorities
- HEARTBEAT.md — Periodic checklist (if heartbeat enabled)
- IDENTITY.md — Name, emoji, vibe
- TOOLS.md — Tool usage notes and conventions
- USER.md — User context (who the agent serves)
- memory/ — Daily memory directory
Step 3: Update gateway config
The script automatically:
- Adds the agent to
in gateway configagents.list - Configures model, identity, sandbox, and tool policies
- Sets up heartbeat configuration if requested
- Restarts the gateway to apply changes
Step 4: Configure bindings (if channels needed)
If the agent needs channel routing, apply a config patch:
openclaw gateway config.patch --raw '{ "bindings": [ { "agentId": "<agent-id>", "match": { "channel": "<channel>", "accountId": "<account>" } } ] }'
Step 5: Set up cron jobs (if needed)
openclaw cron add \ --name "<Job Name>" \ --cron "<cron expression>" \ --tz "<timezone>" \ --session "<agent-id>" \ --system-event "<instruction>" \ --wake now
Step 6: Set up skills (if needed)
For agent-specific skills, create them in
<workspace>/skills/:
mkdir -p <workspace>/skills/<skill-name> # Create SKILL.md in the skill directory
For shared skills:
openclaw skills install <skill-slug>
Step 7: Verify & test
# Verify agent is registered openclaw agents list --bindings # Check gateway status openclaw gateway status # Test the agent openclaw agent --agent <agent-id> --message "Hello! Introduce yourself." # Or via session tools sessions_send({ label: "<agent-id>", message: "Hello!" })
Post-Creation Customization
After the agent is created, help the user refine:
- SOUL.md — Review and refine personality, add specific instructions
- AGENTS.md — Add standing orders, red lines, specific rules
- HEARTBEAT.md — Fine-tune periodic checklist
- TOOLS.md — Document tool-specific conventions
- Workspace skills — Create agent-specific skills if needed
Example Discovery Conversations
Example 1: Research Agent
User: "I want an agent that does deep research for me"
Discovery:
- Purpose: Deep research, competitive analysis, summarization
- Model:
(needs complex reasoning)anthropic/claude-opus-4-6 - Personality: Thorough, analytical, cites sources
- Autonomy: Tier 2 (can search web, write reports)
- Tools:
,web_search
,web_fetch
,browser
,read
,writememory_search - Tools denied:
,execimage_generate - Channels: Coordinated by main agent via
sessions_send - Automation: Daily memory cron at 23:00
- Sandbox:
(trusted personal agent)off
Example 2: Family Group Bot
User: "I need a bot for my family WhatsApp group"
Discovery:
- Purpose: Answer questions, share fun facts, help with planning
- Model:
(balanced cost/quality)anthropic/claude-sonnet-4-6 - Personality: Friendly, casual, family-appropriate
- Autonomy: Tier 1 (read-only, suggest but don't act)
- Tools allowed:
,read
,web_searchsessions_list - Tools denied:
,write
,edit
,exec
,browserapply_patch - Channels: WhatsApp group with mention-based activation
- Sandbox:
(handles untrusted group messages)all - Heartbeat: Off (only responds when mentioned)
Example 3: Health Tracker
User: "I want an agent to track my health and remind me of medications"
Discovery:
- Purpose: Health tracking, medication reminders, wellness monitoring
- Model:
anthropic/claude-sonnet-4-6 - Personality: Caring, encouraging, precise
- Autonomy: Tier 3 (proactive reminders)
- Tools:
,read
,write
,memory_searchcron_add - Channels: WhatsApp DM or Telegram
- Automation: Heartbeat every 2h during active hours + medication cron jobs
- Sandbox:
(personal trusted agent)off - Memory: Daily health logs + curated MEMORY.md for long-term patterns
Inter-Agent Coordination
After creating an agent, explain how it fits into the user's multi-agent system:
List agents
sessions_list({ kinds: ["agent"], limit: 10, messageLimit: 3 })
Send tasks to agents
sessions_send({ label: "agent-id", message: "Your task description here" })
Spawn isolated sub-agent work
sessions_spawn({ agentId: "agent-id", task: "Complex task description", model: "anthropic/claude-opus-4-6", runTimeoutSeconds: 3600, cleanup: "delete" })
Check agent history
sessions_history({ sessionKey: "agent-session-key", limit: 50 })
Troubleshooting
"Agent not appearing after creation"
- Run
openclaw gateway restart - Check
openclaw agents list --bindings
"Agent not responding to messages"
- Verify bindings are correct:
openclaw gateway config.get --format json | jq '.bindings' - Check agent session:
openclaw sessions list --agent <agent-id>
"Model errors"
- Verify model format:
provider/model-name - Check model availability:
openclaw models list - Ensure API key is configured for the provider
"Heartbeat not running"
- Check config:
openclaw gateway config.get --format json | jq '.agents' - Verify active hours and timezone settings
- Check HEARTBEAT.md exists and has content (empty files skip execution)
"Cron job not firing"
- List jobs:
openclaw cron list - Check timezone: ensure IANA timezone format
- Verify session target exists
Requirements
- OpenClaw installed and configured
for JSON processingjq- Node.js/npm via nvm (for OpenClaw)
- Python 3.6+ (standard library only)