$npx -y skills add ai4protein/VenusFactory2 --skill nature_figureSubmission-grade Nature/high-impact journal figure workflow for Python or R. Use whenever the user asks to create, revise, audit, or polish manuscript figures, multi-panel scientific plots, figures4papers-style matplotlib plots, or journal-ready SVG/PDF/TIFF outputs, especially f
| 1 | # Nature Figure Making — Router |
| 2 | |
| 3 | This skill is split into two layers: |
| 4 | |
| 5 | - A **static layer** under `static/` that holds versioned, reusable content fragments (the figure contract and default stance, plus a per-backend quick-start for Python and R). |
| 6 | - A **dynamic layer** (this file plus `manifest.yaml`) that detects the plotting backend and loads only the fragment needed for the current job. The large design, API, pattern, and QA material lives in on-demand references. |
| 7 | |
| 8 | Do not try to apply the figure logic from memory or from this router. Always load fragments from disk as described below. |
| 9 | |
| 10 | ## Routing protocol |
| 11 | |
| 12 | Follow these five steps every time the skill is invoked. |
| 13 | |
| 14 | ### 1. Load the manifest and the core layer |
| 15 | |
| 16 | Read [manifest.yaml](manifest.yaml). It declares the `backend` axis, the allowed values, and the file paths each value maps to. |
| 17 | |
| 18 | Also read every file listed under `always_load` (`static/core/contract.md` and `static/core/stance.md`). These hold the figure contract, the backend gate, the missing-runtime rule, the privacy rule, and the default operating stance that apply to every figure job. |
| 19 | |
| 20 | ### 2. Resolve the backend — a blocking gate |
| 21 | |
| 22 | Backend selection blocks everything else. Decide the `backend` value only from an explicit user choice or a clearly language-specific input file/workflow: |
| 23 | |
| 24 | - `python` — matplotlib / seaborn. |
| 25 | - `r` — ggplot2 / patchwork / ComplexHeatmap. |
| 26 | |
| 27 | If the user has **not** explicitly chosen, ask exactly one concise question — **Python or R?** — and stop. Do not default, guess, generate mock data, or write scripts before the answer. Only recommend a backend when the user explicitly asks you to choose; then use `references/backend-selection.md`, state the reason, and proceed. Once selected, the backend is **exclusive** for all drawing, previewing, exporting, and visual QA (see `core/contract.md`). |
| 28 | |
| 29 | ### 3. Load the matching backend fragment |
| 30 | |
| 31 | After the backend is resolved, Read the mapped fragment (`static/fragments/backend/python.md` or `static/fragments/backend/r.md`). It carries the backend-only execution rule and the publication quick-start (rcParams/theme and export helper). Do **not** load the other backend's fragment. |
| 32 | |
| 33 | ### 4. Build the figure using the loaded material |
| 34 | |
| 35 | Apply the loaded material in this order: |
| 36 | |
| 37 | 1. Figure contract (`core/contract.md`) — write the core conclusion, map the evidence chain, classify the archetype, set the journal/export contract, before any code. |
| 38 | 2. Default stance (`core/stance.md`) — archetype-first composition, hero panel, restrained palette, statistics/integrity as part of the figure. |
| 39 | 3. Backend fragment — the exclusive Python or R quick-start and execution rule. |
| 40 | |
| 41 | The chart serves the scientific logic; aesthetic polish is subordinate to making the core conclusion clear, defensible, and reviewable. |
| 42 | |
| 43 | ### 5. Reach for references only when needed |
| 44 | |
| 45 | The files under `references/` are deep references, not defaults. Open them on demand per the `references.on_demand` table in the manifest — for example `references/figure-contract.md` to build the contract, `references/api.md` for the Python palette and helpers, `references/r-workflow.md` for R, `references/design-theory.md` for color/typography/export rationale, `references/common-patterns.md` and `references/chart-types.md` for layout/chart recipes, `references/nature-2026-observations.md` for real Nature page archetypes, `references/qa-contract.md` before final delivery, and `references/tutorials.md` / `references/demos.md` for worked examples. |
| 46 | |
| 47 | ## Why this split |
| 48 | |
| 49 | - The static layer is versioned and reviewable. The backend gate is now explicit in the manifest rather than buried in prose. |
| 50 | - The dynamic layer keeps each invocation cheap: only the selected backend's quick-start enters context, and the 2,600+ lines of reference depth load only when a step needs them. |
| 51 | - The router itself is short on purpose. Update fragments and refe |