Docs
A Claude Code MCP plugin. Install, ask, get a structured brief.
Install
Two steps inside any Claude Code session:
- 01$
/plugin marketplace add constantinexanthos/team-room - 02$
/plugin install team-room@team-room
- Step 1. Adds this repo as a plugin marketplace in your Claude Code config.
- Step 2. Installs the
team-roomplugin from the marketplace you just added. Format isplugin@marketplace, which is why the name appears twice.
Requires claude CLI and codex CLI on PATH (the plugin shells out to both). Repo: constantinexanthos/team-room.
What gets installed
The plugin bundles three things:
- An MCP stdio server that exposes four tools (
team_room_ask,team_room_status,team_room_recent,team_room_cancel). - A skillthat loads into Claude's context when the user asks a strategic question, telling Claude when to reach for the room.
- Slash commands (
/team-room,/team-room-status,/team-room-rooms) for direct invocation.
Use
Ask Claude in natural language. The skill picks it up and tells Claude to invoke the tool.
# you:
"Ask team-room: should we ship the auth refactor as one PR or split it?"
# claude:
team_room_ask({
question: "Should we ship the auth refactor as one PR or split it?",
mode: "dialogue",
wait: true,
})Claude and ChatGPT deliberate over up to 8 short turns, then return a structured final_brief.
The four outcomes
Every session ends in exactly one terminal state. The MCP tool surfaces outcome and final_brief as the primary artifact, with the full transcript in messages for expansion.
The team landed on a joint read for you. One to two sentences.
Explicit unresolved disagreement, mapped. Each agent's view plus the deciding evidence.
Max turns reached. The last turn's content is preserved as partial progress.
An agent or orchestrator failure. One-line reason captured.
The dialogue protocol
Dialogue mode is a function-labeled working session. Each turn opens with a tag the orchestrator captures as metadata and uses for terminal-state detection.
- [frame]
- Turn 1: decision, criteria, uncertainty, and lens.
- [frame-clear]
- Turn 1 fast-path. The frame is obvious, skip straight to evidence.
- [reshape]
- Turn 2: improve the frame before adding substance.
- [evidence / build / refine]
- Mid-dialogue moves.
- [push-back]
- Substantive disagreement, mapped not graded.
- [converge]
- Terminal. Joint read for the user.
- [fork]
- Terminal. Explicit unresolved disagreement.
- Substantive uptake. Every non-first turn opens by naming what it's taking from the prior turn. Generic agreement is called out in prompt as collaboration theater.
- Map the fork. Disagreement uses the “condition under which the other's view is right” framing, not scoring rubrics.
- Asymmetry as lens. Claude and ChatGPT surface their training differences explicitly (“my UX lens flags...”, “my code-base prior says...”).
MCP tool surface
- team_room_ask
- Open a session. Required: question. Optional: mode (dialogue or rounds), wait, timeout_s, topic, project_id. Returns outcome, final_brief, and messages.
- team_room_status
- Get state for a topic. While in-flight: live status. After completion: idle plus final_brief.
- team_room_recent
- List recent topics by last-modified time.
- team_room_cancel
- SIGTERM an in-flight orchestrator on a topic.
Modes
dialogue(default). Collaborative micro-turn working session. Use 99% of the time.rounds. Opt-in adversarial review. R1 = parallel independent answers. R2 = each critiques the other's R1. Only when you explicitly want stress-testing.
What you see vs what runs
You don't see the dialogue turns in your terminal. Claude calls team_room_ask, the plugin runs the deliberation in the background, and the response Claude quotes to you is the joint_read field. The full transcript is available in the tool-call output if you expand it.
Sessions take 30 to 90 seconds typically (3 to 5 turns). While it's running, Claude shows the tool call as pending.
Environment
State lives at $TEAM_ROOM_DIR (default ~/.team-room/). Per topic, three files: <topic>.jsonl (transcript), <topic>.state.json (live state), <topic>.brief.json (structured envelope).
Tunables (all optional):
TEAM_ROOM_DIR=~/.team-roomTEAM_ROOM_MAX_TURNS=8TEAM_ROOM_TURN_WORDS=150TEAM_ROOM_AGENT_TIMEOUT=480CODEX_REASONING_EFFORT=high