codex-image
Adds image generation and editing to Claude Code by wrapping Codex CLI's built-in imagegen skill. Offers generate, edit, and status commands, with optional reference images.
Lets Claude Code workflows call Codex headless through codex exec as separate nodes, so a different model family can verify, judge, and cross-check Claude's work. Useful where same-model agreement is weak evidence.
Claude Code
> /plugin marketplace add KingGyuSuh/ultracodex> /plugin install ultracodex@ultracodex
Codex
$ npx skills add KingGyuSuh/ultracodex -a codex
Cursor
$ npx skills add KingGyuSuh/ultracodex -a cursor
Gemini CLI
$ npx skills add KingGyuSuh/ultracodex -a gemini-cli
GitHub Copilot
$ copilot plugin marketplace add KingGyuSuh/ultracodex$ copilot plugin install ultracodex@ultracodex
OpenCode
$ npx skills add KingGyuSuh/ultracodex -a opencode
Windsurf
$ npx skills add KingGyuSuh/ultracodex -a windsurf
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.Adds image generation and editing to Claude Code by wrapping Codex CLI's built-in imagegen skill. Offers generate, edit, and status commands, with optional reference images.
A development methodology for coding agents that makes the agent brainstorm before building, follow plans, run parallel work and finish branches in a disciplined way. You get fewer skipped steps and more consistent results from your coding assistant.
Helps you take a change from a rough idea or bug report through to a tested, reviewed result, with each step handled by a focused skill. Its skills cover pinning down domain terms, designing module interfaces, diagnosing hard bugs, and reviewing changes against your repo's coding standards.
Gives your coding agent a planning, testing and review routine to follow on every task. It plans before building, checks changes with tests, has a fresh reviewer look for regressions, and saves repeated wins as reusable skills.
Developer tools for working on the React codebase itself. Provides skills for extracting error messages, managing and debugging feature flags across release channels, running Flow type checks, and fixing lint and formatting issues before committing.
Lets Claude Code workflows call Codex headless through codex exec as separate nodes, so a different model family can verify, judge, and cross-check Claude's work. Useful where same-model agreement is weak evidence. Install it with the command on its page. It includes codex-workflow. Its skills do not fire on their own yet. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it