$npx -y skills add ai4protein/VenusFactory2 --skill nature_polishingPolish, restructure, or translate academic prose into Nature-leaning English using writing-strategy principles, curated Nature/Nature Communications article patterns, and phrase-level support from Academic Phrasebank. Use whenever the user asks to polish a manuscript paragraph, a
| 1 | # Nature-Style Academic Polishing — Router |
| 2 | |
| 3 | This skill is split into two layers: |
| 4 | |
| 5 | - A **static layer** under `static/` that holds versioned, reusable content fragments (core principles, paper-type playbooks, per-section guidance, language-specific rules, per-journal style). |
| 6 | - A **dynamic layer** (this file plus `manifest.yaml`) that detects the request's axes and loads only the fragments needed for the current job. |
| 7 | |
| 8 | Do not try to apply the polishing 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 axes (`paper_type`, `section`, `language`, `journal`), the allowed values, and the file paths each value maps to. |
| 17 | |
| 18 | Also read every file listed under `always_load`. These hold the default stance, failure-mode diagnosis, ethics, and output format that apply to every polish job. |
| 19 | |
| 20 | ### 2. Detect the axis values for this request |
| 21 | |
| 22 | For each axis in the manifest, decide the value using the manifest's `detect:` hint and the user's input: |
| 23 | |
| 24 | - `paper_type` — research / methods / hypothesis / algorithmic / review. Default: research. |
| 25 | - `section` — abstract / intro / results / discussion / conclusion / title / methods. May be multiple. Ask the user if it is ambiguous and matters for the polish. |
| 26 | - `language` — en or zh-to-en. Detect from the draft itself. |
| 27 | - `journal` — nature / nat-comms / generic. Default: generic. If the user names a Nature subjournal, treat it as `nature`. |
| 28 | |
| 29 | State the detected axis values in one short line to the user before proceeding, so they can correct you cheaply. |
| 30 | |
| 31 | ### 3. Load the matching fragments |
| 32 | |
| 33 | For each axis value, Read the file mapped in the manifest. Skip the `section` axis only if the user has supplied free-floating prose with no section context. |
| 34 | |
| 35 | Do **not** read every fragment in `static/`. Load only what step 2 selected. |
| 36 | |
| 37 | ### 4. Polish using the loaded material |
| 38 | |
| 39 | Apply the loaded fragments in this priority order, matching the `paper type -> section job -> paragraph logic -> claim/evidence/boundary -> sentence polish` rule from `core/failure-modes.md`: |
| 40 | |
| 41 | 1. Paper-type playbook (architecture, writing order). |
| 42 | 2. Section-specific job and failure modes. |
| 43 | 3. Journal-specific framing and constraints. |
| 44 | 4. Language-specific sentence and paragraph rules (apply last). |
| 45 | 5. Core stance and ethics throughout. |
| 46 | |
| 47 | If a paragraph's structural problem cannot be fixed without inventing content, flag it instead of papering over it. |
| 48 | |
| 49 | ### 5. Reach for references only when needed |
| 50 | |
| 51 | The files under `references/` are deep references, not defaults. Open them on demand per the `references.on_demand` table in the manifest, for example when the user explicitly asks for phrasebank-style alternatives or a stricter style audit. |
| 52 | |
| 53 | **Layout/typesetting (排版) requests are different.** If the user asks to fix |
| 54 | *placement* rather than wording — loose/sparse pages, stranded headings, figures |
| 55 | that don't fill the page or split across pages, "Float too large", multi-panel |
| 56 | arrangement, sparse Supplementary Information — skip the prose axes (paper_type, |
| 57 | section, language, journal) and load `references/latex-layout.md` directly. That |
| 58 | file is self-contained: it carries the diagnosis workflow (render → contact-sheet → |
| 59 | read the log), the float-glue and `[H]`/`\clearpage`/`placeins` patterns, and the |
| 60 | "regenerate wide figures taller at the source" rule. Always compile and visually |
| 61 | inspect rendered pages before and after — never judge layout from the `.tex` alone. |
| 62 | |
| 63 | ## Why this split |
| 64 | |
| 65 | - The static layer is versioned and reviewable. Adding a new journal style or paper type is one new file plus one manifest line. |
| 66 | - The dynamic layer keeps each invocation cheap: only the fragments relevant to this draft enter context, instead of t |