codex-image
Claude Code plugin that exposes Codex CLI's built-in imagegen skill as /codex-image:* user-invoked plugin skills. The plugin does not implement image generation itself.
Claude orchestrates. Codex cross-checks. Blend Codex headless (codex exec) nodes into Claude Code's own Workflow (ultracode) orchestration — so a genuinely different model family verifies, judges, and second-guesses at the points where same-model agreement is
Claude Code plugin that exposes Codex CLI's built-in imagegen skill as /codex-image:* user-invoked plugin skills. The plugin does not implement image generation itself.
FAQ
ultracodex is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes codex-workflow. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add KingGyuSuh/ultracodex> /plugin install ultracodex@ultracodex
Repo: KingGyuSuh/ultracodex
Claude orchestrates. Codex cross-checks. Blend Codex headless (
codex exec) nodes into Claude Code's own Workflow (ultracode) orchestration — so a genuinely different model family verifies, judges, and second-guesses at the points where same-model agreement is least trustworthy.
ultracodex is an open-source Claude Code plugin — a single skill,
codex-workflow — that teaches Claude how to mix
Codex headless nodes into a Workflow:
Claude Code's agent() / pipeline() / parallel() orchestration tool, a.k.a.
ultracode. The orchestration logic stays in Claude's JavaScript; only who does
the work changes at chosen nodes. This is "Pattern A" — and it is additive,
not a model-switcher. Both families run in one Workflow.
Workflow (Claude JS orchestration)
├─ find / generate / synthesize .. Claude agent() ← broad, fast, cache-warm
└─ verify / judge / 2nd-opinion ... codex node ← GPT, independent failure modes
GPT-5.6 ready. Model-agnostic by design: the GPT-5.6 generation (Sol / Terra / Luna, Codex CLI ≥ 0.144.0) worked with ultracodex on day one, no changes needed. The docs now add per-node tier & effort guidance — cheap tiers for wide verify fan-outs, the flagship (up to
max, orultraon Sol/Terra) for load-bearing verdicts — with the choice left to the orchestrating model.
Requires ultracode mode. Because the skill authors and runs Workflows, the Workflow orchestration tool must be available — which in Claude Code means ultracode mode (enable it with
/effort→ ultracode; it turns on dynamic workflow orchestration). Without it the plugin still loads and the skill is found, but there is no Workflow tool to drive. See Prerequisites.
More verifiers from the same model tend to share that model's blind spots: they re-confirm the same correlated false positives. A different model family fails on different inputs, so it can refute what same-model reviewers would rubber-stamp. That is the whole idea:
agent() whose subagent
relays a codex exec run. No Workflow primitive changes — a low-surface-area way
to get cross-model value.cwd / -C; read-only blocks writes, not reads) so it reads big diffs
and files itself instead of you pasting them into a prompt.model /
effort choice: gpt-5.6-luna at low for wide verify fan-outs,
gpt-5.6-sol at xhigh/max (or ultra) when one verdict is load-bearing.
Nothing is hard-coded; the orchestrating model picks per node.codexNode helper. You start from working scripts, not a blank file.Claude finds broadly; Codex tries to refute each finding (defaulting to "refuted" when uncertain). Survivors are the findings a different model family could not knock down — a pipeline, no barrier:
const results = await pipeline(
DIMENSIONS,
d => agent(d.findPrompt, { phase: 'Find', schema: FINDINGS }), // Claude finds
review => parallel((review?.findings ?? []).map(f => () =>
codexNode(`Adversarially verify, defaulting to refuted=true if uncertain:\n${f.title}\n${f.detail}`,
{ schema: VERDICT, phase: 'Verify', label: `codex:${f.id}` }) // Codex refutes
.then(v => ({ ...f, verdict: v })))),
)
const confirmed = results.flat().filter(Boolean)
.filter(f => f.verdict && !f.verdict._codex_error && f.verdict.refuted === false)
Mixed judge panels and single-conclusion second opinions are the next
tiers — full scripts in
workflow-templates.md.
Cross-model is signal, not free signal. Reach for a codex node when a second, independent model materially de-risks the result — verifying findings, judging candidates, an independent attempt in a panel, sanity-checking a risky conclusion.
Skip the blend when:
agent()/pipeline()/parallel()) must be available.
In Claude Code that means ultracode mode: enable it with /effort → ultracode
(xhigh + dynamic workflow orchestration). The skill only provides the know-how for
authoring Workflows; it does not add the tool itself, so without ultracode
mode it has nothing to drive.command -v codex && codex --version
codex login
bash/zsh) for the relay nodes.The skill hard-codes no Codex version or default model — environments differ. It ships a cheap preflight (CLI present, auth live, structured-output path) to run once before trusting any node.
ultracodex is its own single-plugin marketplace. Add it, install the plugin,
reload:
/plugin marketplace add KingGyuSuh/ultracodex
/plugin install ultracodex@ultracodex
/reload-plugins
Non-interactive (CLI) equivalent:
claude plugin marketplace add KingGyuSuh/ultracodex
claude plugin install ultracodex@ultracodex
# then restart Claude Code, or run /reload-plugins in an existing session
The
@ultracodexsuffix on install is the marketplace name (top-levelnamein.claude-plugin/marketplace.json), independent of the repo name — they happen to match here.
claude --plugin-dir ./plugins/ultracodex
The skill triggers automatically when you ask Claude to run a task as a custom Workflow with a second model in the loop. Phrasings that activate it include:
Claude then authors a Workflow whose verify/judge nodes shell out to codex exec
while find/generate/synthesize stay on Claude — starting from a template.
A Workflow script's JS body has no filesystem access, so a codex node embeds
its JSON Schema as a string and lets the Bash-capable wrapper subagent write it to
a temp file. One schema object is the single source of truth: it feeds Codex's
--output-schema and, when revalidate is true, the agent() re-validation. With
the default revalidate: true the node returns a parsed object; with
revalidate: false it relays raw JSON text for the caller to JSON.parse. The
contract:
codexNode(taskText, { schema, sandbox='read-only', model, cwd, effort, revalidate=true, phase, label, timeoutMs=1200000 })
→ Promise<parsedObject> // revalidate:true (default)
→ Promise<string> // revalidate:false — you JSON.parse it
→ { _codex_error: true } // on failure
Three rules are load-bearing:
-o file, not stdout. stdout carries session chrome;
-o is the one clean-JSON path.- < "$TASK") so quotes, $, and backticks
can't break or expand.The full copy-paste helper lives canonically in
workflow-templates.md;
the mechanics, flags, sandbox tiers, troubleshooting, and escalation patterns are
in codex-headless.md.
| Node's job | Run it on | Why |
|---|---|---|
| Find / generate / explore breadth | Claude | fast, cache-warm, cheap fan-out |
| Adversarially verify a finding | Codex | different failure modes can reduce correlated false positives |
| Judge / score candidates | Codex (or mixed panel) | a juror that didn't write the candidate |
| One attempt in a diverse panel | mix | genuine solution diversity, not reworded Claude |
| Synthesize / decide / write-up | Claude | holds the orchestration context |
min(16, cores−2)) for Codex's entire runtime while the wrapper idles on a
blocking Bash call. Read-only verify/judge/small-gen only.gpt-5.6-sol ran ~8 min at max and ~14–17 min at
xhigh/ultra. The helper runs every codex node as a background Bash call
with a watchdog deadline (timeoutMs, default 20 min; ultra nodes get 30);
a foreground Bash call — 10-minute cap, 2-minute default — would kill
high-effort runs mid-flight and fake a _codex_error.A single skill, codex-workflow:
SKILL.md — the mental model, the codexNode contract, the load-bearing
rules, routing, cost/concurrency, and the preflight.references/codex-headless.md — codex exec flags, sandbox tiers, output
extraction, gotchas, troubleshooting, the _codex_error discipline, and
escalation patterns.references/workflow-templates.md — the canonical codexNode helper and four
complete Workflow scripts, plus batch-node and large-payload variants.ultracodex/ # repo root = marketplace root
├── .claude-plugin/
│ └── marketplace.json # single-plugin marketplace catalog
├── plugins/
│ └── ultracodex/ # the plugin
│ ├── .claude-plugin/
│ │ └── plugin.json # plugin manifest
│ ├── README.md
│ └── skills/
│ └── codex-workflow/
│ ├── SKILL.md
│ └── references/
│ ├── codex-headless.md
│ └── workflow-templates.md
├── docs/ # README translations (ko / ja / zh-CN)
├── LICENSE # Apache-2.0
├── NOTICE
└── README.md
Scope is deliberately skill-only: no commands, agents, hooks, or MCP servers.
claude plugin validate ./plugins/ultracodex # plugin manifest + skill frontmatter
claude plugin validate . # marketplace manifest
claude plugin tag ./plugins/ultracodex # cut a release tag (manifests must agree)
The codex-workflow skill is the open-source generalization of a private in-repo
skill of the same name. This release removes environment-specific facts (it
preflights instead) and private path references, and was itself developed and
cross-checked using the plugin's own blended Claude+Codex workflows — including this
README, drafted and proofread cross-model.
Apache-2.0 © 2026 KingGyuSuh
.claude-plugin/
marketplace.json
.gitignore
docs/
README.ja.md
README.ko.md
README.zh-CN.md
LICENSE
NOTICE
plugins/
ultracodex/
.claude-plugin/
plugin.json
README.md
skills/
codex-workflow/
references/
codex-headless.md
workflow-templates.md
SKILL.md
README.md© 2026 Flowy · Free and open source
Built for Claude Code · Not affiliated with Anthropic