alphafold2
Predict protein structure for monomers and multimers with AlphaFold2 via the ColabFold runner…
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
$ npx -y skills add aipoch/open-science --skill figure-composer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/figure-composerContext preview
The summary Claude sees to decide when to auto-load this skill.
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
name: figure-composer 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`.' license: Apache-2.0
`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.
Every `notebook_execute` request whose `code` uses a function named in this skill includes this skill ID:
{ "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.
the panels.
by the composite reviewer.
Run this workflow only in the Main/root agent. Delegated children cannot call `host.delegate`, so the whole composer cannot itself be delegated.
`figure-style` rules.
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.
Main produces a `panel_outline` matching `figure_outline_schema()`:
{
"claim": "…",
"width_mm": 180,
"ncol": 12,
"row_heights_mm": [40, 60, 46, 52],
"panels": [
{
"letter": "a",
"role": "schematic",
"row": 0,
"col": 0,
"colspan": 12,
"chart_family": "schematic overview",
"message": "…",
"data_vid": null,
"ask": "…"
},
{
"letter": "b",
"role": "primary",
"row": 1,
"col": 0,
"colspan": 7,
"chart_family": "scatter + trend",
"message": "…",
"data_vid": "…",
"ask": "…"
}
]
}Outline rules:
identities. Do not invent or rewrite Version IDs.
listed panels.
Geometry helpers reject duplicate panel letters (case-insensitive), overlapping grid spans, panels outside the grid, and invalid or subpixel grid dimensions. Use unique panel identifiers and non-overlapping positive spans within the grid.
Review the outline before fan-out. Use the schema as a contract; Main does the reasoning and does not call `host.llm` to generate the outline again.
Generate each task in Python with `panel_task(outline, letter, fig_label)`. The returned task contains the complete panel procedure. Pass it unchanged on the first render and supply the panel's data Version in `inputs`.
Dispatch from `repl_execute`. `host.delegate` accepts at most four children per atomic call, so send ordered waves of no more than four. Each request uses this output schema:
const panelOutputSchema = {
type: 'object',
additionalProperties: false,
required: ['panelVersionId', 'labelsUsed'],
properties: {
panelVersionId: { type: 'string', minLength: 1 },
labelsUsed: { type: 'array', items: { type: 'string' } }
}
}Use `wait: false`, then collect the exact `{ frameId, attemptId }` receipt handles. A collect timeout ends observation, not the child Attempt: collect the same handles again while any remain running. Retry only after a terminal failure or an explicitly rejected output, using a fresh child name. Panel workers must submit their structured result with `host.submitOutput` before finishing. Reject a non-completed/error child, missing or unsatisfied structured output, a missing or duplicate expected `panel_<letter>.png`, or a mismatch between its Artifact `versionId` and `structuredOutput.panelVersionId`. MIME metadata may be absent; the exact filename and Version identity are the binding checks. Return each wave's validated `{ letter, versionId }` values from the `repl_execute` call instead of relying on local `const` or `let` declarations to survive a later call.
Keep finalized Version identities in outline order. Temporary paths are never the Agent-to-Agent contract. Child names remain occupied after settlement, so use a unique `delegatePrefix` and round number.
Generate a producer task with `composition_task(outline, panelVersions, fig_label)`. Main's newly written Artifact can remain pending until its turn ends; the producer child publishes a finalized composite that the reviewer can use. Pass the ordered panel Version identities in `inputs` and require this output schema:
{The open-source AI research workbench for scientific research and agent workflows. Local-first, model-agnostic desktop app with extensible skills, MCP tools and connectors, Python/R execution and traceable artifacts for reproducible research on macOS, Windows and Linux.
Repo: aipoch/open-science
Predict protein structure for monomers and multimers with AlphaFold2 via the ColabFold runner…
Structure prediction for protein, nucleic-acid, and small-molecule complexes with Boltz-2…
Predict genome-wide functional tracks (RNA-seq, CAGE, DNase, ChIP) from DNA sequence with…
Structure prediction for protein, nucleic-acid, and small-molecule complexes with the Chai-1…
Prepare reproducible setup instructions and validate a user-managed named software…