Install the whole plugin, including its personas and standards:
codex plugin marketplace add google/elephant-goldfish-model
codex plugin add egm@egmStart a fresh session after installation. Select the installed egm skill
from the available skills. Use its discovered absolute SKILL.md path;
do not assume a particular cache directory, version, or checkout location.
From <plugin>/skills/<skill>/SKILL.md, the plugin root is three parent
directories above the file. Resolve bundled agents/, resources/, and
docs/ paths against that root. Resolve references/ against the active
skill's directory. Resolve user documents and generated artifacts against
the user's working directory. Never substitute similarly named files in the
user's project for bundled personas or standards.
If the user's prompt or agent instructions file (AGENTS.md) has a line
EGM artifact directory: <path>, write briefs, drafts, and reports to that
folder: resolve a relative path against the working directory, and create the
folder if it does not exist.
In ChatGPT Work, a skill may be exposed through a cloud resource identifier
while supporting files live in the installed local bundle. Use the installed
path supplied by the skill inventory or installation metadata for those files;
do not construct cloud resource identifiers for arbitrary supporting paths.
If no installed path is available, report the missing capability instead of
guessing a cache location. Read reviewer filenames and frontmatter from the
bundle: a role such as egm-design maps to agents/design_critic.md, not
agents/design.md. Confirm each resolved path before dispatch.
Inspect the available native subagent tool schema. Tool names can be
namespaced and vary by Codex version. When spawn_agent exposes
fork_context, explicitly set fork_context: false for every Goldfish.
When the schema instead exposes fork_turns, use fork_turns: "none".
This applies to reviewers launched by a synthesizer too. Use a general-purpose agent
and pass absolute paths to the persona, standards, target document, and
explicitly selected reading list. Do not pass the parent transcript, private
reasoning, or answers the document is supposed to explain.
Require the reviewer to read its persona, target, and every supplied standard before returning findings. A missing read or inaccessible file is an incomplete review, not a clean result. Verify native tool results when the host exposes them; a parent-written completion summary is not equivalent evidence.
Wait for actual reviewer completion before synthesizing findings. Propagate failures and timeouts; a launched reviewer is not a completed review. If nesting is unavailable, dispatch reviewers directly from the parent while preserving the same isolation. If the available tool cannot establish a fresh context, stop the Goldfish review and report that limitation.
Fresh conversation context does not isolate the filesystem, configured memory services, or project instructions. Do not retrieve conversation history or memory to supply missing design context. An isolation test should use a unique parent-only marker and check the actual child result, not the parent's claim.
The shared skills' question payloads describe the intended interaction, not a literal Codex API. Use a structured question tool only when it is available and permitted in the current mode, mapping to its actual schema. Otherwise ask one plain-text question and wait for the answer. Preserve the skill's readiness and section approval gates; tool unavailability is not approval.
Link generated artifacts with absolute-path Markdown links such as
[design draft](/absolute/project/design_draft.md). For paths containing
spaces use [design draft](</absolute/my project/design_draft.md>).
Do not use file:// links in Codex chat.
Run the offline packaging checks with pytest tests/unit. The opt-in native
workflow tests are documented in TESTING.md. They require
an authenticated Codex CLI and consume model usage. Installing or discovering
the plugin alone does not establish end-to-end workflow support.
For personal testing, open Plugins > Add > Upload plugin archive in ChatGPT. Package the runtime files from the repository root:
python3 scripts/pack_plugin.py --target openai --output /tmp/egm-chatgptUse a fresh output directory. Upload /tmp/egm-chatgpt/egm-openai.zip and
install the plugin in the ChatGPT desktop app. Use
Try in chat in a new thread that runs locally. The earlier cloud Work
test in TESTING.md predates this package's desktop-only declaration.
Keep repository marketplace catalogs and development files outside this archive.
The OpenAI directory package declares local execution because bootstrap uses
shell commands. Its listing uses the portable manifest's OpenAI extension;
the Codex compatibility manifest retains matching metadata for native installs.
Keep .claude-plugin/ outside the OpenAI archive: its agent adapters belong
to the Claude Code integration. Public directory plugins cannot include hooks.
Enterprise, Business, and Edu workspaces can import the plugin via Admin > Plugins > Add > Import marketplace.
Set the repository URL to https://github.com/google/elephant-goldfish-model and marketplace path to .agents/plugins.
Skills are accessible via @egm for direct interaction.
Check the native tools in the current chat before starting a Goldfish review.
Some ChatGPT Work sessions expose native spawn_agent with fork_turns: "none".
Use the fresh-context instructions above when those tools are available. If
they are absent, stop and report that isolation is unavailable; never simulate
reviewers in the parent context. Availability in one Work session does not
establish support across every ChatGPT mode or account.