Multi-model development workflow. Claude is the main agent and orchestrator.
Codex (GPT) plans and writes adversarial tests. Gemini designs (UI, schemas,
flow diagrams). Both cross-review Claude's code. All four share state through
.trio/ files.
v0.2.0 changed the dispatch model. Claude now calls ~/.claude/bin/*.sh
wrappers directly — no Antigravity Manager View clicks. Sub-models run
end-to-end from a single session.
┌─────────────────────────────────────────────────────────────┐
│ User: /trio-build "feature description" │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Claude (orchestrator) │
│ ├── preflight: every wrapper in ~/.claude/bin/ exists? │
│ ├── writes .trio/brief.md │
│ └── issues two parallel Bash calls: │
└──────────────┬──────────────────────────┬───────────────────┘
│ │
▼ ▼
~/.claude/bin/trio-design.sh ~/.claude/bin/trio-plan.sh
│ │
▼ ▼
Gemini API Codex CLI
│ │
.trio/design.md .trio/plan.md + tests.md
│ │
└────────────┬─────────────┘
▼
Claude reads, summarizes
implements, commits per task
│
▼
~/.claude/bin/trio-review.sh (×2 parallel)
│
┌────────────┴────────────┐
▼ ▼
Gemini API Codex CLI
│ │
.trio/review-gemini.md .trio/review-gpt.md
│
▼
/trio-finalize
| Command | What it does |
|---|---|
/trio-build <desc> |
Full workflow: brief → design + plan (parallel) → code → review (parallel) |
/trio-design <desc> |
Design step only — dispatches Gemini, produces .trio/design.md |
/trio-plan <desc> |
Plan step only — dispatches Codex, produces .trio/plan.md and .trio/tests.md |
/trio-code |
Code step — reads plan + design, Claude implements, dispatches review |
/trio-continue |
Recovery from interruption (normally unused in v0.2.0 happy path) |
/trio-finalize |
Merge the two reviewer verdicts and decide fix-or-ship |
/trio-test |
Liveness check — dispatch tiny prompts to both sub-models, report who/what they are |
| Skill | Role | Dispatched how |
|---|---|---|
trio-orchestrate |
Sets up context, runs wrappers, verifies handoffs | Claude, inline |
trio-design |
UI mockups, schemas, flow diagrams, visual specs | ~/.claude/bin/trio-design.sh → Gemini |
trio-plan |
Requirements, acceptance criteria, edge cases | ~/.claude/bin/trio-plan.sh → Codex |
trio-code |
Implementation following plan + design | Claude, inline |
trio-review |
Cross-AI code review, two reviewers parallel | ~/.claude/bin/trio-review.sh {gemini,codex} |
Every run creates:
.trio/
├── brief.md # Shared input — what we're building
├── design.md # Gemini output
├── plan.md # ChatGPT output — requirements, phases
├── tests.md # ChatGPT output — acceptance tests, edge cases
├── implementation/ # Claude output — code + commits
├── review-gemini.md # Gemini reviewer verdict
└── review-gpt.md # GPT reviewer verdict
Each agent reads what it needs, writes its output. Claude merges everything and handles Git commits.
Two steps: clone the plugin, then run the installer. The installer symlinks commands + skills into .claude/commands and .claude/skills so they show up in slash-command pickers (Claude Code, Antigravity, etc.).
# From your project root
git clone https://github.com/taneltaluri/trio-dev.git .claude/plugins/trio-dev
bash .claude/plugins/trio-dev/install.shOn Windows:
git clone https://github.com/taneltaluri/trio-dev.git .claude\plugins\trio-dev
powershell -ExecutionPolicy Bypass -File .claude\plugins\trio-dev\install.ps1Windows symlinks need Developer Mode (Settings → Privacy & Security → For developers) or admin PowerShell. If neither works, open
install.ps1and set$UseCopy = $trueto fall back to file copies.
# macOS / Linux
git clone https://github.com/taneltaluri/trio-dev.git ~/.claude/plugins/trio-dev
cd ~ && bash ~/.claude/plugins/trio-dev/install.sh
# Windows (PowerShell)
git clone https://github.com/taneltaluri/trio-dev.git $env:USERPROFILE\.claude\plugins\trio-dev
cd $env:USERPROFILE
powershell -ExecutionPolicy Bypass -File .claude\plugins\trio-dev\install.ps1Restart Claude Code and run /trio-build to verify.
cd .claude/plugins/trio-dev # or ~/.claude/plugins/trio-dev for global
git pull
# no need to re-run install.sh — symlinks already point to the plugin dirCopy-mode caveat (Windows): if you set
$UseCopy = $trueininstall.ps1(because Developer Mode and admin PowerShell both aren't available), the files under.claude/commandsand.claude/skillsare copies, not symlinks. Agit pulldoes not refresh them — re-runinstall.ps1after every pull.
bash .claude/plugins/trio-dev/uninstall.sh
rm -rf .claude/plugins/trio-dev # optional: remove plugin itself- Verify your dispatch stack is alive:
/trio-test. You should see Gemini and Codex each self-identify in three lines. If that fails, the rest of the plugin fails too — start at INSTALL.md "Prerequisites". - Run
/trio-build "your feature description". - Claude writes
.trio/brief.md, runs preflight, then dispatchestrio-design.shandtrio-plan.shin parallel by issuing two Bash calls in one message. You see the streaming output from each wrapper (via~/.cache/trio-dev/gemini/latest.logand~/.cache/trio-dev/codex/latest.jsonlif you want to tail them live). - When both finish, Claude summarises design + plan + top edge cases and asks you to confirm before code changes begin.
- On confirmation, Claude implements the feature task by task, committing
atomically (
trio(code): <task>), running tests per task. - When code is done, Claude dispatches
trio-review.sh geminiandtrio-review.sh codexin parallel. Both reviewers see the same implementation summary and git log, but with different role hints in the system prompt. - Run
/trio-finalize. Claude merges verdicts (strictest wins), lists Critical + Major issues deduplicated by file:line, and asks whether to fix or ship.
If a wrapper is broken or you want to override a sub-model's output, you can still dispatch a role manually from Antigravity Manager View and write the output file yourself:
| Role | Skill | Output |
|---|---|---|
| Designer | trio-design |
.trio/design.md |
| Planner | trio-plan |
.trio/plan.md + .trio/tests.md |
| Reviewer (Gemini) | trio-review |
.trio/review-gemini.md |
| Reviewer (GPT) | trio-review |
.trio/review-gpt.md |
After Manager View writes the file, run /trio-continue (if mid-build) or
/trio-finalize (if mid-review). This path is last-resort — the wrappers are
the supported primary flow.
Drop this file in any project's .trio/ directory and every wrapper will
include it automatically in the sub-model's brief. Good contents:
- Stack (language, framework, ORM, test runner)
- Conventions (naming, commit format, import order)
- Constraints (GDPR, offline, mobile-first)
- Non-goals (what we explicitly do not want)
Template at templates/project-context.example.md.
The wrappers read environment variables for model choice:
GEMINI_MODEL— passed toask-gemini.sh. Default:gemini-2.5-pro.CODEX_REASONING— passed toask-codex.sh. Default:medium(values:low,medium,high).
Set them per-shell or per-invocation:
GEMINI_MODEL=gemini-2.5-pro /trio-design "..."
CODEX_REASONING=high /trio-plan "...".trio/config.json is reserved for future plugin-level config and is not yet
consumed — see templates/config.example.json
for the forward-looking schema.
MIT