modelisted
Install: claude install-skill DATA-AI-XYZ/Tandem
# Tandem conversation Mode — "the moat"
A single project-global Mode frames every **joined** chat so suggestions stay in-phase. State lives in `.tandem-mode.json` at the repo root (git-ignored). Read/write it ONLY through `_00-Project-Management/93-Scripts/mode.js` (CLI or import) — never hand-edit the JSON.
## The four modes
| Mode | Meaning | Out-of-mode requests |
|---|---|---|
| **plan** | Planning phase. Founder/PM/QA-planning work. | Dev requests → nudge |
| **dev** | Building phase. Dev/QA-execution work. | Plan requests → nudge |
| **dual** | Both allowed (planning in one chat, building in another). | No nudge |
| **neutral** | No active frame (default/resting). | No enforcement |
## What is Plan vs Dev (anchored to lifecycle skills, not keyword-guessing)
- **Plan:** draft-okrs, draft-prd, draft-epic, split-into-features, split-into-stories, refine-backlog, execution-strategist; *planning* a testplan.
- **Dev:** execute-batch, execute-story, run-testplan, close-out-story; *running* a testplan.
## Joining (opt-in) and isolation
- A chat is **free** (no mode, no nudges) until it **joins**. Joining happens when `session-start` runs, or when the mode is set from within the chat.
- The `UserPromptSubmit` hook injects a `Tandem mode: …` banner each message for joined chats; a free chat gets nothing.
- **"isolate this chat"** → free it again: `node _00-Project-Management/93-Scripts/mode.js leave --session <session_id>`.
> Use the session ID from the hook payload / se