Use the local Codex CLI as an independent second agent. Two branches — (1) proactively run `codex review` for a second opinion after completing a substantive change, before presenting it as done or committing; (2) delegate a well-defined implementation task via `codex exec`, ONLY when the user explicitly asks for Codex to do it. Also covers how to prompt Codex.
npx skills add https://github.com/dzhng/skills --skill codex
Codex is an independent agent on PATH (codex — invoke as command codex if
a shell alias shadows it), sharing this working tree and already authenticated. It is a second opinion, not ground truth: verify what it
reports, own what it changes. It reads the same skills your repo carries.
codex is not installedWhen codex is missing from PATH, offer to install it — **ask the user for
approval first**, never install on your own initiative. On yes, follow the
current instructions at https://developers.openai.com/codex/cli. First-run
authentication is interactive — hand that step to the user. Verify with
codex --version before proceeding.
Prompt Codex like an operator, not a collaborator: compact, block-structured
with XML tags. State the task, what "done" looks like, and the few constraints
that matter. A tighter prompt beats a bigger run — improve the contract before
raising --effort.
separate runs; a mixed prompt gets a mixed result.
repo carries — say "follow write-docs for the doc", "obey refactor-clean: no
compatibility wrappers." Don't re-explain what a skill already carries.
<task> — the concrete job, the repo/failure context, the expected endstate. Nearly always present.
<output_contract> — exact shape, highest-value first, compact.<default_follow_through> — take the low-risk interpretation and keepgoing; stop only when a missing detail changes correctness, safety, or an
irreversible action.
<verification_loop> — before finalizing, check the result against therequirements and the changed files; revise rather than ship the first
draft. Any risky fix.
<grounding> — ground every claim in code or tool output; label inferencesas inferences. Review and research.
<action_safety> — keep the diff tightly scoped; no drive-by refactors.Write tasks.
back"), "think harder" in place of a contract, mixing jobs in one run, and
demanding certainty the evidence can't support.
Run a Codex review whenever you have a substantive diff you'd want a second set
of eyes on — a refactor, a tricky algorithm, renderer work, a security-sensitive
change — before declaring it done or committing. Skip it for trivial edits
(typos, comments, doc-only).
codex review --uncommitted for working-tree changes,--base <branch> for a branch diff, --commit <sha> for a landed commit.
Scope flags and custom instructions are mutually exclusive (despite what
--help implies): codex review "<instructions>" reviews the default
scope with your framing, a scope flag takes no prompt. When you do write
instructions, scope the risk area — never state the answer you expect
(unprimed, same discipline as
screenshot-critique).
Codex's evidence boundaries — an inference it labelled is not a fact.
Overlap with your own doubts is high-priority evidence; a finding you
dismiss needs a stated reason, not silence.
you dismissed and why. Done when every finding is either fixed or
explicitly dismissed.
Delegate implementation to Codex only when the user names Codex for the task.
Never hand it work on your own initiative, and never re-delegate follow-up
work without a fresh ask.
verify — using the prompt discipline above. An underspecified task stays
with you until a fresh agent couldn't misread it.
separable from yours.
codex exec --sandbox workspace-write "<task>".Network is off; add -c sandbox_workspace_write.network_access=true only
when the task must fetch (e.g. new deps).
codex exec --dangerously-bypass-approvals-and-sandbox "<task>".** The
sandbox blocks localhost binds (listen EPERM on vite/playwright), so a
sandboxed codex ships code it never saw run. Bypass trades that blindness
for zero OS control: only in a dedicated git worktree, only with a prompt
you authored end-to-end (never relaying third-party text), and the diff
review you owe afterwards is the control.
Use -o <file> to capture the final message and background long calls;
suppress codex's stderr thinking-noise with 2>/dev/null so it doesn't
bloat your context (drop it only to debug a failing run), and add
--skip-git-repo-check to run outside a git repo. Non-interactive runs
never ask for approval either way.
codex exec resume <session-id> "<follow-up>", taking theid from the run header. resume --last means the most recent session
globally — a review or any other codex run in between will hijack it. If
two resume rounds don't converge, stop delegating and finish it yourself —
iterating a confused agent costs more than taking over.
it. "Codex says it's done" is not done.
A backgrounded codex exec can wedge at startup: process alive at ~0% CPU, but
no session file under ~/.codex/sessions/<Y/M/D>/, no network socket, no tree
changes. "Process running" is NOT "working."
/dev/null, never an inherited terminal. Lefton an interactive/piped stdin with no prompt source, exec prints `Reading
additional input from stdin...` and blocks forever — the most common hang.
Either pass the prompt as a positional arg with < /dev/null, or feed a
prompt file with codex exec [flags] - < prompt.txt (the - makes codex
read the task from stdin, and a missing file fails the redirect loudly —
unlike "$(cat prompt.txt)", which silently sends the fallback string as
the task). Add nohup/& as needed.
grep -rl "<marker>" ~/.codex/sessions/<Y/M/D>/ finds no session within
~3 minutes. Relaunching after a kill reliably works.
block forever on an invisible prompt. Git worktrees are separate paths from
the trusted repo root — add
[projects."<worktree-path>"]\ntrust_level = "trusted" to
~/.codex/config.toml before exec'ing in one. This is the safe fix; the
bypass flags stay forbidden here.
before starting a new one.
CWD at launch: exec'd from a subdirectory (e.g. web/), every edit outside
it is rejected as "writing outside of the project" and a never approval
policy can't recover — the run burns with zero files changed. Pass
-C <root> to set the working root explicitly instead of cd-ing into it.
--sandbox read-only (the default) for consultation and questions;workspace-write only for delegated implementation.
--dangerously-bypass-approvals-and-sandbox is reserved for tasks that mustrun browsers/servers/full suites (above) — dedicated worktree, self-authored
prompt, mandatory diff review after. --full-auto has been removed (it
aliased workspace-write) — don't reach for it.
model_reasoning_effort=high, -m <model> (the old --effort` flag is gone
in current Codex). Leave both at their defaults unless the user asks —
tighten the prompt first.
Take dzhng/codex from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.