Prompt Guide

Everything in JARVIS is a prompt. The system prompt, the agent personalities, the skill instructions, the tone registers. They're all just files you edit.

The 4-layer prompt architecture

LAYER 1   System (SOUL.md)         →  Permanent identity, voice, rules
LAYER 2   Agent SOUL                →  Per-agent specialization
LAYER 3   Skill SKILL.md            →  Per-task playbook
LAYER 4   Memory + session context  →  Recent conversations, preferences

Editing rule of thumb

  • Want JARVIS to behave differently every time → edit SOUL.md
  • Want one agent to behave differently → edit agents/<id>/SOUL.md
  • Want a specific TASK to follow a precise procedure → write a skill
  • Want JARVIS to remember a fact → put it in MEMORY.md

Editing SOUL.md

Your main system prompt lives at ~/.openclaw/workspace/SOUL.md.

Best practices

DoDon't
Use specific examplesVague abstractions like "be witty"
Include negative examples ("Never say X")Only positive examples
State preferences as identityIndirect pleas ("please be direct")
Critical rules at TOP and BOTTOMRules buried in the middle
Test edge cases by Telegram-messagingAssume the prompt works without testing

Tone Registers

The kit ships with 5 tone registers. The model picks one per turn based on context.

  • BUTLER, default, low-stakes, briefings
  • TACTICAL, trading alerts, position events, capital moves
  • DIAGNOSTIC, system incidents, failures
  • OPERATOR, executing direct requests
  • CONFIDANT, venting, frustrated, late-night messages

Anti-patterns

  • Conflicting instructions. Pick one stance and commit.
  • Negative-only instructions. Add what TO do alongside what NOT to do.
  • Telling the model what it is. Strips personality. Replace with role-as-action.
  • Apology lists. Trains the model to hedge constantly.
  • 10-page SOUL.md. Cap at 3-5 pages. Push specifics to skills or memory.

Customizing the 14 agents

Each agent has its own SOUL at ~/.openclaw/agents/<id>/agent/SOUL.md.

Adding a new agent

mkdir -p ~/.openclaw/agents/medic/agent
cat > ~/.openclaw/agents/medic/agent/SOUL.md <<'EOF'
# SOUL.md, Medic
You are Medic. The on-call doctor for the system.
Triage, stabilize, escalate only if needed.
...
EOF
# Then register in openclaw.json → agents.list[]

Hot-reloading

ChangeHow JARVIS picks it up
Edit SOUL.md / MEMORY.md / agent SOULsNext turn
Edit a skillNext time the skill is invoked
Edit openclaw.jsonopenclaw doctor --fix

Iteration loop

  1. Use it for a week. Note moments where JARVIS felt off.
  2. Categorize. Was it voice? Decision? Missing context? Wrong priority?
  3. Edit the right layer. Voice issue → SOUL. Skill broke → that skill. Forgot a fact → MEMORY.
  4. Test the edit. Send 5 messages that exercise the change. Iterate.