magi

$npx mdskill add vinta/hal-9000/magi

Brainstorms project ideas using three independent AI model perspectives.

  • Solves the problem of blind spots in single-model brainstorming sessions.
  • Depends on Claude Opus, OpenAI Codex via MCP, and Google Gemini CLI.
  • Clarifies the question via AskUserQuestion, then spawns three parallel teammates.
  • Consolidates proposals from Scientist, Mother, and Woman into a final summary.

SKILL.md

.github/skills/magiView on GitHub ↗
---
name: magi
description: Use when brainstorming ideas, features, or directions for a project where independent perspectives from different model families (Claude/Codex/Gemini) would surface blind spots and spark creative options the user hasn't considered — especially "what cool things can I add", "what should I build next", "give me ideas for X"
compatibility: Designed for Claude Code
user-invocable: true
disable-model-invocation: true
model: fable
allowed-tools:
  - AskUserQuestion
  - TeamCreate
  - TeamDelete
  - Agent
  - SendMessage
  - WebSearch
  - Read
  - Edit
  - Write
  - Bash(gemini:*)
  - mcp__codex__codex
  - mcp__codex__codex-reply
---

# MAGI

Multi-model brainstorming panel. Three teammates explore a question in parallel, each backed by a different model family, then the lead consolidates their proposals for the user.

- **Scientist**: reasons directly as Claude Opus (no external dispatch)
- **Mother**: delegates to OpenAI Codex via `mcp__codex__codex` MCP tool
- **Woman**: delegates to Google Gemini via `gemini` CLI

## Process

### 1. Clarify

If the question is underspecified, use `AskUserQuestion` to nail down purpose, constraints, and success criteria. Skip if already clear and actionable.

- Ask questions one at a time to refine the idea
- Prefer multiple choice questions when possible, but open-ended is fine too
- Only one question per message

### 2. Setup

Read the personality and reference files, then spawn all teammates in parallel.

**Files to read:**

- Personalities: [MAGI-1.md](personalities/MAGI-1.md), [MAGI-2.md](personalities/MAGI-2.md), [MAGI-3.md](personalities/MAGI-3.md)
- References: [codex.md](references/codex.md), [gemini.md](references/gemini.md)

**Create team** with `TeamCreate` using name `magi-{topic}` (e.g., `magi-auth-strategy`).

**Spawn all 3 teammates in a single message** (3 parallel `Agent` calls with `team_name` set):

| Teammate  | `name`      | `subagent_type`   | Prompt includes                                                         |
| --------- | ----------- | ----------------- | ----------------------------------------------------------------------- |
| Scientist | `scientist` | `general-purpose` | MAGI-1.md personality + question (reasons directly as Opus)             |
| Mother    | `mother`    | `general-purpose` | MAGI-2.md personality + codex.md (dispatches to Codex MCP) + question   |
| Woman     | `woman`     | `general-purpose` | MAGI-3.md personality + gemini.md (dispatches to Gemini CLI) + question |

Include all clarified context in each spawn prompt: teammates have no conversation history.

### 3. Parallel Exploration

The lead's role is coordination only:

- Wait for teammates to send proposals via `SendMessage`
- Forward any teammate clarifying questions to the user via `AskUserQuestion`, noting which teammate (and model) asked. Never answer on the user's behalf: only the user answers.

### 4. Consolidate + Present

Collect all proposals, then:

1. Deduplicate similar proposals (attribute to all teammates/models that proposed it)
2. Group by theme if many proposals
3. Present each option with:
   - Which teammate(s) and model(s) proposed it (e.g., "Scientist [Opus]", "Mother [Codex]")
   - Trade-off analysis from each perspective
   - Who tagged it as their top pick and why
4. Ask the user to **select an option** via `AskUserQuestion`
5. Ask via `AskUserQuestion` what to do next:
   - **Write a plan**: teardown, then handoff to `writing-plans`
   - **Debate**: another round of critique (see below)
   - **Done**: teardown, no further action

### 5. Debate (optional, user-triggered)

Only runs if the user requests it. Can be repeated.

1. Broadcast the consolidated option list to all 3 teammates via `SendMessage`
2. Each teammate critiques the proposals through their model (Scientist reasons directly; Mother and Woman follow Debate Mode in their reference files)
3. Collect updated stances and re-present to the user (back to step 4)

### 6. Teardown

Tear down only when the user selects **Write a plan** or **Done**.

1. `shutdown_request` to each teammate
2. Wait for all shutdown approvals
3. `TeamDelete`

### 7. Handoff (write a plan path only)

After teardown, invoke `writing-plans` skill with the chosen option(s) as context.

## Gotchas

- **Teammates have no conversation history.** Everything they need must be in the spawn prompt — the user's question, clarified context, CLAUDE.md, and their personality/reference files. If you forget context from the Clarify step, the teammate works blind.
- **`TeamDelete` fails if teammates are still active.** Always send `shutdown_request` to all three and wait for approvals before calling `TeamDelete`.
- **Save the Codex `threadId`.** Mother's first `mcp__codex__codex` call returns a `threadId` needed for debate follow-ups via `mcp__codex__codex-reply`. If lost, the debate round must re-send full context.
- **Gemini has no persistent thread.** Unlike Codex, each Gemini call is stateless. For debate rounds, the full proposal list and persona must be re-sent every time.
- **Teammates may not report back.** If a teammate goes silent, send a `SendMessage` nudge. After 2 minutes of silence, collect what you have and present partial results.

More from vinta/hal-9000