Skills claw-agent-creator-archit
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/arch1904/claw-agent-creator-archit" ~/.claude/skills/openclaw-skills-claw-agent-creator-archit && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/arch1904/claw-agent-creator-archit" ~/.openclaw/skills/openclaw-skills-claw-agent-creator-archit && rm -rf "$T"
skills/arch1904/claw-agent-creator-archit/SKILL.mdOpenClaw Agent Creator
Create and configure agents for Arch's OpenClaw multi-agent system at
~/.openclaw/.
System Context
- Owner: Archit (Arch), Linux user
, timezone America/Denverarchit - Gateway: Single process on port 18789 managing all agents
- Bot: One Telegram bot shared across all agents — routing determines which agent handles which chat
- Existing agents: Check
→~/.openclaw/openclaw.json
for current rosteragents.list[] - Implementation history: See
for the Wire agent reference implementation~/.openclaw/implementation-docs/
Agent Creation Workflow
1. Gather Requirements
Before creating anything, clarify with Arch:
- Agent name and ID (lowercase, no spaces for ID)
- Role and responsibilities (specific, not vague)
- Model tier: cheap (Kimi K2.5 only) or full cascade (include Claude Sonnet)
- Whether it needs a Telegram group for Q&A
- Whether it needs cron jobs (what schedule, what tasks)
- Whether heartbeat should be enabled or disabled
2. Stop the Gateway
openclaw gateway stop
MANDATORY before editing
openclaw.json or cron/jobs.json. The gateway actively writes to jobs.json (updating job state after each cron run). Editing while the gateway runs causes race conditions and data loss.
3. Backup Config
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.backup.$(date +%Y%m%d%H%M%S)
4. Create Directories
mkdir -p ~/.openclaw/workspace-<agent_id>/memory mkdir -p ~/.openclaw/agents/<agent_id>/agent
NEVER reuse
agentDir across agents — causes auth/session collisions.
5. Write Workspace Files
Use templates from
assets/templates/ as starting points. Every agent needs:
| File | Purpose | Required |
|---|---|---|
| Personality, role, responsibilities, behavioral modes | Yes |
| Quick-reference card (name, role, emoji) | Yes |
| About Arch (copy from any existing agent workspace) | Yes |
| Workspace rules (boot sequence, memory, safety) | Yes |
| Periodic task checklist (or comment if disabled) | Yes |
SOUL.md is the most important file. Be specific about responsibilities. Include behavioral modes if the agent operates differently in different contexts (e.g., briefing mode vs chat mode).
6. Edit openclaw.json — Agent Entry
Add to
agents.list[]. See references/config-schema.md for all valid fields.
Minimal entry:
{ "id": "<agent_id>", "name": "<Display Name>", "workspace": "/home/archit/.openclaw/workspace-<agent_id>", "agentDir": "/home/archit/.openclaw/agents/<agent_id>/agent", "identity": { "name": "<Display Name>" } }
Common additions:
— Override the default model cascade. Exclude expensive models for worker agents."model"
— Disable heartbeat for cron-only agents."heartbeat": { "every": "0" }
— Enable @mentions in groups."groupChat": { "mentionPatterns": ["@<id>", "@<Name>"] }
Only ONE agent should have
"default": true (currently Fossil). The default agent receives all unrouted messages.
7. Edit openclaw.json — Telegram Routing (if needed)
THREE separate config changes are required. Missing any one causes silent failures. See references/telegram-routing.md for the full explanation.
-
Group config in
:channels.telegram.groups"-100XXXXXXXXXX": { "requireMention": false } -
Binding in
:bindings[]{ "agentId": "<id>", "match": { "channel": "telegram", "peer": { "kind": "group", "id": "-100XXXXXXXXXX" } } } -
Mention patterns on the agent entry (already done in step 6 if
was added).groupChat
8. Create Cron Jobs (if needed)
Edit
cron/jobs.json. Every cron job prompt MUST include:
- Dynamic group ID resolution preamble (NEVER hardcode Telegram group IDs):
FIRST: Resolve your Telegram group ID by running: jq -r '.bindings[] | select(.agentId == "<agent_id>") | .match.peer.id' ~/.openclaw/openclaw.json Use the output as the target for all Telegram messages in this task. - Date injection:
after the preamble$(date '+%A, %B %d, %Y') - Explicit constraints: source allowlists, recency rules, format templates
- Delivery instructions: use
placeholder (resolved by the preamble)target='<AGENT_GROUP_ID>'
This self-healing pattern ensures cron jobs survive Telegram group ID migrations. See references/prompt-patterns.md for full patterns and references/telegram-routing.md for why this matters.
Critical: If copying files or prompts from another agent's workspace, grep for hardcoded paths and update them.
9. Restart Gateway and Verify
openclaw gateway start
Verify in logs:
- Agent registered:
agent registered: <id> - Messages route correctly:
lane enqueue: lane=session:agent:<id>:...
If messages to a Telegram group show
skip: no-mention, the channels.telegram.groups config is missing (see references/bugs-and-pitfalls.md).
Reference Files
| File | When to Read |
|---|---|
| references/config-schema.md | When writing agent config or cron jobs |
| references/telegram-routing.md | When setting up Telegram group routing |
| references/prompt-patterns.md | When writing cron job prompts |
| references/bugs-and-pitfalls.md | When debugging issues or before any config edit |
Template Files
Starter templates for workspace files are in
assets/templates/. Copy and customize per agent.