← ClaudeAtlas

figure-composerlisted

Compose one publication-grade multi-panel figure. Entry from a one-line claim + data refs, OR from an existing figure via `derive_outline_task(png)`. Runs a per-figure loop: outline (12-col grid, per-panel ask + label_budget) → fan-out one Task subagent per panel (each loads `figure-style`) → tile + stamp letters → adversarial composite review with two-tier feedback (Tier-1 outline_revisions / Tier-2 per-panel violations) → regen affected panels, ≤3 rounds. Kernel exposes panel_task / compose_figure / compose_crops / composite_review_task / derive_outline_task / finalize_outline (import by absolute path). For one standalone plot use `figure-style`; for whole-paper figure ordering use `paper-narrative`.
emaballarin/ccplugins · ★ 3 · AI & Automation · score 77
Install: claude install-skill emaballarin/ccplugins
# Figure Composer — narrative → panels → compose → adversarial loop **Step 0.** Load `figure-style` alongside this skill — that is the design rules (and `apply_figure_style()` + helpers). Each panel's `Task` subagent loads it independently; you need it in context to write the outline and review the composite. ## Loading the kernel The deterministic helpers live in `kernel.py` next to this file. It is **not** auto-injected — import it by absolute path in a Bash `python` heredoc (zero import-time side effects; the only heavy import, PIL, is lazy inside `compose_figure`): ```bash python3 - <<'PY' import importlib.util K = "/ABSOLUTE/PATH/TO/figure-composer/kernel.py" # this SKILL.md's dir + /kernel.py spec = importlib.util.spec_from_file_location("fc_kernel", K) k = importlib.util.module_from_spec(spec) spec.loader.exec_module(k) print([n for n in dir(k) if not n.startswith("_")]) PY ``` Every kernel call below assumes `k` is loaded this way. Each `python` invocation is a fresh process, so re-import in each heredoc. `compose_figure` (and the panel renders) need `pip install pillow` (+ matplotlib for the panels). ## Inputs - **claim** — one sentence the figure makes true to a reader who reads nothing else. - **data** — CSV/parquet file paths (or data refs) that ground every panel. - **width_mm** — target venue's column width (common: 85–89mm single, 174–183mm double; check the venue guide). ## 0. Where this sits `figure-composer` is the **outer tier**: make ONE multi-p