skills/skills-codex/paper-illustration-image2/SKILL.md
Generate publication-quality academic illustrations through a local Codex app-server bridge that uses Codex native image generation. This is a separate experimental alternative to `paper-illustration`, intended for Claude Code users who want a GPT-image-style renderer without modifying the original skill.
npx skillsauth add wanshuiyin/Auto-claude-code-research-in-sleep paper-illustration-image2Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate publication-quality paper figures using Claude as the planner/reviewer and a local Codex app-server MCP bridge as the raster renderer.
┌──────────────────────────────────────────────────────────────────────────┐
│ MULTI-STAGE ITERATIVE WORKFLOW │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ User Request │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Claude │ ◄─── Step 1: Parse request, create initial prompt │
│ │ (Planner) │ - Extract components, labels, and data flow │
│ │ │ - Write a paper-ready figure brief │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │Claude/Codex │ ◄─── Step 2: Optimize layout description │
│ │ Layout │ - Refine component positioning │
│ │ Review │ - Optimize spacing and grouping │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │Claude/Codex │ ◄─── Step 3: CVPR/NeurIPS style verification │
│ │ Style │ - Check palette, arrows, and label standards │
│ │ Check │ - Tighten the prompt before rendering │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ codex-image2│ ◄─── Step 4: Native image generation via bridge │
│ │ MCP bridge │ - Call generate_start / generate_status │
│ │ + app-server│ - Accept only native imageGeneration output │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Claude │ ◄─── Step 5: STRICT visual review + SCORE (1-10) │
│ │ (Reviewer) │ - Verify logic, labels, arrows, and aesthetics │
│ │ STRICT! │ - Reject unclear or non-paper-ready figures │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ Score ≥ 9? ──YES──► Accept & Output │
│ │ │
│ NO │
│ │ │
│ ▼ │
│ Generate SPECIFIC improvement feedback ──► Loop back to Step 2 │
│ │
└──────────────────────────────────────────────────────────────────────────┘
RENDERER = codex-image2 — Native image generation bridge exposed through local Codex app-server
OPTIONAL_TEXT_CRITIC = spawn_agent — Optional text-only second opinion for layout/style checks
MAX_ITERATIONS = 5 — Maximum refinement rounds
TARGET_SCORE = 9 — Minimum acceptable score (1-10)
OUTPUT_DIR = figures/ai_generated/ — Output directory
TEXT_LANGUAGE = English — Default figure text language unless the user requests otherwise
NATIVE_IMAGE_REQUIREMENT = strict — Accept only native imageGeneration output; reject shell/Python fallbacks
IMAGE2_HELPER — canonical name paper_illustration_image2.py, resolved
per shared-references/integration-contract.md §2
(Policy A — skill-local gate). Phase 3.2 (Arch C) moved the canonical
implementation into skills/paper-illustration-image2/scripts/;
tools/paper_illustration_image2.py remains as an os.execv shim so
legacy resolver layers keep working without a re-install. Resolve via the
Codex-side chain:
IMAGE2_HELPER=""
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills-codex.txt ]; then
ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills-codex.txt 2>/dev/null) || true
fi
[ -f ".agents/skills/paper-illustration-image2/scripts/paper_illustration_image2.py" ] && IMAGE2_HELPER=".agents/skills/paper-illustration-image2/scripts/paper_illustration_image2.py"
[ -z "$IMAGE2_HELPER" ] && [ -n "${ARIS_REPO:-}" ] && [ -f "$ARIS_REPO/skills/paper-illustration-image2/scripts/paper_illustration_image2.py" ] && IMAGE2_HELPER="$ARIS_REPO/skills/paper-illustration-image2/scripts/paper_illustration_image2.py"
[ -z "$IMAGE2_HELPER" ] && [ -n "${ARIS_REPO:-}" ] && [ -f "$ARIS_REPO/tools/paper_illustration_image2.py" ] && IMAGE2_HELPER="$ARIS_REPO/tools/paper_illustration_image2.py"
[ -z "$IMAGE2_HELPER" ] && [ -f tools/paper_illustration_image2.py ] && IMAGE2_HELPER="tools/paper_illustration_image2.py"
[ -z "$IMAGE2_HELPER" ] && [ -f ~/.codex/skills/paper-illustration-image2/scripts/paper_illustration_image2.py ] && IMAGE2_HELPER="$HOME/.codex/skills/paper-illustration-image2/scripts/paper_illustration_image2.py"
[ -z "$IMAGE2_HELPER" ] && {
echo "ERROR: paper_illustration_image2.py not resolved at .agents/skills/, \$ARIS_REPO/skills/, \$ARIS_REPO/tools/, tools/, or ~/.codex/skills/." >&2
echo " /paper-illustration-image2 cannot proceed. Fix: rerun install_aris_codex.sh, export ARIS_REPO, or copy the canonical skill into ~/.codex/skills/." >&2
exit 1
}
All invocations below use python3 "$IMAGE2_HELPER" <subcommand>.
What "CVPR Style" Actually Means:
目标:既不保守也不花哨,找到平衡点
| Figure Type | Quality | Examples | |-------------|---------|----------| | Architecture diagrams | Excellent | Model architecture, pipeline, encoder-decoder | | Method illustrations | Excellent | Conceptual diagrams, algorithm flowcharts | | Conceptual figures | Good | Comparison diagrams, taxonomy trees |
Not for: Statistical plots (use /paper-figure), deterministic vector topology figures (prefer /figure-spec), photo-realistic scenes
Render this checklist explicitly before starting:
📋 paper-illustration-image2 integration checklist:
[ ] 1. python3 "$IMAGE2_HELPER" preflight --workspace <cwd> --json-out figures/ai_generated/preflight.json
[ ] 2. Confirm preflight JSON says ok=true before rendering
[ ] 3. Render via mcp__codex-image2__generate_start + generate_status
[ ] 4. Finalize via python3 "$IMAGE2_HELPER" finalize --workspace <cwd> --best-image <best_png>
[ ] 5. Verify artifacts via python3 "$IMAGE2_HELPER" verify --workspace <cwd> --json-out figures/ai_generated/verify.json
figures/ai_generated/ if it does not exist.python3 "$IMAGE2_HELPER" preflight \
--workspace <cwd> \
--json-out figures/ai_generated/preflight.json
ok=true, stop and say so clearly.Turn the user request into a fully specified image prompt. Include:
When the input is a method note or a paper section, summarize it first into a clean figure brief before writing the final image prompt.
This step is required. Before rendering, refine the prompt into a concrete layout plan:
If spawn_agent is available, you may ask it for a short second-opinion
layout critique here, but Claude should still complete this step even without
Codex.
Use Codex layout critique for:
This step is also required. Check the prompt against the intended paper style before rendering:
If spawn_agent is available, you may ask it for a short text-only
style audit, but do not block on it.
Call mcp__codex-image2__generate_start with:
prompt: the final image promptcwd: current project root or paper workspaceoutputPath: figures/ai_generated/figure_v1.pngsystem: a short instruction like Academic paper figure. Prefer crisp English labels.timeoutSeconds: a bounded render timeout such as 180Then call mcp__codex-image2__generate_status with bounded waits until:
done=true and status=completed, ordone=true and status=failedIf generation fails, report the bridge error directly instead of hiding it.
Review the generated image with a strict checklist:
Score it from 1-10.
If score < 9, write a targeted refinement prompt:
figure_v2.png, figure_v3.png, etc.Keep refinement feedback concrete:
Increase spacing between genome scan and scoring modulesMake the off-target branch thinner and secondaryUse cleaner English labels: "Candidate sgRNA library", not "sgRNA library 23 bp"When accepted:
figure_final.pnglatex_include.texreview_log.jsonpython3 "$IMAGE2_HELPER" finalize \
--workspace <cwd> \
--best-image figures/ai_generated/figure_vN.png \
--score 9 \
--review-summary "Accepted after strict review; labels and arrows are paper-ready."
python3 "$IMAGE2_HELPER" verify \
--workspace <cwd> \
--json-out figures/ai_generated/verify.json
Suggested LaTeX:
\begin{figure*}[t]
\centering
\includegraphics[width=0.95\textwidth]{figures/ai_generated/figure_final.png}
\caption{[Replace with a paper-ready caption].}
\label{fig:[replace-me]}
\end{figure*}
codex-image2 bridge only for native image generation.tools/paper_illustration_image2.py finalize to emit the final artifacts.tools/paper_illustration_image2.py verify before claiming success.If rendering succeeded but final artifacts were skipped, repair the integration explicitly:
python3 "$IMAGE2_HELPER" finalize \
--workspace <cwd> \
--best-image figures/ai_generated/figure_vN.png
python3 "$IMAGE2_HELPER" verify \
--workspace <cwd> \
--json-out figures/ai_generated/verify.json
figures/ai_generated/
├── preflight.json # Helper preflight receipt
├── figure_v1.png # Iteration 1
├── figure_v2.png # Iteration 2
├── figure_v3.png # Iteration 3
├── figure_final.png # Accepted version (copy of best, score ≥ 9)
├── latex_include.tex # LaTeX snippet
├── review_log.json # Review notes and refinement history
└── verify.json # Helper verification diagnostic
| Stage | Agent / Tool | Purpose |
|-------|--------------|---------|
| Step 0 | python3 "$IMAGE2_HELPER" preflight | Observable activation predicate and preflight receipt |
| Step 1 | Claude | Parse request and create the initial figure prompt |
| Step 2 | Claude (+ optional Codex critique) | Refine layout, grouping, spacing, and arrow routing |
| Step 3 | Claude (+ optional Codex critique) | Verify academic visual style before rendering |
| Step 4 | mcp__codex-image2__generate_start + generate_status | Native raster image generation through Codex app-server |
| Step 5 | Claude | Strict visual review and scoring |
| Step 7 | python3 "$IMAGE2_HELPER" finalize + verify | Emit canonical artifacts and external verification receipt |
tools
Get a deep critical review of research from Gemini via gemini-review MCP. Use when user says "review my research", "help me review", "get external review", or wants critical feedback on research ideas, papers, or experimental results.
testing
Verify research idea novelty against recent literature. Use when user says "查新", "novelty check", "有没有人做过", "check novelty", or wants to verify a research idea is novel before implementing.
development
Workflow 1: Full idea discovery pipeline. Orchestrates research-lit → idea-creator → novelty-check → research-review to go from a broad research direction to validated, pilot-tested ideas. Use when user says \"找idea全流程\", \"idea discovery pipeline\", \"从零开始找方向\", or wants the complete idea exploration workflow.
data-ai
Generate and rank research ideas given a broad direction. Use when user says "找idea", "brainstorm ideas", "generate research ideas", "what can we work on", or wants to explore a research area for publishable directions.