{"slug":"figure-composer","title":"figure-composer","summary":"Compose or improve a publication-grade multi-panel scientific figure from a claim, concrete data paths, or an existing image. Use for figure outlining, parallel panel rendering, exact-grid composition, visual inspection, and adversarial figure review. Use figure-style for one sta","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-08-23T08:58:30.018213Z","repo":{"url":"https://github.com/xuzhougeng/wisp-science","stars":1170,"forks":122,"license":"AGPL-3.0","updatedAt":"2026-09-25T06:13:53Z"},"bodyHtml":"<hr>\n<h2>name: figure-composer\ndescription: Compose or improve a publication-grade multi-panel scientific figure from a claim, concrete data paths, or an existing image. Use for figure outlining, parallel panel rendering, exact-grid composition, visual inspection, and adversarial figure review. Use figure-style for one standalone plot and paper-narrative for whole-paper figure ordering.\nlicense: Apache-2.0</h2>\n<h1>Figure composer</h1>\n<p>Load <code>figure-style</code> with this skill. The sidecar provides pure geometry,\ncomposition, task-building, and review-schema helpers. It does not call models,\ndelegate Agents, resolve artifacts, or inspect images from Python.</p>\n<h2>Inputs</h2>\n<p>Require a one-sentence claim, target width in millimetres, and concrete\nproject-relative or absolute data paths. Never use artifact ids as paths. For an\nexisting figure, inspect the real image with <code>view_image</code> and write the outline\nyourself; pixels cannot reveal the source data path.</p>\n<h2>Workflow</h2>\n<ol>\n<li>Build an outline matching <code>figure_outline_schema()</code>. Put real paths in\n<code>data_path</code>; use <code>null</code> for schematics.</li>\n<li>Make panel <code>a</code> the conceptual hook and panel <code>b</code> the primary evidence. Use a\n12-column grid and one row per sub-claim.</li>\n<li>Build one instruction per panel with <code>panel_task(...)</code>.</li>\n<li>If <code>delegate_tasks</code> is advertised, submit the independent panel tasks as one\nbatch. Grant each task the minimum advertised capabilities needed, normally\n<code>visualization</code> plus <code>project_read</code>. Require a concrete PNG filename in each\noutput schema. If delegation is unavailable, render the panels sequentially\nwith <code>python</code>.</li>\n<li>Compose returned paths with <code>compose_figure(...)</code>. Do not pass placeholder\nmarkers to the composer.</li>\n<li>Use <code>compose_crops(...)</code> with Pillow to save temporary crop files, then call\n<code>view_image</code> on the composite and every crop. Fix seams, clipped labels,\naliases, empty space, and misplaced panel letters before review.</li>\n<li>Build one reviewer instruction with <code>composite_review_task(...)</code>. Delegate it\nwith <code>image_inspection</code>, <code>project_read</code>, and <code>reasoning</code> when those capability\nids are advertised; otherwise perform the review in the current Agent.</li>\n<li>Apply outline revisions and regenerate only affected panels. Stop after three\nrounds or when there are no blockers and at most two major findings.</li>\n</ol>\n<h2>Outline example</h2>\n<pre><code>{\n  \"claim\": \"Treatment restores the disease-associated trajectory.\",\n  \"width_mm\": 180,\n  \"ncol\": 12,\n  \"row_heights_mm\": [42, 60],\n  \"panels\": [\n    {\n      \"letter\": \"a\",\n      \"role\": \"schematic\",\n      \"row\": 0,\n      \"col\": 0,\n      \"colspan\": 12,\n      \"chart_family\": \"study schematic\",\n      \"message\": \"The experiment tests trajectory rescue.\",\n      \"data_path\": null,\n      \"ask\": \"Show cohorts, treatment, sampling, and comparison.\"\n    },\n    {\n      \"letter\": \"b\",\n      \"role\": \"primary\",\n      \"row\": 1,\n      \"col\": 0,\n      \"colspan\": 12,\n      \"chart_family\": \"trajectory plot\",\n      \"message\": \"Treatment moves cells toward the healthy trajectory.\",\n      \"data_path\": \"results/trajectory.csv\",\n      \"ask\": \"Plot disease, treated, and healthy cells with confidence bands.\"\n    }\n  ]\n}\n</code></pre>\n<h2>Boundaries</h2>\n<ul>\n<li>Use <code>delegate_tasks</code> only as an explicit Wisp tool; never call delegation from\n<code>python</code>.</li>\n<li>Use <code>view_image</code> only on a concrete local image file.</li>\n<li>Keep data preparation in normal project files. Use <code>run_in_context</code> only when\na deterministic render or preprocessing job is long enough to require a\npersisted Run; Agent delegation itself is not a Run.</li>\n<li>Save the accepted composite to a stable project path and report that path.</li>\n</ul>\n","files":[{"path":"runtime.py","sizeBytes":11231,"isText":true},{"path":"SKILL.md","sizeBytes":3864,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-25T07:39:01.005927Z","sha256":"EA4AB2521673011291BCC64CAF1B7BFB3681620A4FE11886F49A35BB5608FE90","sizeBytes":5319},"review":null,"source":{"repositoryUrl":"https://github.com/xuzhougeng/wisp-science","path":"skills/figure-composer","license":"AGPL-3.0","commit":"79e64163262196611dd390d06713c465b906b299","subtreeSha":"FF432A1F3B45E57E83ADF90FF5B150405F5461AC1B8ED7F2D5299CC0D09093F0","lastSyncedAt":"2026-09-25T07:37:55.552497Z"},"reviewedAt":"2026-09-25T07:40:44.02048Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/xuzhougeng/wisp-science/tree/main/skills/figure-composer"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install xuzhougeng-wisp-science@llmmart"},{"target":"git","command":"git clone https://github.com/xuzhougeng/wisp-science.git"}]}