# Figure Composer

Compose one publication-grade multi-panel figure.

- Repository: https://github.com/aipoch/open-science (5414 stars)
- Category: Engineering
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add aipoch/open-science --skill figure-composer -g -a claude-code -y`
Codex: `npx skills add aipoch/open-science --skill figure-composer -g -a codex -y`
Cursor: `npx skills add aipoch/open-science --skill figure-composer -g -a cursor -y`
Gemini CLI: `npx skills add aipoch/open-science --skill figure-composer -g -a gemini-cli -y`

## Description

Compose one publication-grade multi-panel figure. Start from a one-line claim plus immutable data Artifact Version references, or inspect an existing figure and draft its outline directly. Plan a 12-column panel outline, delegate one worker per panel, compose and inspect the result, then run at most three adversarial review rounds while regenerating only affected panels. For a standalone plot use `figure-style`; for whole-paper figure ordering use `paper-narrative`.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Figure Composer, narrative → panels → compose → adversarial loop

`figure-composer` is the outer workflow for one multi-panel figure. Use the
`figure-style` rules while planning and reviewing; every panel worker uses those
rules independently. Run `paper-narrative` first when the paper-level figure
sequence is still undecided.

## Open-Science Notebook call

Every `notebook_execute` request whose `code` uses a function named in this skill
includes this skill ID:

```json
{ "kernelSkillIds": ["figure-composer"], "code": "print(figure_outline_schema())" }
```

`kernelSkillIds` contains the skill ID; function calls belong in `code`. Call the
named functions directly without an import or discovery step.

## Inputs

- `claim`: the one sentence the figure makes true without surrounding prose.
- `dataVersionIds`: immutable Upload or Artifact Version identities grounding
  the panels.
- `width_mm`: venue column width, commonly 85, 89 mm single or 174, 183 mm double.
- `rulesVersionId`: immutable Artifact Version containing the design rules used
  by the composite reviewer.
- `delegatePrefix`: short branch-unique prefix for panel and reviewer child names.

Run this workflow only in the Main/root agent. Delegated children cannot call
`host.delegate`, so the whole composer cannot itself be delegated.

## Entry points

- **From a claim:** Main writes the outline in step 1 from the claim, data, and
  `figure-style` rules.
- **From an existing figure:** inspect it with `host.viewImage`, then have Main
  draft and review the outline directly. Current `host.llm` calls do not accept
  images, so do not add a second hidden inference step. Pixels cannot supply
  Artifact Version identities; fill `data_vid` from the provided data.

## 1. Narrative → panel outline

Main produces a `panel_outline` matching `figure_outline_schema()`:

The rest: https://github.com/aipoch/open-science/blob/HEAD/resources/skills/figure-composer/SKILL.md
