Muse agent-protocol
Specification for making MUSE role files machine-readable as an Agent Protocol — enabling multi-agent coordination and tool interoperability
git clone https://github.com/myths-labs/muse
T=$(mktemp -d) && git clone --depth=1 https://github.com/myths-labs/muse "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/core/agent-protocol" ~/.claude/skills/myths-labs-muse-agent-protocol && rm -rf "$T"
skills/core/agent-protocol/SKILL.mdAgent Protocol Specification
Inspired by MemOS (multi-agent isolation + sharing) and multi-agent-memory (cross-agent persistence). Adapted for MUSE's pure Markdown zero-dependency architecture. Added in v2.12.0 (Batch 2 — competitive tech absorption).
Why
MUSE role files (
.muse/*.md) currently work because AI Agents read Markdown and follow instructions. But as the ecosystem evolves toward multi-agent workflows (MCP servers, Claude Projects, multi-tool chains), role files need a machine-readable protocol — not just human-readable documents.
Problems this solves:
- Agent handoff: When switching between Agents (e.g., Claude → Gemini), context should be portable
- Multi-agent coordination: Multiple Agents working on the same project should respect role boundaries
- Tool interoperability: MCP servers, IDE plugins, and CLI tools should be able to read/write role files
Protocol: MUSE Role File Spec v1.0
File Discovery
.muse/ ├── strategy.md # Strategy role ├── build.md # Build/Dev role ├── growth.md # Growth/Marketing role ├── qa.md # QA/Verification role ├── gm.md # General Manager role ├── ops.md # Operations role ├── research.md # Research role ├── fundraise.md # Fundraise role └── archive/ # Archived content (not loaded)
Discovery rule: Any
.md file in .muse/ (excluding archive/) = a role file.
L0 Header (Machine-Readable Status Line)
Every role file MUST have an L0 comment as its first line:
<!-- L0: {version} | {top_priority} | {status_flags} -->
Parsed fields:
| Field | Type | Description | Example |
|---|---|---|---|
| semver | Current project version | |
| string | Most important current task | |
| csv | Comma-separated status indicators | |
L0 is the Agent's "at a glance" API — any tool can grep all L0 lines to get project status in ~400 tokens.
Section Protocol
Role files use Markdown headers as semantic sections. Tools should parse these:
| Section Header Pattern | Semantic Meaning | Agent Action |
|---|---|---|
| Role boundaries table | Respect: only act within listed responsibilities |
/ | Pending tasks | Read for context; update checkboxes when completing |
| Received directives | Check for pending work from other roles |
| Cross-role notifications | Process before starting new work |
| Technology constraints | Respect in all code generation |
| Process rules | Follow during releases |
Directive Protocol (📡)
Directives are the message-passing API between roles:
📡 **S{NNN}→{TARGET}**: {STATUS} **{TITLE}** > {BODY}
| Field | Format | Example |
|---|---|---|
| Sequential ID | |
| or | , |
| 🟡 (pending) / ✅ (received) | = needs pickup |
| One-line summary | |
| Blockquote detail | Full directive content |
Pickup protocol:
- Target role's
scans for 🟡 directives/resume - On pickup: write to role file's
section📡 已接收战略指令 - Change source 🟡 → ✅ with timestamp
Memory Protocol
memory/ ├── YYYY-MM-DD.md # Daily log (short-term, raw) ├── archive/ # Old logs MEMORIES.md # Long-term knowledge (distilled + auto-captured)
| Memory Type | File | Write Method | Read Method |
|---|---|---|---|
| Short-term | | Step 4 | Step ② |
| Long-term | | (batch) + Step 4.7 (auto-capture) | Step ① |
| Constitutional | | Manual | Always loaded |
| User prefs | | | Step ④ |
Isolation Rules
┌─────────────────────────────────────────────┐ │ Agent Session (e.g., /resume build) │ │ │ │ ✅ CAN READ: │ │ - Own role file (.muse/build.md) │ │ - L0 lines of ALL role files │ │ - memory/*.md │ │ - MEMORIES.md, CLAUDE.md, USER.md │ │ - Source code & docs (on demand) │ │ │ │ ✅ CAN WRITE: │ │ - Own role file │ │ - memory/YYYY-MM-DD.md │ │ - MEMORIES.md (auto-capture only) │ │ - Source code (if build/dev role) │ │ │ │ ❌ MUST NOT: │ │ - Write to other role files directly │ │ - Create files outside .muse/ convention │ │ - Discuss other roles' topics in depth │ │ │ │ 📡 CROSS-ROLE COMMS: │ │ - Only via directive protocol (📡 S{NNN}) │ │ - Sender writes directive to OWN file │ │ - Receiver picks up during /resume │ └─────────────────────────────────────────────┘
Multi-Project Protocol
For users managing multiple projects:
~/ProjectA/.muse/build.md ← ProjectA's build role ~/ProjectB/.muse/build.md ← ProjectB's build role ~/ProjectA/.muse/strategy.md ← May hold cross-project directives
Cross-project directives use
PROJECT/ROLE targeting:
📡 S041→MUSE/BUILD: 🟡 ... ← Targets MUSE project's BUILD role 📡 S040→DYA/GROWTH: ✅ ... ← Targets DYA project's GROWTH role
Path resolution:
CLAUDE.md MAY specify absolute paths for cross-project strategy files:
> strategy.md 绝对路径: `/Users/jj/Desktop/DYA/.muse/strategy.md`
Integration Points
For MCP Servers
An MCP server implementing MUSE protocol is included — see
scripts/mcp-server.sh (added in v2.15.0).
| Tool | Description | Status |
|---|---|---|
| Read all L0 lines → return project status | ✅ |
| List role files with summaries | ✅ |
| Read a specific role file (L1) | ✅ |
| Create a 📡 directive in a role file | ✅ |
| Append to today's memory file | ✅ |
| Search across memory files + MEMORIES.md | ✅ |
Configuration: Add to your MCP client config:
{ "mcpServers": { "muse": { "command": "/path/to/muse/scripts/mcp-server.sh", "args": ["--project-root", "/path/to/project"] } } }
For CLI Tools
# Get project status (all L0 lines) grep "<!-- L0:" .muse/*.md # Check for pending directives grep "🟡" /path/to/strategy.md # Count role file lines (bloat check) wc -l .muse/*.md
For IDE Plugins
- Status bar: Show L0 summary of current role
- Sidebar: List pending directives (🟡)
- On save: Auto-update L0 line if role file changed
Version History
| Version | Date | Changes |
|---|---|---|
| v1.1 | 2026-03-15 | MCP server implemented () |
| v1.0 | 2026-03-15 | Initial spec (Batch 2) |