Figure Composer
Compose one publication-grade multi-panel figure.
Install
npx skills add HughYau/AcademicForge --skill figure-composer -g -a claude-code -y- Repository
- HughYau/AcademicForge2.6k
- Category
- Engineering
- Updated
- 2mo ago
- License
- Apache-2.0
- Context cost
- Mediumabout 2,252 tokens
- Runs scripts
- Yes, review before use
What it does
Compose one publication-grade multi-panel figure. Entry from a one-line claim + data files, OR from an existing figure via `derive_outline_prompt` (you read the PNG). Runs a per-figure loop: outline (12-col grid, per-panel ask + label_budget) → render each panel with `panel_task` (loading `figure-style`), one at a time or parallelized → tile + stamp letters with `compose_figure` → adversarial composite self-review with two-tier feedback (Tier-1 outline_revisions / Tier-2 per-panel violations) → regen affected panels, ≤3 rounds. Helpers: panel_task / compose_figure / compose_crops / composite_review_task / derive_outline_prompt. For one standalone plot use `figure-style`; for whole-paper figure ordering use `paper-narrative`.
Figure Composer, narrative → panels → compose → adversarial loop
Compose ONE publication-grade multi-panel figure: turn a one-sentence claim plus data files into an outline, render each panel, tile them into a composite, and harden it through an adversarial self-review loop.
Setup (any agent, no API key)
This is a pure skill, kernel.py is deterministic Python (PIL geometry plus
schema/prompt builders) and you (the base model) do all the reasoning:
reverse-engineering an outline from a figure, rendering panels, and the
adversarial composite review. There is no host runtime and no LLM API. Load
the helpers once per session in a Python cell:
exec(open("figure-composer/kernel.py").read())
Nothing auto-loads it outside Claude Science. Then call the helpers
(panel_task, compose_figure, compose_crops, composite_review_task,
derive_outline_prompt, …) directly; if one raises NameError, you have not
exec'd kernel.py. Dependencies: pip install pillow matplotlib.
Step 0. Load figure-style alongside this skill, that is the
design rules (and apply_figure_style() + helpers). You need it in context to
write the outline, render the panels, and review the composite. Each panel is
rendered against those same rules, whether you draw it yourself or hand it to a
sub-agent (see §2), the maker loads figure-style first.
Inputs
- claim, one sentence the figure makes true to a reader who reads nothing else.
- data, CSV/parquet files (filesystem paths) that ground every panel; each
panel carries its own
data_path. - width_mm, target venue's column width (common: 85, 89mm single, 174, 183mm double; check the venue guide).
