<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Cristian Calabro</title>
    <description>The latest articles on DEV Community by Cristian Calabro (@ccalabro).</description>
    <link>https://dev.to/ccalabro</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F435067%2Ffbce59ec-63b3-4fdd-935a-7e2384d3bdff.png</url>
      <title>DEV Community: Cristian Calabro</title>
      <link>https://dev.to/ccalabro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ccalabro"/>
    <language>en</language>
    <item>
      <title>How I used Google's Elephant-Goldfish Model and Superpowers to build one feature</title>
      <dc:creator>Cristian Calabro</dc:creator>
      <pubDate>Fri, 13 Nov 2026 18:15:28 +0000</pubDate>
      <link>https://dev.to/ccalabro/how-i-used-googles-elephant-goldfish-model-and-superpowers-to-build-one-feature-2h4a</link>
      <guid>https://dev.to/ccalabro/how-i-used-googles-elephant-goldfish-model-and-superpowers-to-build-one-feature-2h4a</guid>
      <description>&lt;p&gt;Originally published on &lt;a href="https://x.com/c_calabro/status/2120546834716254615" rel="noopener noreferrer"&gt;X&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On November 7, Google Cloud announced the Elephant-Goldfish Model (EGM), an open-source plugin for designing and reviewing software with coding agents.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://x.com/GoogleCloudTech/status/2119203243054023129" rel="noopener noreferrer"&gt;Google Cloud Tech announcement on X&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An agent with the full project context (the elephant) drafts the specification, and subagents with no earlier context (the goldfish) stress-test it before any code is written. You make the architectural decisions and approve the spec before implementation starts. It installs as a plugin in Antigravity, Claude Code, Claude Cowork, Codex, and ChatGPT, and also has working installs in omp and Muse.&lt;/p&gt;

&lt;p&gt;I tried it on one feature in a CLI I'm building to check repositories for engineering best practices. The CLI has a scan command with a --targets parameter, so you can pass a JSON or YAML file with the target repositories to scan. I needed to add documentation to this parameter, so I asked my agent, "scan --targets should show a JSON sample and a YAML sample, for targets.json or targets.yml."&lt;/p&gt;

&lt;p&gt;I ran the session in Codex CLI and picked GPT-6 Luna because the task was very simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  Brainstorm
&lt;/h2&gt;

&lt;p&gt;I started with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$egm:egm-brainstorm scan --targets should show a JSON and YAML sample of targets.json or targets.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It asked where the samples should appear: in &lt;code&gt;scan --help&lt;/code&gt;, in an error when the file is missing or invalid, or somewhere else. It asked whether the help and &lt;code&gt;CLI.md&lt;/code&gt; samples should show the minimal required fields, or optional fields too. I chose to review the hypothesis with the Goldfish reviewers.&lt;/p&gt;

&lt;p&gt;That pass used seven lenses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;design_critic: cost, quota, and whether the architecture holds when load grows.&lt;/li&gt;
&lt;li&gt;codebase_details: traces, metrics, and how someone would debug this in production.&lt;/li&gt;
&lt;li&gt;zoom_out: whether the feature needs to exist now, or whether existing code or a library already does the job.&lt;/li&gt;
&lt;li&gt;comprehension: whether the interface is intuitive, and whether errors and steps add friction.&lt;/li&gt;
&lt;li&gt;implementation_readiness: how existing clients or stored data move over, and how a rollback would work.&lt;/li&gt;
&lt;li&gt;structural: coupling, and whether this is still maintainable later.&lt;/li&gt;
&lt;li&gt;inventive_catalyst: a trade-off treated as unavoidable, and a pattern that might remove it, with the new cost of that pattern stated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It wrote &lt;code&gt;concepts_brief.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The seven-lens review raised two risks. The four examples (in &lt;code&gt;scan --help&lt;/code&gt; and &lt;code&gt;CLI.md&lt;/code&gt;) could drift apart, and users could misunderstand how file extensions select the format or where relative paths resolve. The brief recommended keeping the samples equivalent, naming them &lt;code&gt;targets.json&lt;/code&gt; and &lt;code&gt;targets.yml&lt;/code&gt;, and explaining the path base.&lt;/p&gt;

&lt;p&gt;I asked it to address the risks. It updated the brief so both locations' examples are identical, added a parity check to the acceptance criteria, and explained the filename extensions and the relative path base beside the samples. I said the risks were resolved.&lt;/p&gt;

&lt;h2&gt;
  
  
  Draft
&lt;/h2&gt;

&lt;p&gt;I ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$egm:egm-draft
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It wrote &lt;code&gt;design_draft.md&lt;/code&gt;. The Overview, The Problem, Goals, and Non-Goals covered the missing file structure in the current help and docs, the parser's current format and path rules, and a documentation-only scope. I approved Overview and Goals.&lt;/p&gt;

&lt;p&gt;It added a Technical Plan. I approved that, and it added Alternatives Considered, with pros, cons, and a reason for rejection. I approved that too.&lt;/p&gt;

&lt;p&gt;It then added a Detailed Implementation Plan. That section listed the files to create or modify, and a verification plan: build, unit tests, static analysis and formatting, a manual help review, a scanner check, and a workspace review with &lt;code&gt;git status --porcelain&lt;/code&gt;. I approved it.&lt;/p&gt;

&lt;p&gt;I kept the draft documents outside the repository, but you can commit them if you'd like. Either way, the final design reconciles those drafts. There were no contradictions or additions that change the architecture, the interface, or the dependencies, so the draft stayed aligned with the brief.&lt;/p&gt;

&lt;p&gt;By default, it will create the design document inside of a &lt;code&gt;docs/designs&lt;/code&gt; folder. The agent created it for me and placed the &lt;code&gt;scan-targets-examples.md&lt;/code&gt; document in there. EGM recommends you have a &lt;code&gt;SITEMAP.md&lt;/code&gt; inside this folder as an index of design artifacts.&lt;/p&gt;

&lt;p&gt;Typecheck, lint, and all the tests passed. The new design file passed its targeted formatting check. The scanner completed with no critical or high findings, and its output contained no absolute workspace path. I did not run the build because the &lt;code&gt;egm-draft&lt;/code&gt; skill prohibits building production outputs during design work. Those checks are from the design stage. The only git status change then was the new &lt;code&gt;docs/designs/&lt;/code&gt; directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review
&lt;/h2&gt;

&lt;p&gt;I ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$egm:egm-review docs/designs/scan-targets-examples.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before the review mode, it asked whether I wanted any context beyond the design document. It said linked files inside the repo are added automatically, and that external links or URLs require approval. I said no additional files.&lt;/p&gt;

&lt;p&gt;I selected implementation plan only, to evaluate implementation readiness.&lt;/p&gt;

&lt;p&gt;It reported two major findings. I agreed to resolve them with an agent, using the &lt;code&gt;egm-resolve&lt;/code&gt; skill. It wrote &lt;code&gt;goldfish_review_report.md&lt;/code&gt; for me to check, comment on, or accept. I auto-approved the report as it looked good, and it updated &lt;code&gt;docs/designs/scan-targets-examples.md&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation and drift
&lt;/h2&gt;

&lt;p&gt;From there, the implementation was managed by the Codex agent, with superpowers skills.&lt;/p&gt;

&lt;p&gt;At the end, I ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$egm:egm-drift-report
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It found one drift and wrote &lt;code&gt;2026-11-08_DRIFT_REPORT.md&lt;/code&gt;. The design requires the help and &lt;code&gt;CLI.md&lt;/code&gt; to say commit values are compared exactly, but neither says so. I added that note.&lt;/p&gt;

&lt;h2&gt;
  
  
  My take
&lt;/h2&gt;

&lt;p&gt;EGM earned its place on this small task by catching things I would have shipped without:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The brainstorm review saw that the four examples in &lt;code&gt;scan --help&lt;/code&gt; and &lt;code&gt;CLI.md&lt;/code&gt; could drift apart, and turned that into a parity check in the acceptance criteria.&lt;/li&gt;
&lt;li&gt;The implementation-plan review flagged that the planned scanner check would write its reports into the repository being scanned. My &lt;code&gt;AGENTS.md&lt;/code&gt; says to keep private review material out of the repo, and the reviewer picked that up from there. The plan changed to write to a temporary folder outside the repo, and the scanner check later confirmed its output had no absolute workspace path.&lt;/li&gt;
&lt;li&gt;The drift report found that the help and &lt;code&gt;CLI.md&lt;/code&gt; never said commit values are compared exactly, even though the design required it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Next to Superpowers
&lt;/h3&gt;

&lt;p&gt;I used Superpowers for the implementation in this trial. On the steps they share, they do the work differently.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Brainstorm: EGM asks clarifying questions, then runs the Goldfish lenses in parallel, each with no earlier conversation, and writes &lt;code&gt;concepts_brief.md&lt;/code&gt;. Superpowers asks one question at a time, reads the existing code, offers two or three approaches to pick, and writes the design doc in that same skill.&lt;/li&gt;
&lt;li&gt;Design: EGM writes &lt;code&gt;design_draft.md&lt;/code&gt; section by section, with an approval after each section, and saves it under &lt;code&gt;docs/designs/&lt;/code&gt;. Superpowers writes one design doc, approved before building, under &lt;code&gt;docs/superpowers/specs/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Implementation plan: EGM puts it in the last section of the design doc, every file to touch, and no real code. Superpowers has a separate writing-plans skill, with small test-first tasks, under &lt;code&gt;docs/superpowers/plans/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Review: EGM reviews the design in stages, with reviewers that do not have the earlier conversation, then resolves the findings. Superpowers has a fresh agent check the design as a builder, a self-review of the plan, and a heavier review on the code during and after the tasks.&lt;/li&gt;
&lt;li&gt;Drift: Unlike Superpowers, EGM has a drift report you run after the implementation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why not just Superpowers
&lt;/h3&gt;

&lt;p&gt;Superpowers already covers the build well, so the question is what EGM adds before and after it.&lt;/p&gt;

&lt;p&gt;Before the code, the reviewers have none of the conversation. They only see the document, judged through seven lenses, so they can't inherit the assumptions I built up while brainstorming with the agent. EGM's own design notes call this out: a single thread that interviews you, designs, and codes ends up validating its own mistakes. The long drafts and reports also go into files instead of the chat, which keeps the main conversation clean.&lt;/p&gt;

&lt;p&gt;After the code, the drift report checks the design against what was actually built. Superpowers has nothing like that.&lt;/p&gt;

&lt;p&gt;So I keep Superpowers for the build and add EGM for the design and the drift check.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I would add
&lt;/h3&gt;

&lt;p&gt;The stops are meant to be there, like in SDD frameworks. What I would add is a conductor skill, so I don't have to type each skill to run in the conversation, and I choose where to stop. I wouldn't stop between the Technical Plan and the Alternatives. The conductor would auto-approve that middle step and write both in one pass.&lt;/p&gt;

&lt;p&gt;I wrote this because I wanted to know if EGM adds something to Superpowers, or if it's just more steps. If you've tried it, or you use another way to review designs with agents, I'd like to hear how it went. Leave your questions in the comments too, and I'll answer them.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/google/elephant-goldfish-model/blob/main/docs/harnesses.md" rel="noopener noreferrer"&gt;EGM supported harnesses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/elephant-goldfish-model/blob/main/docs/getting_started.md" rel="noopener noreferrer"&gt;EGM Getting Started Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/elephant-goldfish-model/blob/main/docs/designs/architecture.md" rel="noopener noreferrer"&gt;EGM architecture design notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/elephant-goldfish-model/tree/main/skills" rel="noopener noreferrer"&gt;Elephant-Goldfish skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/obra/superpowers/tree/main/skills" rel="noopener noreferrer"&gt;Superpowers skills&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I'm Cristian Calabro, a software engineer with 15+ years of experience. I help early-stage startups set up engineering foundations and bring AI into their daily development work. More at &lt;a href="https://www.ccalabro.dev" rel="noopener noreferrer"&gt;ccalabro.dev&lt;/a&gt; and on my &lt;a href="https://www.ccalabro.dev/remote-engineering-ai-advisor" rel="noopener noreferrer"&gt;remote engineering &amp;amp; AI advisor page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://x.com/c_calabro" rel="noopener noreferrer"&gt;X&lt;/a&gt; or &lt;a href="https://linkedin.com/in/cristiancalabro" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; for the next write-up.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>cli</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
