You ask your model to critique the design it just wrote, and it loves it. Of course it does. It has the whole conversation in context, it is anchored to its own reasoning, and "looks good to me" is the path of least resistance.
The Elephant-Goldfish Model (EGM) fixes this with one idea: split the author from the reviewer. The elephant holds the big picture. The goldfish are fresh-context reviewers that never saw your discussion, your reasoning, or your best arguments. They see only the document, and they judge it on its own.
EGM is a design-review workflow open-sourced by Google, based on Dave Rensin's article Elephants, Goldfish, and the New Golden Age of Software Engineering. It ships as a skill pack for a few other AI harnesses. I built opencode-egm, an unofficial adapter that brings the whole thing to OpenCode V2 as a single plugin.
Install
opencode plugin add opencode-egm
Restart OpenCode. To let the review orchestrator spawn its own reviewers, allow one level of nested subagents in opencode.jsonc:
{
"experimental": { "subagent_depth": 2 }
}
Without it, everything still runs; the primary agent does the spawning instead. On startup the plugin registers 7 skills, 10 personas, and 7 commands, self-contained in the package. No extra prompts or config files to copy around.
What you get
Seven slash commands cover the loop from rough idea to reviewed spec:
| Command | What it does |
|---|---|
/egm-brainstorm <idea> |
Turns a rough idea into a reviewed concepts_brief.md
|
/egm-draft [context] |
Drafts design_draft.md section by section, with approval gates |
/egm-review <file> |
Runs the fresh-context Goldfish review on a design doc |
/egm-review-loop <file> |
Antagonistic review loop until the findings stop |
/egm-resolve <file> |
Classifies each finding, applies the fixes you approve |
/egm-bootstrap <dir> |
Writes README documentation contracts across a tree |
/egm-drift-report <dir> |
Flags drift between your designs and the current code |
You can start anywhere. /egm-review works on a design you wrote yourself, hours ago, without involving the rest of the pipeline.
Reviews from goldfish, not your model's inner voice
This is the part I care about. Reviewers run as fresh child sessions with zero conversation history. Each one is a registered, read-only persona with a narrow job:
- egm-zoom-out — skeptical architect. Simplicity, YAGNI, reuse what exists.
- egm-design — hostile design critic. Architecture, scalability, infrastructure economics, unmitigated risk.
- egm-comprehension — naive reader. Flags undefined terms and assumed institutional knowledge.
- egm-implementation-readiness — pragmatic tech lead. Are the instructions actionable without further decisions?
- egm-codebase-details — pedantic auditor. Does the doc match the actual codebase, and does it reuse what is already there?
- egm-structural — layout validator. Heading hierarchy, symmetry, template compliance.
- egm-style — copy editor. Clarity, precision, no fluff.
An aggregator (egm-synthesizer) deduplicates their findings and compiles the consolidated goldfish_review_report.md. Reviewers cannot write files and cannot spawn subagents. The synthesizer can spawn reviewers itself and writes only the report. The permission model matches the job descriptions, so a reviewer that disagrees with your design can't "helpfully" rewrite it.
Gates that actually wait for you
EGM workflows pause at decision points: which preset, which fixes, which scope. The original skills were written for harnesses that ended the turn and waited for a chat reply. opencode-egm reroutes every gate through OpenCode's question tool instead. It blocks until you answer, then the workflow continues in the same turn. Pick an option, or type your own constraint into the free-form field. No dead ends in chat, no lost context between "questions".
The artifacts are files, not wall-of-text chat replies: concepts_brief.md, design_draft.md, goldfish_review_report.md, YYYY-MM-DD_DRIFT_REPORT.md. Point EGM artifact directory: docs/egm at a folder in your prompt or AGENTS.md and everything lands there.
Documentation that stays honest
Two commands cover the part that rots fastest:
-
/egm-bootstrap src/walks a tree and writes README files that describe each directory's interface, invariants, and side effects — context for future agent runs, written by a parallel swarm of read-only scouts. -
/egm-drift-report docs/designscompares your design docs against the code that exists now and reports where they disagree.
A typical session
/egm-brainstorm Add an offline mode to the mobile app
/egm-draft concepts_brief.md
/egm-review design_draft.md feature_spec
/egm-resolve design_draft.md
/egm-review asks which pipeline preset you want (feature_spec, implementation, uninterrupted, or a stage from 5 to 9) unless you name one. /egm-resolve classifies every finding as fix-now, fix-later, or push-back, and applies only the fixes you approve.
Honest limitations
- Unofficial. This is an independent adapter, not a Google product and not something Google supports. The vendored skills and personas remain Copyright 2026 Google LLC, Apache-2.0.
- Fresh context, shared filesystem. OpenCode child sessions start with no conversation history, but they share the working directory. A goldfish gets no parent reasoning; it can still read files you wrote. Other harnesses offer stronger isolation.
- Reviews cost real tokens. A full pass spawns several subagents and takes a few minutes. Use a capable model.
- Not for everything. EGM is for consequential, uncertain changes. A one-line bug fix doesn't need six reviewers. The FAQ is explicit that you own the outcomes — treat the findings as input to your judgment, not as verdicts.
Links
- Plugin: github.com/AzadKshitij/opencode-egm —
opencode plugin add opencode-egm - Upstream EGM: github.com/google/elephant-goldfish-model
- The idea: Elephants, Goldfish, and the New Golden Age of Software Engineering by Dave Rensin
Stars, issues, and "this gate annoyed me" reports are all welcome. If you try it on a real design, I'd like to hear what the goldfish caught.



Top comments (0)