codex-review
Ask Codex to review Shannon work. Use when the user requests Codex review or during large/risky experiments before acting on conclusions.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Ask Codex to review Shannon work. Use when the user requests Codex review or during large/risky experiments before acting on conclusions.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Run an in-session adversarial review of Shannon work using a fresh-context reviewer. Use for experiment design gates, experiment result gates, risky Rust changes, Nushell/Reedline subtree upgrades, and workflow compliance.
Ask Claude to review Shannon work. Use when the user requests Claude review or during large/risky experiments before acting on conclusions.
Write entertaining commit messages as poetry
Create a new agent skill. Use when creating a new skill for the project.
Store all debug logs in ~/dev/shannon/logs/. Use when running apps, configuring log paths, or troubleshooting output.
Verify and fix Nerd Font icons after editing files. Use whenever writing or editing a file that contains Nerd Font characters (Private Use Area codepoints).
| name | codex-review |
| description | Ask Codex to review Shannon work. Use when the user requests Codex review or during large/risky experiments before acting on conclusions. |
Use Codex as an independent reviewer for Shannon issue designs, code diffs, experiment results, and architectural decisions.
The review is advisory. The calling agent remains responsible for deciding whether Codex's feedback is correct, acting on valid findings, and explaining any rejected findings.
Do not rely on Codex session memory alone. Session IDs are useful for grouping related reviews and may help continuity, but every important review prompt must include the essential issue, diff, log, and question context explicitly.
This skill is the Codex counterpart of claude-review. Use either or both when
you want a second model's read on risky work.
Use this skill when:
Every Codex review has a hard timeout of 15 minutes.
Use the helper script in this skill instead of calling codex directly. The
script enforces the timeout with Python's subprocess API and terminates Codex's
process group on timeout because macOS does not provide a portable timeout
command by default.
All review state and output lives under:
logs/codex-review/
The helper script maintains:
| Path | Purpose |
|---|---|
logs/codex-review/current-session-id | reusable Codex session UUID |
logs/codex-review/<timestamp>-prompt.md | exact prompt sent to Codex |
logs/codex-review/<timestamp>-events.jsonl | raw Codex --json event stream |
logs/codex-review/<timestamp>-last-message.md | Codex's final review message |
logs/codex-review/<timestamp>-stderr.log | Codex stderr / timeout details |
These logs are intentionally under logs/, which is gitignored. They may still
contain sensitive diffs or local paths. Keep context narrow and do not write
secrets into review prompts.
Prepare the review context. Include only the context Codex needs. Prefer concrete artifacts:
git diff or git diff --staged;Ask specific questions. The prompt should tell Codex what kind of review to perform. Examples:
Run the helper script.
python3 skills/codex-review/scripts/codex_review.py \
--context issues/0789-electron-style-pdf-viewer/README.md \
"Audit Experiment 6. Focus on whether the scope is right and whether the verification would prove the result."
For a staged diff review:
git diff --staged | python3 skills/codex-review/scripts/codex_review.py \
"Review this staged diff for bugs, regressions, and missing tests."
For a fresh thread:
python3 skills/codex-review/scripts/codex_review.py --new-session \
"Start a new review thread. Reply with the review session status."
Read the result. The helper prints:
Act on valid findings. If Codex finds a real issue and the user asked for implementation, fix it. If Codex is wrong or speculative, do not make the change; briefly document why.
Report high-signal results. Summarize Codex's actionable findings to the user. Do not paste long raw output unless the user asks for it.
Codex differs from Claude here. claude -p lets you choose a session id up
front with --session-id <uuid>. Codex does not: codex exec generates the id
itself. The helper therefore captures the id from the --json event stream
after the first run and stores it for follow-ups.
The helper uses codex exec for a new review thread and
codex exec resume <uuid> for follow-up turns.
Default policy: maintain one continuous review session while it is usable. The helper resumes the stored session id on every run. Keep doing that — review after review goes into the same thread until the session becomes unusable.
--new-session on your own judgment for ordinary topic
changes. Not for a "different topic," not for a new experiment, not for a new
issue. The user decides when to start a new thread, except for the automatic
recovery cases below.logs/codex-review/current-session-id exists and holds a valid UUID, the
script resumes it. If it is missing or unparseable, the script starts a fresh
session and stores the id Codex reports.context_length_exceeded, context window, or a failed remote compaction,
rerun the same Codex review with --new-session. Do not switch to Claude or
another agent merely because the old Codex session is full.--new-session (explicit user request only) ignores the stored id and starts
fresh.codex exec resume --last is a manual fallback if you ever need to reattach
to the most recent session by hand.The helper invokes Codex like this for a new session:
codex exec \
-s read-only \
--json \
--color never \
-o logs/codex-review/<timestamp>-last-message.md \
- # prompt is piped in on stdin
For follow-up turns it replaces codex exec with codex exec resume <uuid> and
drops -s (see below).
The default sandbox is read-only, which is genuinely read-only — Codex can
read the repo to inspect files but cannot modify the working tree. codex exec
is non-interactive by design, so it never blocks on an approval prompt (there is
no -a flag on codex exec). This is the review-oriented analog of
claude-review's read-only Read/Grep/Glob tool set under
--permission-mode dontAsk.
The sandbox is fixed when the session is created. codex exec resume does not
accept -s; a resumed turn inherits the sandbox the session was created with.
To review under a different sandbox, start a new session with --new-session.
If a review truly needs to run commands (not just read), create the session with a workspace-write sandbox and include the reason in the user-facing summary:
python3 skills/codex-review/scripts/codex_review.py --allow-bash ...
If a review should use only supplied context, run with:
python3 skills/codex-review/scripts/codex_review.py --no-tools ...
--no-tools is best-effort: Codex has no per-tool allowlist for codex exec,
so the helper keeps the read-only sandbox and instructs Codex in the prompt to
use only the supplied context.
Use this structure for substantial reviews:
You are reviewing Shannon work. Take a code-review stance: findings first,
ordered by severity, with file/line references where possible.
Task:
<what Codex should review>
Context:
<issue, experiment, diff, logs, screenshots, test output>
Questions:
1. Is the design/implementation correct?
2. What are the concrete risks or missed cases?
3. What should be changed before implementation/commit?
4. If nothing should change, say that clearly.
For large experiments, run Codex review at one or both checkpoints:
After designing the experiment, before implementation. Ask Codex to audit the design for contradictions, missing verification, and scope creep.
After implementation, before final result or commit. Ask Codex to review the diff, logs, and result language.
Do not block forever waiting for Codex. The 15-minute timeout is the maximum. If Codex times out, record that and continue with normal engineering judgment.
After creating or changing this skill, test the helper without giving Codex repo-changing authority:
python3 skills/codex-review/scripts/codex_review.py --new-session --no-tools \
"Smoke test: reply with OK and one sentence describing what session continuity means."
Then run a second call without --new-session:
python3 skills/codex-review/scripts/codex_review.py --no-tools \
"In one sentence, say whether this is the same review session."
Both outputs should be saved under logs/codex-review/. The printed
session_id should match between the two runs. The second answer does not need
to prove memory of the first prompt; the important smoke-test properties are
exit code 0, saved artifacts, and stable session ID reuse.