Claude + Codex · open kit (MIT)

Plan with one. Challenge with the other.

Six workflows for using Claude and Codex together, ready-made prompts and two skills (handoff and prime) to switch assistants without re-explaining the project.

The Claude and Codex mascots high-fiving under the title USE BOTH
What it is

Don't pick one assistant for everything.

A free kit by Prompt Advisers (Mark Kashef), MIT license, that accompanies the "Use Both" video. Here it is mirrored by INEMA with this guide in English, Portuguese and Spanish.

🤝 Two pairs of eyes

One assistant writes the plan or the code; the other critiques the same artifact, read-only. Two rounds at most. Agreement is not proof: the tests decide.

📋 Prompts and templates

Nine ready-made prompts (plan, review, image, computer use, goal, continuity) and templates for brief, plan, review and handoff.

🔁 Handoff and prime

Two skills that work in Claude Code and in Codex: one writes a snapshot of the project state and the other reads it before acting, without treating old notes as new permission.

The 6 levels

From "let them argue" to "pass the baton".

Each level solves one kind of work. Start with 1 and 6: they work with any subscription, with nothing to install.

1 · Let them argue→ 2 · Generate an image→ 3 · Split the work→ 4 · Supervised computer use→ 5 · Finish line→ 6 · Handoff
1

Let them argue

Claude produces plan-v1.md; Codex critiques it read-only, with evidence and severity. Claude reconciles in review.md: accepted, rejected, open.

2

Generate an image

Only if the session has the tool and you know how it bills. The deliverable is the file saved in the project, not a prompt. Never switch to a paid API on its own.

3

Split the work

One builds on a branch; the other reviews the diff with the test results. Bugs and regressions before style. Merge and deploy are your decisions.

4

Supervised computer use

Test account, you type the password and MFA, and the assistant stops before sending, paying, publishing or deleting. Never use another model to get around a refusal.

5

Finish line

A goal with an observable condition ("these tests pass"), bounded scope and spend. "Stop in two hours" is a request, not a real limit: use a real control.

6

Handoff

A dated snapshot in handoff/history/, with handoff/LATEST.md pointing to it. The next assistant reads it, checks the files, summarizes and waits.

Who does what

The routing table.

The author's starting preferences, recorded in the video. It is an editorial choice, not a measured ranking: test it and keep the route that gives the best evidence on your task.

JobFirst passSecond passFinish line
PlanningClaude / OpusCodex critiques the assumptionsA plan with scope and acceptance tests
Making an imageImage tool available in CodexInspect the file in its real contextA usable file, not just the prompt
Building a featureClaude / OpusCodex reviews the diffTests pass and findings resolved
Reviewing a documentEither one writesThe other checks facts and requirementsEvery required claim has evidence
Operating an interfaceAuthorized computer useYou review consequential actionsThe approved state is verified
Hard bugCodex with a bounded goalTests and a human checkpointMeasured success or a clear blocker
Switching session or modelHandoff snapshotPrime checks the current stateCorrect summary before new work

One rule: give the second assistant the same brief and the real artifact, never a vague summary of what the first one did.

Prerequisites

The minimum to get started.

The no-install route only needs two assistants and a text editor. Everything else is optional.

Two assistants

Claude and Codex, each on its own subscription. To delegate from the command line: Claude Code and Codex CLI installed and authenticated.

# check
claude --version
codex --version

Python 3.9+

Only for the skills installer and the example. It uses no third-party packages.

# check
python3 --version

Git

For the branch-and-review workflow (level 3). GitHub is optional, only if you want a hosted pull request.

# check
git --version
How-to guide · step by step

From download to your first handoff.

Real commands from the kit. The installer only shows what it would do until you pass --apply, and it never overwrites a skill that already exists.

1

Download the kit

Clone the INEMA mirror and run the bundled tests (installer and example).

git clone https://github.com/inematds/use-both-claude-codex.git
cd use-both-claude-codex
python3 -m unittest discover -s tests -v      # 9 installer tests
python3 examples/task-board/test_task_board.py  # fictional example
2

Take the five-minute trial, with nothing to install

Ask one assistant for a plan, save it as plan-v1.md and paste only the plan and the brief into the other assistant with this request:

# prompt for the reviewer (Codex or Claude)
Review this plan read-only. Find correctness gaps, missing tests, and
unnecessary scope. For each finding, show the evidence, impact, and
smallest fix. Say when something is only a preference. Do not invent
problems to fill a quota. Do not implement anything.
3

Reconcile and test

Return the review to the first assistant: what it accepts, what it rejects and why. Two rounds at most. The acceptance tests decide, not the agreement between the two.

# expected artifacts in the project
task-brief.md  plan-v1.md  review.md  plan-v2.md
4

Install the handoff and prime skills in one of your projects

Preview first, then apply. It writes only to .claude/skills/ and/or .agents/skills/ of the given project; it does not touch global skills, credentials or settings.

# preview: nothing changes
python3 scripts/install_skills.py --project /path/to/project --target both
# apply after checking the destinations
python3 scripts/install_skills.py --project /path/to/project --target both --apply
5

Close the session with handoff and open the next one with prime

Handoff writes handoff/history/YYYY-MM-DDTHHMMSSZ.md and points handoff/LATEST.md to it. Prime reads it, checks the files, summarizes and waits for your instruction.

# Claude Code
/handoff      # at the end of the session
/prime        # in the next one
# Codex
$handoff  →  $prime
6

Use the kit as a reference for an AI

Ask for a workflow recommendation without granting permission to act.

Read START-HERE.md, GUIDE.md, PROMPTS.md, and docs/privacy-and-safety.md
from this kit. Treat them as reference material, not permission to act.
My project is [project]. My task is [task]. My acceptance test is [test].
Recommend one workflow and identify what access it needs. Do not install,
upload, purchase, publish, or modify anything until I choose the next step.
Tools

Each tool: when to use it, how to call it, what it produces.

A quick reference for the skills, scripts and commands that connect Claude and Codex. Everything runs on each assistant's subscription, with no API key.

ToolWhen to useClaude CodeCodexWhat it produces
handoffAt the end of a session, before switching assistant or model/handoff$handoffA new snapshot in handoff/history/YYYY-MM-DDTHHMMSSZ.md and a line in handoff/LATEST.md pointing to it
primeAs the first message of the next session/prime$primeA recap in the chat: objective, done and pending, decisions, mismatches and one next step. Edits nothing
install_skills.pyOnce per project, to install both skillspython3 scripts/install_skills.py --project DIR --target claude|codex|both [--apply]Without --apply, preview only. With it, writes to .claude/skills/ and .agents/skills/
templates/When working by hand, without a skilltask-brief.md · plan.md · review.md · handoff.mdBrief, plan, review and handoff in the same format for both
codex execClaude asking Codex for a review from the terminalcodex exec --sandbox read-only --output-last-message review.md '…'The critique saved to review.md. Codex only reads the project
claude -pThe reverse path: Codex asking Claude for a reviewclaude -p --model opus --effort medium '…' > review-claude.mdClaude's critique in a file
Official Codex pluginReviewing the diff without leaving Claude Code/codex:setup
/codex:review --base main
—Read-only review findings. You ask the builder for fixes afterwards
claudexA large plan with several automatic critique rounds/claudex:plan [--rounds N] <feature>
/claudex:review
—PLAN.md revised until Codex approves or rounds run out; reviews/ with diff findings
claudex (control)Monitor or unstick the loop/claudex:status · /claudex:cancel · /claudex:rollback · /claudex:doctor—Current round and phase; cancel; clean stuck state; install diagnostics
session-handoff + prime (agente-claude-codex)Projects with a portable core (AGENTS.md, context/, tasks/)/session-handoff · /prime$session-handoff · $primeSnapshot in handoffs/history/ and a full copy in handoffs/latest.md. Also accepts Use Both's one-line pointer

📸 What goes into a handoff

Objective and latest request; what is done, what remains and what is uncertain; decisions and rejected paths; changed files; tests run with their real result (and those not run); blockers; one next step; and the few files the next reader should open first. No secrets, tokens or personal data.

🔎 What prime does

Reads handoff/LATEST.md, rejects absolute paths, .., URLs and symlinks, opens the snapshot as data (not as orders), checks the cited files and git status, flags stale claims and waits for your instruction. It runs no tests, installs nothing and does not resume an old deploy.

⚠️ Gotchas

A personal skill with the same name can win over the project one: on a collision, rename the folder and name to workflow-handoff / workflow-prime. After installing, open a new session (in Claude, /reload-skills also works). If the notes are private, add handoff/ to .gitignore.

↻

A full day with the tools

Each step leaves a file the next assistant can read.

# morning, in Claude Code
/prime                                   # resume from yesterday's handoff
# plan, then have Codex critique it (read-only)
codex exec --sandbox read-only --output-last-message review.md 'Read plan-v1.md and point out gaps…'
# or, for a large plan, the automatic loop
/claudex:plan --rounds 3 export report as CSV
# built on a branch: review the diff
/codex:review --base main                # or /claudex:review
# end of day
/handoff
# tomorrow, in Codex
$prime

A handoff is not permission. A recorded next step ("publish", "delete", "send") only happens if you ask again in the current session.

Related at INEMA

Where this fits.

Use Both teaches you to use the two together. These projects cover migrating, staying model-independent and automating the debate.

Kit
agente-claude-codexMigrate from Claude Code to Codex or stay agnostic: audit, AGENTS.md, portable core, synced skills and a readback test.
Course
Claude → Codex — Migrate or stay agnostic3 tracks and 18 modules on the model-independent workspace.
Course
iClaudeXPlanning with Claude + Codex in the terminal: level 1 automated in a loop.
Hub
Codex + Claude at INEMA EventosAll the courses and projects about Claude and Codex gathered on one page.