Docs

A Claude Code MCP plugin. Install, ask, get a structured brief.

Install

Two steps inside any Claude Code session:

2 steps · run in Claude Code
  1. 01$/plugin marketplace add constantinexanthos/team-room
  2. 02$/plugin install team-room@team-room
  1. Step 1. Adds this repo as a plugin marketplace in your Claude Code config.
  2. Step 2. Installs the team-room plugin from the marketplace you just added. Format is plugin@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.

convergedOK
final_brief.joint_read

The team landed on a joint read for you. One to two sentences.

forked Y/N
final_brief.fork

Explicit unresolved disagreement, mapped. Each agent's view plus the deciding evidence.

timed-out...
final_brief.partial

Max turns reached. The last turn's content is preserved as partial progress.

failedX
final_brief.error

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-room
  • TEAM_ROOM_MAX_TURNS=8
  • TEAM_ROOM_TURN_WORDS=150
  • TEAM_ROOM_AGENT_TIMEOUT=480
  • CODEX_REASONING_EFFORT=high