figforge

VerifiedCaution

figforge: full source-to-image pipeline to analyze papers, repos, algorithms and generate publication-quality figures.

Sby Skills Guide Bot
Data & AIIntermediate
007/23/2026
Claude Code
#figure-generation#scientific-visualization#image-pipeline#orchestration#truthful-planning

Recommended for

Our review

figforge orchestrates a full pipeline from analyzing a source (paper, repo, algorithm) to generating a publication-quality figure.

Strengths

  • Truthful planning with evidence ledger to prevent hallucinations
  • Seamless iteration between planning and generation for refinement
  • Delegation to specialized sub-skills (planning and generation)

Limitations

  • Requires sub-skills figforge-plan and figforge-gen to be available
  • Image generation relies solely on OpenAI's gpt-image-2 API
  • Without source material, the planning phase is skipped, reducing output depth
When to use it

Use figforge when you need to transform a scientific paper, code repository, or algorithm into a publication-quality figure with systematic planning and generation.

When not to use it

Avoid figforge if you only need a simple image prompt or already have a final prompt ready for generation.

Security analysis

Caution
Quality score95/100

The skill uses Bash to execute sub-skill scripts (e.g., choose_python.sh), which is a powerful tool but for legitimate orchestration. No inherently destructive commands are present, but the Bash usage warrants caution.

Findings
  • Uses Bash tool for orchestration, which could introduce execution risk if sub-skill scripts are compromised.

Examples

论文主图生成
做一张论文主图:分析这篇关于Transformer注意力机制优化的论文,生成一个展示改进前后对比的示意图。论文PDF在 /path/to/paper.pdf
Repo架构图
把这个 repo 画成 figure:项目路径 ~/projects/my-ml-framework,生成一张清晰的架构图展示模块依赖和数据流。
算法流程图
出一张架构图直接生成:描述一个两阶段分类器,第一阶段用CNN提取特征,第二阶段用SVM分类,生成PNG图片。

name: figforge description: > figforge: use when the user wants the full source-to-image pipeline — analyze a paper / repo / algorithm / diagram / design idea, plan a publication-quality figure, AND actually generate the image. Triggers: "做一张论文主图", "把这个 repo 画成 figure", "出一张架构图直接生成", "scientific figure pipeline", "make and generate a figure", or /figforge. Routes between figforge-plan (truthful prompt construction) and figforge-gen (gpt-image-2 call), and manages the iteration loop. Do NOT trigger if the user only wants the prompt (use figforge-plan directly) or already has a finished prompt and just needs pixels (use figforge-gen directly). argument-hint: <自然语言需求 + 可选源材料> allowed-tools: [Bash, Read, Write, Edit]

figforge — Source → Plan → Image (orchestrator)

The figforge family has three skills. This one is the conductor; it does not duplicate sub-skill work. Use it when you want all three of:

  1. Truthful planning (delegated to figforge-plan)
  2. Actual image generation (delegated to figforge-gen)
  3. Coherent iteration across both layers

If the user only needs a prompt, call figforge-plan directly. If they already have a final prompt and only want pixels, call figforge-gen directly. Skip this skill in those cases.


Pipeline

INPUT
  │
  ▼
[STEP 1] Triage ──► raw prompt only?  →  skip STEP 2, jump to STEP 3
  │                 source material?   →  continue
  ▼
[STEP 2] Plan      (delegate to figforge-plan)  →  figforge Prompt Package
  │                                                + evidence ledger
  ▼
[STEP 3] Generate  (delegate to figforge-gen)   →  image file on disk
  │
  ▼
[STEP 4] Iterate   (route revisions back to STEP 2 or STEP 3)

STEP 1 — Triage

Decide whether the planning layer is needed.

| Signal | Route | |--------|-------| | Raw prompt, no source material (e.g. 画一只透明背景的猫) | Skip STEP 2; jump to STEP 3 with the prompt as-is | | Source material present (repo path, paper PDF, code snippet, algorithm description, diagram image) | Full pipeline: STEP 2 → STEP 3 | | Source material and the user explicitly says "just the prompt, don't generate" | STEP 2 only; do not call figforge-gen |

Source-material detectors:

  • Local file path with extension .py, .md, .pdf, .png, .svg, or a directory
  • URL pointing to a paper / repo / arXiv ID / GitHub URL
  • Pasted code blocks longer than 5 lines
  • Long structured text describing an algorithm with named stages or numbered steps

If still ambiguous after one pass, ask exactly one disambiguation question.


STEP 2 — Plan (delegate to figforge-plan)

Hand the source material to the figforge-plan skill. It produces a figforge Prompt Package (with evidence ledger). Save the package to:

<task_cwd>/.figforge/<run-id>/prompt_package.md

Stop and ask the user before STEP 3 if the package contains:

  • More than 3 unknown markers in critical positions (claim, mechanism, primary metric)
  • An explicit "evidence insufficient" note from figforge-plan
  • Conflicts that figforge-plan flagged but did not resolve

Generating an image from a thin evidence base produces hallucinated detail. The Truthfulness Contract lives in figforge-plan and must not be bypassed here.


STEP 3 — Generate (delegate to figforge-gen)

Map the Prompt Package fields to figforge-gen arguments:

| Prompt Package field | figforge-gen argument | |----------------------|-----------------------| | Core Image Prompt (compiled body) | --prompt | | Recommended Generation Settings → Size | --size | | Recommended Generation Settings → Output format | --output-format | | Recommended Generation Settings → Quality | --quality | | Recommended Generation Settings → Background | --background |

Out-dir defaults to <task_cwd>/.figforge/<run-id>/.

Hand off through the figforge-gen skill, not by calling figforge-gen/scripts/figforge_gen.py directly. figforge-gen owns:

  • API preflight (--show-config)
  • Python detection (scripts/choose_python.sh)
  • Timeout calculation per references/fields.md
  • Credential resolution per references/api-config.md

Reimplementing any of those here breaks the credential boundary.

After generation succeeds, save run metadata:

<task_cwd>/.figforge/<run-id>/last_image.json

with shape:

{
  "path": "<image path>",
  "params": {"size": "...", "quality": "...", "output_format": "...", "background": "..."},
  "ts": "<ISO timestamp>",
  "prompt_package": "prompt_package.md"
}

STEP 4 — Iterate

Most figure work needs at least one revision round. Classify the user's request:

| Revision type | Example | Route | |---------------|---------|-------| | Cosmetic | "brighter", "more contrast", "swap to landscape", "redo at higher quality" | Re-call figforge-gen with adjusted parameters; reuse same Prompt Package | | Pixel-edit | "remove the watermark", "tweak this corner only" | Call figforge-gen with --mode edit and the previous image path | | Content (label / palette / title text) | "change title to X", "use systems-blue palette" | Edit the Prompt Package body in place, then re-call figforge-gen | | Structural | "the architecture is wrong", "missing a component", "wrong arrow direction" | Go back to STEP 2; the package itself needs editing first |

If you cannot tell which class the revision belongs to, ask the user one targeted question. Do not silently pick a route.

Append every revision attempt to <task_cwd>/.figforge/<run-id>/revisions.log so the session is recoverable across resumes.


State

Each run lives under <task_cwd>/.figforge/<run-id>/:

prompt_package.md   ← figforge-plan output (verbatim)
last_image.json     ← {path, params, ts, prompt_package}
revisions.log       ← one line per revision attempt

<run-id> = ISO timestamp YYYYMMDD-HHMMSS. A new top-level user request opens a new run; revisions stay inside the most recent run unless the user explicitly asks to start over.


Boundaries

  • Do NOT reimplement what the sub-skills do. No inline gpt-image-2 calls. No inline evidence classification. Always invoke the sub-skill.
  • API credentials are owned by figforge-gen alone. figforge never reads, copies, prints, or transforms tokens. Never inject Codex- or Claude-side credentials into FIGFORGE_GEN_API_KEY.
  • If figforge-gen's --show-config preflight fails, surface the error verbatim and STOP. Do not retry the image step with substituted credentials.
  • If the user asked only for a prompt, do not run STEP 3. The waste is real — gpt-image-2 calls are slow and metered.

Output to user

After STEP 3 succeeds:

图片已生成: <image path>
基于规划包: <task_cwd>/.figforge/<run-id>/prompt_package.md
关键参数: size=..., output_format=..., quality=..., palette=...

For revisions, briefly state which revision class was detected and which step is being re-run before doing it. Example:

[识别为 Cosmetic 修订 → 重新调用 figforge-gen,size 改为 3840x2160]

For STEP 2-only requests (prompt without generation), return the path to prompt_package.md and skip the image-related lines.

Related skills