Academic Figure Workflow Orchestrator
About Academic Figure Workflow Orchestrator
A conversational skill for planning and producing academic figures from repository code or paper materials. It uses two required confirmation gates before generating an image or handing off a prompt.
Key features
- 01Repository- and paper-based input paths
- 02Analysis handoff for figure planning
- 03Two mandatory confirmation gates
- 04Classic and pastel prompt routing
- 05Optional image generation or prompt delivery
Use cases
- 01Planning a figure from a code repository
- 02Mapping paper sections to figure recommendations
- 03Reviewing a figure plan before prompt creation
- 04Delivering a prompt when image generation is unavailable
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ azhi-ss/ academic-figure-skills --skill academic-figure-workflow-orchestratorAfter installing, type/academic-figure-workflow-orchestratorin Claude Code to confirm it loaded.
Bundled filesreferences/missing-info-policy.mdreferences/palettes.md
Details
From the project READMEAcademic Figure Workflow Orchestrator
Role
对话式配图助手。用户启动本 skill 后,助手分析输入、与用户 plan 对齐、确认后执行完整链路并出图(或交付 prompt)。Never run the full chain silently — two confirmation gates are mandatory.
Shared refs:
- palettes →
references/palettes.md - missing info →
references/missing-info-policy.md
Session protocol
Phase 0 — Input detection
Determine input type from what the user provided:
- Repo path/URL → Path A (repo-first)
- PDF / paper text / outline / existing figure → Path B (paper-first)
- Neither → ask for ONE input only (repo path or paper material). Do not ask for anything else.
Phase 1 — Analyze (automatic, no gate)
- Path A: read
../academic-repo-analyzer/SKILL.md, produce Quick Understanding Doc + Handoff (module_count, domain, figure_types, evidence). Show a ≤10-line summary to the user. - Path B with PDF/figure: read
../academic-figure-architecture-extractor/SKILL.mdfirst, then../academic-figure-paper-analyzer/SKILL.md. Path B with text: paper-analyzer only. - If input is unusable (no repo, no paper), stop and list minimum materials per
references/missing-info-policy.md.
GATE 1 — Figure Plan confirmation (mandatory)
Present a compact plan and WAIT for user response:
基于分析,建议画这张图:
- 图类型: <controlled type, e.g. Network Architecture>
- 内容: <one sentence, from Handoff figure suggestions>
- 宽高比: <16:9 / 3:2 / 4:3>
- 风格: <classic academic 框线 / pastel airy 柔彩>
- 配色: <palette name + decision branch from Color routing below>
- module_count: <int or "不适用">
回复"确认"继续,或直接说要改哪项(换图类型/换风格/换配色/换素材)。
Rules:
- Do not proceed past this gate without an explicit 确认/OK/可以/continue.
- If user requests changes, update the plan, re-present, wait again.
- If the reply is unrelated chit-chat, treat as confirmation and continue — unless it clearly requests a plan change.
- Classic vs pastel choice follows the Style family table below.
- Palette choice follows the Color routing table below.
Phase 2 — Generate spec + prompt (automatic, no gate)
- Classic → read
../academic-figure-prompt/SKILL.md, follow its Steps 1–5: JSON spec + 200-400 word image prompt. - Pastel → read
../academic-figure-prompt-pastel/SKILL.md: layered English prompt. - If color-expert input is needed and not already in plan, read
../academic-figure-color-expert/SKILL.mdto produce a formal Palette Decision.
GATE 2 — Prompt confirmation (mandatory)
Present the final image prompt in full and WAIT:
这是将要发给生图模型的 prompt:
<full prompt text; for classic, also offer the pasteable JSON spec>
回复"确认"开始生图,或直接说怎么改。
Phase 3 — Image generation (conditional)
Check for an available image generation backend, in this order:
-
gpt-image-generation skill — if
~/.omp/agent/skills/gpt-image-generation/scripts/generate.jsexists, run:node ~/.omp/agent/skills/gpt-image-generation/scripts/generate.js \ --model cpa-gpt-image-2 \ --prompt "<final prompt>" \ --size <from table below> \ --quality hd \ --output /tmp/academic-figure-$(date +%s).pngSuccess when stdout contains
IMAGE_GENERATED_SUCCESS:<path>. -
sensenova MCP — call
mcp__sensenova_image_generate_imagewith the same prompt. -
Neither available → do NOT fake generation. Deliver the prompt as final output with: "当前环境无可用生图模型,可直接复制以上 prompt 到 Gemini NanoBanana / Midjourney 使用。"
On success, embed: 
On API error, show the error verbatim + the prompt. Do not retry more than once.
Size mapping:
| aspect_ratio | gpt-image-2 --size |
|---|---|
| 16:9 | 1792x1024 |
| 3:2 | 1536x1024 (fallback 1792x1024) |
| 4:3 | 1344x1024 (fallback 1792x1024) |
| 1:1 | 1024x1024 |
Fallback: if cpa-gpt-image-2 returns a 404/unsupported error, retry once with --model gpt-image-2; if that also fails, use the prompt-delivery branch.
Entry paths (unchanged contracts)
Path A — Repo-first (code input)
User gives a repository path or URL.
| Stage | Skill | Output |
|---|---|---|
| Analyze code | repo-analyzer | Quick Understanding Doc + Handoff (module_count, domain, figure_types, evidence) |
| GATE 1 | (this skill) | Confirmed Figure Plan |
| Generate spec | figure-prompt / figure-prompt-pastel | JSON spec + image prompt |
| GATE 2 | (this skill) | Confirmed prompt → Phase 3 |
Repo path characteristics:
- module_count comes from real code structure (drives Nature Blue vs Okabe-Ito)
- figure types suited to code: Network Architecture, Module Detail, Overall Framework
- no paper narrative; evidence level is sparse/partial/high based on code read
Path B — Paper-first (document input)
User gives a PDF, paper text, outline, or existing figure.
| Stage | Skill | Output |
|---|---|---|
| Extract from PDF/image | architecture-extractor | Extracted structure + redraw params |
| Analyze paper | paper-analyzer | Figure Plan (section → figure map, priorities) |
| GATE 1 | (this skill) | Confirmed Figure Plan |
| Generate spec | figure-prompt / figure-prompt-pastel | JSON spec + image prompt |
| GATE 2 | (this skill) | Confirmed prompt → Phase 3 |
Paper path characteristics:
- no module_count unless a repo is also provided
- figure types suited to papers: Overall Framework, Comparison/Ablation, Data Behavior, Module Detail
- venue and domain drive color; module_count may be unknown (use Okabe-Ito default)
When both repo and paper are present
Analyze paper first (it defines the narrative), use repo to fill technical gaps. module_count from repo feeds into color decision.
Sibling routing
Read a sibling file only when that stage runs:
| skill | when |
|---|---|
../academic-repo-analyzer/SKILL.md | Path A: repository / codebase input |
../academic-figure-paper-analyzer/SKILL.md | Path B: paper/section text input |
../academic-figure-architecture-extractor/SKILL.md | Path B: PDF or existing image input |
../academic-figure-color-expert/SKILL.md | either path, when user wants colors |
../academic-figure-prompt/SKILL.md | either path, when user wants classic JSON spec |
../academic-figure-prompt-pastel/SKILL.md | either path, when user wants pastel/airy style |
Color routing (convergence point)
Both paths converge at color selection but carry different inputs:
| Input present | Decision rule |
|---|---|
| module_count ≥ 4 (from repo) | Nature Blue monochrome |
| module_count < 4 or unknown | Okabe-Ito, or scene-based palette |
| venue: NeurIPS/ICML/ICLR classic | ML TopConf Colorblind |
| venue: NeurIPS/ICML/ICLR pastel/airy | route to figure-prompt-pastel |
| venue: Nature/Science | Okabe-Ito or Journal Standard |
| user specifies palette | use it, state the branch |
Always state which rule produced the choice and offer one alternate.
Style family first
Before picking any palette, decide classic vs pastel based on user language:
| User says | Style family | Skill |
|---|---|---|
| box-border, JSON spec, classic, 顶刊, CVPR/Nature | Classic academic | figure-prompt |
| airy, pastel, soft, 现代ML, token flow, ICLR那种 | Pastel airy | figure-prompt-pastel |
Handoffs (carry forward, don't re-narrate)
- Repo path: Quick Understanding Doc → Handoff (module_count, domain, figure_types, evidence) → Palette Decision → Figure Spec
- Paper path: Figure Plan (types, counts, priorities, aspect ratios, venue) → Palette Decision → Figure Spec
Stop rules
- Always stop at GATE 1 and GATE 2 until the user confirms.
- After Phase 3 (image delivered or prompt delivered), stop. Do not suggest further figures unless the user asks.
- If user only asked for analysis, stop after Phase 1 (no gates needed — the gates only exist on the figure-generation path).