The shape of an agent
Every agent is a YAML file that bundles:- MCP servers it needs
- Skills to load
- Hooks to wire into the session lifecycle
- Prompts (with variables)
- Sandboxes for code execution
observal agent pull <agent>, Observal templates that YAML into the right files for their harness: ~/.claude/agents/*.json, .kiro/agents/*.json, .cursor/mcp.json, and so on.
Publish an agent
Option A - the interactive wizard
Option B - the YAML workflow (recommended for teams)
Install an agent into any harness
Browse what exists:Control what gets installed
What portability actually means
The harness feature matrix (defined inpackages/observal-shared/observal_shared/harness_registry.py) controls what each harness supports. If an agent uses skills and the target harness doesn’t have skills, the installer:
- Installs the compatible parts cleanly
- Warns about the unsupported parts
- Exits non-zero if the agent requires something the harness cannot provide

