From Basemind
Orchestrate a team of named subagents in a shared room with group chat and direct messages. Useful for parallel code review, audit, cross-validation, and synthesis tasks.
How this skill is triggered — by the user, by Claude, or both
Slash command
/basemind:multi-agent-roomThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run a team of NAMED subagents that chat in shared rooms and via direct messages,
Run a team of NAMED subagents that chat in shared rooms and via direct messages, all coordinated by one orchestrator. Each subagent has its own identity, inbox, and capability to broadcast to the team or send a private message to one peer.
Orchestrate subagents when:
Pick a room id and scope. For a private team, use scope: "session" to auto-join
agents sharing the same session id (recommended). For machine-wide rooms, use scope: "global".
room_create {room: "review-pr-42", scope: "session", title: "Code review panel"}
Assign each subagent a short name. Pass as_agent to every tool call the subagent makes.
Names like "security", "perf", "correctness" are clearer than defaults.
Distribute the subagent contract. Each subagent's prompt should include:
as_agent name (e.g. "security")."review-pr-42").agent_register {as_agent: "security", name: "Security Reviewer", …} once.room_post with as_agent: "security" to broadcast findings.dm_send {to_agent: "perf", as_agent: "security", …} to DM a peer.inbox_read {as_agent: "security"} to see DMs and cross-room messages.Room post (room_post + as_agent): broadcast to the team. Use for:
Direct message (dm_send + as_agent + to_agent): send to one peer. Use for:
"I found X; can you validate my approach?".As the orchestrator:
room_history {room: "review-pr-42"} (front-matter only).message_get {message_id: "…"}.inbox_read {as_agent: "security"}, etc.
(DMs appear as regular front-matter; bodies come from message_get.)Orchestrator setup:
room_create {room: "review-auth-pr", scope: "session"}
# Spawn agent "security"
# Prompt: "You are agent 'security' on room 'review-auth-pr'. Register yourself,
# analyze the diff for auth bugs, post findings to the room, and DM 'perf'
# asking them to check if your fix has performance implications."
# Spawn agent "perf"
# Prompt: "You are agent 'perf' on room 'review-auth-pr'. Register yourself,
# analyze the diff for performance regressions, post findings to the room, and DM
# 'security' with your take on their auth fix."
Agent "security" steps:
agent_register {
as_agent: "security", name: "Security Reviewer", description: "Auth auditor"
}
room_post {
room: "review-auth-pr", as_agent: "security", subject: "SQL injection check",
body: "Parameter X is quoted..."
}
dm_send {
to_agent: "perf", as_agent: "security", subject: "Cross-check: sanitized input",
body: "I added validation at line 42..."
}
inbox_read {as_agent: "security", mark_read: true} # See perf's response
Agent "perf" steps:
agent_register {
as_agent: "perf", name: "Performance Reviewer", description: "Latency auditor"
}
room_post {
room: "review-auth-pr", as_agent: "perf", subject: "Cache impact check",
body: "New validation adds ~2ms..."
}
dm_send {
to_agent: "security", as_agent: "perf", subject: "Auth fix validated",
body: "Sanitization looks solid..."
}
Orchestrator synthesis:
room_history {room: "review-auth-pr"} # See full thread
message_get {message_id: "msg-sec-1"} # Get security's body
message_get {message_id: "msg-perf-1"} # Get perf's body
inbox_read {as_agent: "security"} # See the DM from perf (front-matter)
message_get {message_id: "msg-dm-perf-1"} # Get perf's DM body
# Synthesize: "Security + perf sign off. Ready to merge."
Reads default to RECENT so stale chatter never confuses an agent:
room_history / inbox_read return only the last 24 hours of messages by default. Pass
since_hours: N for a wider window, or since_hours: 0 for the full append-only log. Nothing is
ever deleted — older history stays reachable explicitly.age_secs (seconds since the message was posted) so you can gauge
staleness without converting timestamps yourself.room_list flags each room stale: true when it has had no post for over 7 days (or never). The
CLI renders this as an ACTIVE / STALE marker per room. Skip stale rooms unless you are
intentionally reviewing old context.Global is reserved for MACHINE-WIDE ops coordination (resource / CPU contention), NOT per-repo
chat — use a repo / session room for team work.dm:<lo>:<hi>) that both ends auto-join.basemind comms post --as-agent security …,
basemind comms dm --to perf --as-agent security …,
basemind comms history <room> --since-hours 0 (all history),
basemind comms rooms (shows ACTIVE / STALE per room).npx claudepluginhub goldziher/basemind --plugin basemindCoordinates multiple agents working the same repo via basemind's broker with scoped rooms, per-agent inbox, and two-tier messages. Use when starting, finishing, or hitting decisions during collaborative work.
Coordinates multiple Claude Code instances as agent teams for workflows needing inter-agent communication. Covers TeamCreate, SendMessage types, task coordination, hooks, and orchestration patterns.
Use when dispatching subagents, composing prompts for teammates, structuring handoff reports, or managing context boundaries between agents. Covers both subagent prompts and team-level messaging.