Soul Spec v0.5
The ClawSouls Package Specification — defining the standard for AI agent persona packages. Works with any SOUL.md-compatible agent framework.
📄 View full spec on GitHub →soul.json
Metadata file for a Soul package.
{
"specVersion": "0.5",
"name": "senior-devops-engineer",
"displayName": "Senior DevOps Engineer",
"version": "1.1.0",
"description": "Infrastructure-obsessed DevOps engineer with strong opinions on CI/CD.",
"author": {
"name": "TomLee",
"github": "TomLeeLive"
},
"license": "Apache-2.0",
"tags": ["devops", "infrastructure", "cicd", "monitoring"],
"category": "work/devops",
"compatibility": {
"openclaw": ">=2026.2.0",
"models": ["anthropic/*", "openai/*"],
"frameworks": ["openclaw", "clawdbot", "zeroclaw", "cursor"]
},
"allowedTools": ["exec", "github", "web_search"],
"recommendedSkills": [
{ "name": "github", "version": ">=1.0.0", "required": false },
{ "name": "healthcheck", "required": true }
],
"files": {
"soul": "SOUL.md",
"identity": "IDENTITY.md",
"agents": "AGENTS.md",
"heartbeat": "HEARTBEAT.md",
"style": "STYLE.md",
"userTemplate": "USER_TEMPLATE.md",
"avatar": "avatar/avatar.png"
},
"examples": {
"good": "examples/good-outputs.md",
"bad": "examples/bad-outputs.md"
},
"disclosure": {
"summary": "Infrastructure-obsessed DevOps engineer with strong CI/CD opinions."
},
"repository": "https://github.com/clawsouls/souls"
}What's New in v0.5
🤖 Embodied Agents
environment field supports "virtual", "embodied", "hybrid" for robot/IoT agents.
🎤 Interaction Mode
interactionMode declares primary modality — text, voice, multimodal, gesture.
⚙️ Hardware Constraints
hardwareConstraints defines display, speaker, camera, mobility, manipulator capabilities.
🛡️ Physical Safety
safety.physical for contactPolicy, emergencyProtocol, operatingZone, maxSpeed.
⚖️ Safety Laws
safety.laws — priority-ordered safety rules inspired by Asimov's Three Laws. Hard/soft enforcement with SoulScan audit.
🌐 Multi-Framework from v0.4
compatibility.frameworks declares which agent frameworks this soul works with — OpenClaw, Clawdbot, ZeroClaw, Cursor, and more.
🔧 Tool Transparency from v0.4
allowedTools explicitly declares which tools a soul expects. SoulScan cross-validates against actual usage.
📦 Recommended Skills from v0.4
recommendedSkills replaces the old skills array — now with version constraints and required/optional semantics.
📋 Progressive Disclosure from v0.4
disclosure.summary provides a one-line persona hint for Level 1 quick-scan — saving tokens when full SOUL.md isn't needed.
Progressive Disclosure
Agents load only the detail level they need — reducing token cost without losing depth.
| Level | Purpose | What to Load |
|---|---|---|
| 1 — Quick Scan | Discovery, filtering | soul.json + disclosure.summary |
| 2 — Full Read | Active persona use | SOUL.md + IDENTITY.md |
| 3 — Deep Dive | Extended behavior | AGENTS.md, STYLE.md, HEARTBEAT.md, examples/ |
Required Fields
| Field | Type | Description |
|---|---|---|
| specVersion | string | Spec version. Valid: "0.3", "0.4", "0.5" |
| name | string | Unique identifier (kebab-case) |
| displayName | string | Display name |
| version | semver | Version |
| description | string | One-line description (max 160 chars) |
| author | object | Creator info |
| license | string | SPDX license identifier |
| tags | string[] | Search tags (max 10) |
| category | string | Category path |
| files.soul | string | Path to SOUL.md |
Optional Fields
| Field | Type | Description |
|---|---|---|
| compatibility.openclaw | string | Minimum OpenClaw version (semver range) |
| compatibility.models | string[] | Recommended models (glob patterns) |
| compatibility.frameworks | string[] | Compatible agent frameworks (openclaw, clawdbot, zeroclaw, cursor, ros2, isaac, webots, gazebo) |
| compatibility.minTokenContext | number | Minimum context window (tokens) NEW |
| allowedTools | string[] | Tools this soul expects/permits NEW |
| recommendedSkills | object[] | Skills with name, version, required NEW |
| disclosure.summary | string | One-line summary for quick-scan (max 200 chars) NEW |
| deprecated | boolean | Mark soul as deprecated NEW |
| supersededBy | string | Replacement soul (owner/name) |
| environment | string | Deployment context: virtual, embodied, hybrid NEW |
| interactionMode | string | Primary interaction modality NEW |
| hardwareConstraints | object | Physical hardware capabilities NEW |
| safety.physical | object | Physical safety rules for embodied agents NEW |
| safety.laws | object[] | Priority-ordered safety laws (Asimov-inspired) NEW |
| files.identity | string | Path to IDENTITY.md |
| files.agents | string | Path to AGENTS.md |
| files.heartbeat | string | Path to HEARTBEAT.md |
| files.style | string | Path to STYLE.md |
| files.userTemplate | string | Path to USER template |
| files.avatar | string | Path to avatar image |
| examples | object | Calibration examples (good, bad) |
| repository | string | Source repository URL |
Deprecated Fields
These fields are deprecated in v0.4 and should not be used in new souls.
| Field | Reason | Migration |
|---|---|---|
| modes | No runtime implementation exists | Remove from soul.json |
| interpolation | No runtime implementation exists | Remove from soul.json |
| skills | Replaced by recommendedSkills | Convert to [{"name":"x"}] |
Hierarchical Safety Laws
Soul Spec v0.5 supports priority-ordered safety laws via safety.laws, inspired by Asimov's Three Laws of Robotics. Laws are evaluated in priority order (0 = highest) and can enforce hard boundaries or soft guidelines.
{
"safety": {
"laws": [
{
"priority": 0,
"rule": "Never take any action that could cause physical harm to a human.",
"enforcement": "hard",
"scope": "all"
},
{
"priority": 1,
"rule": "Obey operator instructions unless they conflict with Law 0.",
"enforcement": "hard",
"scope": "operator"
},
{
"priority": 2,
"rule": "Protect your own operational integrity unless it conflicts with Laws 0-1.",
"enforcement": "soft",
"scope": "self"
},
{
"priority": 3,
"rule": "Minimize resource consumption and environmental impact.",
"enforcement": "soft",
"scope": "all"
}
]
}
}Properties
| Field | Type | Required | Description |
|---|---|---|---|
| priority | integer | ✅ | Evaluation order (0 = highest priority) |
| rule | string | ✅ | Natural-language safety rule |
| enforcement | string | — | "hard" (must never violate) or "soft" (best-effort). Default: "hard" |
| scope | string | — | "all", "self", or "operator". Default: "all" |
🔍 SoulScan Integration
SoulScan validates safety laws via audit rules SEC100 (laws array present), SEC101 (priority ordering valid), and SEC102 (hard-enforcement laws have no conflicts with SOUL.md instructions).
File Descriptions
SOUL.md Required
The core identity file. Defines who the agent is.
- Worldview — Core beliefs, values, principles
- Expertise — Knowledge domains, depth levels
- Opinions — Actual positions on topics (not neutral hedging)
- Personality — Temperament, humor, quirks
- Boundaries — What the persona refuses or avoids
IDENTITY.md Optional
Lightweight identity metadata: name, emoji, avatar path, creature type, vibe.
AGENTS.md Optional
Operational instructions: how the agent behaves in sessions, memory management, safety rules, group chat behavior.
STYLE.md Optional
Writing style guide. Defines how the persona communicates.
HEARTBEAT.md Optional
Periodic background task configuration.
examples/ Directory Optional
Calibration material for voice matching (good-outputs.md, bad-outputs.md).
Allowed Licenses
The ClawSouls registry only accepts souls with permissive licenses:
Copyleft licenses are not permitted (GPL-*, AGPL-*, LGPL-*).
Additionally, CC-BY-NC-* (non-commercial) and CC-BY-ND-* (no-derivatives) are blocked because commercial use and modification are core to the soul workflow.
Compatibility & Graceful Degradation
Soul Spec versions are designed to be forward-compatible. A v0.5 soul works in agents that only understand v0.3 — unknown fields are silently ignored.
| Scenario | Result | Risk |
|---|---|---|
| v0.3 soul → any agent | ✅ Works | None |
| v0.4 soul → v0.3 agent | ✅ Works | New fields ignored (disclosure, allowedTools) |
v0.5 virtual soul → text agent | ✅ Works | Robotics fields ignored |
v0.5 physical soul → text agent | ⚠️ Caution | LLM may interpret physical fields as persona traits |
v0.5 physical soul → ROS2 agent | ✅ Ideal | Designed use case |
⚠️ Physical Souls in Text Agents
When a soul with environment: "physical" is loaded into a text-only agent (ChatGPT, OpenClaw, Claude), the LLM may treat hardware fields as persona context — e.g., announcing "my max speed is 1.0 m/s" in conversation.
Mitigation: Add a fallback section in SOUL.md: "In text-only environments, ignore physical constraints and respond as a standard text persona." The ClawSouls CLI will warn when applying physical souls to text agents.
Changelog
v0.5 — 2026-02-24 Current
- Added Embodied Agents section (
environment,interactionMode,hardwareConstraints) - Added robotics platform identifiers (ros2, isaac, webots, gazebo) to
compatibility.frameworks - SoulScan embodied safety audit rules (
safety.physical) - Added
safety.laws— hierarchical safety laws with priority ordering (SEC100-102)
v0.4 — 2026-02-20
- Added
compatibility.frameworksfor multi-framework support - Added
compatibility.minTokenContextfor token budget hints - Added
allowedToolsfor tool transparency - Added
recommendedSkills(object[]) replacingskills - Added
disclosure.summaryfor progressive disclosure - Added
deprecated/supersededByfor soul lifecycle - Deprecated
modes,interpolation,skills
v0.3 — 2026-02-16
- Added
specVersionfield (required for new souls) - Renamed
clawsoul.json→soul.json - License allowlist enforcement (permissive only)
v0.2 — 2026-02-13 Internal
Internal development spec. Not supported for new publications.
v0.1 — 2026-02-12 Internal
Initial spec prototype. Not supported for new publications.
Origins
Soul Spec builds on the pioneering work of the SOUL.md ecosystem.
🔥 Peter Steinberger
The SOUL.md pattern was pioneered by Peter Steinberger, creator of OpenClaw. Inspired by Anthropic's constitutional AI work, he created soul.md and identity.md to give AI agents persistent personality — sparking an entire ecosystem.
Lex Fridman Podcast #491 →💡 Andrej Karpathy
Karpathy's landmark essay argues that LLMs create a new computing paradigm where natural-language prompts replace traditional code — making structured persona files the "source code" of AI agents.
"Software is Changing (Again)" on YC →Soul Spec is an open standard maintained by the ClawSouls community.